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


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

Онлайн

Сейчас на сайте: 96
Гостей: 92

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

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

СУНДУКИ В A CLASH OF KINGS
Samiraldos, Сегодня, 06:23
В версии 8.0 в Волантисе сундук находится тут https://ibb.co/x39QQBN...
СУНДУКИ В A CLASH OF KINGS
Samiraldos, Сегодня, 05:14
Извините что пишу в минус. Но скрин Квохора уже не актуален. В версии мода 8.0 вид улиц города...
Прохождение мода A CLASH OF KINGS
Samiraldos, Вчера, 07:44
"Турнир в Девяти Звездах" Кому подарок то отдавать? Кто Кастелян?...
A CLASH OF KINGS (Юниты и советы)
Samiraldos, Вчера, 07:13
А Безликих нет в этом моде? Я попутал. Изначально я играл когда то в 7 версию мода "A World of Ice...
MOD A Clash of Kings
Samiraldos, 16 ноября 2024 08:29
Этот мод гораздо лучше чем World of Ice and Fire. Все работает и все просто. Играю на последней...
ПРОХОЖДЕНИЕ A WORLD OF ICE AND FIRE
Samiraldos, 15 ноября 2024 07:18
Простейший квест в деревне на обучение крестьян для защиты в версии 9.3 не работает :) Надо...
MOD A World of Ice and Fire
Samiraldos, 15 ноября 2024 06:46
Чит-магазин к 9.0 от Тура не работает на версии мода 9.3...
MOD 1812-1815 Сингальный наполеоник варс
kitel, 14 ноября 2024 17:42
у меня черный экран. Что делать?...
Diplomacy 4.3 - Mrcmod and bugfixes
Kirito Kirita, 13 ноября 2024 19:37
Здравствуйте, а нет патча или возможности, чтоб работали ачивки?...