Гайд: Создание кастомной Северной провинции в Province Launcher (Mount Blade II: Bannerlord)
Важно:
Province Launcher (PL) — это сторонний инструмент, чей формат данных и API могут меняться с обновлениями. Данный гайд описывает архитектурный подход и типовую структуру, актуальную на 2025–2026 гг. Всегда сверяйтесь с официальной документацией на GitHub/NexusMods вашей версии PL.
1. Подготовка и требования
| Компонент | Описание |
|---|---|
| Bannerlord | Стабильная версия (рекомендуется v1.2.10+). Без модов на ядро игры. |
| Province Launcher | Последняя стабильная сборка (скачивать с официального GitHub или NexusMods). |
| Редактор кода | VS Code, Notepad++, Sublime Text (с плагинами XML/JSON lint). |
| Bannerlord Modding Tools | Bannerlord.ModuleEditor, Harmony, MBSaveEditor (опционально, но сильно упрощают отладку). |
| Бэкапы | Обязательно сделайте копию Documents\Mount and Blade II Bannerlord\Modules и Saves. |
2. Структура мода_province
Создайте папку с названием, например North_Province_PL.
Внутри неё должна быть следующая иерархия:
North_Province_PL/
├── SubModule.xml
├── Provinces/
│ └── north_province.xml
├── Cultures/
│ └── north_culture.xml
├── Troops/
│ └── north_troops.xml
├── Settlements/
│ └── north_settlements.xml
└── Assets/ (опционально: баннеры, иконки, текстуры)
3. SubModule.xml (базовый манифест)
<?xml version="1.0" encoding="utf-8"?>
<Module>
<Name value="North Province for PL"/>
<Id value="NorthProvincePL"/>
<Version value="v1.0.0"/>
<SingleplayerModule value="true"/>
<MultiplayerModule value="false"/>
<DependedModules>
<DependedModule Id="Bannerlord.Harmony"/>
<DependedModule Id="Native"/>
<DependedModule Id="Sandbox"/>
<DependedModule Id="StoryMode"/>
<DependedModule Id="ProvinceLauncher"/>
</DependedModules>
<SubModules>
<SubModule>
<Name value="NorthProvincePL"/>
<DLLName value="NorthProvincePL.dll"/>
<SubModuleClassType value="NorthProvincePL.Main"/>
<Tags/>
</SubModule>
</SubModules>
<Xmls>
<XmlNode name="Provinces" xml_path="Provinces/north_province.xml" />
<XmlNode name="Cultures" xml_path="Cultures/north_culture.xml" />
<XmlNode name="TroopRoster" xml_path="Troops/north_troops.xml" />
<XmlNode name="Settlements" xml_path="Settlements/north_settlements.xml" />
</Xmls>
</Module>
Если ваш мод не содержит C# кода, удалите <SubModule> блок с <DLLName> и <SubModuleClassType>.
4. Файл провинции: Provinces/north_province.xml
Формат зависит от версии PL.
Ниже приведён типовой шаблон, который используют большинство современных сборок:
<?xml version="1.0" encoding="utf-8"?>
<Provinces>
<Province id="north_marches" name="Northern Marches">
<Culture>north_culture</Culture>
<Climate>Cold</Climate>
<Terrain>Forest Mountain</Terrain>
<ProsperityBase>120</ProsperityBase>
<LoyaltyBase>60</LoyaltyBase>
<SecurityBase>40</SecurityBase>
<Faction>north_faction</Faction>
<IsRebel>false</IsRebel>
<Settlements>
<Settlement id="north_town_01" type="Town" />
<Settlement id="north_castle_01" type="Castle" />
<Settlement id="north_village_01" type="Village" />
</Settlements>
<Economy>
<Production>Iron, Timber, Hides</Production>
<TradeBonus value="-5" />
</Economy>
</Province>
</Provinces>
Ключевые поля:
idдолжен быть уникальным в пределах всей игры.ClimateиTerrainвлияют на штрафы к морали, скорость войск и доступность ресурсов.ProsperityBase,LoyaltyBase,SecurityBaseзадают стартовые значения (0–200).Productionуказывает базовые товары деревень/городов.
5. Культура и войска
Cultures/north_culture.xml
<?xml version="1.0" encoding="utf-8"?>
<Cultures>
<Culture id="north_culture" name="Northern Clans">
<Language>Nordic</Language>
<Banner>Assets/north_banner.xml</Banner>
<Color1>#2C3E50</Color1>
<Color2>#ECF0F1</Color2>
<DefaultTroopTree>north_troops</DefaultTroopTree>
<MercenaryCulture>false</MercenaryCulture>
</Culture>
</Cultures>
Troops/north_troops.xml
Используйте структуру, аналогичную ванильной.
Пример стартового отряда:
<?xml version="1.0" encoding="utf-8"?>
<TroopRoster>
<Troop id="north_militia" name="Northern Militia" culture="north_culture">
<Level>5</Level>
<Health>35</Health>
<MeleeSkill>120</MeleeSkill>
<RangedSkill>40</RangedSkill>
<Weapon1>Weapon.axe_1h_a</Weapon1>
<Weapon2>Weapon.shield_a</Weapon2>
<ArmorBody>Armor.leather_a</ArmorBody>
</Troop>
</TroopRoster>
Совет:
Не создавайте войска «с нуля». Возьмите за основу SandboxData/Troops/nordic_troops.xml, скопируйте и измените id, name, статы и экипировку.
6. Поселения: Settlements/north_settlements.xml
<?xml version="1.0" encoding="utf-8"?>
<Settlements>
<Settlement id="north_town_01" name="Frosthold" type="Town">
<Position x="-120" y="0" z="85" />
<FortificationLevel>3</FortificationLevel>
<Population>2500</Population>
<Garrison id="north_garrison_town" />
</Settlement>
<Settlement id="north_castle_01" name="Icecrag Keep" type="Castle">
<Position x="-135" y="0" z="92" />
<FortificationLevel>2</FortificationLevel>
<Population>800</Population>
<Garrison id="north_garrison_castle" />
</Settlement>
</Settlements>
Как найти координаты:
- Включите в игре
cheat_mode 1иconfig.debug. - Откройте консоль (
~), наведите курсор на пустое место. - Координаты отобразятся в логе или через команду
get_position. - Альтернатива: используйте
Bannerlord Map ViewerилиMB2 Coordinate Tool.
7. Интеграция с Province Launcher
- Поместите папку
North_Province_PLвDocuments\Mount and Blade II Bannerlord\Modules. - Запустите Province Launcher.
- В разделе
Custom ProvincesилиModule Managerубедитесь, что ваш мод появляется в списке. - Включите его, сохранив порядок загрузки после
Native,Sandbox,StoryMode, но до крупных модификаций карты (если они есть). - Нажмите
Apply & Launch.
Проверка загрузки:
- В главном меню Bannerlord нажмите
Ctrl+Alt+F10(или зайдите вOptions -> Debug). - В логе
PL_Boot.log(в папкеModules/North_Province_PL/илиDocuments/.../Logs)
ищите строки:
[ProvinceLoader] Loaded province: north_marches
[CultureLoader] Registered: north_culture
8. Тестирование и отладка
| Проблема | Решение |
|---|---|
| Провинция не появляется | Проверьте уникальность id, правильность путей в SubModule.xml, отсутствие синтаксических ошибок в XML. |
| Игра вылетает при загрузке | Откройте crash.log. Ищите NullReference или InvalidCastException. Часто причина: несуществующий Weapon или Armor ID. |
| Войска не спавнятся | Убедитесь, что culture в Troops совпадает с Culture id в Cultures. Проверьте <DefaultTroopTree>. |
| Поселения «висят» в воздухе | Координаты x,z должны совпадать с рельефом. Используйте y=0 (высота рассчитывается движком). |
| Конфликт с другими модами | Отключите все моды кроме PL и вашего. Включайте по одному, чтобы найти конфликтующий id или перезаписанный Settlement. |
Полезные команды в консоли:
campaign.get_province north_marches
campaign.set_province_owner north_marches player
config.debug true
9. Ресурсы и сообщество
| Ресурс | Ссылка/Описание |
|---|---|
| Официальный GitHub PL | github.com/search?q=Province+Launcher&type=repositories (документация, схемы XML/JSON) |
| NexusMods коллекция | Поиск по Province Launcher Bannerlord → раздел Documentation |
| Сообщества | Bannerlord Modding Hub, PL Official Server (каналы #province-creation, #xml-help) |
| Валидаторы | XML Schema Checker, JSONLint, Notepad++ XML Tools |
| Примеры модов | Northern Realms PL, Vlandia Overhaul, Custom Province Template |
10. Чек-лист перед релизом
- [ ] Все
idуникальны и не пересекаются с ванильными модами. - [ ] XML валиден (нет незакрытых тегов, правильные кавычки, кодировка UTF-8).
- [ ]
SubModule.xmlуказывает правильные зависимости. - [ ] Провинция загружается в чистом профиле с включённым PL.
- [ ] Поселения находятся в пределах игровой карты и не пересекаются с другими.
- [ ] Войска имеют сбалансированные статы и корректные ссылки на экипировку.
- [ ] Сделан бэкап сохранения перед тестом.
- [ ] Протестировано на чистой установке Bannerlord без сторонних модов.
Финальные советы
- Начинайте с малого: 1 деревня + 1 замок + 3 ранга войск. Отладьте, затем расширяйте.
- Используйте шаблоны: Не пишите XML с нуля. Копируйте из
SandboxDataи адаптируйте. - Ведите лог изменений: Фиксируйте, какие
idменяли, чтобы проще искать конфликты. - Следите за обновлениями PL: После патчей Bannerlord или PL формат данных может измениться. Всегда читайте
changelog. - Делитесь в сообществе: Готовые шаблоны часто выкладывают в PL. Это экономит часы отладки.