The Swiss Cheese model, pt. 3

Marcin Wichary

スイスチーズモデル その3

原文は Marcin Wichary により に公開されました。 このブログを購読する

このシリーズで2本真面目な記事が続いたので、今回は少し肩の力を抜いて、他愛のない軽めの話題で一休みしたいと思います。

「ちょっと面白いことを試してみよう」という一言から、Retro Game Mechanics Explainedの13分の動画は始まります。

動画で紹介されている手品のような裏技の前提は、少々入り組んでいます。

  • Nintendo Entertainment System本体を用意し、マリオのカセットを挿して電源を入れる、
  • 電源を切らずにそのままカセットを抜き、Tennisのカセットに差し替える、
  • ゲームをスタートし、音楽が止まるまで待ってから、しばらく動き回る、
  • そのカセットを抜いて、マリオのカセットを挿し直す、
  • A+Startを押すと、存在するはずのないランダムな「無効な」面から始まる――本来ならありえないことです。

詳しい解説は動画に譲りますが、これはスイスチーズモデルの良い例だと思います。

  • A+Startは、最後にクリアした面から新しいゲームをコンティニューできる正規の機能です(Startだけだと常にレベル1から始まります)。
  • NESは電源が入ったままでもカセットの抜き差しができてしまいます。
  • マリオの開発者は、ゲームオーバーになるたびにゲーム自体をリセットし、コールドブートとウォームブートを特定の方法で区別する仕様にしました。
  • Tennisは起動時にメモリをクリアしません。
  • Tennisは偶然にも、マリオと「互換性」があるかたちでメモリを特定の方法で書き換えます。
  • マリオ側は開始時にレベル番号を検証しないため、無効な/​壊れた面からでもスタートできてしまいます。

これまでと同様、このスイスチーズの穴のうち一つでも欠けていれば、このバグは起きなかったはずです。しかし穴は見事に一直線に並んでしまいました。

この一連の仕掛けは、とても楽しくて心躍るものだと感じましたし、マリオの開発者が(小さな例外を除いて)ゲームオーバーごとにゲームをリセットすることにした理由にも納得がいきました。やり方は容赦ありませんがエレガントで、ここ数十年携わってきたいくつものプロジェクトで「こういうリセットがもっと簡単にできればいいのに」と何度も思ったことを思い出します。

もちろん、これは極めて人為的に作り出された状況で(そもそも誰がどうやってこんなことを見つけたんだ!?)、とくにランダムな面に飛ばされるだけならあまり価値がない、という見方もあるでしょう。この話は稿を改めて掘り下げます。物語はここで終わりではないからです。古いゲームのハッキングに時間を費やしている人たちは、こんなものとは比べものにならないくらいはるかに先まで行っているのですから。

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント