Estou curioso sobre as estruturas de dados usadas na programação de jogos antigos, como Super Mario Brothers para NES e Super Mario World para SNES. Entendo que os jogos desse período foram escritos em assembléia. Os programadores definiram / usaram alguma estrutura de dados?
Por exemplo: quando um grupo de moedas aparece na tela, como elas são armazenadas? Os programadores apenas usaram matrizes? Ou talvez eles tivessem listas de links?
Felicidades!
Edit : Estou interessado em várias abordagens ... não necessariamente uma abordagem universal.
Edição 2 : em alguns jogos, uso uma abordagem (potencialmente ruim) para coleções e quero saber se algum dos jogos mais antigos usou uma abordagem semelhante. Eu gosto de fazer o seguinte:
// 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
}
}
data-structure
MrDatabase
fonte
fonte
Respostas:
Mesmo nos dias de 16 bits, os consoles de jogos eram basicamente pequenos computadores embarcados executando software em tempo real, e as estruturas de dados que usamos são as mesmas que você encontraria em qualquer lugar da ciência da computação: matrizes, matrizes, montes, árvores. Não há muitas listas vinculadas porque são muito lentas (as pesquisas indiretas têm uma longa latência).
A diferença é que, antes do STL, e com desempenho tão crítico, geralmente tínhamos que escrever as estruturas e os algoritmos!
David Braben fez uma palestra divertida na GDC de 2011, onde falou sobre todos os truques malucos que usou para colocar o Elite na BBC Micro em 1984. Você pode assistir gratuitamente no GDC Vault .
fonte
if(coinsActive)
antes de passar pelo maxNumCoins e atualizar. Dessa forma, evito completamente o loop se zero moedas estiverem ativas.Aqui está uma discussão interessante no GameDev.net para o código fonte do Super Mario Bros: Código fonte do Super Mario
fonte