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
| Repositorio | id-Software/DOOM |
| Autor | id Software (motor de John Carmack) |
| Lenguaje | C (GitHub lo etiqueta como C++ por las cabeceras) |
| Licencia | GNU GPL v2 (desde 1999; en 1997 salió con una licencia no comercial) |
| Versión del código | linuxdoom-1.10, para Linux y X11 |
| Liberado | 23 de diciembre de 1997 · en GitHub desde 2012 |
| Popularidad | Casi 20.000 estrellas y más de 3.500 forks |
| Incluye el juego | No: 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/ysersrc/: 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:
| Prefijo | Qué hace | Ficheros clave |
|---|---|---|
d_ | Arranque, bucle principal y red | d_main.c, d_net.c |
g_ | Lógica de partida: niveles, demos, guardado | g_game.c |
p_ | Simulación: física, colisiones, puertas, IA de los monstruos | p_enemy.c, p_map.c, p_tick.c |
r_ | Renderizado: árbol BSP, paredes, suelos y sprites | r_main.c, r_bsp.c, r_segs.c |
i_ | La capa que habla con el sistema: vídeo, sonido, red | i_video.c, i_sound.c |
w_ / z_ | Lectura de ficheros WAD y gestor de memoria propio | w_wad.c, z_zone.c |
m_ | Utilidades: aritmética de punto fijo, aleatorios, menús | m_fixed.c, m_random.c |
am_, st_, hu_, wi_, f_ | Automapa, barra de estado, mensajes, intermedios y finales | am_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:
d_main.c:D_DoomMain()arranca el juego yD_DoomLoop()es el bucle infinito que lo mueve todo.g_game.cyp_tick.c: cada «tic» (35 por segundo) se leen las entradas del jugador y se avanza la simulación del mundo.r_main.cyr_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.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.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.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 otrosi_*.
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.WADshareware (el primer episodio, de distribución libre), tusDOOM.WADoDOOM2.WADcomprados, 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.
Juega al DOOM original en el navegador

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.WADshareware, 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:
| Proyecto | Para qué |
|---|---|
| Chocolate Doom | Jugar exactamente como en DOS. Es la referencia de fidelidad. |
| Crispy Doom | Lo mismo que Chocolate Doom, pero a más resolución y con pequeñas comodidades. |
| DSDA-Doom | Speedrunning y mapas de la comunidad muy exigentes. |
| UZDoom (fork de GZDoom) | Gráficos modernos, mirar arriba y abajo, mods grandes. |
| doom-html | Jugar 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.
