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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41293896/article/details/98263091

在这里插入图片描述
虽然不是业内人士,但也玩了近20年,算是可以叨叨两句。个人认为其实是因为游戏的高难度造成所谓的“流程长”的假象。其实魂斗罗的剧情并不长,每个关卡有一个自己的背景,主线就是消灭外星心脏拯救地球,比起现在很多动作游戏来说,或者就拿《阿卡姆》系列来说,光是一条支线就要比这个剧情线要长了。而当时游戏的开发周期也并不比现在的游戏开发周期短,所以当时普遍的思路就是增加游戏难度以增加玩家在游戏中的游戏时间从而延长游戏的寿命。所以从玩家的角度来看这款游戏就显得好漫长。关于技术方面的别的答主都回答的很详尽了,就不赘言了。同理《超期马里奥》的流程原则上比魂斗罗初代还要长,3代同样也只有128k。不过随着技术发展,而且运行游戏的媒介也在发展(卡带-光盘-互联网)可以装载的内容也越来越多,但玩家群的游戏时间随着生活节奏的变快也在减少,所以降低游戏难度是一个必然的过程。现如今的大部分游戏的流程大约都在8小时左右(虽然有很多号称可以晚上几十上百小时的游戏,但实际上大部分都是世界探索和刷刷刷的成分,实际上比较充实的内容还是8小时左右)。但也不是没有例如《血缘》《黑魂》这种剑走偏锋的游戏,但比起魂斗罗来说还是要简单了,《魂系列》你打不过去可以刷刷等级,总会能过去,但是魂斗罗你技术不够,是根本过不去的…

个人觉得 fc 最神奇的游戏还属超级玛丽,32 个关卡,每关都不同,各种隐藏要素,好像代码区才 10 多 k,数据区 10 多 k。

反汇编看完还是不敢相信这点东西能玩一个童年…现在 helloworld 的二进制都可能比这大多了。

首先 128k 并不小

主要消耗存储空间的不是程序

当然对于 128k 来说程序大小自然也要考虑

鉴于 fc 是八位机,而且 fc 采用的是 CISC 处理器,一条指令就能完成很多事情

所以程序的大小也就现代 64 位 RISC 处理器的十几到几百分之一

资源才是大户(包括图像 音乐 地图数据 关卡数据 等等)

就拿图像和音乐来说

图像在没有压缩之前 消耗存储空间和 像素深度和大小有关

FC 上的图像 像素深度就 2bit 的索引而已 而现在广泛使用的真彩色是24bit 包含 alpha 的需要 32bit

这里就差了 12 倍到 16 倍

图像大小更是差距巨大

FC 普遍一个角色也就是 宽高十几个像素而已

与现在动辄宽高几千像素图像资源相比差了 数万倍到数百万倍

所以图像资源消耗的存储空间 至少差了 5~7 个数量级

音乐的话

FC 采用的是 8 位 midi 音乐

而现在普遍用的是 PCM 音乐

类比到图像中

就像矢量图像和位图的区别

总之 PCM 音乐的大小和采样深度、采样率、通道数、以及长度有关

midi 仅仅和谱子的复杂度有关

所以 FC 实际上对空间的要求和现代游戏相比至少差了 5~7 个数量级
你把 128k 放大 10w 倍到 1000w 倍 你就不觉得小了

一些人还提到了什么 64k 3d 程序什么的

这完全是两码事

FC 程序小只是因为需求的资源本来就很小而已

而那种 64k 3d 程序是因为采用 Procedural generation 方法

简单的说就是通过数学来描述

而不是通过记录结果的采样

Procedural generation 不光需要的存储空间极小

而且可以做到无限精度

缺点是难以描述复杂事物

并且对算力要求高

而不是用了什么外星压缩法

总结:

1.游戏大量复用图块,图块还使用调色板索引,好像每个像素才占用 2bit。

2.程序员精心优化各种数据结构,每一 bit 存储都不浪费。

3.声音只存储发声通道的调制参数序列,能复用就复用。

4.代码全是汇编写成,直接操作硬件,基本不存在浪费的指令。

猜你喜欢

转载自blog.csdn.net/qq_41293896/article/details/98263091
今日推荐