Motor de Doom (a veces llamado id Tech 1) es el motor de juego creado por id Software para el clásico Doom. Además de Doom, se empleó en títulos relacionados —por ejemplo Doom 2— y en versiones muy modificadas en juegos como Heretic, Hexen y Strife (sin embargo, Doom 3 utiliza un motor distinto). Fue un avance decisivo en su época por su rapidez y eficacia en máquinas sin aceleración 3D.
Tecnología y arquitectura
El motor está escrito en su mayor parte en C (con algunas secciones de ensamblador optimizado en las versiones originales) y emplea técnicas diseñadas para renderizar escenas en tiempo real usando únicamente la CPU, ya que en 1993 la mayoría de tarjetas gráficas no ofrecían aceleración 3D.
- Partición espacial binaria (BSP): la estructura BSP (binary space partition) divide el mapa en nodos y subnodos para acelerar la determinación de visibilidad y el orden de dibujo. Esto permite al motor saber qué partes del mapa son visibles desde la posición del jugador y en qué orden dibujarlas.
- Representación del nivel: internamente usa linedefs, sidedefs, sectores, verticies y "things" (monstruos, objetos, decorativos). Los mapas se almacenan en el formato WAD: suelen distinguirse IWAD (datos del juego) y PWAD (mods o niveles personalizados), con los llamados "lumps" que contienen texturas, sprites, sonidos y mapas.
- Renderizado por software: las paredes se dibujan por columnas y los suelos/techos mediante estructuras llamadas visplanes (span rendering). Las sprites (enemigos, items) se proyectan y dibujan sobre esas columnas. Para la iluminación se usan tablas de colormap que simulan atenuación por distancia.
- Aritmética fija y tablas precalculadas: para maximizar el rendimiento en CPUs lentas se utiliza aritmética fija en lugar de coma flotante y numerosas tablas precalculadas (ángulos, seno/coseno, escalados) que aceleran cálculos matemáticos usados en el renderizado.
Limitaciones y técnicas creativas
El motor no es un verdadero motor 3D en el sentido moderno: los sectores son planos horizontales independientes, por lo que no soporta «room-over-room» (habitaciones una sobre otra) sin trucos. Muchas construcciones aparentes (puentes, huecos, elevadores) se logran mediante sectores con alturas distintas, portales y movimientos de sectores. Los diseñadores y mappers desarrollaron multitud de técnicas y "trucos" para conseguir efectos que el motor no ofrecía de forma nativa.
Formato WAD y modding
Los datos de niveles, gráficos, sonidos y objetos se almacenan en archivos WAD. Un WAD contiene lumps etiquetados que el motor interpreta para cargar mapas, paletas, sprites, flats (texturas de suelo/techo) y scripts básicos. Esta separación de datos y código facilitó enormemente la creación de mods y niveles personalizados, convirtiendo a Doom en un fenómeno de comunidad creativa.
Código fuente y licencias
El código fuente del motor de Doom fue publicado por id Software y posteriormente liberado bajo la licencia pública general de GNU, lo que permitió a la comunidad estudiar, modificar y recompilar el motor. Esa apertura propició el desarrollo de numerosas versiones alternativas (source ports) y su portabilidad a multitud de plataformas.
Source ports y evolución
Muchos aficionados han creado source ports (versiones modificadas del código fuente) que añaden funcionalidades, corrigen errores o adaptan el motor a hardware moderno. Los ports más conocidos incluyen Boom, PrBoom, PrBoom+, Zdoom y Chocolate Doom. De forma general, los source ports pueden:
- Añadir aceleración gráfica por OpenGL/Vulkan y soporte para mayores resoluciones (por ejemplo, GZDoom como derivado moderno de ZDoom).
- Implementar controles modernos: mouselook, soporte para gamepads, sensibilidad mejorada.
- Mejorar la precisión del motor original o por el contrario añadir nuevas características de juego (nuevos efectos, scripting, compatibilidad con mods avanzados).
- Corregir bugs históricos y mejorar la red/compatibilidad entre versiones.
Portabilidad y legado
El motor de Doom ha sido portado a más arquitecturas que probablemente cualquier otro motor de su género: desde PCs y consolas hasta calculadoras, móviles y pequeños ordenadores embebidos. Esa facilidad se debe a su implementación en C, su bajo requerimiento de recursos y a la disponibilidad del código fuente. Su impacto es enorme: no solo influyó en los motores 3D posteriores, sino que creó una comunidad intensa de modders, artistas y mappers que mantiene vivo el ecosistema hasta hoy.
Por qué sigue interesando
- Es un ejemplo didáctico de técnicas de renderizado por software y estructuras de datos eficientes.
- Permite estudiar la evolución del diseño de juegos en primera persona y las limitaciones de hardware de los 90.
- Ofrece una plataforma abierta para experimentar con mods, niveles y nuevas tecnologías (p. ej. portar el motor a nuevas arquitecturas o añadir aceleración por GPU).
En resumen, el motor de Doom (id Tech 1) no solo es histórico por su papel en la popularización de los shooters en primera persona, sino también por su diseño práctico, su apertura de código y la enorme comunidad que surgió alrededor de él —incluyendo numerosos source ports que mantienen y expanden sus capacidades en la actualidad.