Doom Wiki
Advertisement
Doom Wiki

Esta es una lista de limitaciones estáticas del motor de Doom Vanilla, incluidos Heretic, Hexen y Strife. Además, Doom Classic y Strife: Veteran Edition también están cubiertos.

Tenga en cuenta que los límites relacionados con el renderizado (como MAXVISSPRITES) no se aplican al renderizador acelerado por hardware de Strife: Veteran Edition, y solo se usan cuando el juego usa su renderizador "clásico".

El motor utiliza una serie de límites al usar matrices estáticas para almacenar datos, cuyo tamaño se define en el código.

Visplane[]

El artículo principal de esta tema es Desbordamiento visplane.

El límite más famoso de todos, hay 128, y cada uno representa una combinación única de altura de piso o techo, nivel de luz y textura presente en una escena renderizada. En el peor de los casos, cada subsector generará al menos dos visplanes si su piso y techo están a la vista, pero estos pueden fusionarse, o dividirse, a medida que el motor del juego dibuja la escena. Las únicas formas de deshacerse de esto son hacer que su nivel sea menos detallado en las áreas visibles desde el lugar donde ocurre, agregar paredes que obstruyan la vista o mover áreas hacia arriba o hacia abajo verticalmente para que los pisos o techos no sean visibles.

Vissprites[]

El artículo principal de esta tema es Límite de sprites visibles.

Doom no dibujará más de 128 sprites a la vez. Si existen demasiados, los adicionales parpadearán dentro y fuera de la vista, dependiendo del orden de clasificación. De hecho, lo mismo podría suceder en la versión SNES de Doom (porque SNES también tiene un límite de 128 sprites en pantalla), pero en ninguno de los niveles de Vanilla es eso posible y probablemente haría que el FPS del juego se ralentice de todos modos .

Drawsegs[]

Doom no renderizará más de 256 segmentos (128 en versiones anteriores) en una sola escena. El resto producirá el Efecto sala de espejos (HOM). Doom dibuja de adelante hacia atrás, por lo que las líneas más alejadas del jugador generalmente desaparecerán primero.

BLOCKMAP[]

El artículo principal de esta tema es Límite de tamaño del mapa (bloques).

El mapa de bloques para un mapa vainilla no puede exceder los 65.536 bytes de tamaño. Incluso un mapa relativamente simple con solo 4 líneas definidas puede exceder el límite del mapa de bloques si está hecho para cubrir suficiente área, porque el tamaño del mapa de bloques es una función tanto del número de líneas definidas en el mapa como de la cantidad de área que cubre en 128x128 bloques. Los mapas que superan el límite del mapa de bloques pueden bloquear Vanilla Doom.

Segs/lados/lineas/subsectores/nodos[]

El número de ninguna de estas cosas puede exceder 32.768 debido a los límites de tamaño de tipo de datos en el formato del mapa. Hablando en términos prácticos, el límite de segs es siempre el primer golpe y, por lo tanto, impone un límite aún más estricto a las otras entidades, de las cuales el número de segs es parcialmente una función.

Plataformas y techos[]

Solo 30 acciones de plataforma pueden estar activas a la vez. Exceder este límite provocará un bombardeo con mensajes de error. También puede haber solo 30 efectos de techo activos a la vez, y si se excede este límite, el mapa puede comportarse de manera extraña.

Interruptores[]

Si se activan más de 16 interruptores a la vez, el juego se disparará.

Spechits[]

Cruzar más de 8 linedefs especiales en un solo tic provocará un desbordamiento interno y se generará un comportamiento indefinido.

Intercepciones[]

Si un rastreador de balas cruza demasiadas cosas y líneas (más de 128), ocurrirá un desbordamiento interno, causando un comportamiento indefinido. Esto a veces da como resultado el error conocido como "todos fantasmas".

Coordenadas[]

Debido al formato de punto fijo utilizado por Doom, la parte entera de las coordenadas es efectivamente un número de 16 bits con signo, restringido a valores entre -32.767 y 32.767. Los valores mayores simplemente no se pueden expresar.

Esta restricción de amplitud concierne tanto a las coordenadas absolutas como a las relativas, ya que las mismas unidades se usan al calcular distancias entre dos puntos, por lo que las dimensiones diagonales también se refieren. En términos prácticos, es más seguro mantener los límites del mapa entre -20.000 y 20.000.

Incluso los source ports con eliminación de límites generalmente no aumentan este límite, ya que aumentarlo requiere pasar a la aritmética de coma flotante o al formato de 64 bits.

Longitud de demostración[]

Las demos grabadas tienen un tamaño de archivo máximo predeterminado de 128 KB. El juego se cierra abruptamente si se alcanza este límite durante la grabación. Sin embargo, las demostraciones más largas todavía se pueden reproducir.

El límite puede aumentarse utilizando el parámetro -maxdemo, pero solo hasta la memoria libre restante del ejecutable (ver más abajo). Esto varía de una máquina a otra, pero parece superar los 4 MB (u 8 horas, 19 minutos, 19 7/35 segundos de juego en solitario).

RAM total utilizada[]

