ゲームの最速クリアを目指す動画(RTA)では、よく理解を超えた謎のバグを利用してありえないクリアタイムを叩き出すことがあります。
実はこの特殊なバグは、専門的な情報分野でもかなり注目に値するものだったようです。
イギリスのブリストル大学(UoB)で行われたスーパーマリオシリーズを対象にした研究により、RTA走者のバグを利用しようとする情熱が、一般のソフトウェアのセキュリティーを向上させたり、バグから守ってくれる可能性が示されました。
研究では4本のレトロなスーパーマリオ(初代、3、ワールド、64)のバグ技が調べられており、一般的なソフトウェアのバグとの関連性が調べられました。
結果、既存の分類に属さない7種類のバグが含まれていたことが判明します。
研究内容の詳細は2024年4月23日にプレプリントサーバーである『arXiv』にて「スーパーマリオ・イン・ザ・ペニシャス・キングダム:古いゲームのグリッジ分類(Super Mario in the Pernicious Kingdoms: Classifying glitches in old games)」とのタイトルで公開されました。
目次
- RTA走者の工夫が未来のソフトウェアを守ってくれる
- スーパーマリオメーカー2に40年前と同じバグが存在する
RTA走者の工夫が未来のソフトウェアを守ってくれる
ネットに投稿されているゲームプレイ動画ではしばしば、一般人にはなかなか真似できない「スーパープレイ」がみられます。
特にゲームをどれだけ早くクリアできるかを競うRTA(リアルタイムアタック)は人気が高く、自分が何時間もかけて攻略したゲームを一瞬でクリアする様子は、ある種の爽快感や感動、そしてときには笑いも提供してくれます。
一方、RTA業界には手段を問わないルール無用の部門が存在します。
この部門ではゲームプログラムのバグを利用することで、ゲーム開始から数秒~数十秒でエンディング画面に到達するなど、一般の人々には理解不能な方法でのスピードクリアを実現させています。
ルール無用のスピードクリアは、スーパープレイを期待して動画を訪れた人々にとっては拍子抜けかもしれませんが、使用されているハッキング技術は極めて高度となっています。
さらに技術の切磋琢磨は現代でも続いており、次々に最新記録が塗り替えられています。
またスピードランが目的でなくとも、新たなバグ技の発見はスーパーマリオを愛する人々の間で素早く共有されていきます。
そこで今回、ブリストル大学の研究者たちは、任天堂スーパーマリオで発見されたバグ技をスピードランで使われるものを中心に、学術的に分析することにしました。
バグ利用者たちの魔法のような技術を解析することで、現代のソフトウェア開発における脆弱性やバグの理解に役立つ可能性があったからです。
調査にあたっては初代の「スーパーマリオブラザーズ(1985年)」、「スーパーマリオブラザーズ3(1988年)」、「スーパーマリオワールド(1990年)」、「スーパーマリオ64(1996年)」でのバグ技が調べられました。
どれも古い時代のソフトですが、今でもスピードランの記録更新が活発に行われています。
上の表は現在の記録保持者とタイム、そしてタイムの更新された日時などを示しています。
表を見るとスーパーマリオワールドでは2020年に、41秒という驚異的な記録が建てられたことがわかります。
研究者たちが、これらのゲームのバグを調べたところ、さまざまなカテゴリにわかれた237件のバグ利用がみつかりました。
研究者たちはこれらバグを、ソフトウェアにおけるセキュリティー上の問題を分類するために使われる「共通脆弱性タイプ一覧(CWE)」と比較してみました。
するとほとんどのバグが既存の分類法で原理が認識できることがわかりました。
分類されたものの中には、初代スーパーマリオブラザーズでみられた「目に見えないツタ」やスーパーマリオブラザーズ3でみられた「水上歩行」や「土管に入ったマリオが土管から出ると同時に死亡する現象」「秘密のエンディング」、またスーパーマリオ64でみられた「ウサギを使った壁抜け」や「クッパの炎を破壊することで起こる無限コイン」「平行世界の作成」などが含まれていました。
一見すると魔法のようにみえる技術の多くは、一般的なソフトウェアでもみられるバグと同じ原理に基づいていたわけです。
たとえば全体の45%を占める最も多く確認されたバグは「時間と状態(7PK4)」に分類されるものでした。
このバグでは異なる動きの同時実行によって引き起こされる問題であり、オブジェクトの操作される順序に問題が起こることが原因となっています。
初代スーパーマリオブラザーズでみられた「目に見えないツタ」や「スーパーマリオブラザーズ3でみられた「水上歩行」、スーパーマリオ64でみられた「ウサギを使った壁抜け」はここに分類されました。
また2番目に多くバグが分類されたのは「例外処理メカニズムのエラー(7PK5)」となっていました。
ゲーム開発とエラーは切り離せない問題であり、どんなに努力しても完全になくすことはできません。
ですがエラーが起こるたびにゲームがクラッシュしていては、商品にはなりません。
そこでゲーム開発ではエラーに直面してもゲームが続けられるようにし、後の処理で修正する方法がとられています。
たとえばあるステージで、キャラがあり得ない異常外見になってしまったとしても、次ステージの仕切り直しで正常な姿に戻る場合です。
バグ利用者たちはこの仕組みを利用することで、ゲームの進行自体を止めることなく異常な結果を引き起こすことができるのです。
たとえば先に上げたように「土管に入ったマリオが土管から出ると同時に死亡する現象」という正常な進行と異常な結果があらわれるのも、このタイプのエラー対応が原因となっています。
しかし最も興味深かったのは、既存の分類法では識別できない7種類のバグでした。
研究者たちがこの7種類のバグを調べたところ、いくつかは従来のソフトウェアのバグに類似しているものも存在することが明らかになりました。
たとえば不適切な共有動作(Incorrectly Shared Behavior)は、異なる2つのオブジェクトが誤って共有ベースから継承されてしまうという、一般的なソフトにみられるエラーに似ています。
またコンディションの適切な再チェックの失敗(Failure to Appropriately Recheck Condition)」と「ステートの早すぎる終了(State Exit Too Early)」は制御フローの問題に似ています。
さらに「不正な状態を不適切に修正(Improper Correction of Illegal State)」も一般的なソフトにみられるバグと共通しています。
そのため研究者たちは、スピードラン分野などのバグ利用者たちの活動は、一般的なソフトのセキュリティー向上やバグ改善に役立つ可能性があると述べています。
スーパーマリオメーカー2に40年前と同じバグが存在する
任天堂は現在でもスーパーマリオのゲームを発売し続けています。
2019年には初代を含む過去のスーパーマリオブラザーズのスタイルでプレーヤーがマップを自分で自由に作れる「スーパーマリオメーカー2」が発売されました。
そこで研究者たちはスーパーマリオWikiに掲載されている過去作のバグが、新しい「スーパーマリオメーカー2」にも存在するかを調べてみました。
すると驚くべきことに、マリオや敵を加速させるバグ、斜面の間にオブジェクトを埋め込むバグ、道を切り裂くバグなどが、1985年当時と同じように残っていることが判明しました。
この結果は、40年以上も経った今でも、プラットフォーム(ハード)を超えて、初代のバグが継承されていることを示しています。
バグを用いたスピードランニングは基本遊びの延長にあり、ソフトウェア工学とは一線を画します。
しかし研究者たちは、ゲームプログラムの弱点をみつけ自分の目的のために利用するという観点からみれば、スピードランニングは十分に研究する意義があると述べています。
参考文献
Super Mario hackers’ tricks could protect software from bugs, study finds
https://www.bristol.ac.uk/news/2024/april/super-mario-hackers-tricks-could-protect-software-from-bugs.html
元論文
Super Mario in the Pernicious Kingdoms: Classifying glitches in old games
https://doi.org/10.48550/arXiv.2404.14870
ライター
川勝康弘: ナゾロジー副編集長。 大学で研究生活を送ること10年と少し。 小説家としての活動履歴あり。 専門は生物学ですが、量子力学・社会学・医学・薬学なども担当します。 日々の記事作成は可能な限り、一次資料たる論文を元にするよう心がけています。 夢は最新科学をまとめて小学生用に本にすること。
編集者
海沼 賢: ナゾロジーのディレクションを担当。大学では電気電子工学、大学院では知識科学を専攻。科学進歩と共に分断されがちな分野間交流の場、一般の人々が科学知識とふれあう場の創出を目指しています。