网易首页 > 网易数码 > 正文

25年前,开发者如何将游戏塞进内存?

0
分享至
摘要:25年前,开发者是如何将游戏塞进那么小的内存中的?Quora上,这个问题获得了50万人的阅览,Dave Baggett对问题的回答也获得了六千多的点赞,其中不乏游戏大师。

Crash Bandicoot游戏封面

问题描述

家庭游戏系统软件采用了64K~128K的磁卡(cartridge),然而却能够提供玩好几个小时的各式各样的图形、精灵鬼怪和声音。游戏系统好像要提供大量的功能(功能性的函数、库、硬件加速和图形指令等等)似的,大量的图片、音乐和音效、动画效果、游戏算法能放入如此小的存储空间中,是多么得令人吃惊,更别提是25年前!

上面提到的存储空间大小目前看来也就等同于一个采用中等分辨率压缩(moderate-resolution compressed)的JPEG文件——一张图片而已。我十分好奇,在那个年代软件开发究竟是怎么一回事。我坚信在当时,开发者肯定没有一个所谓编写开源软件的协作开发环境,更别提在那样一个软件开发能收获巨大经济回报的时代。

我十分好奇,那个年代的开发者究竟基于哪些知识、技术、想法或者洞察力完成了这样的开发。有没有可能一些想法已经丢失或者没有被记录下来?曾经的电子游戏种类如此丰富,并且使数以百万的人花费数百小时在上面获得快乐,更别提游戏开发采用了这样高效的方式——这显然是一项壮举。这种效率让我想起了录制音乐demo。结合这些,我想提出下列的问题:如何更好理解计算机科学的原则和技术的使用方式,比如,如何将64K的demo进行编码。

这个问题的重点是那个时候的专业技能:那时的开发者为何如此成功?他们使用了哪些已经失传的技术、解决办法,或者算法技巧?

Dave Baggett的回答

下面是20世纪90年代末的一个相关轶事。当时,我和Andy Gavin共同为PS1编写游戏“古惑狼”(Crash Bandicoot)。

在当时,RAM依然是最主要的问题。PS1只有2MB的RAM,然而我们不得不做一些疯狂的事情使游戏适配硬件。我们的游戏数据大约有10MB大小,所以我们不得不进行动态的分页输入输出(paged in and out dynamically),虽然加载滞后帧速率就会下降到30Hz,但是我们并没有任何故障。

之所以能成功运行,是因为Andy写了一个令人难以置信的分页系统,可以将64K数据页进行交换,从而作为古惑狼这款游戏的数据遍历水平。这就是当时的 “全栈”能力,在这个分页系统中,运行了上至高级内存管理,下至操作码级别的直接内存访问系统(DMA)的全部代码。Andy甚至控制了CD-ROM磁盘上字节的物理布局,这样一来,即使磁盘的速率是300KB/s,PS1还是能在游戏执行到某个位置时加载到相应的数据。

我当时主要负责编写打包工具,这个工具的功能是将资源文件,比如声音、图形图像、小动物的声音控制代码(译者注:lisp control code)等打包为64K的数据分页,塞进Andy的系统当中去。(顺带一提,这个问题——将任意大小的对象打包成固定大小的数据分页,生产数据包——是一个NP完全问题,所以看起来在合理的时间或者线性复杂度下得到最优解是不可能的。)

然而有些时候算法并不合适,我的打包工具采用了各种各样的算法(如最先适配、最好适配(first-fit,best-fit)等等),只为找到最好的打包方案,包括使用随机搜索类似于Simulated annealing中用到的梯度下降的过程。基本上,我写了一大堆不同的打包策略,一一尝试,并择优选择。

像那样使用随机指导搜索(a random guided search)的问题在于,你永远不知道你能否再次得到同样的结果。有些古惑狼的关卡只能靠“碰碰运气”来进行随机打包,并放入最大允许页数(我印象中是21)。这意味着,一旦你将这个关卡打包,可能更改了一个乌龟的代码,就永远不会再找到这个21-分页的数据包了。有几次,一个艺术家修改一些内容,就会毁掉现行的分页计数,所以我们不得不半随机似的改变其他内容,直到打包器能再次找到可用的数据包。并且我还要在凌晨3点给这个倔强的艺术家解释清楚。

现在回忆起来,到目前为止最好的部分,也是当时最糟糕的部分,正是使核心C/程序集代码(C/assembly code)适配。那时距离“最终测试版”的发版期限没有几天了,而这几天是我们抓住假期发行游戏的最好机会,在此之前,我们失去了整整一年的时间。当时我们正在将语义上相同,而语法上具有不同表现(semantically identical but syntactically different manifestations)的C语言代码进行随机排列(permute),以此希望编译器能够生成200字节、125字节、50字节然后是小于8字节的代码。

作为当时排列所采用的方法“for (i=0; i < x; i++)”——如果我们采用上面用到的变量,并使用while循环来重写这段方法,以用作他用,那么会发生什么呢?这是我们尝尽各种一般方法——比如像将数据塞进指针的最低两位(这个方法只能在R3000上生效,因为所有的地址都是4字节对齐的(4-byte aligned))——之后的解决之道。

最终,古惑狼成功了的适配了PS1的内容,还多出了4字节的空闲空间。是的,2097152之外的4字节。那真是美好时光啊~

---------------------------------------------------------

如果您发现这篇译文的任何问题,可随时与杰微刊联系。我们水平有限,但理想高远。杰微刊旨在分享优质的内容。杰微刊也同样期待理想的您对这个世界的贡献。欢迎任何目的的联系。杰微刊的有偿投稿邮箱是:weikan@jointforce.com。我们的QQ是:3272840549。

原文:How did game developers pack entire games into so little memory twenty five years ago?

译者:杰微刊--张帆

