我对编程诸如NES的Super Mario Brothers和SNES的Super Mario World之类的旧游戏进行编程时使用的数据结构感到好奇。我的理解是,这段时期的游戏是汇编形式的。程序员是否定义/使用任何数据结构?
例如:当一组硬币出现在屏幕上时,如何存储它们?程序员只是使用数组吗?也许他们有链接列表?
干杯!
编辑:我对各种方法感兴趣...不一定是通用方法。
编辑2:在我的一些游戏中,我对收藏使用了一种(可能很糟糕的)方法,并且我想知道是否有任何较旧的游戏使用了类似的方法。我喜欢执行以下操作:
// 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
}
}
2
没有普遍的答案。这取决于给定的程序员如何针对给定的问题实施解决方案。
—
Ed S.
虽然我不认为所有这些游戏都是用汇编编写的,但我要说,汇编程序员收集它们的小组件以便在程序之间进行复制/粘贴重用是相当普遍的。毕竟,您要编写几次printf()函数?:)
—
詹姆斯
好点子。我真的很好奇动态分配的集合与静态分配的集合
—
MrDatabase 2011年
您有什么具体问题?您为什么要关心旧游戏的功能?
—
四分
在第二次编辑中得到的是“数组结构”布局的示例,该布局在现代游戏中仍然很常见,因为它具有并行性和SIMD操作的优势。索尼几年前做了一次演讲,介绍了传统的C ++数据结构方式如何会带来严重的隐性性能成本:research.scee.net/files/presentations/gcapaustralia09/…–
—
Crashworks