为什么有32个关卡的超级马里奥兄弟只要64KB?
The following article is from 差评 Author 差评君
这两天逛知乎的时候看到一个问题:为什么魂斗罗只有 128 KB 却可以实现那么长的剧情?
其实以现在的标准来看,1987 年发布的《 魂斗罗 》剧情并不是很长,一共也就 8 个场景线性布置关卡,我拿出一晚上花在动森上的时间没准就能通关。。。
但魂斗罗的 8 个关卡在当时看来也算得上是精心制作了,可它真的只有 128 KB 。
128 KB 是什么概念?这篇花几分钟就能看完的文章所需的流量,都是它的 10 倍以上。
巧了。。。我自己是个游戏狂 + 开发者,而且每年都会参加 48 小时极限游戏开发活动。
因此这种关于游戏开发的小问题,俺还真插得上话。。。所以今天来和大家聊聊以前那些能玩挺久的老游戏是咋做得这么小的。
和现在动辄几十 G 的单机游戏相比,由于早些年电子产品技术落后,家用机磁盘空间、显存以及内存捉襟见肘,开发一个效果不错的游戏就像是在电线杆上跳舞。
一般认知来说,游戏 = 艺术 + 技术。从技术角度上来看,「 艺术 」通过素材展现,「 技术 」通过代码实现。
翻译成人话,古早的 2D 游戏由贴图 + 代码 + 音效组成。
代码其实一点都不占地儿,说白了就是一堆英文 + 数字 + 标点符号的文本文件。
打开记事本,用脸滚键盘瞎敲 1000 个英文数字保存起来,这个 txt 文件也就 4KB 。
先说说贴图吧,在计算机里任何东西本质上都是一堆信息,一张图要包含每个像素的颜色信息 + 像素所在的位置信息。
比如说我前一张拿来说明 1000 个字符占地 4KB 大小的示意图,它本身其实占用了 44 KB 。
虽然 FC 时代的主流游戏素材存储格式上和现在有所差别,但大致是这么个意思。
那张 44 KB 的图尺寸是 788 * 388,而 FC 经典游戏《 超级马里奥兄弟 》第一关地图所有场景尺寸加起来起码得是那张图尺寸的 N 倍。
而且它还有 8 个场景,每个场景又有 4 小关。
可《 超级马里奥兄弟 》的大小只有 64 KB,比魂斗罗还小。
这是个类似调色板的东西,游戏开发者把游戏里会出现的素材提前准备好,然后运行游戏的时候把素材拼接起来就行,这一个个素材叫 Tile ,整个素材包叫做 Tile Map 。
这样一来,上面展示的那长长的第一关场景就不用提前搭建好再存储了,而是你在玩的时候重复利用提前准备好的东西。
FC 版本的《 超级马里奥兄弟 》看似有这么多关卡,其实出现过的东西就这么多⬇️
其实这一点只要大家仔细观察就能发现,当时的老游戏重复素材特别多,例如一开始提到的《 魂斗罗 》也不例外。
也就是说,你小时候在电视里浴血奋战的地方其实是 「 赶工 」赶出来的,只不过这个赶工运算量并不大,当时游戏帧率要求也不高,所以完全不影响体验。
然而,用重复素材搭场景还是不能满足贪心的老开发者,他们还有些骚操作。
咱们再看看这张熟悉得不能再熟悉的场景吧。
这个场景里的云朵和草垛其实是一个玩意儿,当年刚听说这个冷知识的时候,感觉童年被敲碎了。。。你不信再仔细瞅瞅形状和纹理,它俩除了颜色一模一样。
这让我想起大学时代月底零花钱濒临透支时,只买一个菜然后问阿姨多打点汤汁浇在饭上的感觉一样,人在资源缺少的时候能做到多抠,你永远想像不到。
这个手法其实也挺常见。。。魂斗罗双人模式下的奖牌,两个兄贵的模型,也是这么干的。
一个游戏除了画面,还要有音效,声色俱佳才能成为经典,但音效这种多媒体素材也是个占地方的玩意儿。
去任天堂官方网站下载了《 超级马里奥兄弟 》用 MP3 格式存储的背景音乐,短短 1 分 21 秒你猜猜占地多少?
来源:差评
编辑:Kun
近期热门文章Top10