MODを作ろう!「Stellaris」編 第3回――FTL関連の作業

stellaris-modmaking2-warp

前回策定した計画に基づいて、今回からようやく本格的に作業に入っていきます。

前回:「Stellaris」編 第2回――早くも予定変更

2016/07/31 第4回へのリンクを追加。

スポンサーリンク

FTL関連の作業

前回最後で、FTL関連の技術とFTLドライブではどういうことが書いてあるのかということを見ていきました。これを元に、今回は内容をいじっていきます。

FTLドライブの設定変更

stellaris-modmaking2-warp

前回、FTLドライブ側でアンロックされる技術が規定されているということがわかりました。初期獲得技術はどうやらMODで替えられないようなので、FTLドライブのアンロック技術をひとつずつ先のものにずらし、そのずらした先の技術を改変してゲーム中盤以降に再配置するという方法を取ろうと思います。

stellaris-modmaking3-ftldrive

上の画像では、ワープドライブ1型、2型(WARP_DRIVE_1、WARP_DRIVE_2)の必要技術をそれぞれワープ技術の2つ目、3つ目(tech_warp_drive_2、tech_warp_drive_3)に変更しています。

なお、ワープドライブは3型までありますが、その必要技術をtech_warp_drive_4としてしまうと存在しない技術を参照することになるので、ここではtech_warp_drive_3のままです。のちほどtech_warp_drive_4(ワープ技術4つ目)を追加してから変更します。

stellaris-modmaking3-ftldrive2

この設定を保存してMODをアクティベートしてゲームを起動すると、初期技術としてワープドライブを指定していれば、上の画像のようにきちんとワープドライブが使えなくなっていました。ちゃんと思ったように機能しているようですね。

ただ、初期から存在する艦船モデルが消滅し、初期のコルベット3隻と建設船、調査船も登場しなくなってしまいました。

ワームホールの扱い

stellaris-modmaking3-ftldrive3

Beginning from the star system state」の作者さんが変更点のページで書かれているように、ワームホールは少し扱いが異なります。

ワームホールドライブは、新しい技術が開発されてもドライブ自体はそのままで、移動可能範囲と移動速度の倍率が変更されていくという建てつけになっています。ただ、ワームホールドライブの必要技術をtech_wormhole_generation_2(ワームホール技術の2つ目)に設定すれば、初期にFTLが使えなくなるというのは変わらないので、そのようにしておきましょう。

stellaris-modmaking3-ftldrive4

ワームホールステーションは最初から存在しますが、ワームホールドライブがないのでやはりFTL航行はできません。うまく機能しています。

localisationフォルダ内のファイル内容の変更

stellaris-modmaking3-ftldrive6書き換えた後のワープ初期技術(「ワープトラベル」→「ワープ理論」に書き換え)

実際に表示される名称や説明文はlocalisationフォルダ内の.ymlファイルによって決まっています。日本語化MODもここを書き換えて日本語化しているので、ゲーム中の名称などを変えたい場合は、日本語化MOD内の.ymlファイルを変更してやればOKということになります。

しかし、日本語化MODと.ymlファイルを書き換えたMODで内容がかぶっているので、日本語化MODに自分のMODを上書きして読み込ませないといけません。その方法をいろいろと試行錯誤してみました。

別ファイルを用意し、そちらですべて書き換え(失敗)

stellaris-modmaking3-ftldrive7

上の画像のように、適当な名前をつけた.ymlファイルを作り、その中で変更したい箇所をすべて記述してみました。が、この単純な方法ではうまくいかず。

元ファイルをコピーしてそこに記載されているものはそちらで変更(失敗)

stellaris-modmaking3-ftldrive8technology_l_english.ymlを日本語化MODからコピー

stellaris-modmaking3-ftldrive5technology_l_english.ymlの変更部分

元になっている日本語化MODから必要なファイル(ここでは技術に関係する.ymlファイル)をコピーし、それに存在するもの(例えば、tech_hyper_drive_1~3、tech_warp_drive_1~3など)はそちらで変更し、新たに追加するもの(tech_hyper_drive_4、tech_warp_drive_4など)は別ファイルで記載してみました。がこれもうまくいかず。

.modファイルにdependenciesを記載(成功)

stellaris-modmaking3-ftldrive9

