塞尔达有一个负世界-王其杉博客|程序员|科技新闻
听着,大家。不是每一天都会有一个新的事实出现在30多年前的游戏中。当复古游戏以精彩有趣的方式被打破的时候,我正好喜欢它。有消息说塞尔达的传奇故事和《超级马里奥兄弟》一样有一个负面的世界,其他人像一列货运列车一样袭击了我。
这个现象是由尤特伯·斯考克斯发现的,他在视频的开头快速解释了负世界是如何工作的。如果你把一个NES游戏看作一个大文件,它会在一些地方存储图形,描述声音和音乐,当然,还会保留水平布局和敌人逻辑。
作为一个玩家,你需要浏览这个文件的结构部分,即游戏世界的1、2、3级,这个或那个地牢或城镇,等等。但是有一些方法可以通过利用游戏代码中的缺陷来逃避这个结构,让你在游戏的数据中自由运行,而这些数据并不意味着是“真实”的级别。游戏的引擎将尽可能地解释数据,在某些情况下产生相当古怪但仍然可以导航的水平。这种类型的东西的名字来自超级马里奥兄弟,在那里你可以很容易地弯曲到马车级别“-1”和进步。
Zelda和其他游戏经常使用数据欺骗来绕过8位计算的自然限制和严重限制的存储空间。例如,你知道吗,为了更有效地存储它们,塞尔达的地牢就像一块巨大的瓷砖一样紧密地结合在一起?
当我发现这件事时,我简直疯了。注意,上面是两个16×8的网格,一个位于另一个之上。
正如Skelux解释的那样,开销映射也被类似地划分了,除了底部的“半部分”实际上没有被映射数据填充。虽然有欺骗让你通过墙,游戏的代码检测到当你到达一个无效的地图坐标,并返回到起始位置。但一个小小的黑客将这种安全措施付诸实践,结果是:
新世界!
一辆可怕的四轮马车,从一开始就证明了这一点。八哥正从他们的鼻子里射出飞镖;一个屏幕上的老人告诉你一个人去是危险的,然后隔壁说“离开你的钱的生活”;一条毛虫向你发射火球;华丽的倒置女巫蜂拥在死亡山的雕像上;等等。
这是一个奇怪的,欢闹的世界,一个显然不是精心设计的世界,只是由游戏的引擎在飞行中创造出来的,它试图理解它所读取的数据。这不是佳能。
这种类型的电子游戏考古学对我来说是无止境的迷人,因为它展示了这些值得尊敬的软件的脆弱性和健壮性——当然,也展示了它们在粉丝中所产生的持久的爱和兴趣。另一个最近引起我注意的问题是解释了“超级马里奥64”内部的平行维度,以及它们之间的滑动如何让你只需按下半个跳跃按钮就能达到一个水平。
仅此而已。请回到你平常的生活,因为你知道塞尔达传说中的一个更神奇的秘密,所以你的生活可能看起来更平凡一些。