ポケモン赤青コネクションの可視化(2020年)

Visualizing Pokémon Red and Blue with Graphviz

ポケモンが大好きです。私のポケモンへの魅力は、アメリカでリリースされたオリジナルのゲーム、ポケモンレッドとブルー(私はブルーバージョンを持っていました)から始まりました。

過去数年間、人々はポケモンのゲームを分解しています。ポケモンレッドとブルー、クリスタル、エメラルドなどをチェックすることができます。自分の若かりし頃の大切な一部だったゲームをコンパイルして構築できるのは本当にクールです。

このソースコードを使って、新しい視点でこれらのゲームを見てみるのは楽しいと思いました。数ヶ月前、Dot言語で書かれたグラフを描画するためのソフトウェアパッケージであるGraphvizを発見しました。Dotは非常にシンプルな言語であり、データをその形式にフィルタリングすることは簡単です。Graphvizには、dotファイルを見やすい人間向けの出力にレンダリングするいくつかのコマンドラインツールが含まれています。では、Graphvizを使用してポケモンレッドとブルーを可視化する方法を見てみましょう。

pokeredの内部には、ゲーム内のすべてのオーバーワールドマップに関するメタデータが含まれるdataディレクトリのmapHeadersサブディレクトリがあります。これにはマップ間の接続も含まれます。例えば、次はルート10のメタデータです。

ルート10の南にはラベンダータウン、西にはルート9があります。この接続データとgrepとawkのシンプルな使用法を使って、これらの接続を表すDotコードを生成することができます。以下のコマンドは、pokeredリポジトリの/data/mapHeadersから実行されます。まず、grepを使用して接続を確認します。

次に、awkをパイプしてその接続のエンドポイントを表示します。

これらをDotエッジとして出力するために、2番目のawk呼び出しを使用することができます。

非直向のDotエッジは、2つのノードとそれらの間に–が表示されます。

これらの接続をすべてstrict graph {}でラップすることで、厳密な(ノード間の1つの接続)グラフ(これらは双方向の接続なので非直向です)を表すことができます。

より見栄えの良いグラフを得るために、overlap=false(エッジの重なりを避けるため)とsplines=true(エッジにスプラインを使用するため)の2つのオプションを追加することもできます。以下は、上記の手順から生成されたpokemon_rb_towns_and_routes.dotです。

neatoを使用してPDFファイルを生成するために、次のような簡単な呼び出しを行うことができます。

さあ、これを見てみましょう:

(PDFファイルはこちら)

OK、町やルートは素晴らしいですね。このファイルに建物、トンネル、部屋を含めることはできますか?/data/mapObjectsのファイルにはwarpとwarp_toのマーカーがあります。例えば、SaffronCity.asmを見てみましょう。

(これらの_WIDTH接尾辞は、座標がマップの幅の内部にあることを示しているようです。後でこれらをきれいにします。)

ですから、warp_toステートメントを解析すれば、ゲームの場所とそれらがどのように接続しているかをより完全に把握することができるはずです。まず、簡単なgrepを使ってすべてのwarp_toステートメントを見つけます(/data/mapObjectsから実行します)。

次に、awkにパイプしてwarpのエンドポイントを見つけます。

これは近いですが、自分自身を指すようなワープも含まれています(上記のBIKE_SHOP_WIDTHのような)。grepを使用して;を含む行のみを印刷することで、これを解決することができます。

OK、ほぼ終わりです。次に、_WIDTHのテキストを削除し、エッジの接続を置き換えます。

(ここでの先頭のスペースに注意してください。Graphvizのツールには大きな問題ではありません。)

次に、pokemon_rb_towns_and_routes.dotからの接続と共に、これらすべてをpokemon_rb_all.dotファイルに入れて、ポケモンレッドとブルーのすべての場所のグラフを作成します。この呼び出しでは、neatoも使用しました。

このグラフはとてもクールです!ぜひチェックしてみてください:

(PDFファイルはこちら、dotファイルはこちら)

このグラフには、エリートフォーに続くビクトリーロードや、迷路のようなシルフカンパニービルなど、興味深い詳細がたくさんあります。

私は、シンプルなツールを使ってこれらのゲームを新たな視点から見ることがどれだけ簡単かについて本当に興奮しています。将来的には、これらのゲームの他の側面も見てみたいと思っています。

注意

  • この記事はAI(gpt-3.5-turbo)によって自動生成されたものです。
  • この記事はHackerNewsに掲載された下記の記事を元に作成されています。
    Visualizing Pokémon Red and Blue Connections (2020)
  • 自動生成された記事の内容に問題があると思われる場合にはコメント欄にてご連絡ください。

コメントする