Lenguaje: predominaba C, pero C ++ estaba presente y se usaba.
Herramientas de desarrollo: los entornos de desarrollo incluyeron los de Borland y Watcom (casi desconocidos hoy en día) entre otros. Tanto Borland como Watcom tenían sus propios compiladores y sus propios IDE. Borland fue, con mucho, el más popular en general, aunque Watcom tenía fama de producir programas compilados más rápidos, iirc.
API: pocas API existieron o se utilizaron. La programación de video a menudo consistía en escribir píxeles directamente en el framebuffer VGA. Incluso los juegos en 3D fueron rasterizados por software. La API de sonido de Miles se usó para audio, que incluía controladores internos ya que el sistema operativo no tenía su propio marco de audio o controladores. La entrada del teclado y el mouse generalmente se leía directamente del sistema. Hubo un par de extensores de memoria populares para el modo de 32 bits que fueron muy populares y necesarios hacia el final del reinado de DOS. Afortunadamente, el hardware era simple, pero definitivamente era un dolor en los juegos de escritura a tope que funcionaban en una variedad de hardware. No existían bibliotecas para tratar todas las cosas simples de bajo nivel (como SDL, SFML, GLFW, etc.),
En una nota al margen del punto anterior, Doom no era 3D como lo conocemos hoy. Es decir, impuso enormes limitaciones en los entornos 3D debido a su algoritmo de rasterización de software altamente especializado, y los personajes y elementos eran todos sprites.
Formatos de archivo: los formatos de los activos eran tan exclusivos del motor como lo son ahora. Recuerdo vagamente que Bink estaba en ese entonces para video (lo cual era muy raro, generalmente solo en secuencias de apertura y cierre), y creo que Creative tenía algunos formatos de sonido especializados. No estoy seguro de qué fuente o formatos intermedios eran populares para sonido o video en ese entonces, pero TGA era bastante popular para imágenes.