Código fuente de DOOM: el repositorio oficial de id Software

El código fuente de DOOM está publicado en GitHub por la propia id Software: es el motor original de 1993 (la versión linuxdoom-1.10) que John Carmack y su equipo liberaron en diciembre de 1997. No es un remake ni un port moderno: es el código C que hizo posible el juego, tal cual se escribió. Aquí tienes qué contiene, por dónde empezar a leerlo y cómo pasar de leerlo a jugarlo, incluso directamente en el navegador.

Ficha rápida · Qué contiene · Cómo leer el código · ¿Se puede jugar? · DOOM en el navegador · Ports y versiones · Preguntas frecuentes

Ficha rápida del repositorio

Repositorioid-Software/DOOM
Autorid Software (motor de John Carmack)
LenguajeC (GitHub lo etiqueta como C++ por las cabeceras)
LicenciaGNU GPL v2 (desde 1999; en 1997 salió con una licencia no comercial)
Versión del códigolinuxdoom-1.10, para Linux y X11
Liberado23 de diciembre de 1997 · en GitHub desde 2012
PopularidadCasi 20.000 estrellas y más de 3.500 forks
Incluye el juegoNo: solo el motor. Los mapas, gráficos y sonidos van en ficheros WAD aparte

Qué contiene el código fuente de DOOM

El repositorio es pequeño y se recorre rápido. Tiene cuatro carpetas:

  • linuxdoom-1.10/: el motor completo. Aquí está todo lo interesante.
  • sndserv/: el servidor de sonido aparte que usaba la versión de Linux.
  • ipx/ y sersrc/: los drivers de red IPX y de cable serie/módem de la época de DOS, para el multijugador.

Dentro del motor, cada fichero lleva un prefijo que dice a qué parte pertenece. Saberlo te ahorra horas:

PrefijoQué haceFicheros clave
d_Arranque, bucle principal y redd_main.c, d_net.c
g_Lógica de partida: niveles, demos, guardadog_game.c
p_Simulación: física, colisiones, puertas, IA de los monstruosp_enemy.c, p_map.c, p_tick.c
r_Renderizado: árbol BSP, paredes, suelos y spritesr_main.c, r_bsp.c, r_segs.c
i_La capa que habla con el sistema: vídeo, sonido, redi_video.c, i_sound.c
w_ / z_Lectura de ficheros WAD y gestor de memoria propiow_wad.c, z_zone.c
m_Utilidades: aritmética de punto fijo, aleatorios, menúsm_fixed.c, m_random.c
am_, st_, hu_, wi_, f_Automapa, barra de estado, mensajes, intermedios y finalesam_map.c, st_stuff.c

Cómo leer el código de DOOM sin perderte

Un orden que funciona para entender el motor de principio a fin:

  1. d_main.c: D_DoomMain() arranca el juego y D_DoomLoop() es el bucle infinito que lo mueve todo.
  2. g_game.c y p_tick.c: cada «tic» (35 por segundo) se leen las entradas del jugador y se avanza la simulación del mundo.
  3. r_main.c y r_bsp.c: el renderizador recorre el árbol BSP del mapa para dibujar solo lo visible, de delante hacia atrás. Es la gran idea técnica del juego.
  4. m_fixed.c: DOOM no usa decimales en coma flotante, sino punto fijo 16.16, porque los PC de 1993 no podían permitírselo.
  5. m_random.c: los «aleatorios» salen de una tabla fija de 256 valores. Por eso DOOM es totalmente determinista y las demos son solo grabaciones de teclas.
  6. i_video.c: la única parte atada a Linux. Si alguna vez quieres portar DOOM, lo que tienes que reescribir está aquí y en los otros i_*.

Merece la pena leer también el README.TXT: Carmack reconoce ahí lo que haría distinto (como recortar con coordenadas polares, o no usar el BSP para las colisiones) y propone ideas de proyecto para quien quiera seguir. Si quieres ir más allá, el libro Game Engine Black Book: DOOM de Fabien Sanglard explica el motor línea a línea.

¿Se puede jugar con este código?

Sí, pero no directamente. Este repositorio es un documento histórico, no un instalador. Ten en cuenta:

  • Faltan los datos del juego. Necesitas un fichero WAD: el DOOM1.WAD shareware (el primer episodio, de distribución libre), tus DOOM.WAD o DOOM2.WAD comprados, o Freedoom, que es un juego de datos 100 % libre.
  • Compila para Linux de 1997. Usa X11 en modo de 8 bits y cuesta compilarlo en un sistema actual sin parches.
  • No trae música. La versión de DOS usaba una librería de sonido comercial (DMX) que id no podía liberar, así que el código publicado es la versión de Linux, sin ella.

