Карта мира War Sails
Создание или изменение карты мира War Sails связано с несколькими дополнительными требованиями по сравнению с Bannerlord. Они перечислены ниже.
Навигационная сетка (Navmesh)
С DLC War Sails многие водоёмы становятся судоходными, что вводит несколько новых типов навигационной сетки помимо тех, что используются в базовой игре. При создании или изменении карты мира War Sails вам может понадобиться использовать следующие типы навигационной сетки:
CoastalSeaOpenSeaRiverNonNavigableRiverUnderBridgeLake
Соответствующие значения ID навигационной сетки показаны на изображении ниже.

CoastalSea и OpenSea — оба типа судоходной воды, но они служат разным игровым целям. Они используют разные модификаторы скорости движения и по-разному обрабатываются системой морского истощения (sea attrition), поэтому выбирайте подходящий тип в зависимости от предполагаемого геймплея.
Используйте тип навигационной сетки UnderBridge для граней непосредственно под мостами, а также для соседних граней, ведущих к мосту и от него. Этот тип навигационной сетки не влияет на скорость движения или морское истощение. Вместо этого он управляет поведением, специфичным для мостов:
- Корабли будут автоматически складывать и раскладывать паруса при прохождении под мостом.
- Когда игрок проплывает под мостом, мост становится прозрачным для улучшения видимости.
Озёра не судоходны в War Sails. Тип навигационной сетки Lake функционирует как непроходимая местность и не может быть пересечён кораблями.
Карта потоков (Flowmap)
В War Sails ветер и водные течения влияют на движение по судоходной воде. Сила и направление определяются картой потоков (Flowmap), которую можно редактировать прямо в редакторе карты мира (World Map Editor).
Чтобы отредактировать Flowmap:
- Нажмите кнопку Paint Flowmap, расположенную между кнопками Paint Flora и Navigation Mesh.
- Также откройте Inspector и выберите вкладку Flowmap, чтобы корректно её редактировать.

Flowmap рисуется примерно так же, как текстуры местности или карта высот, но каждый мазок кисти также определяет направление. Редактор отображает цветные стрелки для визуализации Flowmap:
- Направление стрелки указывает направление ветра и водного течения.
- Цвет стрелки указывает силу ветра и водного течения.
- Синий цвет обозначает самый слабый ветер и течение.
- Красный цвет обозначает самый сильный ветер и течение.
- Синий цвет обозначает самый слабый ветер и течение.
Flowmap напрямую влияет на шейдер воды. Из-за этого окраска соседних областей с резко противоположными направлениями потока может вызвать заметное растяжение или нереалистичную деформацию воды. Если вам нужны соседние области с противоположными направлениями течения, создайте плавный переход между ними вместо того, чтобы рисовать резкое изменение. Это обеспечивает более естественный вид воды, сохраняя при этом возможность задавать отдельные узоры течений.
Настройка поселений
War Sails вводит несколько дополнительных сущностей для прибрежных поселений. Эти сущности обеспечивают такие функции, как посадка и высадка, морские блокады и точки высадки у деревень.
Точки порта
Чтобы разрешить морским партиям садиться на корабли и высаживаться в прибрежном городе, добавьте дочернюю сущность с именем town_port в поселение.
Эта сущность должна:
- Быть помечена тегом
main_map_city_port. - Быть размещена на судоходной морской навигационной сетке, такой как
CoastalSeaилиRiver. Неправильное размещение приведёт к ошибкам.

Настройка XML поселения
После добавления сущности town_port в прибрежный город необходимо также обновить файл settlements.xml.
В разделе зданий (Buildings) поселения добавьте здание верфи (Shipyard):
<Building
id="building_shipyard"
level="1" />А для сцены верфи вам следует добавить локацию верфи в разделе локаций (Locations) поселения следующим образом:
<Location
id="port"
scene_name="aserai_shipyard" />Точки блокады
Когда прибрежный город осаждён, War Sails отображает морскую блокаду вокруг поселения. Чтобы определить область блокады и позиции кораблей, добавьте следующее:
- Сущность
town_blockade_startс тегомBlockade_Arc_Startв качестве дочерней сущности - Сущность
town_blockade_endс тегомBlockade_Arc_Endв качестве дочерней сущности BlockadePositionScriptк сущности города

После добавления этого редактор будет отображать:
- Красные маркеры, представляющие отдельные позиции кораблей блокады.
- Сферу, обозначающую центр дуги блокады.
Перемещение начальной и конечной точек изменяет протяжённость дуги блокады, позволяя регулировать визуальное расположение блокадного флота.
BlockadePositionScript также предоставляет несколько параметров, которые управляют внешним видом блокады, включая:
- Количество кораблей.
- Количество дуг блокады.
- Расстояние между кораблями.
- Другие настройки расположения блокады.
Настройте эти значения, чтобы добиться желаемого визуального результата.

Точки высадки (Drop Off Points)
Прибрежные деревни используют точки высадки вместо портов для поддержки посадки и высадки.
Чтобы добавить точку высадки, создайте дочернюю сущность с именем drop_point и присвойте ей тег main_map_village_dropoff.
Как и в случае с портами городов, точка высадки должна быть размещена на судоходной морской навигационной сетке (такой как CoastalSea или River), чтобы она функционировала корректно.

