Doom Wiki
Advertisement
Doom Wiki
Errores del motor
Canónico:
Indiscutible
Causa:
Linedef
Fatal (S/N):
S
Solucionado:
S
Escape:
N
Nota: Ver descripción de las claves en Fallos del motor


El motor de Doom contiene un límite en la cantidad de plataformas que pueden estar moviéndose simultáneamente. Una plataforma se define como un sector con piso móvil. El límite en Vanilla Doom es de 30 plataformas en movimiento. Si se excede el límite de plataformas, el juego se cierra con el mensaje:

P_AddActivePlat: No more plats!

Una forma simple de activar deliberadamente este error es crear una linedef para activar un piso en movimiento. Si la linedef no recibe ninguna etiqueta (es decir, una etiqueta de 0), el hecho de desencadenarlo intentará provocar que cada sector sin etiquetar en el nivel comience a moverse. En cualquier nivel de tamaño razonable, esto hará que se exceda el límite.

Aspectos técnicos[]

El límite en sí se encuentra en p_spec.h:

#define MAXPLATS               30

El código responsable del límite se encuentra en p_plats.c. Específicamente, hay una matriz con longitud estática que depende de ese límite:

plat_t*         activeplats[MAXPLATS];

La función P_AddActivePlat busca la matriz para encontrar una nueva ranura donde almacenar la información sobre la nueva plataforma. Si no se encuentra ninguna disponible, entonces el programa sale con un error:

void P_AddActivePlat(plat_t* plat)
{
    int         i;

    for (i = 0;i < MAXPLATS;i++)
        if (activeplats[i] == NULL)
        {
            activeplats[i] = plat;
            return;
        }
    I_Error ("P_AddActivePlat: no more plats!");
}

Véase también[]

Advertisement