作成の経緯
- 食中毒になったらベッドに向かうという、Bed Rest For Food Poisoningのmodを日本語環境で適用したいと思ったので、試行錯誤した
- なお、RimWorldのmodは今まで作成したことはないので、以下が正しいかも不明
- C#言語も、今まで扱ったことはない
調査
- 日本語の環境で、そのままの状態では、何も起こらないことを確認した
- コメントによると、「This mod is not compatible with non English game environments. If you want it to be compatible, you need to translate "initial" and "major" in the DLL into your language.」とのことで、日本語に翻訳する必要がありそうと思った
- modフォルダにソースファイルを発見した
- ソースファイル内に、"initial"と"major"の文字列を発見した[MustTranslate]とも書いてあり、やはり翻訳が必要の様だった
- Assembliesフォルダに、DLLがある事を発見した。このMODはDLLの様だと思った
- xmlファイルはない様で、単純には日本語適用できそうにない気がした
- "initial"と- "major"が何を意味するのか不明だったが、どうやら、- 食中毒(初期症状)、食中毒(重大)が、英語で- Food posisoning(initial)、Food posisoning(major)の様で、カッコ内の文字列に対応しているようだった
- 英語環境では、食中毒でベッドに行けることが分かった
- DLL内文字列をバイナリエディタでいじれるか試してみたが、やっぱり無理だった
- よって、日本語環境で適用するには、再コンパイルが必要である気がしたので、やってみた
Visual Studio 2022 コミュニティ インストール
- クリーンインストールする機会があったので、参考までに。
- もしもこのためだけにVS2022をインストールする奇特な人がいたら以下参考
- Visual Studio 2022 コミュニティをダウンロード
- ダウンロードしたインストーラーを起動
- C#があればどれでもいいと思うが、.NETデスクトップ開発を選択する
- 個別のコンポーネントで”.NET Framework 4.7.2″が含まれていることを確認する
 
- インストールする
Bed Rest For Food Poisoning 再コンパイル
RimWorld mod作成環境構築の参考リンク
- Bed Rest For Food Poisoningのmodフォルダのソースファイルを一式コピー- 場所:\steam\steamapps\workshop\content\2941002567901366\1.5\Source
 
- 場所:
- プロジェクトファイル「Source.csproj」を開く。以下環境設定- ソリューションエクスプローラーのレンチアイコン[プロパティ]をダブルクリック
-  [アプリケーション]
- [アセンブリ] と [名前空間] がBedRestForFoodPoisoningを確認
 
- [アセンブリ] と [名前空間] が
- [ビルド]
- [出力パス] が ..\Assemblies\を確認
- 「詳細」を開き、「デバッグ情報」を「なし」を確認
 
- [出力パス] が 
 
-  [アプリケーション]
- 必要DLLの導入/設定
- ソリューション エクスプローラーの「参照」を右クリックし「参照の追加」をクリック
- 「参照…」をクリック
- フォルダに移動
- \steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed
 
- ファイル選択
- Assembly-CSharp.dll
- UnityEngine.CoreModule.dll
 
- 「追加」をクリック
- 「OK」をクリックして、参照マネージャーを閉じます
 
- ソリューション エクスプローラーの「参照」内、[Assembly-CSharp]を右クリックし、[プロパティ] ペインをひらく- [プロパティ] ペインにて、[ローカルにコピー] を [False] に設定する
 
- [UnityEngine.CoreModule]も、[プロパティ] ペインにて、[ローカルにコピー] を [False] に設定する
 
- ソリューション エクスプローラーの「参照」を右クリックし「参照の追加」をクリック
 
- ソリューションエクスプローラーのレンチアイコン[プロパティ]をダブルクリック
- HarmonyModのDLL追加
- HarmonyMod(https://github.com/pardeike/HarmonyRimWorld)をダウンロードし、適当な場所にコピー
- 参照、追加で、\Current\Assembliesの[0Harmony.dll]、[HarmonyMod.dll]を追加
- [0Harmony]、- [HarmonyMod]の[プロパティ] ペインにて、[ローカルにコピー] を [False] に設定する
 
- ここで、メニュー「ビルド」-「ソリューションのリビルド」してみる
- ビルド後のコマンド[powershell -ExecutionPolicy Bypass ....\Deploy.ps1]が不明だが、Sourceフォルダ同階層のAssemblies フォルダーにDLLが更新作成できていれば成功
 
- ビルド後のコマンド
- Patch_HealthAIUtility.csファイルを開き、- "initial" 、 "major"を、- "初期症状"、"重大"に変更する- 修正後[MustTranslate] private static string initial = "初期症状"; [MustTranslate] private static string major = "重大";
 
- 修正後
- 再リビルドし、DLLを入れ替える
- 日本語環境で、食中毒(初期症状)、食中毒(重大)でベッドに行けるようになっていたら完了
疑問点
- C#にて、DLLの参照は、DLL指定するだけで良いのか?
- C++の、ヘッダファイルやライブラリファイルは不要になったのか?
 
- RimWorldのmodは、”.NET Framework 4.7.2″である必要があるらしい
 
 

コメント