人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

復活の呪文

すごく不思議だったことがある。

昔のファミコンのゲームはパスワードでゲームの記録を行っていた。たとえば、ドラゴンクエストというゲームでは、ゲームの状態(主人公の名前、レベル、強さ、所持アイテムなど)を記録するために復活の呪文というのがあった。

f:id:aidiary:20050406205821:plain

復活の呪文はランダムな文字列で、ゲームを終えて一度電源を切ってもこの呪文を入力すればゲームの状態が復元されて続きからプレイできた。

小学生のときこの仕組みがどうなってるのか全く理解できずいつも不思議に感じていた。不思議に思った点は次の2点。

  • 未来のゲーム状態があらかじめすべて含まれているのか?
  • 他人のゲーム状態があらかじめすべて含まれているのか?

プレイを終えて復活の呪文を呼び出す。小学生だった私はこの呪文をノートに書いていた。ここでふと疑問がわいたのだ。今ノートに書いたこの呪文をプレイする前に入力していたらどうなるのだろうかって・・・呪文はただの文字列の羅列なので原理的に入力することは可能だろう(現にでたらめに入力して試してみたこともあった)。だとしたらこれからプレイする未来のあらゆるゲーム状態があらかじめカセット*1に入っているのか?と不思議に思った。

もう一つは友達が「別のカセット」でプレイしたあとの呪文が自分のカセットでも使えてしまったことだ。友達のゲーム状態があらかじめカセットに入っているのか?と不思議に思った。

この疑問にはかなり悩んだのだが結局どうしてかわからずずっと放置していた。

このからくりが理解できたのは大学でハッシュ関数を勉強してからだった。復活の呪文を作るには、ゲームのパラメータ(勇者の名前、HP、所持アイテム、セーブ場所など)から呪文への一意の対応(ハッシュ関数)を作ればよい。どういう符号方式かわからないがそう難しくはない。

復活の呪文は64文字が使え、それが20文字分あるので64の20乗のパターンを表すことができる。これは約10の36乗(1000000000000000000000000000000000000)である。こんな短い呪文でも膨大なパターンを記録することができるのだ。

だから私がこれからプレイする未来のすべての状態も友達がプレイしたすべての状態もあらかじめカセットの中に含まれていたのだ。新品のカセットを買ってきた瞬間、それどころかゲームが作られた時点ですでにゲームをクリアしたときの状態が入っている。その呪文を入力すればプレイする前にクリア後が再現できる。何かすごいなぁ。(明日に続く)

*1:ファミコンのソフトをカセットって言ってた。当時はCDじゃなくてカセットみたいな形だったから。