MOD制作 > 試作




Mount & Blade II: Bannerlord の MOD 制作には、XML の改変によるものや C# プログラミングによるものがありますが、ここでは C# による MOD 制作の初歩について解説していきます。



開発環境の準備

作業を始める前に、プログラミングのための環境を構築しましょう。
  1. Microsoft のサイトから Visual Studio Community のインストーラーをダウンロードして実行
  2. Visual Studio インストーラーで「.NET デスクトップ開発」を選択
  3. 一応、右側に「.NET Framework 4.7.2 開発ツール」が含まれていることを確認した上でインストール (インストールオプションの変更は特に必要ありません)

ちなみに、Visual Studio Community は無料で利用できますが、ライセンスが30日で切れてしまいます。使用を継続するには Microsoft アカウントでサインインしなければなりません。アカウントの作成はこちらから、サインインは Visual Studio 起動後に右上のアイコンから行えます。



練習用 MOD の準備

今回は、練習用に ExampleMod という名前で MOD を作っていきます。


配置場所

  1. [Bannerlord インストールフォルダ]\Modules に ExampleMod というフォルダを作成
  2. ExampleMod フォルダの中に bin、さらに bin の中に Win64_Shipping_Client というフォルダを作成

今回の例で言うと、最終的なディレクトリ階層は
[Bannerlord インストールフォルダ]\Modules\ExampleMod\bin\Win64_Shipping_Client
となります。


設定ファイル

以下をテキストエディタにコピペし、SubModule.xml というファイル名で ExampleMod フォルダの中に保存します。
  1. <Module>
  2. <Name value="Example Mod"/>
  3. <Id value="ExampleMod"/>
  4. <Version value="v1.0.0"/>
  5. <SingleplayerModule value="true"/>
  6. <MultiplayerModule value="false"/>
  7. <DependedModules>
  8. <DependedModule Id="Native"/>
  9. <DependedModule Id="SandBoxCore"/>
  10. <DependedModule Id="Sandbox"/>
  11. <DependedModule Id="CustomBattle"/>
  12. <DependedModule Id="StoryMode"/>
  13. </DependedModules>
  14. <SubModules>
  15. <SubModule>
  16. <Name value="ExampleMod"/>
  17. <DLLName value="ExampleMod.dll"/>
  18. <SubModuleClassType value="ExampleMod.MySubModule"/>
  19. <Tags>
  20. <Tag key="DedicatedServerType" value="none" />
  21. <Tag key="IsNoRenderModeElement" value="false" />
  22. </Tags>
  23. </SubModule>
  24. </SubModules>
  25. <Xmls/>
  26. </Module>
  27.  



Visual Studio による作業

プロジェクトの作成と設定

1. 新しいプロジェクトの作成


ドロップダウンリストは、「すべての言語」を「C#」に、「すべてのプロジェクトの種類」を「ライブラリ」にします。
下の方に「クラスライブラリ (.NET Framework) C# クラスライブラリ(.dll)を作成するためのプロジェクトです」があるはずなので選択します (「クラスライブラリ .NET Standard または .NET Core を対象とする…」と間違えないように)。

2. プロジェクトの構成

プロジェクト名は、今回は練習用の ExampleMod です。フレームワークが 4.7.2 になっていることを確認しておきましょう。

3. 参照の設定

新規プロジェクトが作成されて Visual Studio が開いたら、プロジェクト(P) メニューから、参照の追加(R)... を選択します。
参照マネージャー下部の「参照(B)...」をクリックし、以下のフォルダにある DLL を全て追加し、OK を押してください。
  • [Bannerlord インストールフォルダ]\bin\Win64_Shipping_Client (TaleWorlds.○○.dll だけ。ただし、TaleWorlds.Native.dll は選択しないでください。)
  • [Bannerlord インストールフォルダ]\Modules\CustomBattle\bin\Win64_Shipping_Client
  • [Bannerlord インストールフォルダ]\Modules\Native\bin\Win64_Shipping_Client
  • [Bannerlord インストールフォルダ]\Modules\SandBox\bin\Win64_Shipping_Client
  • [Bannerlord インストールフォルダ]\Modules\SandBoxCore\bin\Win64_Shipping_Client (筆者の環境ではここは空っぽ)
  • [Bannerlord インストールフォルダ]\Modules\StoryMode\bin\Win64_Shipping_Client


コーディング

エディタのタブで Class1.cs をアクティブにします。
勝手にいくつか using されていると思うので、その下に
using TaleWorlds.Core;
using TaleWorlds.Localization;
using TaleWorlds.MountAndBlade;
を記述します。

次に、MBSubModuleBase を継承したクラスを public 宣言してください。この時のクラス名は、準備で作成した SubModule.xml の SubModuleClassType の項目と一致させる必要がありますので、今回は MySubModule となります。
MySubModule クラスに、OnSubModuleLoad() メソッドを protected オーバーライドします。
メソッドには
Module.CurrentModule.AddInitialStateOption(
    new InitialStateOption(
        "Message",
        new TextObject("Message", null),
        9990,
        () => { InformationManager.DisplayMessage(new InformationMessage("Hello World")); },
        () => { return (false, TextObject.Empty); }
    )
);
 
と記述します。(e1.5.10にて InitialStateOption() の引数が変更されました)

コードの最終形は
  1. using TaleWorlds.Core;
  2. using TaleWorlds.Localization;
  3. using TaleWorlds.MountAndBlade;
  4.  
  5. namespace ExampleMod
  6. {
  7. public class MySubModule : MBSubModuleBase
  8. {
  9. protected override void OnSubModuleLoad()
  10. {
  11. Module.CurrentModule.AddInitialStateOption(
  12. new InitialStateOption(
  13. "Message",
  14. new TextObject("Message", null),
  15. 9990,
  16. () => { InformationManager.DisplayMessage(new InformationMessage("Hello World")); },
  17. () => { return (false, TextObject.Empty); }
  18. )
  19. );
  20. }
  21. }
  22. }
  23.  
となります。


コンパイル

  1. ビルド(B) メニューから、ExampleMod のビルド(U) を選択します
  2. ビルドが終わったら、出力先のフォルダ (デフォルトでは %UserProfile%\source\repos\ExampleMod\ExampleMod\bin\Debug) にある ExampleMod.dll を [Bannerlord インストールフォルダ]\Modules\ExampleMod\bin\Win64_Shipping_Client の中にコピペします



動作テスト

Bannerlord を起動し、ランチャーで Singleplayer -> Mods をクリックします。
リストに Example Mod があるはずなのでチェックを入れます。
PLAY ボタンを押すと
You're loading unverified code from: ExampleMod
と表示されますが、ここでは Confirm を押します。
ゲームのメニュー画面に Message の項目が追加されており、クリックすると Hello World と表示されるはずです。
以上で練習用 MOD は完成です。ランチャーで Example Mod のチェックを外しておきましょう。







タグ:

+ タグ編集
  • タグ:
最終更新:2021年07月15日 19:34