MODガイド リソース編
はじめに
1.1 OGRE管理のリソース
1.2 ファイル名の制限
キーが重複した場合は、後から追加するリソースのフォルダパスで要素を上書きします。
(リソースフォルダはoperator[]で追加しています)
カナなどの非ASCII文字は、文字化けでリソースが見つからない可能性があるため非推奨
(ファイル名は、ゲームデータがUTF-8、OGREのリソース管理がシステムロケールに依存している)
1.3 所属グループの規則
バニラのリソースが所属するグループはresources.cfgに従います。
ただし、LandscapeとOverlaymapsは例外で「./data/land」を「./data/newland/land」に読み替えます。
MODや公式翻訳のリソースはmodファイルのあるフォルダをdataフォルダと見立てて一番近いフォルダ構成と同じグループになります。
例LandscapeとOverlaymapsはresources.cfgに合わせてmods/test_mod\landにするとGeneralになるので気をつけてください。
1.4 リソースのロードオーダー
ゲーム起動後、以下の順でフォルダをリソース管理に追加します。
- バニラ
resources.cfgに記載されているフォルダをリソース管理に追加します。
再帰しないので記載のないフォルダは追加されません。 - 公式翻訳
言語設定に応じて言語フォルダをサブフォルダ含めリソース管理に追加します。
日本語なら./locale\ja_JPフォルダとそのサブフォルダが対象になります。 - MOD
mods.cfgの昇順に各MODフォルダをサブフォルダ含めリソース管理に追加します。
ワークショップでサブスクライブしたMODは絶対パスになります。
1.5 使用するファイルの差し替え
1.6 FCSで設定するファイルパス
一応、フォルダパスはFCSのAssetウィンドウでファイルの存在チェックで使っています。
1.7 リソースグループを間違えた場合
しかし、地形のテクスチャやアイコン等のリソースは、リソースグループが決まっているので、なるべくバニラのフォルダ構成を真似た方がいいです。
※features.datとfogfeatures.datは例外でバニラのフォルダ構成を真似ると誤ったリソースグループになります。
2.1 OGRE管理外のリソース
- Kenshiの固有ファイル(mod, zoneなど)
- Scythe
- 地形のハイトマップ
- Havok
- Wwise
2.2 Kenshi固有ファイル(mod, zoneなど)
「バニラ → バニラの.translation → mods.cfgの昇順 → MODの.translation」の順にロードします。
.modファイルと.translationファイルは1つのデータに統合されます。
ただし、MODの.translationが存在している場合は、バニラの.translationをロードしません。
.levelファイルや.zoneファイルなどは同名ファイルが1つのデータに統合されます。
2.3 Scythe
Scytheの.phsファイルはFCSでパスが指定できるのでMODフォルダからロード可能です。
ただし、ワークショップのMODはファイルの所在とFCSで設定したパスが一致しないのでロードできません。
- ユーザーにmodsフォルダへコピー&リネームしてもらう
あるいはシンボリックリンクを作成してもらうとMODが自動更新されるようになります。
- RE_Kenshiの機能でファイルパスを再バインディングさせる
GitHubのwiki[github.com]を見ればできますが、念のため例を記載します。
{ "FileRebinds" : { "./mods/test_mod/items/scythe_test.phs" : "$(modroot \"Your mod name here\")/items/scythe_test.phs" } }
JSONのキー名は、FCSで設定したパスと一致する必要があります。
最新のFCSは、パス区切り文字を「/」に正規化するので、気をつけてください。また、当たり前ですがユーザーがRE_Kenshiを導入していないと意味がないです。
一方で.phsファイルが参照するモデルは、OGREのリソース管理に従います。
全てのリソースグループから探索するので、ファイル名さえ正しければロード可能です。
2.4 地形のハイトマップ
ファイルパスが「data\newland/land\fullmap.tif」でハードコーディングされているので、バニラのファイルを上書きしないと反映できません。
しかし、前項で紹介したRE_Kenshiの機能を使うとMODフォルダからロード可能になります。
(一応、RE_Kenshiのファイルログ含め参照先の変更を確認しています)
- ハイトマップを圧縮
インストーラに同梱されているCompressTools.exeを使います。
PowerShell等を起動して以下のコマンドを実行します。CompressTools.exe "圧縮元パス" "圧縮先パス"※CompressTools.exeはフルパスで指定するか、カレントディレクトリを移動してから実行してください - RE_Kenshi.jsonを編集
{ "FileRebinds" : { "data\\newland/land\\fullmap.tif" : "$(modroot \"Your mod name here\")/fullmap.tif", "data/newland/land/fullmap.cif" : "$(modroot \"Your mod name here\")/fullmap.cif" } }
3 扱いに注意が必要なリソース
- アニメーション(.skeleton)
- パーティクルのテクスチャ
- PhysXオブジェクト(.xml, .bin)
- features.dat, fogfeatures.dat
- bodyデータ(.bod2)
- アイコン
- 建物の3Dモデル(.mesh)
- GUI翻訳データ(main.mo)
3.1 アニメーション(.skeleton)
扱いを誤るとCTDのリスクがあります。
以下の点に注意しましょう。
preprocessはトラックの除外処理が本来の役割ですが、この処理はタイトル画面からロード画面に遷移するタイミングでファイルを安全にロードするので結果としてCTDを防止します。
ボーンドッグなど動物の.skeletonファイルはトラックの除外処理の後に行う種族データの初期処理で.meshファイルと一緒にロードするので、必須ではありません。
ただし、追加の.skeletonファイルは動物用であってもpreprocessをTrueにします。
しかしながら、CTDを引き起こすアニメーションMODが存在しています。
これらは共通してリソースグループがGeneralになっています。
Generalはロード画面や「読込中...」を表示するタイミングで未使用のリソースをアンロードします。(foliage、Landscape、Overlaymapsもアンロード対象)
そのため、アニメーションの.skeletonファイルをトラックの除外処理でロードしたのに未使用としてアンロードされます。
そして、アニメーションを再生するまでにリロードが間に合わないとCTDになります。
3.2 パーティクルのテクスチャ
したがって、テクスチャの数が多い/サイズが大きいとVRAMを圧迫します。
また、Particle Systemの再登録によってテクスチャを差し替えると不要になった差し替え元がVRAMに残ってしまいます。
3.3 PhysXオブジェクト(.xml, .bin)
.binファイルが存在しない場合のみ.xmlファイルから.binファイルを作成します。
そのため、.xmlファイルを変更した場合は.binファイルの再作成が必要になります。
ユーザーに.binファイルを削除してもらうのは面倒ですので、.xmlファイルと.binファイルはセットで配布しましょう。
3.4 features.dat, fogfeatures.dat
これらのファイルは、バニラのフォルダ構成を真似て「mod root\newland\land」とすると差し替えに失敗します。
features.datとfogfeatures.datはLandscapeからロードするので、Overlaymapsである「mod root\newland\land」ではなく、「mod root\newland\land\textures」が正解です。
(「./data/newland/land」は、resouces.cfgのLandscapeとOverlaymapsの両方に定義されているため、正しく動作しますが、modフォルダは、一つのリソースグループしか割り当てられない仕様になっています。)
3.5 bodyデータ(.bod2)
.bod2ファイルは、Kenshi固有のファイルですが、OGREのリソース管理の対象になります。ただし、バニラの.bod2ファイルはOGREのリソース管理外であり、その場合はFCSで設定したパスをロードします。
ファイル名にカナ(非ASCII)が含まれている場合、modsフォルダからはロードできますが、ワークショップからはロードできません。
余談ですが、NPCにbodyデータを設定した場合、ハッシュ値の衝突が原因でシェイプキーが(同じ3Dモデルが割り当てられた)他のキャラクターの値で描画されるバグがあります。
3.6 アイコン
自動生成する場合は、以下の理由により自動生成した.pngファイルの配布を推奨します。(染色など自動生成が前提のアイコンを除く)
- 自動生成のレンダリング負荷が高い(特に義肢)
- ゲーム中はリソースを登録しないため、アイコンを参照するたびにレンダリングとファイル作成を行う
- 3Dモデルやテクスチャを修正するとファイルの再作成が必要になる
3.7 建物の3Dモデル(.mesh)
- materialのmaterial typeがDUAL
- .meshファイルに頂点カラーがない
- 建物が未完成の状態
3.8 GUI翻訳データ(main.mo)
- mod_root\locale\ja_JP\LC_MESSAGES\main.mo
- mod_root\locale\ja_JP\ja_JP.translation
注意事項は以下の通りです。
- MODのlocaleフォルダはmain.moと.translationしかロードできない
上記以外のファイルは、リソースグループに従って配置してください。 - バニラの.translationが無効になる
目的がGUI翻訳の変更だけであっても、ゲームデータの翻訳データが必要になります。ただし、.translationで翻訳すると下記の問題が発生します。
- MODの.translationは必ず最後にロードされる
MODの.translationでバニラデータを翻訳してしまうとバニラデータの名称を変更するMODと競合します。また、ロードオーダーの変更では解決できません。競合を防止するには、翻訳を.modの方で行い、.translationは何も変更しないようにします。
This guide was created by its original author on the Steam Community. Are you the author and want it removed? Request removal.