「CK2では.modファイルにdependencies = { "xxx" }と記載すると、元のMODに上書きして読み込ませることができる」という情報(CK2の英語版Wikiに記載あり)をツイッターでいただいたので、それを試してみたところ、なんと成功

日本語化MOD(Japanese Language mod)→Simulationian MOD(開発中のMOD)という順序で読み込まれるので、technology_l_english.ymlが日本語化MODのものに上書きされてきちんと表示されたということのようです。

ただ、追加部分は未検証(他のMODではうまくいっているので、おそらく問題ない)というのと、この方法では日本語化MODの一部を取り込んで改変することになるので、公開する際には日本語化MOD側の許可やクレジット表記が必要になるかもしれないという点は注意が必要でしょう。

差分ファイルにできないかいろいろと検討(結果、すべて失敗→反映に関する規則を解明し、差分化に成功!)

名称や説明文をすべてオリジナルで差分ファイルだけすれば、ただのローカライズの変更になるので、許可やクレジットの話をすっ飛ばせるのでは……と思っていろいろやりましたが、どれもうまくいきませんでした。

ただ、差分ファイルのみにしてうまくいったという情報もいただいているので、なにかが引っかかってうまくいっていないものと思います。詳しくは検証中です。

2016/07/27 00:00追記:ツイッターにて検証してくださった方がおり、その方のご尽力により、どうやら技術によって差分で書き換えられるものと書き換えられないものがあるようだということが判明しました。初期FTL技術は書き換えられないものに分類されるようですが、さらに他にも差分ファイルだけでは書き換えられないものがあるとのこと。ご協力いただきまして、本当にありがとうございました。

さて、今度は「書き換えられる技術と書き換えられない技術はなにが異なるのか」というのが新たな謎として浮上してきました。これについては今後検証していこうと思います。

2016/07/27 00:40追記:その後、同じ方の検証によって、どうやら記載する内容(文字か長さ?)によって書き換えられるかどうかが変わるらしいということが判明したようです。

2016/07/28 23:55追記:その後、さらに別の方から「同じラベルのものはソートされて一番上のものが採用されているのではないか」というアイディアをいただき検証した結果、どうやらUTF-8の文字コード順でソートされて一番上のものが採用されているということが確認できました。ご協力いただいたみなさま、本当にありがとうございました。

dependenciesを使ってすべて別ファイルで記載

dependenciesを使った状態ですべて別ファイルに変更箇所を記載しましたが、これはうまくいかず。

ファイル名に着目

ツイッターでいただいた情報から、このファイルが最後に読み込まれるようにzから始まるファイル名にしたり、最初に読み込まれるように(最初に読み込んだストリングスがその後出てきてもすべて無視するという場合もあるとのこと)0から始まるファイル名にしたりしましたが、これもうまくいかず(これのdependenciesを使わない状態も試しましたが失敗)。

MODのファイル名に着目

HoI4日本語化MODのページには、「MODの名称をランチャーでJapanese Language modより上に表示される名前にしてください」という記述があり、これも試してみましたが、「Stellaris」ではできないようです(こちらもdependenciesを使う場合・使わない場合を試しましたが、両方ともうまくいかず)。

元ファイルをコピーしてそこから変更する部分を削除し、別ファイルで記載

2chの「第13次 Hearts of Iron 4」スレのレス364には、「元ファイルをコピーして対象キーを削除したものをMOD内に配置し、新規のymlファイルに対象部分を配置して改変」という方法が挙げられています。

これでは差分ファイルにはなりませんが、これも試してみました。しかし、うまくいかず。

エンコードの問題?

エンコードがUTF-8になっていないのではないかという指摘を受け、ymlファイルをUTF-8で作り直してみましたが、これもうまくいかず(dependenciesの有無も関係なくダメ)。

さらに、.ymlファイルはBOMありのUTF-8ではないかという情報もいただきまして、これもファイルを作り直して試しましたが、やはりうまくいかず。


というわけで、かなりもやもやしたものが残りますが、ymlファイルを差分ファイルにはできませんでした。差分ファイルで変えられるものと変えられないものがあることは判明しましたが、その線引きがなんなのかが新たな謎として浮上してきました。私も検証してみますが、なにかお心当たりがおありでしたら、コメントなどいただけますと幸いです。

次回:MODを作ろう!「Stellaris」編 第4回――FTL関連の作業その2