魂斗罗……不堪回首的童年时光。魂斗罗,永远的经典。当年魂斗罗无限生命玩的爽,星际争霸多少年前的游戏了,现在还有人玩。还是以前好,现在动不动上GB的程序,努力把你和手机电脑卡死为止。
以前是优化数据,现在是优化体验。高需求对应高预算。就跟以前吃糠咽菜都行,现在去高档餐厅,一条鱼只取了一小块肉,别的地方都扔了的道理一样。以前代人住一套房子,肯定能挤就挤,现在代人住套房子,肯定怎么舒服怎么来。
过时的技术不一定就比现在的差,也许是劣币驱逐良币。现在的程序员写的代码不够精简。以前程序的核心是算法,是效率,现在是堆代码。优秀的程序员和码农是不一样的,现在的这些都是码农。
认前是汇编语言,现在是“框架化模板化“而且还要厂方写好的程式,当然消耗的容量越来越大了。以前,一个字节掰成八瓣用,现在的程序员,动不动就申请几十兆没错,看着都心碎。
来看专业的解答是:
FC时代的图形技术
FC时代的图形技术由于早期的记忆芯片(ROM)非常贵,而且大容量磁盘的技术也不成熟,所以暂且不论硬件计算能力,仅仅是想增加游戏的总容量也非常困难。所以自然会使用符合当时水平的数据结构。
以红白机FC为例,它的分辨率为256x240。分辨率不算低,但却只有2KB显存,而且还要实现全屏卷轴效果。所以在FC设计之初,从硬件上就提供了充分利用显存的方法——使用Tile(瓦片)。
对每一个场景来说,使用若干数量的瓦片,场景用有限的瓦片拼接即可。这种“二级”表示方法能极大节约存储量。具
音频容量和代码容量
现代音乐格式往往直接保存声道的波形,这种做法保真度高、通用性强,但很显然占用空间多,一首曲子的容量以千字节、兆字节计算。
而八位芯片时代的音频解决方案,关键是一颗专用芯片,例如FC用的理光2A03。
音频芯片可以产生合成音效,能提供的音色可以在一定程度上配置,但非常有限。听听FC游戏的音乐可以体会到常用的音色几乎一样。我觉得这个音频芯片最厉害的地方是可以同时播放几个音轨(但不能是和弦那种“同时”),《魂斗罗》、《沙罗曼蛇》、《忍者龙剑传》的殿堂级音乐,主要是靠多个音轨的交替配合实现的。
每个音符只要记录音色、频率和音高就足够了,音频芯片自然会识别出来。把音符按时间排列好就是“乐谱”了,可以简单理解为“简谱”。这种简谱需要的数据量十分有限,而且大部分游戏音乐都是循环播放,数据量更是小的可怜。
代码也是类似的。
FC时代的游戏,没有所谓的“引擎层”,或者说引擎层就是“硬件层”。任天堂的主机完全是为游戏而设计的,瓦片、调色板、音乐、音效等基本功能已经预先考虑到了,这样一来就节约了大量底层代码。程序员要仔细研究文档,在硬件框架下思考问题,比如如何显示图片、如何卷动屏幕等等;而且还要非常熟悉硬件底层和汇编,不要浪费代码空间。
一来二去,代码也能写的非常小。
总的来说,128KB的游戏大作,在30年前稀松平常,放到现在简直就是黑科技。科技的剧烈变革带来技术指标非线性的变化,让我们的记忆和直觉彻底落伍。