El grupo de memoria en Doom o Doom II está codificado a 6 MB (consulte el archivo i_system.c). En Doom 3: BFG Edition, el grupo de memoria para Doom y Doom II está codificado a 15 MB (consulte el archivo z_zone.cpp).

Lista[]

Nombre Valor Valores elevados Notas
Hexen Strife SVE DC
BACKUPTICS 12 - - - 64 Se usa para dimensionar la matriz localcmds.
HU_MAXLINELENGTH 80 - - - - Longitud máxima del mensaje.
HU_MAXLINES 4 - - - - Número de mensajes recordados.
LIGHTLEVELS 16 - - - - -
MAX_ADJOINING_SECTORS 20 - - - - Se usa para encontrar el siguiente piso más alto.
MAX_DM_STARTS 10 16 - Removido - El jugador genera puntos para el deathmatch. Llamado MAXDEATHMATCHSTARTS en Hexen.
MAXANIMS 32 - 40 40 - Cantidad máxima de planos animados y tipos de textura en un nivel. (No sectores y líneas).
MAXARGVS 100 - - - - Parámetros de línea de comando
MAXBUTTONS 16 - - - - 4 jugadores, 4 botones cada uno a la vez, máx. No aumentó en Hexen o Strife a pesar del aumento de MAXPLAYERS. El juego no se cerrará si se supera en SVE.
MAXCEILINGS 30 - - Removido - Techos activos.
MAXDRAWSEGS 256 - - Removido 1280 -
MAXEVENTS 64 - - - - Redes y manejo de garrapatas relacionadas. El tamaño de la matriz localcmds es MAXPLAYER * BACKUPTICS.
MAXINTERCEPTS 128 - - - - Strife no se bloquea, funciona mal o sale si se excede este límite.
MAXLIGHTSCALE 48 - - - - -
MAXLIGHTZ 128 - - - - -
MAXLINEANIMS 64 - 96 96 - Número máximo de desplazadores de pared (tipo de línea 48) en un nivel.
MAXNETNODES 8 16 16 16 - Máx. de computadoras / jugadores en un juego.
MAXOPENINGS SCREENWIDTH*64 - - 64000 - SCREENWIDTH es normalmente 320; sin embargo, se triplicó a 960 en el puerto Classic Doom incluido con Doom 3: BFG Edition. Un valor de 320 * 200, o 64000, es suficiente para eliminar este límite en el motor de vainilla como factor, ya que no puede haber más aperturas de las que se pueden mostrar por píxel.
MAXPLATS 30 - - Removido - -
MAXPLAYERS 4 8 8 8 - El número máximo de jugadores, multijugador / redes.
MAXSEGS 32 - - 161 - Número de solidsegs que se pueden generar en un marco. Un valor de SCREENWIDTH / 2 1 (o 161) es suficiente para eliminar este límite en el motor de vainilla como factor, ya que no puede haber más segmentos sólidos generados que este valor.
MAXSLIDEDOORS 5 - 8 8 - No utilizado, relacionado con el código incompleto de la puerta corrediza. Utilizado para puertas animadas en Strife.
MAXSPECIALCROSS 8 - - 20* - Número máximo de golpes especiales (spechit). En Strife: Veteran Edition, los desbordamientos se emulan después de que se supera el límite normal de 8.
MAXSWITCHES 50 - 80 80 - Número máximo de animaciones de textura de interruptor que se pueden definir internamente.
MAXVISPLANES 128 160 200 Removido 384 Michael Raymond-Judy menciona el aumento del límite de visplane para Heretic (era más bajo en el momento en que se creó Heretic, ya sea 32 o 64).
MAXVISSPRITES 128 192 - - -
MAXWADFILES 20 - - - - El número máximo de archivos que se pueden cargar, IWAD incluidos.

Heretic[]

Límites de Heretic
Nombre Valor Notas
MAX_AMBIENT_SFX 8 Número máximo de elementos de sonido ambiental globales.
MAX_BOSS_SPOTS 8 Número máximo de destinos de teletransporte para D'Sparil.
MAX_MACE_SPOTS 8 Número máximo de puntos de generación de la Maza de fuego.

Hexen[]

Límites de Hexen
Nombre Valor Notas
MAX_ACS_MAP_VARS 32 Número de variables ACS separadas con alcance de mapa.
MAX_ACS_SCRIPT_VARS 10 Número de variables ACS separadas con alcance local en un solo script.
MAX_ACS_STORE 20 Número de scripts que se pueden iniciar "remotamente" en otros mapas.
MAX_ACS_WORLD_VARS 64 Número de variables ACS separadas con alcance mundial en un Centro (hub).
MAX_ANIM_DEFS 20 Número de animaciones definidas en ANIMDEFS.
MAX_FRAME_DEFS 96 Número de fotogramas individuales utilizados por todas las animaciones definidas en ANIMDEFS.
MAX_TAGGED_LINES 64 Número de líneas con una etiqueta distinta de cero (a través de Line_SetIdentification).
MAX_TID_COUNT 200 Número máximo de actores (mobjs) con un TID distinto de cero en un mapa
Advertisement