Doom Wiki
Advertisement
Doom Wiki

El código fuente de Doom fue lanzado 23 de diciembre 1997, inicialmente bajo una licencia sin fines de lucro. Más tarde, se le concedió permiso para volver a liberar el código fuente bajo la GNU GPL el 3 octubre de 1999.

Antes de esa liberación, el código fuente fue ordenado por Bernd Kreimeier, que realizó una limpieza de los archivos del código fuente; la liberación original incluye una lista de cambios con sus contribuciones. También se incluyeron varios archivos de documentación. El plan original para el lanzamiento del código fuente incluía un libro que Kreimeier iba a escribir sobre el motor de Doom; sin embargo, debido a la disminución de la relevancia de la comunidad de jugadores de Doom, finalmente se pensó que no era una idea comercializable y el proyecto fue abandonado. A continuación, el código fuente fue liberado al público.

Debido a problemas legales con respecto a la biblioteca de sonido DMX desarrollada por Paul Radek que se utilizó en Doom, la liberación fue del código fuente a la portación Linux de Doom. A pesar de esto, en varios meses, varias portaciones (source ports) se habían vuelto a DOS. Como resultado, existen muchas portaciones.

Estructura del código fuente[]

El código fuente se puede dividir en secciones. Los archivos y funciones dentro del código fuente tienen prefijos de una o de dos letras para denotar su subsistema:

AM_* Código del Automapa
D_* Inicialización / código general
F_* "Finale" (fin del juego) y el código de transición de pantalla
G_* Bucle de juego principal / de control
HU_* Panel de avisos
I_* Código específico de sistema
M_* Varios (incluye el menú)
P_* Lógica del juego / comportamiento
R_* Motor de renderizado
S_* Código de sonido
ST_* Barra de estado
V_* Representación gráfica general
WI_* Pantalla intermedia de fin de nivel
W_* Carga de archivos WAD
Z_* Sistema de asignación de zonas de memoria

Los siguientes son los prefijos comunes para las funciones, aunque no denotan un subsistema particular y no hay archivos con estos prefijos:

A_* Funciones de acción invocadas en los frames de movimiento de sprites (éstas son las funciones utilizadas en "punteros de código" DeHackEd)
PIT_* Funciones de devolución de llamada se pasan a P_BlockThingsIterator (ver p_maputl.c)
T_* Funciones "thinker" establecidas para ser llamadas cada tic de reloj para algún propósito (por ejemplo, plataformas móviles o luces parpadeantes)

Doom Classic[]

En Doom 3: BFG Edition se incorporó la portación Doom Classic que permite jugar también a The Ultimate Doom y Doom II en máquinas con versiones de 32 y 64 bits de Windows, en la Xbox 360 y en la PlayStation 3. Se introdujeron algunos cambios realizados al código fuente y al empaquetado. Los más destacados son:

  • Los errores introducidos en el código de LinuxDoom por la "limpieza" y los cambios de Bernd Kreimeier están ausentes.
  • MUS2MIDI y TiMidity se incorporan para la reproducción MIDI, en lugar de utilizar DMX.
  • Algunos límites estáticos se han replanteado, en particular visplanes y drawsegs para dar cabida a los niveles de Doom II: No Rest for the Living.
  • Varios #defines se han sacado de sus archivos originales e introducidos en Precompiled.h o defs.h (ambos archivos nuevos).
  • Los agregados Master Levels for Doom II y No Rest for the Living son manejados como packs de misiones igual que TNT: Evilution y Plutonia.
  • El archivo del idioma francés está todavía presente pero vacío, el francés se retira de la enumeración en language_t.
  • El código está disponible bajo las licencias GPLv3 o posterior.
Nota: Esto no debe confundirse con la portación a iOS también llamada Doom Classic (iOS).


Véase también[]

Enlaces externos[]

Advertisement