天天看點

初代馬力歐的磚塊裡,最多能頂出多少金币?

初代馬力歐的磚塊裡,最多能頂出多少金币?

一道花了三十多年才解開的數學題。

任天堂的《超級馬力歐兄弟》家喻戶曉,人們都知道馬力歐要跳起來頂磚塊,獲得有助于通關的金币與道具。大部分的問号磚塊會給馬力歐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,2016年10月18日,他創下了以最高得分通關的世界紀錄:3663400分。在錄像中,AndrewG從8-3關卡的金币磚塊頂出了16枚金币。

初代馬力歐的磚塊裡,最多能頂出多少金币?

AndrewG使用的改版遊戲能夠記錄超過100萬的分數

之前我們為初代馬力歐速通寫過一篇文章,文中提到,速通項目的世界紀錄正在抵近理論上的人類極限。

現在看來,就算真的達到了理論極限,我們也不必擔心速通玩家就此失業。到了那時,比開發者還懂遊戲的他們,大概還會像Kosmic找到磚塊中的第16枚金币那樣,從遊戲裡挖掘出始終無人發現的有趣秘密。

繼續閱讀