この記事のリンク先には広告が含まれています

Bed Rest For Food Poisoning 日本語化対応修正(RimWorld mod)

作成の経緯
  • 食中毒になったらベッドに向かうという、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内文字列をバイナリエディタでいじれるか試してみたが、やっぱり無理だった
  • よって、日本語環境で適用するには、再コンパイルが必要である気がしたので、やってみた

Bed Rest For Food Poisoning 再コンパイル

RimWorld mod作成環境構築は、以下を参考にしました

Modding Tutorials/Setting up a solution – RimWorld Wiki

作業環境

Visual Studio Community 2022

  • Bed Rest For Food Poisoningのmodフォルダのソースファイルを一式コピー(2567901366\1.5\Source)
  • プロジェクトぽいファイルを開き、以下環境設定する
    1. (ここは既にされている?)ソリューションエクスプローラーで、レンチアイコン[プロパティ]をダブルクリック
      • [アプリケーション]
        • 必要であれば、[アセンブリ] と [名前空間] の名前を任意の名前に変更
      • [ビルド]
        • [出力パス] を ..\..\Assemblies\ (または Assemblies フォルダーがある場所)
        • 「詳細」を開き、「デバッグ情報」を「なし」に設定
    2. ソリューション エクスプローラーで「参照」を右クリックし「参照の追加」をクリック
      1. 「参照…」をクリックします。
      2. フォルダに移動
        • RimWorldInstallPath/RimWorld******_Data/Managed
      3. ファイル選択
        • Assembly-CSharp.dll
        • UnityEngine.CoreModule.dll
      4. 「追加」をクリック
      5. 「OK」をクリックして、参照マネージャーを閉じます。
    3. ソリューション エクスプローラーの「参照」内、[Assembly-CSharp.dll] [UnityEngine.dll] を右クリックし、[プロパティ] ペインをひらく
      • [プロパティ] ペインにて、[ローカルにコピー] を [False] に設定する
  • 同様に、HarmonyMod(https://github.com/pardeike/HarmonyRimWorld)のDLLも追加する
    1. HarmonyModを適当な場所にコピー
    2. 参照、追加で、[0Harmony.dll] 、[HarmonyMod.dll] を追加
    3. [プロパティ] ペインにて、[ローカルにコピー] を [False] に設定する
  • ここで、リビルドしてみる
    • ビルド後のコマンド[powershell -ExecutionPolicy Bypass ....\Deploy.ps1]が不明だが、Assemblies フォルダーにDLLが更新作成できていれば成功
  • "initial" 、 "major"を、"初期症状"、"重大"に変更、再リビルドし、DLLを入れ替える
  • 日本語環境で、食中毒(初期症状)、食中毒(重大)でベッドに行けるようになっていたら完了
疑問点
  • C#にて、DLLの参照は、DLL指定するだけで良いのか?
    • C++の、ヘッダファイルやライブラリファイルは不要になったのか?
  • RimWorldのmodは、”.NET Framework 4.7.2″である必要があるらしい

コメント