Моддинг в 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 поделиться
класс! Спасибо


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

Онлайн

Сейчас на сайте: 139
Гостей: 136

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

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

MOD Nova Aetas (A New Era)
Шлёпа, 17 апреля 2024 12:39
К несчастью, когда я хотел освободить пленного лорда, я встретил одну неприятную ошибку: При...
Гайд по моду Age of Arthur
Спящий, 8 апреля 2024 16:08
Аксилон, Там просто нужно  претендента на Алт Клуит( как писали выше зовут Гуипно) найти и спросить...
MOD Solid and Shade (все версии)
Bruhman, 5 апреля 2024 00:38
Знаю что это несколько запоздалый комментарий,(учитывая что последнее сообщение в теме было...
MOD Perisno
k0r1, 4 апреля 2024 21:16
Столкнулся с проблемой, что не могу положить/взять деньги из казны при своём королевстве. Клавиши...
MOD WORLD OF VASNAR
Николай Бондаренко, 1 апреля 2024 19:03
NordOst, НЕ поделитесь ссылкой ?...
MOD A World of Ice and Fire
Elenar, 31 марта 2024 12:18
И Тур все молчит по поводу обновления перевода ...
MOD Sands of Faith
sergosafarelly, 31 марта 2024 11:48
ReinmarBelyau, In the name of Jeruslaem...
[SUBMOD] - 1257AD Reloaded (1257AD - Enhanced Edition)
sergosafarelly, 31 марта 2024 11:48
Подскажите, как нанимать войска из замка фракции, в которой я являюсь лордом?...
Prophesy of Pendor 3.9
Askellad, 30 марта 2024 18:47
ReinmarBelyau, Спасибо за ответ)...