Si lo que quieres es jugar en tu ordenador, usa un port moderno (abajo tienes los recomendados). Y si lo quieres sin instalar nada, sigue leyendo.

El motor de id Software compilado a WebAssembly, corriendo en una pestaña de Chrome.

Partiendo de este mismo repositorio hemos hecho doom-html, un port del código de id a WebAssembly que se juega en cualquier navegador de escritorio, sin instalar nada. No es una imitación en JavaScript: es el motor de 1993 sin tocar, compilado con Emscripten. Solo se ha reescrito la capa i_* para que hable con el navegador en lugar de con Linux.

  • Fiel al original: las tres demos de la pantalla de título se han comparado tic a tic con Chocolate Doom, y en más de 10.000 tics no hay ni una diferencia.
  • Con música FM: se emula el chip Yamaha OPL2 de las Sound Blaster para recuperar la música que faltaba en el código liberado.
  • 35 fps a 320×200, con la imagen estirada a 4:3 como en un monitor CRT y partidas guardadas en el navegador.
  • Legal: trae el DOOM1.WAD shareware, y si tienes el juego puedes cargar tu propio WAD, que no sale de tu ordenador.

Si te interesa la parte técnica (Asyncify para el bucle infinito, emulación del OPL2, cómo se verificó la fidelidad), está todo en el TECHNICAL.md del proyecto. Es una buena forma de ver en la práctica cómo está separado el motor de id.

Ports y versiones de DOOM: cuál elegir

Como el código es libre y está muy bien separado del sistema, DOOM se ha portado a casi cualquier cosa con un chip y una pantalla: calculadoras, impresoras, cajeros, frigoríficos… «¿Corre DOOM?» es casi un meme de internet. En la práctica, estos son los ports que merece la pena conocer:

ProyectoPara qué
Chocolate DoomJugar exactamente como en DOS. Es la referencia de fidelidad.
Crispy DoomLo mismo que Chocolate Doom, pero a más resolución y con pequeñas comodidades.
DSDA-DoomSpeedrunning y mapas de la comunidad muy exigentes.
UZDoom (fork de GZDoom)Gráficos modernos, mirar arriba y abajo, mods grandes.
doom-htmlJugar el original en el navegador, sin instalar nada.

Preguntas frecuentes sobre el código de DOOM

¿Dónde está el código fuente de DOOM?

En el repositorio oficial de id Software en GitHub: github.com/id-Software/DOOM. Es el código que se liberó en 1997, subido a GitHub en 2012.

¿Es legal usar el código de DOOM?

Sí. Desde 1999 el código está bajo licencia GPL v2: puedes estudiarlo, modificarlo y distribuirlo siempre que tu versión también sea GPL. Lo que no es libre son los datos de los juegos comerciales (los WAD de DOOM y DOOM II).

¿En qué lenguaje está programado DOOM?

En C, con alguna rutina en ensamblador en la versión original de DOS. La versión publicada para Linux es C puro, sin ensamblador.

¿Puedo jugar a DOOM sin instalar nada?

Sí: doom-html ejecuta el motor original en el navegador con el primer episodio shareware.

Vídeo de DOOM

El vídeo de este repositorio está en camino. Mientras tanto, tienes más repos explicados en el canal de YouTube de Repositorios que deberías conocer.

Otros motores clásicos con código abierto

  • OpenLara: motor abierto del Tomb Raider original.
  • OpenMW: reimplementación libre del motor de Morrowind.
  • ScummVM: para jugar a aventuras gráficas clásicas.
  • RetroArch: interfaz para núcleos de emulación, incluido uno de DOOM.

Repositorio y fuentes oficiales

Código fuente de DOOM en GitHub · README original de John Carmack · doom-html (port a WebAssembly)

Información del proyecto contrastada el 17 de octubre de 2026. Revisa las licencias del código y de los datos del juego antes de redistribuir nada.

Tú decides

¿Quieres ver Código fuente de DOOM funcionando paso a paso?

Lo instalamos, lo probamos con un caso real y preparamos una guía para que puedas replicarlo. Dinos qué formato prefieres: haremos primero los repositorios que más se pidan.

Un clic basta. Sin registro.