Saya ingin tahu tentang struktur data yang digunakan saat memprogram game yang lebih lama seperti Super Mario Brothers untuk NES dan Super Mario World untuk SNES. Pemahaman saya adalah bahwa game periode ini ditulis dalam pertemuan. Apakah programmer mendefinisikan / menggunakan struktur data?
Sebagai contoh: ketika sekelompok koin muncul di layar bagaimana mereka disimpan? Apakah programmer hanya menggunakan array? Atau mungkin mereka memiliki daftar tautan?
Bersulang!
Sunting : Saya tertarik dengan berbagai pendekatan ... belum tentu pendekatan universal.
Sunting 2 : Dalam beberapa permainan saya, saya menggunakan pendekatan (berpotensi buruk) terhadap koleksi dan saya ingin tahu apakah ada game yang lebih tua menggunakan pendekatan yang sama. Saya suka melakukan hal berikut:
// 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
}
}
sumber
Jawaban:
Bahkan dalam 16-bit hari, konsol game pada dasarnya hanya kecil, komputer tertanam yang menjalankan perangkat lunak realtime, dan struktur data yang kami gunakan adalah yang sama dengan yang Anda temukan di mana pun dalam ilmu komputer: array, matriks, tumpukan, tumpukan. Tidak banyak daftar yang tertaut karena mereka sangat lambat (pencarian tidak langsung memiliki latensi yang panjang).
Perbedaannya adalah bahwa sebelum STL, dan dengan kinerja yang sangat kritis, kami biasanya harus menulis sendiri struktur dan algoritmanya!
David Braben melakukan ceramah yang menyenangkan di GDC 2011 di mana ia berbicara tentang semua trik gila yang digunakannya untuk mencocokkan Elite ke BBC Micro pada tahun 1984. Anda dapat menontonnya secara gratis di GDC Vault .
sumber
if(coinsActive)
sebelum saya mengulang maxNumCoins dan memperbarui. Dengan cara ini saya benar-benar menghindari loop jika nol koin aktif.Berikut ini adalah diskusi menarik tentang GameDev.net untuk kode sumber Super Mario Bros: Kode sumber Super Mario
sumber