グラフノードとは

要するにただのグラフである。以下のようなものを想像してもらえばよく、それぞれのノードはスタート地点からの距離に応じたコストを持っている。

コストについて

今回はスタート地点からの距離をコストとしたが、より正確には「ノードを繋ぐエッジに重みがある」とする方が正しい。

そうでないと、例えばこのデータだけではコスト 8 のノードからコスト 8 のノードへ移動するときにいくらコストがかかるかをパッと計算することができない。ただし、ガチホコバトルにおいては「ゴールまでの距離」がカウントとして扱われるのでこのような表記とした。

スプラトゥーンのグラフノード

スプラトゥーンにおけるグラフノードはサーモンランなどでも使われている。サーモンランの場合はシャケが通行可能なルートをグラフノードで制御していたりする。

このグラフノードは BYAML という XML を暗号化したフォーマットで与えられており、普通のエディタでは中身を見ることができない。

ただ、そこはスーパーハカーが復号用のプログラム (opens new window)を開発してくれている。この中にあるThe4Dimension.exeを使ってBYAML, BYML, BPRMなどのデータを復号することができる。

BYAML などについて

ちなみに BYAML などの最初についている B は Binary を意味している。バイナリ化することでファイルサイズを圧縮しているのだ。

復号のために必要な知識はWiki (opens new window)にのっているので自作ライブラリをつくってみるのも良いかもしれない。ちなみにぼくは挫折しました。

変換のための手順

必要なものは以下の通り。

  • sarctool (opens new window)
    • 圧縮ファイルを解凍するためのツール
    • 解凍して BYAML データを手に入れます
  • The4Dimension (opens new window)
    • BYAML を XML に変換するツール
  • VSCode (opens new window)
    • XML を編集/閲覧するテキストエディタ
    • 好きなのを使えばいいけど、これをオススメ
    • 実際、エディタはなくても困らないけど解説のために載せておく