Базовый C# Мод
Введение
Данное руководство покажет вам, как шаг за шагом, создать базовый мод для Mount&Blade II: Bannerlord, используя язык C#. Этот мод добавляет кнопку "Message" в главное меню одиночного режима игры. При ее нажатии, происходит отправка сообщения "Hello World" в чат.
Перед началом
Моддинг в Mount&Blade II: Bannerlord в данный момент имеет ограничения, связанные с отсутствием доступа к библиотекам CampaignSystem (одиночного режима игры) и инструментам мододелов от разработчиков. В тоже время доступно множество вещей с которыми можно работать и которые можно будет менять в версии для раннего доступа, не дожидаясь официальных инструментов.Инструментарий
C# IDE (интегрированная среда разработки)- Microsoft Visual Studio (не требуется для базовых модификаций)
Текстовый Редактор
Для запуска своих модов, вы можете использовать Bannerlord.exe, вызывая его из ".bat" файла (для более подробной информации см. пункт "Отладка").
Cоздание папки модуля и файла SubModule
- Найдите папку "Modules" в папке с игрой
- Создайте и назовите папку по своему усмотрению (к примеру "MyModule")
- Внутри папки создайте подпапку "bin", но не переходите в нее (она будет использовать для хранения ваших библиотек)
- В папке модуля создайте текстовый файл и переименуйте его в "SubModule.xml" (без кавычек) и вставьте текст который вы можете видеть ниже
- Проверьте отображается ли ваш модуль в лаунчере, в спиcке модулей для одиночной игры (singleplayer)
<Module>
<Name value="My Module"/>
<Id value="MyModule"/>
<Version value="v1.0.0"/>
<SingleplayerModule value="true"/>
<MultiplayerModule value="false"/>
<DependedModules/>
<SubModules>
<SubModule>
<Name value="MySubModule"/>
<DLLName value="../../Modules/MyModule/bin/ExampleMod.dll"/>
<SubModuleClassType value="ExampleModNameSpace.MySubModule"/>
<Tags>
<Tag key="DedicatedServerType" value="none" />
<Tag key="IsNoRenderModeElement" value="false" />
</Tags>
</SubModule>
</SubModules>
<Xmls/>
</Module>
Создание и настройка проекта Visual Studio
До того как начать настраивать проект в Microsoft Visual Studio, важно понять что это не требуется для простейших модификаций (например изменение или добавление предметов/ персонажей/сцен).- Запустите Microsoft Visual Studio и выберите Create New Project (в редакции на руском языке выберите Файл>Создать>Проект)
- Выберите библиотеку классов (.NET Framework)
- Назовите ваш проект и выберите .NET Framework 4.7.2. Если данная опция вам не доступна, скачайте специальный пакет для разработчиков (developer pack) здесь
- Теперь когда ваш проект создан, задайте путь для исходных файлов компиляции проекта в Modules/ВашеНазваниеМодуля/bin, которая находится в папке с вашой игрой
- Также нужно сделать "ссылки" с вашего новосозданного проекта на библиотеки TaleWorlds, которые находятся в bin\Win64_Shipping_Client
Создание и настройка базового класса и игровой логики
- Для начала создадим базовый класс MySubModule (который в свою очередь наследует класс MBSubModuleBase) и применим заимствования к нему. У вас должно получиться что то такое (смотреть первый блок "Code")
- Добавим в наш класс метод OnSubModuleLoad() и укажем на его перезапись (смотреть второй блок "Code")
- После этого добавим немного кода в наш перезаписанный метод. По сути мы добавляем кнопку в главное меню используя метод AddInitialStateOption, а за вывод изображения на экране отвечает DisplayMessage (смотреть третий блок "Code")
- Скомпилируйте ваш код используя комбинацию клавиш CTRL+B или CTRL+SHIFT+B (итоговый код в четвертом блоке "Сode")
- Откройте Community Launcher и выберите ваш мод в списке модулей для одиночной игры
- Запустите игру. В главном меню вы увидите кнопку "Message", нажав на нее, в левом нижнем углу появится текст "Hello World"
- Поздравляем! Вы создали свой первый мод для Mount&Blade II: Bannerlord
using TaleWorlds.Core;
using TaleWorlds.Localization;
using TaleWorlds.MountAndBlade;
namespace ExampleModNameSpace
{
public class MySubModule : MBSubModuleBase
{
}
}
protected override void OnSubModuleLoad()
{
base.OnSubModuleLoad();
}
Module.CurrentModule.AddInitialStateOption(new InitialStateOption("Message",
new TextObject("Message", null),
9990,
() => { InformationManager.DisplayMessage(new Informationmessage("Hello World!")); },
false));
using TaleWorlds.Core;
using TaleWorlds.Localization;
using TaleWorlds.MountAndBlade;
namespace ExampleModNameSpace
{
public class MySubModule : MBSubModuleBase
{
protected override void OnSubModuleLoad()
{
base.OnSubModuleLoad();
Module.CurrentModule.AddInitialStateOption(new InitialStateOption("Message",
new TextObject("Message", null),
9990,
() => { InformationManager.DisplayMessage(new Informationmessage("Hello World!")); },
false));
}
}
}
Отладка
- Откройте настройки проекта и выберите кнопку "Debug" (Отладка)
- Выберите опцию Start external program (запуск внешнего приложения) и сконфигурируйте путь к файлам "Bannerlord.exe"
- Удостоверьтесть что в качестве рабочей директории выбрана папка bin\Win64_Shipping_Client
- Добавьте следующие command line arguments (аргументы коммандной строки) "_MODULES_*Native*MyModule*_MODULES_ /singleplayer" (без кавычек, также удостоверьтесь что название вашего модуля "MyModule", а не какое либо другое). Вы также можете использовать данные аргументы коммандной строки для запуска своих модов (для этого создайте файл с расширением".bat" и поместите в папку bin\Win64_Shipping_Client, предварительно добавьте в файл следующее "Bannerlord.exe _MODULES_*Native*MyModule*_MODULES_ /singleplayer" (без кавычек))
Дополнительная информация
- В качестве среды разработки для модов, также может использоваться JetBrains Rider (отличается многими полезными функциями, в том возможностью смотреть декомпилированный код тейлов сразу, не прибегая к помощи сторонних декомпиляторов). Минусы это то что программа платная, но есть версия для студентов
- Официальной поддержки модификаций от тейлов ждать еще как минимум пол-года, а то и год (полный функционал будет доступен только после релиза). То что я описал выше, это отличная возможность опробовать себя в моддинге уже сейчас и получить полезные навыки, которые пригодятся в будущем
- За основу данного туториала, был взят гайд от Ster, который доступен по этой ссылке тут, а также документация по игре тут. Пока что в ней не хватает информации по некоторым направлениям, но она будет дополнятся. Если вам интересен дальнейший моддинг игры, советую ознакомиться с ней
Комментариев 8
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.