Tengo curiosidad por las estructuras de datos utilizadas al programar juegos antiguos como Super Mario Brothers para NES y Super Mario World para SNES. Tengo entendido que los juegos de este período se escribieron en asamblea. ¿Los programadores definieron / usaron alguna estructura de datos?
Por ejemplo: cuando aparece un grupo de monedas en la pantalla, ¿cómo se almacenan? ¿Los programadores solo usaron matrices? ¿O tal vez tenían listas enlazadas?
¡Salud!
Editar : Estoy interesado en varios enfoques ... no necesariamente un enfoque universal.
Edición 2 : en algunos de mis juegos utilizo un enfoque (potencialmente malo) hacia las colecciones y quiero saber si alguno de los juegos más antiguos utilizó un enfoque similar. Me gusta hacer lo siguiente:
// statically allocated arrays (max number of coins is 4)
int coinsXs[4] = {0, 0, 0, 0};
int coinsYs[4] = {0, 0, 0, 0};
// bitset that keeps track of which coins are active
int coinsActive = 0;
// ...
// update the active coins in an update function
for(int i = 0; i < 4; i++){
if(coinsActive & (1 << i)){
// update ith coin
}
}
fuente
Respuestas:
Incluso en los días de 16 bits, las consolas de juegos eran básicamente computadoras pequeñas e integradas que ejecutaban software en tiempo real, y las estructuras de datos que utilizamos son las mismas que encontraría en cualquier parte de la informática: matrices, matrices, montones, árboles. No hay muchas listas vinculadas porque son muy lentas (las búsquedas indirectas tienen una latencia larga).
La diferencia es que antes del STL, y con un rendimiento tan crítico, ¡generalmente teníamos que escribir las estructuras y los algoritmos nosotros mismos!
David Braben hizo una conferencia divertida en el GDC de 2011, donde habló sobre todos los trucos locos que usó para instalar Elite en un BBC Micro en 1984. Puedes verlo gratis en el GDC Vault .
fuente
if(coinsActive)
antes de pasar por maxNumCoins y actualizar. De esta manera, evito completamente el ciclo si hay cero monedas activas.Aquí hay una discusión interesante en GameDev.net para el código fuente de Super Mario Bros: Código fuente de Super Mario
fuente