Переход
Помимо переходов между морским плаванием и прибрежными поселениями, War Sails также поддерживает прямые переходы между судоходной водой и сушей.
Единственное требование заключается в том, что как исходный, так и целевой тип навигационной сетки должны быть судоходными/проходимыми.
Например:
- Партия может перейти из
CoastalSeaвPlainилиForest. - Партия не может перейти на непроходимый тип местности, такой как
Mountain.
Это позволяет вам определять точки посадки и высадки на любом подходящем судоходном береге, а не только в поселениях.
Скрипты
Один из важнейших компонентов на сцене карты мира — SettlementPositionScript, расположенный на сущности settlement_scripts.
Всякий раз, когда вы вносите изменения, влияющие на навигацию или расположение поселений, необходимо регенерировать кэш расстояний между поселениями (Settlement Distance Cache). Это включает такие изменения, как редактирование навигационной сетки или перемещение поселения, включая town_gate, town_port или drop_point.
Чтобы безопасно регенерировать кэш, выполните следующие шаги по порядку:
- Перед перестроением кэша расстояний между поселениями убедитесь, что выбраны следующие параметры:
_partyNavigationModelOverridenClassName→NavalPartyNavigationModel_distanceModelOverridenClassName→NavalDLCMapDistanceModel
- Check Positions (Проверить позиции)
- Проверяет позиции, связанные с поселениями, и перемещает камеру к любым проблемным местам, облегчая их выявление и исправление.
- Проверяет позиции, связанные с поселениями, и перемещает камеру к любым проблемным местам, облегчая их выявление и исправление.
- Save Positions (Сохранить позиции)
- Сохраняет текущие позиции поселений и все связанные с ними данные.
- Сохраняет текущие позиции поселений и все связанные с ними данные.
ComputeAndSaveSettlementDistanceCache
- Перестраивает кэш расстояний между поселениями. Этот заключительный шаг может занять значительное время в зависимости от вашего оборудования. В процессе редактор вычисляет маршруты поиска пути между каждым поселением и всеми остальными поселениями, а затем сохраняет результаты в кэше.

Плоскость воды и материал
War Sails не использует автоматически генерируемую воду сцены движка. Вместо этого используются пользовательские плоские меши с материалами воды.
Встроенная вода сцены предназначена для миссионных сцен и имеет фиксированное масштабирование и поведение, что делает её непригодной для гибкости, необходимой для карты мира кампании. Пользовательские плоскости воды позволяют точно контролировать размер, расположение и внешний вид судоходной воды.
Стандартная плоскость воды War Sails использует следующую конфигурацию:
- Материал:
naval_worldmap_water - Скрипты:
water_flowmapCampaignMapAmbientOccluder
- Тег:
snapped_water_body
На изображении ниже показаны необходимые компоненты и параметры для основной плоскости воды карты мира.
Примечание: сцена карты мира также содержит дополнительные сущности water_plane, используемые для озёр. Прежде чем вносить какие-либо изменения, убедитесь, что вы выбрали правильную плоскость воды.

Создание новой плоскости воды
Чтобы создать новую плоскость воды:
- Добавьте префаб
water_planeна сцену. - Позиционируйте, вращайте и масштабируйте его по мере необходимости.
- В Inspector откройте вкладку Materials и назначьте нужный материал воды (обычно
naval_worldmap_water). - Убедитесь, что необходимые скрипты и тег присутствуют, если плоскость воды предназначена для функционирования в качестве судоходной воды карты мира.
После настройки плоскость воды будет интегрирована с системами рендеринга воды War Sails и Flowmap.
Система штормов
War Sails включает динамическую систему штормов, которая генерирует штормы над открытой водой.
Карта мира разделена на сетку ячеек размером 32 × 32 единицы. Для каждой ячейки, центр которой лежит на навигационной сетке OpenSea, игра периодически проверяет, должен ли появиться шторм.
Доступны три типа штормов:
StormThunderStormHurricane
Тип генерируемого шторма зависит от данных Flowmap в выбранном месте. Каждый тип шторма имеет свою собственную скорость перемещения, радиус и характеристики урона.
Настройка штормов
Поведение шторма можно настроить, переопределив StormModel (через код, а не в редакторе). Это позволяет настраивать такие параметры, как:
- Почасовой шанс появления
- Максимальное количество активных штормов
- Конфигурация типов штормов
- Продолжительность жизни шторма
Движение шторма
Штормы не следуют заранее определённым путям. Вместо этого ими управляет Flowmap.
По мере того как шторм перемещается по карте мира, он непрерывно следует направлению потока, определённому Flowmap в его текущем местоположении. Это позволяет движению шторма естественным образом соответствовать узорам течений, которые вы нарисовали на карте.
Соображения по Flowmap
Штормы постепенно ослабевают и в конечном итоге рассеиваются, если остаются над навигационной сеткой суши.
По этой причине при рисовании Flowmap вблизи береговых линий рекомендуется направлять поток от суши к открытой воде. Это помогает удерживать штормы в море и предотвращает их немедленное рассеивание после появления или дрейфа вблизи побережья.
Точки появления пиратов
War Sails использует выделенные точки появления пиратов для контроля того, где появляются пиратские партии и какие регионы они патрулируют со временем.
К каждой точке появления пиратов должен быть прикреплён скрипт PirateSpawnPoint. В скрипте установите Clan String ID (строковый ID клана) на соответствующий пиратский клан. В War Sails доступны два клана:
northern_piratessouthern_pirates
Если вы хотите добавить новые кланы, вам следует определить их в clans.xml, а затем добавить их на карту мира.

