一見すると魔法のようにみえる技術の多くは、一般的なソフトウェアでもみられるバグと同じ原理に基づいていたわけです。

たとえば全体の45%を占める最も多く確認されたバグは「時間と状態(7PK4)」に分類されるものでした。

このバグでは異なる動きの同時実行によって引き起こされる問題であり、オブジェクトの操作される順序に問題が起こることが原因となっています。

初代スーパーマリオブラザーズでみられた「目に見えないツタ」や「スーパーマリオブラザーズ3でみられた「水上歩行」、スーパーマリオ64でみられた「ウサギを使った壁抜け」はここに分類されました。

また2番目に多くバグが分類されたのは「例外処理メカニズムのエラー(7PK5)」となっていました。

ゲーム開発とエラーは切り離せない問題であり、どんなに努力しても完全になくすことはできません。

ですがエラーが起こるたびにゲームがクラッシュしていては、商品にはなりません。

そこでゲーム開発ではエラーに直面してもゲームが続けられるようにし、後の処理で修正する方法がとられています。

たとえばあるステージで、キャラがあり得ない異常外見になってしまったとしても、次ステージの仕切り直しで正常な姿に戻る場合です。

バグ利用者たちはこの仕組みを利用することで、ゲームの進行自体を止めることなく異常な結果を引き起こすことができるのです。

たとえば先に上げたように「土管に入ったマリオが土管から出ると同時に死亡する現象」という正常な進行と異常な結果があらわれるのも、このタイプのエラー対応が原因となっています。

しかし最も興味深かったのは、既存の分類法では識別できない7種類のバグでした。

以下項目名とその簡単な説明。エンティティの制限(有限の数しかスペースがないのに要素をロードしようとする。) 適切な条件再チェックの失敗(2つのオブジェクトが相互作用しているときに条件を再チェックせず、奇妙な動作につながる。) 状態の終了が早すぎる(オブジェクトの状態遷移を完了させるべきなのに、そのオブジェクトが状態遷移を終了してしまう。) 正しいが意外な動作(ゲームの動作が意外だが、意図したプログラミングと一致している。) 不正な状態の不適切な修正(例外を修正しようとして、ゲームが新しいエラーを作った。) 不正な動作の共有(2つのオブジェクトが異なる動作をするはずなのに、動作を共有している。) 不正な境界定義(ゲーム内のオブジェクトの境界が不適切に指定されている。)
以下項目名とその簡単な説明。エンティティの制限(有限の数しかスペースがないのに要素をロードしようとする。) 適切な条件再チェックの失敗(2つのオブジェクトが相互作用しているときに条件を再チェックせず、奇妙な動作につながる。) 状態の終了が早すぎる(オブジェクトの状態遷移を完了させるべきなのに、そのオブジェクトが状態遷移を終了してしまう。) 正しいが意外な動作(ゲームの動作が意外だが、意図したプログラミングと一致している。) 不正な状態の不適切な修正(例外を修正しようとして、ゲームが新しいエラーを作った。) 不正な動作の共有(2つのオブジェクトが異なる動作をするはずなのに、動作を共有している。) 不正な境界定義(ゲーム内のオブジェクトの境界が不適切に指定されている。) / Credit:Llewellyn Forward et al . Super Mario in the Pernicious Kingdoms: Classifying glitches in old games . arXiv(2024)