こんにちは!今年の4月からMIS.Wプログラミング研究会として活動しております、51代のあたふたです(情報理工学科の2年生です)。
早速ですが皆さんは覚えていますか?ポケットモンスターダイヤモンド・パールをプレイした皆さんならば、今年の初め頃にビッグニュースが飛び込んできたことを。
そうです。2017年1月22日、Cyro氏によりなぞのばしょでアルセウスをゲットする方法についての動画が投稿されたのです!DP発売から実に10年越しのイベントでした。
読者の皆さんも小学生くらいの頃に学校で話題になっていませんでしたか?「なぞのばしょで伝説のポケモンがゲットできる!!!」って。
実際にダークライやシェイミゲットした人、デマに騙されて森の中や海の中に閉じ込められる人が出たりと、様々な報告から"アルセウスだけはなぞのばしょでゲットできない"という事実は暗黙のうちに定説となっていました。
そんな中でそのデマを覆す方法が10年も経った後に発見されたのです。これってかなりのロマンに感じません?
今日はそんなロマンを紐解きつつ、ゲームの構造についてすこーしだけ説明したいと思います。
1.なぞのばしょ is 何?
そもそもなぞのばしょって何なんでしょうか?
結論から申し上げますとそれはズバリ、名前のないマップに与えられる名前のことなのです。ダイヤモンド・パールでは特定のマップ以外の場所については全て"なぞのばしょ"と表記されるようにプログラムされているのです。
四天王の部屋でのなみのりや、コトブキシティのじてんしゃでの高速移動を利用して壁の中にめり込むことで、本来のマップの外へ脱出して未定義のマップ、なぞのばしょへ移動しているのです。
因みに、コトブキシティのじてんしゃの高速移動はマップ読み込みのバグを利用しています。コトブキシティは大きな街ですので、マップが4つの区画に分かれています。そのマップの読み込み境界で高速に移動することで、隣の203ばんどうろのマップをコトブキシティのマップの一部だと"誤認させて"呼び出し、メニューを開いて正常な本来のマップを再読み込みさせて壁にめり込み成功、となっているのです。
2.じゃあ、なぞのばしょで何をしているのか?
では、東に200歩、南に256歩などといったなぞのばしょでの不可解な行動の正体とは、いったい何なのでしょうか?
実にこれはメモリ操作を利用したプレイヤーの位置の偽装にあたるものなのです。
大雑把に言ってポケモンでは、プレイヤーの位置を
- マップデータの番号
- マップ内でのx座標
- マップ内でのy座標
を用いてプレイヤーの位置を管理しています。
なぞのばしょを上下左右に動くことはこれらの値の増減に対応しているのです。
http://forums.glitchcity.info/index.php?PHPSESSID=0m8hh5e9ijbudj9ivnt0166rk1dt3dd2&topic=7770.msg203916#msg203916を参照し、https://imgur.com/OCFVokRより引用した。
マップ番号というのは、上記の図に示す通り、連続した番号が必ずしも隣り合った場所に割り当てられているとは限りません。しかもあくまでこれは屋外マップの番号について示したものですので、建物の内部等の屋内のマップであれば尚更隣接したマップ番号が近い位置にあるとは限りません。ですから、なぞのばしょを同じ方向に一直線に歩いていると、
ソノオのはなばたけ→テレビコトブキ→もどりのどうくつ→・・・
などといったように、一見何の関連もないかのように思えるマップが連続して呼び出されることが往々にしてあるのです。
これをうまく活用して目的の場所のマップ番号を呼び出すこと、それが今回発見されたアルセウス捕獲法に限らず、なぞのばしょを使ったバグ技に共通する重要な方法となっているのです。
3.アルセウスの捕獲がダークライやシェイミに比べて難しい理由
ダークライやシェイミはエンカウントシンボルに直接話しかけて戦闘に入る方式ですので、上記の方法のみで捕獲が可能です。
しかし、アルセウスはそうはいきません。
- やりのはしらでてんかいのふえを吹く
- はじまりのまへの階段が現れる(実はこの段階でやりのはしらからはじまりのまのマップへワープしている)
- 階段を登りきってはじまりのまへ足を踏み入れるとアルセウスとの戦闘になる
公式では没イベントとなってしまいましたが、アルセウスとの戦闘イベントは、本来このような流れとなっていたようです。しかし、実際にアルセウスと戦闘するために必要なのは、3番目の"はじまりのまへ1歩足を踏み入れる"という条件だけで良いのです。
この条件というのは、まさにはじまりのまに設定されたスクリプトを呼び出していることに他ならないのです。スクリプトというのは、マップごとに1番目から順に用意されているもので、何か特定のイベントを呼び出す際に使われています。今回のアルセウスとの戦闘ははじまりのまの3番目のスクリプトとして割り当てられています。
ここまで解説をすれば、途中でパルパークに行った理由を理解していただけるかと思います。そうです。パルパークの捕獲ゲームのリタイアコマンドのスクリプト番号がまさにアルセウスとの戦闘突入スクリプト番号と一致していたのです。
パルパークのリタイアコマンドのスクリプトは正確にはパルパークの捕獲マップでの4番目のスクリプトにあたるのですが、はじまりのまの4番目のスクリプトは幸い(?)3番目と同じものが割り当てられているため、このような方法が利用できるのです。
注意してほしいのは、あくまでリタイアコマンドというのはパルパークの捕獲ゲームのマップで呼び出した時にのみ、本来のリタイアコマンドとしての機能を発揮するという点です。今回の捕獲法の大詰めである、なぞのばしょからの脱出にも活用されているのを見ていただければ、このことも容易に理解できると思います。
4.おわりに
いかがでしたでしょうか?解説された上で動画を見ると、10年も掛けて編み出されたバグ技の奥深さや大変さ、そして面白さがよく分かるかと思います。これを通して「メモリってなんぞ???」とか「スクリプトってなんなんじゃ???」といった具合にゲームの仕組みについて少しでも興味をもっていただければ、私としては望外の喜びです。この記事を読んでわくわくしちゃったそこのキミは是非ともうちのプロ研に来ような!
最後になりましたが、
なぞのばしょについて色々と試すのは、くれぐれも自己責任の範囲内でお願いします。万が一データの破損等いかなる不具合が生じても一切の責任を負いかねます。
そして
あくまでもこれは、正規の方法ではないバグ技であるということを十分に留意してください。乱用や悪用は、決してゲーム制作者の望むことではないことを理解し、その意思を尊重した上で、せいぜい個人的な趣味程度に留めることを厳守してください。
ゲームを作った人への感謝を忘れずに、ルールはしっかり守って楽しくゲームについて知りましょう。
5.参考
参考にさせていただいた記事や動画の一覧です。もっと深く知りたい!という方は是非とも以下のリンクを辿ってみましょう。
- 発見者Cryo氏による捕獲動画:https://www.youtube.com/watch?v=VrhHXG3cuAw&lc=z13cjxo52vq0d5fro04cjrxp3un5jxf53ks0k
- 発見者Cryo氏による捕獲方法の詳細な解説:http://forums.glitchcity.info/index.php?PHPSESSID=7uc33ieo143ogjtbntffrpaj89bh8l48&topic=7770
- 上記解説サイトの和訳1:https://blog.surume.tk/translation-of-cyro-pokemon-dp-arceus/
- 上記解説サイトの和訳2:https://blog.surume.tk/translation-of-cyro-pokemon-dp-trick-explanation/
- 上記解説サイトの和訳3:https://blog.surume.tk/cyro-arceus-explanation-ja/
私のような英語弱者にはこういった和訳されたサイトがあると非常にありがたい限りです・・・。
駄文に長々とお付き合いいただき、ありがとうございました!明日は期待(希代)の凄腕プログラマーことべる君の記事です!お楽しみに!