Моддинг в Bannerlord: Работа с поселениями


Моддинг в Bannerlord: Работа с поселениями 

Оригинал статьи - https://docs.bannerlordmodding.com/_tutorials/new_settlements.html

Как работают поселения

Поселения добавляются в игру путем объединения двух файлов на основе XML: первый, который определяет тип поселения (укрытие, деревня, город, замок и т.д.), а также кто им владеет, и второй, который определяет такие параметры, как процветание, продукция, какому городу принадлежит деревня и т.д. Это определение происходит в основе игры в разделе Modules/SandBox/ModuleData/towns.xml. Рядом с этим файлом находится кеш расстояния Modules/SandBox/ModuleSata/Settlements_distance_cache.bin, который может быть сгенерирован в коде.

Эти файлы, однако, не определяют визуальные элементы поселения. Это делается в файле Modules/SandBox/SceneObj/Main_map/scene.xscene.


Примечания о будущей поддержке SDK

Из другого кода в доступных DLL видно, что моддинг поселений должен происходить с использованием редактора. Этот редактор помогает размещать населенные пункты, определять их визуальные эффекты, а также генерирует вышеупомянутый кеш расстояния. Пока таких возможностей нет, и приходится прибегать к прямому XML-моддингу.


Заметки о кеше расстояния

Неясно, что на самом деле делает кеш расстояния. Неизмененный ИИ, похоже, без проблем посещает новые поселения, набирает там войска, отдаёт пленников и покупает товары. Игроки также могут войти в новые поселения. Кэш расстояния может быть как-то связан с принятием решений ИИ, но это не точно. Кэш расстояния создается методом SaveSettlementDistanceCache() в SettlementPositionScript, который является классом, в настоящее время не используемым в игре, и предположительно происходит из вышеупомянутого редактора карт. Этот класс можно найти в SandBox.View.dll.


Как переопределить ванильные поселения в игре

При создании мода можно переопределить определения из модуля SandBox. Однако невозможно добавить вещи в файлы, поэтому, так что если вы хотите изменить поселения, вам нужно изменить всё.

Начните с копирования Modules/SandBox/ModuleData/towns.xml в Modules/ИмяВашегоМода/ModuleData/towns.xml, а также Modules/SandBox/SceneObj/Main_map (папка) в Modules/ИмяВашегоМода/SceneObj/Main_map.


По возможности, не стоит использовать обычный блокнот для редактирования XML. Вместо этого используйте подходящий инструмент для редактирования XML или более функциональный текстовый редактор, такой как Notepad++.

Внутри Modules/YourModName/submodule.xml добавьте следующий XmlNode

<XmlNode>
<XmlName id="Settlements" path="settlements"/>
<IncludeGameTypes>
<GameType value = "Campaign"/>
<GameType value = "CampaignStoryMode"/>
</IncludeGameTypes>
</XmlNode> 

Main_map загрузится автоматически.


Теперь вы можете скопировать в settlements.xml, например, город и настроить его по своему желанию, или изменить некоторые существующие города (например, поменять владельца, начальное процветание, продукцию и т.д.). Крайне важно, чтобы у каждой правки в settlements.xml был свой ID (идентификатор).


В файле Main_map/scene.xscene вашего мода должен быть элемент game_entity для каждой правки в вашем файле towns.xml. Убедитесь, чтобы у вас не было одинаковых ID.


Пример новой правки (т.е. дополнения к существующему файлу, которое не заменяет его содержимое полностью) для settlements.xml, которая добавляет город и две деревни, можно найти здесь.


Обратите внимание, что две правки для деревень village_M1_1 и village_M1_2 содержат информацию о том, к какому городу они привязаны:

trade_bound="Settlement.town_M1" bound="Settlement.town_M1"

Это полезно для деревень, привязанных к замкам, с которыми нельзя торговать. Эти деревни должны иметь поселение для торговли за пределами своего замка, так что вы можете указать, каким оно должно быть. Деревни также включают определение того, какой товар они должны производить:

village_type="VillageType.fisherman"

Типы деревень определены в Modules/SandBox/ModuleData/spprojects.xml.

Эти три новых поселения должны соответствовать определениям game_entity в файле Main_map/scene.xscene. Пример правки можно найти здесь.





- используйте эту кнопку если вы обнаружили ошибку/искажение содержимого/отсутствие контента в новости или если хотите сообщить администрации о выходе новой версии мода и т.п.

Комментариев 1

Партиец
KaiserReich
Офлайн 16 ноября 2022 18:25 поделиться
класс! Спасибо


Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Онлайн

Сейчас на сайте: 146
Гостей: 144

Пользователи: 

Последние комментарии

MOD 108 heroes
iskanderzp, Сегодня, 09:23
Andyboi, Да, там много нового, интересного. Но многие вещи без полноценного перевода не понятны....
MOD 108 heroes
Andyboi, Сегодня, 04:04
вышла V0.984...
MOD Diplomacy 4.litdum Reloaded!
ThePhoenix, 12 октября 2025 15:47
ThePhoenix,Уже не актуально, ибо: 1. Понял, что это не саб мод, а по факту а фулл 2. Исправил...
MOD Diplomacy 4.litdum Reloaded!
ThePhoenix, 12 октября 2025 14:25
Приветствую, я так понимаю с последней версией, 1.7 Diplomacy 4.litdum, этот мод уже не работает,...
Флудилка V3
epilect, 12 октября 2025 10:55
iskanderzp, На то есть объективные причины,ну основная понятна...Ну и как ни крути,а время идёт...
MOD 108 heroes
iskanderzp, 11 октября 2025 20:04
Ну что, прошел основную сюжетку обновленного мода. Местами было весьма непросто (именно в плане...
Флудилка V3
iskanderzp, 11 октября 2025 19:48
Да... Как ни печально, но пациент (сайт) скорее мертв, чем жив...  ...
Флудилка V3
Samiraldos, 28 сентября 2025 12:02
Чикабой, Ясно....
Флудилка V3
Чикабой, 28 сентября 2025 09:44
Samiraldos, Потому, что последний раз обновляли список год назад ...