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


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

Онлайн

Сейчас на сайте: 52
Гостей: 50

Пользователи: 
- отсутствуют

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

MOD A World of Ice and Fire (ИЗМЕНЕНИЯ В ВЕРСИЯХ)
Davu, Сегодня, 00:04
А в этом моде походный сундук есть во время битвы?...
MOD 1429 La Guerre de Cent Ans - La Relance
kitel, Вчера, 18:04
у меня какая то хрень . пытаюсь в модули поставить пишет загрузка больше дня. что за фигня?...
Флаги-1
Genghis_Khan, Вчера, 14:56
https://commando.com.ua/uploads/posts/2018-03/thumbs/1522152791_77.png...
Флаги-1
Maydagc, Вчера, 14:08
https://commando.com.ua/uploads/posts/2018-03/1522152791_77.png Maydagc откат (незнаю как удалить)...
A CLASH OF KINGS (Обсуждение)
Лекс, Вчера, 13:02
ander, Самый доделанный мод про Игру Престолов это REALM OF THRONES....
A CLASH OF KINGS (Обсуждение)
ander, Вчера, 10:52
А есть подобное на Баннерлорд?...
Спутники, советы, секреты по прохождению
Eshatonaut, Вчера, 08:46
Кто хочет взять гигантов Вун-Вуна и Донго, но не хочет начинать игру за одичалого: Открываем...
MOD A World of Ice and Fire (ИЗМЕНЕНИЯ В ВЕРСИЯХ)
Davu, 3 марта 2024 22:11
Цитата: OnslDavu, Ты играл уже в саму 9.0 версию? Если да,то наверно должен был заметить изменения...
MOD A World of Ice and Fire (ИЗМЕНЕНИЯ В ВЕРСИЯХ)
Onsl, 3 марта 2024 21:45
Davu, Ты играл уже в саму 9.0 версию? Если да,то наверно должен был заметить изменения от версии...