More

    为什么魂斗罗只有128KB却可以实现那么长的剧情?

    作者:皮皮关
    链接:https://www.zhihu.com/question/50076174/answer/1101330430
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    现代程序员A和1980年代游戏程序员B的对话:

    A:为什么你用128KB能实现这么多画面、音乐、动画?

    B:128KB还不够么?其实为了表现力已经相当奢侈了,加了很多不重要的细节。

    A:就说你们的音乐,这个音乐,我压到最低码率的mp3,也得至少1MB吧。

    B:你怎么压的?一首背景音乐怎么可能超过1KB。

    A:那你实现全屏卷轴,用了多少显存?

    B:一共就只有2KB显存,多了也放不下啊。

    A:……

    1、我们对“数据量”无法直观认识

    除非是专家,一般人根本无法估算到底多大算大,多小算小。

    一般人对“数据量”并没什么概念。一篇800字的作文有多少数据量?按照GBK编码,约1.6KB,按照UTF-8编码,则是2.4KB。

    只写了1个字的作文,按理来说1字节~3字节就够了。但只写1个字的word文档,有10956字节【汗】。而由于硬盘格式化要求,再多占用1332字节【再汗】。

    我就写了一个字,真的什么都没干

    现实中常见的产品、流行的技术,实际上和时代背景密切相关。

    当你抱着15寸笔记本还嫌小的时候,1990年代初的家庭,可是一家人围着14~18寸的球面电视看的。把雪碧拿给古代人喝一口,估计他会齁得要死,必须喝点水压压惊。

    当物质基础变得十分丰富的时候,一定会产生无法避免的“浪费”,这种“浪费”会进一步改变人感受的阈值,对度量的估计都变得紊乱了。

    2、FC时代的图形技术

    由于早期的记忆芯片(ROM)非常贵,而且大容量磁盘的技术也不成熟,所以暂且不论硬件计算能力,仅仅是想增加游戏的总容量也非常困难。所以自然会使用符合当时水平的数据结构。

    以红白机FC为例,它的分辨率为256×240。分辨率不算低,但却只有2KB显存,而且还要实现全屏卷轴效果。所以在FC设计之初,从硬件上就提供了充分利用显存的方法——使用Tile(瓦片)。

    对每一个场景来说,使用若干数量的瓦片,场景用有限的瓦片拼接即可。这种“二级”表示方法能极大节约存储量。具体一些原理讲解可以看一些科普,比如这个:【萌新图形学】TileMap瓦片地图简介,以及它的优化原理_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​

    3、音频容量和代码容量

    现代音乐格式往往直接保存声道的波形,这种做法保真度高、通用性强,但很显然占用空间多,一首曲子的容量以千字节、兆字节计算。

    而八位芯片时代的音频解决方案,关键是一颗专用芯片,例如FC用的理光2A03:

    下:理光2A03

    音频芯片可以产生合成音效,能提供的音色可以在一定程度上配置,但非常有限。听听FC游戏的音乐可以体会到常用的音色几乎一样。我觉得这个音频芯片最厉害的地方是可以同时播放几个音轨(但不能是和弦那种“同时”),《魂斗罗》、《沙罗曼蛇》、《忍者龙剑传》的殿堂级音乐,主要是靠多个音轨的交替配合实现的。

    每个音符只要记录音色、频率和音高就足够了,音频芯片自然会识别出来。把音符按时间排列好就是“乐谱”了,可以简单理解为“简谱”。这种简谱需要的数据量十分有限,而且大部分游戏音乐都是循环播放,数据量更是小的可怜。

    代码也是类似的。

    FC时代的游戏,没有所谓的“引擎层”,或者说引擎层就是“硬件层”。任天堂的主机完全是为游戏而设计的,瓦片、调色板、音乐、音效等基本功能已经预先考虑到了,这样一来就节约了大量底层代码。

    程序员要仔细研究文档,在硬件框架下思考问题,比如如何显示图片、如何卷动屏幕等等;而且还要非常熟悉硬件底层和汇编,不要浪费代码空间。

    一来二去,代码也能写的非常小。

    总的来说,128KB的游戏大作,在30年前稀松平常,放到现在简直就是黑科技。科技的剧烈变革带来技术指标非线性的变化,让我们的记忆和直觉彻底落伍 :)

    最近文章

    你觉得哪个国家是世界上最奇怪的国家?

    斯洛文尼亚 /来整点非键政的活儿/ 斯洛文尼亚语言分布区,包括零散和部分历史分布区 经济上属于西欧。地理上属于南欧(巴尔干)。国人眼里属于东欧。文化上却是中欧。斯拉夫人种,血统却偏向日耳曼和伊利里亚。 说斯拉夫语言,国内主流传统文化却是巴洛克。比较少见的几个天主教斯拉夫人国家。地处平原辽阔的欧洲,却有大片的喀斯特地貌。

    穿JK制服如何克服羞耻感?

    大龄过期jk 在十月份突然入了坑 大概拍了照片就会在下面更新(〃ノωノ) 一开始只敢在家穿穿对着镜子拍拍 后来第一次穿出门的时候被小姐妹大夸 「太可爱了」 路过商场看到镜子也觉的自己好可爱!哈哈哈哈 并且也没有被很多人看的感觉 有个爱吹彩虹屁的小姐妹真的好重要!!我俩吃饱了找了个没人的楼梯口疯狂拍照

    请别让你的家人,承受这样的孤独,家人接受不了这样的别离

    老人家一个人生活让人看到了心酸。心疼 .video { position: relative; padding-bottom: 66.25%; height: 0; overflow: hidden; } .video iframe, .video object, .video embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }

    马云直播首秀:如果年轻人还怕压力,那就白活了

    今天上午,马云来到景德镇参观并与当地创业者展开对话。与以往不同的是,这场活动采用了全程直播的形式,马云称“这是我的直播首秀”。 1.创业者如何坚持? 有创业者提问,如今无论是直播卖货还是下线卖货,都会遇到很多困难。 “在你们身上,我看到了20年前的我们创建阿里巴巴时候的样子”,马云说,1995年他开始创业,当时谈及互联网,所有人都不同意,“但是我相信互联网的未来,因为相信所以看见。所以我认为,创业者是很孤独的,只能克服孤独,找到志同道合的人,才能走下去”,“在你们身上,我看到了热爱、坚持和孤独”。 他坦言,自己并不喜欢瓶瓶罐罐,但在景德镇转了一圈才发现魅力所在,“魅”来自于城市文化,“力”来自于年轻人。

    京东总裁刘强东内部讲话,”马云骗人这么多年我都替他丢人”讲解京东的商业模式,并吐槽马云淘宝天猫

    .video { position: relative; padding-bottom: 66.25%; height: 0; overflow: hidden; } .video iframe, .video object, .video embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }

    相关文章

    关注你邮箱里的每日新闻