相关推荐
热点推荐
2-0,24岁曼联旧将发威:一球一助,率队完胜诺丁汉森林

2-0,24岁曼联旧将发威:一球一助,率队完胜诺丁汉森林

凌空倒钩
2025-12-31 09:36:42
一个怪现象,现在人生病住院,连兄弟姐妹也瞒着,原因却很现实

一个怪现象,现在人生病住院,连兄弟姐妹也瞒着,原因却很现实

黑猫故事所
2025-12-25 22:08:33
福建男子囤积8千吨铜,当价格翻倍,他的举动让所有同行都傻眼了

福建男子囤积8千吨铜,当价格翻倍,他的举动让所有同行都傻眼了

红豆讲堂
2025-11-16 06:00:06
女子出轨被抓包,丈夫抓她游行示众:她把我的钱给其他男人花

女子出轨被抓包,丈夫抓她游行示众:她把我的钱给其他男人花

唐小糖说情感
2025-06-15 08:46:47
天安门上的宾客:蒋介石结拜兄弟,9年后为何被毛主席下令逮捕?

天安门上的宾客:蒋介石结拜兄弟,9年后为何被毛主席下令逮捕?

江城说历史
2025-12-30 19:36:34
李盈莹现身哈尔滨,理着波浪头,吃着烤串,听着二人转,非常悠哉

李盈莹现身哈尔滨,理着波浪头,吃着烤串,听着二人转,非常悠哉

湘楚风云
2025-12-31 18:17:05
两岸舰艇发生对峙,所有舰艇摘除炮衣,台军方已下令,可采取措施

两岸舰艇发生对峙,所有舰艇摘除炮衣,台军方已下令,可采取措施

博览历史
2025-12-30 18:22:11
晚节不保!正面数据全挂0+2失误4犯,球迷:你还是老实打潜力赛吧

晚节不保!正面数据全挂0+2失误4犯,球迷:你还是老实打潜力赛吧

弄月公子
2025-12-31 11:25:57
生殖科最奇葩的事是什么?网友:这个科绝对是最有钱成本最低的科

生殖科最奇葩的事是什么?网友:这个科绝对是最有钱成本最低的科

带你感受人间冷暖
2025-12-25 00:05:19
交流结束,蒋万安闪电离沪,上飞机前通告全岛,台当局捅了马蜂窝

交流结束,蒋万安闪电离沪,上飞机前通告全岛,台当局捅了马蜂窝

科普100克克
2025-12-30 18:08:15
分享3部高能韩剧,每一部都是经典,好评如潮看点十足

分享3部高能韩剧,每一部都是经典,好评如潮看点十足

胡鋇就爱无拘无束
2025-12-30 23:41:55
东北最有钱老头,一天进账1.6亿,冠名46列高铁,本人却很少露面

东北最有钱老头,一天进账1.6亿,冠名46列高铁,本人却很少露面

牛牛叨史
2025-12-28 23:50:09
中国纯电车型一年保值率:小米SU7、问界M9、理想MEGA排前三

中国纯电车型一年保值率:小米SU7、问界M9、理想MEGA排前三

快科技
2025-12-31 21:01:10
钉在耻辱柱上!国家文物局出手,这三个跳梁小丑,彻底凉凉

钉在耻辱柱上!国家文物局出手,这三个跳梁小丑,彻底凉凉

八斗小先生
2025-12-24 09:37:51
美国男子公园放狗起冲突,与爱犬在妻子面前同遭射杀,枪手被捕。

美国男子公园放狗起冲突,与爱犬在妻子面前同遭射杀,枪手被捕。

环球趣闻分享
2025-12-31 15:52:34
郑好被拿下了,是否代表德云社的更替?顽皮哥上位成功?

郑好被拿下了,是否代表德云社的更替?顽皮哥上位成功?

小兰聊历史
2026-01-01 00:05:02
上海残障人士因坐轮椅在大厦遭保安“驱赶”:电动轮椅有电池,进去也不能坐电梯…

上海残障人士因坐轮椅在大厦遭保安“驱赶”:电动轮椅有电池,进去也不能坐电梯…

上海圈
2025-12-30 18:36:20
年薪4600万,球队老大成累赘!全联盟难找下家,NBA快没容身之地

年薪4600万,球队老大成累赘!全联盟难找下家,NBA快没容身之地

老梁体育漫谈
2026-01-01 00:44:37
为什么人到中年很少有身材苗条的呢?网友:身材管理是个奢侈品

为什么人到中年很少有身材苗条的呢?网友:身材管理是个奢侈品

夜深爱杂谈
2025-12-08 20:08:11
放弃争夺数百亿遗产,带着女儿远遁美国,如今才知道她有多清醒

放弃争夺数百亿遗产,带着女儿远遁美国,如今才知道她有多清醒

梦史
2025-12-16 11:07:49
2026-01-01 04:23:00

头条要闻

日企代表团推迟原定访华行程 外交部回应

头条要闻

日企代表团推迟原定访华行程 外交部回应

体育要闻

马特乌斯展望2026年:西班牙将夺得世界杯冠军,德国能进四强

娱乐要闻

官宣才两天就翻车?七七被连环爆料

财经要闻

高培勇:分配制度改革是提振消费的抓手

科技要闻

老罗,演砸了,也封神了?

汽车要闻

凯迪拉克纯电中型SUV 售价不足24万/33寸曲面屏

态度原创

教育
家居
数码
手机
公开课

教育要闻

“2025中国教师报课堂改革十大样本”发布

家居要闻

无形有行 自然与灵感诗意

数码要闻

三星将在CES 2026发布厨房家电阵容,首次将谷歌Gemini塞进冰箱

手机要闻

三星Galaxy S26 Ultra:药丸相机岛+圆角边框,配置细节也清晰了

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版
×