[Hack]カスタムステージは遊べるか?

スプラにおけるマップの扱い

スプラトゥーンでは二つのファイルによってステージを制御している。

一つはモデルデータであり、モデルデータには「ステージの形状」や「ステージのどこの場所が塗れるか」や「どのオブジェクトがどのように動くか」といった情報が含まれている。

もう一つはマップデータであり、これは「リスポーン地点の座標」や「ガチホコのゴール位置」や「ガチホコの初期位置」、「ヤグラのルートやカンモン」の情報が載っている。

これら二つのファイルを合わせることで、ガチマッチは色々なルールを楽しむことができ、ルールを少し変えたいときにはモデルデータをいじらずにマップデータだけで細かい変更ができるというわけなのだ。

マップ置換は制限されている

少し前のバージョンであればプライベートマッチから簡単にステージを変更できたのだが、最近のバージョンではマップが有効かどうかをチェックするシステムが備わっており、例えばリスポーン地点が二つないステージについてはプレイすることができなく(フリーズするように)なっている。

というわけでプライベートマッチでのマップ置換は検証がめんどくさいので後回しにしたいのである。

では、どうするか?

それは、検証システムが働かないマップを使うことである。

試し打ち場を置換する

テストとしてスプラトゥーン2のチュートリアルのマップと置き換えてみた。

すると何もない空間に放り出されてひたすら落下死を繰り返す状況に陥ってしまった。

なにもない空間に放り出されるイカちゃん

どうやら、単純にファイル名を置換するだけではダメなようだ。

Toolboxでいろいろ弄る

そこで、Toolboxを使ってSZSの中身を直接編集することにした。

KCLリネーム後、やはり虚無空間に放り出されるイカちゃん

しかし、ここであることを思いついた。

ひょっとしてスタート地点の座標がちゃんと読み込めていないからバグっているのでは????

これがビンゴで、Mapファイルの方の内部のbyamlファイルを編集することで正しくイカちゃんをスタート地点に配置することができた。

byamlはファイル名を正しく入力しよう
普段なら持てないマニュコラを持つイカちゃん
マップも正しく読み込めている

1のステージ移植

MapファイルはSZSをToolboxで開いて中身をリネームするだけでとりあえず読み込めてしまった。

マップとの座標ズレはあるが、リスポーン地点は出現した

BFRES

OatmealDome氏のwikiによるとbfresファイルのデータはWiiUとNintendo Switchで大きく異なっている。

つまり、これをこのまま流用することはできない。

となると、どうやってBFRESファイルを作るかという問題になる。

#Model

まずそもそもこれの仕様が違うっぽい。なんか上手く読み込めない…

#Texture

WiiUからNintendo Switchへは描画システムに大幅なアップデートがされている。Splatoon1に代表される多くのWiiUのゲームは旧来のレンダリングを利用している。

これはテクスチャにAlbedo, Normal, Specularの三つの属性を持つものであった。

Splatoon2はPBRと呼ばれる物理レンダリングシステムを採用しており、それらはよりリアルな描画を可能にしている。

PBRはAlbedo, Normal, Roughness, Metallicの四つの属性を持っている。

Albedo, Normalはそのまま流用することができたが、SpecularをRoughnessに変換する必要があった。Metricに関しては無視している。

変換方法についてはこの記事を参照。OatmealDome氏はここから自動化ツールを作成したらしい(すごい)

KCL

WiiUのKCLはビッグエンディアンだったのだが、Nintendo Switchはリトルエンディアンである。つまり、ここを変更しないとマップの情報を全く読み込まないということになる。

Wexos’ Toolboxで編集できるらしいのだが、やり方がよくわからないのでスルーすることにする。

どうやらそのままではできないらしく、自分でKCLをリトルエンディアンで出力できるように改造しなければいけないらしい。

ちょっとめんどくさかったが、無事に改造してWexos’ ToolboxでSplatoon2用のKCLを出力できるように変更した。

まとめ

2→2の置き換えはMapとModelを置換するだけで良い。

ただし、内部ファイルはリネームしなければいけない。

1→2の置き換えはModelのBFRESファイルとKCLを変換しなければいけない。

結論

KCLはうまく編集することができたが、BFRESの置換が上手くいっていないなど、まだまだ課題は存在する。

正直なところ、カスタムステージに関して言えばOatmealDome氏がほぼほぼ完成形までもっていっているのでいまさら自分がすることはないのだが、プログラミングの勉強の一環として取り組んでいます。