帧规则|初代马力欧的砖块里,最多能顶出多少金币?

帧规则|初代马力欧的砖块里,最多能顶出多少金币?
文章图片

一道花了三十多年才解开的数学题 。
任天堂的《超级马力欧兄弟》家喻户晓 , 人们都知道马力欧要跳起来顶砖块 , 获得有助于通关的金币与道具 。 大部分的问号砖块会给马力欧1枚金币 , 而某些特定位置的砖块没有问号标记 , 给的金币却更多 。
这样的砖块被称为“金币砖块”(Coin blocks) , 需要玩家操纵马力欧在短时间内尽可能快地撞上去 , 撞得越快 , 拿到的金币也就越多 。 如果玩家在第一次顶砖块拿到1枚金币后 , 过了很长时间才顶第二次 , 就只能获得2个金币 。
帧规则|初代马力欧的砖块里,最多能顶出多少金币?
文章图片

玩家们都知道从金币砖块中可以获取的金币下限 , 但是换成金币上限 , 就少有人能给出准确答案了 。 至少在1985年初代《超级马力欧兄弟》刚发售那阵 , 玩家们觉得顶出10个金币就已经是极限 。
1987年 , 英语版本的任天堂官方攻略书出版 。 这本攻略书将各个关卡的场景设计画了出来 , 标注了游戏中所有的隐藏砖块 , 并直截了当地用T字母来代表“10金币砖块”(Ten-coin blocks) 。
帧规则|初代马力欧的砖块里,最多能顶出多少金币?
文章图片

在实际游玩过程中 , 一些玩家能够从金币砖块里撞出更多的金币 。 在拥有变速与连点功能的手柄普及之后 , 玩家们做得到更快速的跳跃与顶砖块 , 从金币砖块里顶出10枚以上的金币也不再是什么难事 , 但极限是多少 , 还是没人能够实锤 。
金币砖块的金币上限 , 这个问题的最终答案肯定会藏在游戏的源代码里 。 如今一提到仍在研究游戏源代码的人 , 我们多半会先想到那些追求极致通关速度的速通玩家 。
4月10日 , 一位名叫Kosmic的速通玩家公布了问题的答案 。 Kosmic是初代《超级马力欧兄弟》多个速通项目的前世界记录保持者 , 他公布答案的原因很简单:类似的研究之前没人做过 , 可真实答案对顶尖的速通玩家而言接近于常识 。
“为什么以前没人得到过这枚硬币”
想要看懂《超级马力欧兄弟》的速通 , 乃至理解Kosmic的研究成果 , 首先要明白游戏采用的“21帧规则” 。
“帧规则”类似于某种计数器或计时器 , 但是不以秒 , 而是以帧为单位 。 游戏中的绝大部分机制 , 都以21帧(约0.35秒)为周期计算判定 , 每21帧称作一个“帧规则”(Frame Rule) 。
比方说 , 在马力欧通过某个关卡 , 即降下关卡末尾的旗子再走进城堡的时候 , 这个规则就在发挥作用 。 无论马力欧是在21帧中的哪一帧走进城堡 , 都要等待6个“帧规则” , 才算正式通过这一关 , 随即看到接下来的场景 。
然而游戏代码会把当前正在运行的“帧规则”算作第1个“帧规则” , 等到这个“帧规则”剩下的帧数走完 , 再计算剩下的5个“帧规则”(105帧 , 约1.8秒) 。 假设当前“帧规则”剩下n帧 , 那么玩家需要等待的总时间其实是n+105帧 , 即106帧到126帧(1.8秒到2.1秒)之间 。
帧规则|初代马力欧的砖块里,最多能顶出多少金币?
文章图片

正如玩家们三十多年来的普遍猜测 , 金币砖块的金币数量并非固定数额 , 的确需要玩家们在限定时间撞击尽可能多的次数 , 而这个限定时间无疑也受“帧规则”所影响 。
【帧规则|初代马力欧的砖块里,最多能顶出多少金币?】Kosmic放出了与金币砖块相关的游戏源代码 , 代码显示限定时间是十六进制的“0b” , 换成十进制 , 就是11个“帧规则” 。
帧规则|初代马力欧的砖块里,最多能顶出多少金币?
文章图片

第1个“帧规则”可能处在1帧到21帧之间 , 这里仍然把剩下的帧数设为n;接下来的10个帧规则 , 都是完整的21帧 , 共计210帧 。 由此可得 , 撞击金币砖块的总时间为n+210帧 , 即211帧到231帧 。
显而易见 , 在游戏的“帧规则”计时器处于第1帧时 , 让马力欧撞击金币砖块 , 能够获得最长的230帧时间(刨去第1帧 , 约3.8秒) , 吃到最多的金币 。
不过在此基础上 , 金币砖块存在一个刷新金币的16帧冷却时间 , 在这个冷却时间内撞击砖块 , 不会获得多余的金币 。
帧规则|初代马力欧的砖块里,最多能顶出多少金币?
文章图片

太快了也不见得是好事
以1-1关卡中最出名的金币砖块为例 , 大多数玩家走到这里 , 一般都吃过了能够变大的蘑菇 , 此时马力欧的脑袋到金币砖块只有一个砖块的距离 , 两次连续跳跃间隔15帧 。 如果换成没吃蘑菇的小号马力欧 , 距离延长至两个砖块 , 这个时间就要换成23帧 。
因此 , 假定在最理想的情况下 , 大号的马力欧在每次落地后停顿1帧 , 即每隔16帧跳跃一次 。 如此往复 , 他最多能够在230帧里获得14枚金币 , 最后余下6帧 。
帧规则|初代马力欧的砖块里,最多能顶出多少金币?
文章图片

第10帧停顿
等到11个“帧规则”过去后 , 砖块里会保留最后一枚金币 。 再把第1帧的那枚金币算上 , 加起来就能得出 , 金币砖块的理论金币上限是16枚 。
当然 , 理论上限只是理论上限 , 从金币砖块里取出全部16枚金币 , 要和速通一样逐帧操作 , 属于挑战人类极限的玩法 。 让马力欧在某个“帧规则”的前几帧完美起跳、每16帧进行一次精准的跳跃 , 这绝对不是普通玩家能够轻易实现的操作 。
但速通玩家向来都在挑战人类极限 。 据Kosmic所知 , 初代《超级马力欧兄弟》速通社群至少有两个人 , 在没有借助如“帧规则”计数器等辅助工具的情况下 , 成功顶出了16枚金币 , 而其中一个是他自己 。
2020年10月1日 , 任天堂推出了大逃杀游戏《超级马力欧兄弟35》 。 这部游戏全面沿用了初代作品的关卡和“帧规则”设计 , Kosmic玩起来也得心应手 。 在10月7日的一次尝试中 , Kosmic从1-1关卡的金币砖块顶出了16枚金币 , 兴高采烈的他随后就把游戏片段上传到了推特 。
帧规则|初代马力欧的砖块里,最多能顶出多少金币?
文章图片

帧规则|初代马力欧的砖块里,最多能顶出多少金币?
文章图片

AndrewG使用的改版游戏能够记录超过100万的分数
之前我们为初代马力欧速通写过一篇文章 , 文中提到 , 速通项目的世界纪录正在抵近理论上的人类极限 。
现在看来 , 就算真的达到了理论极限 , 我们也不必担心速通玩家就此失业 。 到了那时 , 比开发者还懂游戏的他们 , 大概还会像Kosmic找到砖块中的第16枚金币那样 , 从游戏里挖掘出始终无人发现的有趣秘密 。