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


您好 。我是小哪吒 。很高兴回答你的问题 。现代程序员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为例 。它的分辨率为256x240 。分辨率不算低 。但却只有2KB显存 。而且还要实现全屏卷轴效果 。所以在FC设计之初 。从硬件上就提供了充分利用显存的方法——使用Tile(瓦片) 。
对每一个场景来说 。使用若干数量的瓦片 。场景用有限的瓦片拼接即可 。这种“二级”表示方法能极大节约存储量 。具体一些原理讲解可以看一些科普 。比如这个:
【萌新图形学】TileMap瓦片地图简介 。以及它的优化原理_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili?www.bilibili.com
3、音频容量和代码容量
现代音乐格式往往直接保存声道的波形 。这种做法保真度高、通用性强 。但很显然占用空间多 。一首曲子的容量以千字节、兆字节计算 。
而八位芯片时代的音频解决方案 。关键是一颗专用芯片

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

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

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

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

文章插图
其他观点:
超级玛丽才64K 。剧情比魂斗罗还长 。
当年电脑技术的限制和成本限制导致FC硬件性能不行 。FC上魂斗罗、超级玛丽这种优秀的游戏 。在设计阶段就考虑怎么实现“人看上去内容丰富 。实际技术层面单调” 。游戏策划人员和程序员密切合作 。实现了效果好、容量小、对性能要求还低 。
例如魂斗罗这种游戏中 。由于主机内存空间有限 。任何一帧画面的颜色其实只有16种 。但通过美工巧妙的设计 。人家16色的画面达到了256色的效果 。
今天的很多2D游戏基本都是65536甚至更高的色彩 。除了少数优秀作品 。大部分游戏颜色搭配上感觉也没有超越魂斗罗 。
其他观点:
魂斗罗有剧情吗?题主可能说的是关卡的长度吧 。这样说的话 。魂斗罗游戏的长度确实不算短的 。可容量却如此之小 。其实原因大概如下几点 。
为什么魂斗罗只有128KB却可以实现那么长的剧情?

文章插图
首先 。玩法肯定是最不占容量的部分 。这些都是通过代码实现的 。一款游戏中最占用容量的地方在于画面 。音乐 。还有过场动画 。早期的FC游戏自然是没有什么过场动画的 。音乐都是一种类似于MIDI的电子音乐 。几乎不占用什么容量 。画面则是由一个个的基础像素点配上颜色来构成的 。游戏的分辨率也是非常的低 。所以以这些元素来构成的游戏 。容量自然大不到哪里去 。128KB 。还没有如今的手机随便拍一张照片大 。
为什么魂斗罗只有128KB却可以实现那么长的剧情?

文章插图
这在当年的FC游戏中是各个游戏厂家非常惯用的手段 。一方面是省事 。另一方面就是节省容量了 。在很多游戏中我们都会见到各种重复的建模 。RPG游戏中的一些NPC 。树林 。山脉 。很明显的重复 。超级玛丽 。重复的怪物和地形 。魂斗罗也是一样 。镜像是什么意思呢 。比如我们要构建一个左右对称的角色或者道具吧 。我们只要做一半就好了 。剩下的一半以镜像复制的方式来实现就完整了 。很简单吧 。

推荐阅读