Моддинг в 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. Пример правки можно найти здесь.





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

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

Интересно

Онлайн

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

- отсутствуют

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

MOD THE LAST DAYS (ВБ)
deniska231919232, Сегодня, 01:35
Че за бред , рвал жопу за гондор в начале игры, отсрочил войну (до 18 уровня) выполнил задания взял...
MOD Tian Xuan (Biographies of Tianxuan)
KindFey, Вчера, 22:49
Генрих Вольфэнштейн, заработало, отлично, спасибо! epilect, спасибо, все завелось. но мод...
MOUNT AND BLADE 2 BANNERLORD: Русификатор
syabr, Вчера, 20:19
Каких условиях, я ясно сказал, поговори с Лафеем...
MOUNT AND BLADE 2 BANNERLORD: Русификатор
Драгхун, Вчера, 19:33
я как понял Баннерлорд написан на таком же принципе как вся серия игр Фарминг Симулятор и все части...
MOUNT AND BLADE 2 BANNERLORD: Русификатор
Драгхун, Вчера, 18:59
нет они обновляются после запуска игры, и ставиться английский, тоже решаемо, но муторно. работает...
MOUNT AND BLADE 2 BANNERLORD: Русификатор
syabr, Вчера, 18:49
Драгхун, строки вшиты в код. Мы уже устали от бесполезных петиций разработчикам. К тому же...
MOUNT AND BLADE 2 BANNERLORD: Русификатор
Драгхун, Вчера, 18:46
игра запустилась после двухчасового танца с бубном, но очень мало переведенно осталось, по примеру...
MOD Tian Xuan (Biographies of Tianxuan)
epilect, Вчера, 18:14
Andyboi,жаль не получилось пообщаться,но думаю наверстаем.Здоровья тебе Дружище!(снаряд в одну...
База знаний по Viking Conquest
Cosmos, Вчера, 18:11
Всем доброго времени суток. Возникла такая проблема - по ходу квеста от аббата, я отправился в...