Что делает сцену деревней
Введение
Этот список контрольных пунктов поможет вам в создании сцен деревень и даст представление о том, на что мы обращаем внимание при создании таких сцен.
Навигационная сетка (Navigation Mesh)
- Навигационная сетка состоит из треугольников и четырёхугольников. Она используется ИИ для построения пути (pathfinding). Система глобального освещения также использует её для определения видимых участков сцены.
- Помните, что грани навигационной сетки не должны находиться слишком далеко от физики под ними. Максимальное расстояние — 1,5 м.
- Грани можно помечать, чтобы давать подсказки для спавна агентов и навигации внутри сцены.
- Чтобы агенты следовали по дорогам, помечайте грани поверх дорог идентификатором (ID) 2.
- Обратите внимание, что все точки спавна агентов должны быть соединены гранями навигационной сетки с ID 2.
- Для животных можно использовать ID навигационной сетки 3. Обычно такие грани располагаются на отдельных «островах» в таких структурах, как рвы. В этом случае животные будут перемещаться только внутри этих островов.
- Измените ID всех остальных граней на 1 (с 0).
- Помните, что агенты будут использовать грани навигационной сетки с ID 2. Чтобы создать реалистичное передвижение (по дорогам), дизайнеры сцен должны разместить Navigation Mesh Deactivator (имя префаба — Navigation_Mesh_Deactivator). Его можно разместить в любом месте сцены. Его назначение — отключать грани с ID 1 в гражданских режимах. Переменная DisableFaceWithID скрипта должна быть равна 1.
- Для животных переменная “DisableFaceWithIDForAnimals” в том же скрипте должна быть равна 3.
- Убедитесь, что грани примерно одинакового размера за пределами территории деревни / там, где будут маневрировать войска.
- Убедитесь, что нет разъединённых участков навигационной сетки.
- Чем лучше навигационная сетка, тем лучше будет работать ИИ на ней. Всегда учитывайте, что внутри деревни может происходить крупное полевое сражение. Поэтому старайтесь избегать множества замкнутых зон, таких как свиноферма только с одним входом (например, можно разобрать часть забора, чтобы создать больше входов).
- Избегайте больших зон, доступных игроку, но не доступных ИИ. Игрок сможет стрелять по ИИ из мест без навигационной сетки.
- Используйте “_barrier_ai_x”, чтобы ИИ не падал с обрывов и не застревал в узких местах (например, в рыночном прилавке) за пределами навигационной сетки.

Точки спавна (Spawn Points)
Как было сказано ранее, все точки спавна должны располагаться на навигационной сетке (ID 2) и внутри мягких границ (soft borders). Помните, что некоторые префабы (например, стулья и скамейки) уже содержат прикреплённые к ним точки спавна. Если точки спавна несовместимы с миссией деревни, они, скорее всего, приведут к вылету игры или ошибкам. Один из примеров — “sp_blacksmith_with_smithing_machine”. Самое важное в точках входа — это их теги. Именно они определяют, какой тип NPC будет там появляться. Ради собственного спокойствия не экспериментируйте слишком сильно с этими тегами и оставляйте их такими, какими они заданы в префабах.

Точка спавна игрока (Player Spawnpoint)
- Префаб: sp_player.
- Убедитесь, что она размещена в месте, которое видно или к которому хотя бы ведёт чёткий путь. Не размещайте её слишком далеко.
- Под точкой спавна должна быть навигационная сетка.
Боевые точки спавна (Battle Spawnpoints)
- Префаб: Sp_battle_set.
- Убедитесь, что точки спавна атакующих и защищающихся не расположены слишком близко друг к другу или хотя бы не имеют прямой видимости друг на друга.
- Постарайтесь максимально убрать точку подкрепления (reinforcement point) из поля зрения, не размещая её при этом слишком далеко от передовой.
- Убедитесь, что вокруг всех точек спавна достаточно свободного места, чтобы войска могли корректно появляться.
Точки спавна для разговоров (гражданские)
- Префаб: sp_player_conversation.
- Точки разговора определяют, где появляются агент и собеседник, когда игрок заходит в деревню через кнопку “Talk to Notable” на карте мира.
- Убедитесь, что из них открывается приятный вид, но при этом они находятся относительно близко к центру деревни.
Точки анимации (гражданские)
- Префаб: sp_npc_x.
- Используются для обычных жителей деревни. Можно использовать около 40 позиций.
- Они определяют позиции в сцене, где будут появляться и куда будут ходить жители.
- Убедитесь, что они хорошо распределены по деревне и ближайшим окрестностям.
- Жители будут бродить по путям, чтобы добраться до них.
- Если пути слишком длинные, жители могут постоянно бродить, при этом никто фактически ничего не делает. Старайтесь избегать больших расстояний и размещайте точки ближе к основным путям.
- Размещение большего или меньшего количества точек спавна не влияет на то, сколько жителей будет населять сцену.
Точки спавна сельских знатных персонажей (Rural Noteable Spawnpoints)
- Префаб: sp_notable_x.
- Количество префабов должно быть около 6.
- Это точки спавна для знатных персонажей деревни (дающих задания) и лордов.
- Убедитесь, что они находятся в заметном месте деревни или в местах, где обычно находятся старейшины деревни / лорды.
- Вы можете проверить отладочное окно (Debug Window) (документация будет это рассматривать), чтобы убедиться, что вы разместили правильные позиции знатных персонажей.
- Перейдите на вкладку “Scene Entity Check Tab”, включите флажок “NPCs” и посчитайте.
Лагеря бандитов (Bandit Camps)
- Префаб: common_area_x.
- У каждой сцены деревни есть 3 лагеря бандитов за пределами деревни (разместите 3 префаба), используемых для квестов сцены.
- Используйте те же точки спавна, что и для обычных жителей (~15 на лагерь). Старайтесь не заставлять их выполнять такие дела, как земледелие.
- Также можно использовать точки патрулирования: sp_guard_patrol_simple, sp_guard_patrol.
- Все точки спавна в радиусе будут порождать бандитов вместо жителей деревни.
- Радиус можно увеличить, масштабируя префаб common area.
- Используйте гражданские точки анимации в качестве точек спавна для бандитов, вот некоторые варианты: “sp_npc_wait_wall, lookout, sp_npc_argue_set, sp_npc_wait”.
- Убедитесь, что есть какой-то намёк на то, где они могут находиться, чтобы у игрока был шанс их найти (особенно ночью).
- Не размещайте их слишком близко друг к другу.

Точки спавна животных (Animal Spawnpoints)
- Префаб: sp_animalName.
- Используйте “DisableWandering” в скрипте AnimalSpawnSettings, чтобы животные не бродили по вашей сцене.
- В целом лучше всего применять это для всех крупных животных, таких как коровы и свиньи, если им не нужно бродить вокруг.
Тактический регион (Tactical Region)
- Префаб: TacticalRegion.
- Используется, чтобы сообщить ИИ о местах, где есть значимые крупные регионы (леса, холмы и т. д.).
- ИИ будет позиционировать себя внутри радиуса или избегать его.
- Не злоупотребляйте этим, придерживайтесь ~5 (обеспечивая некоторое разнообразие).
Тактические позиции (Tactical Positions)
- Префаб: TacticalPosition.
- Используется, чтобы сообщить ИИ о значимых небольших позициях (например, узких проходах между зданиями, обрывах для лучников и т. д.).
- ИИ будет позиционировать себя в соответствии с поворотом префаба и с учётом ширины, заданной скриптом.
- Их можно использовать довольно часто.
- Чем выше уклон, тем “лучше” позиция.

Точки бегства (Flee Positions)
- Позиции, к которым будут убегать отступающие войска, а также лошади.
- Убедитесь, что они находятся внутри мягкой границы (Soft Border) и что под ними есть навигационная сетка.

Отладочное окно (Debug Window)
- Префаб: SpawnPointDebugView.
- Существует встроенный инструмент отладки, который можно включить, добавив указанный выше префаб в сцену. Разместите префаб в любом месте сцены и активируйте окно с помощью флажка в его скрипте.
- Этот префаб открывает небольшое отладочное окно в редакторе, которое помогает убедиться, что вы соответствуете требованиям для миссии (например, точки спавна, навигационная сетка).
- На вкладке “Scene Entity Check Tab” вы можете посчитать свои точки входа и убедиться, что вы разместили их достаточно (или слишком много).
- На вкладке “Navigation Mesh Check Tab” вы можете убедиться, что все ваши точки входа правильно соединены с навигационной сеткой.

Мягкая граница (Soft Border)
- Префаб: border_soft.
- Определяют красные границы сцены.
- При размещении они образуют многоугольник, в котором 2 ребра соединяются между двумя ближайшими граничными сущностями (но никогда более чем между двумя).
- Чтобы проверить текущие границы, зайдите в “Visibility Window” → “Visibility Masks” и включите “Borders”.
- После пересечения границ у игрока есть несколько секунд, чтобы вернуться внутрь границ карты, убедитесь, что этим нельзя как-либо злоупотребить.

Звуки
Основной фоновый звук (Master Ambient Sound)
- Префаб: x_ambient_sound.
- Выберите обязательный основной (master) фоновый звук.
- Префаб для обязательного фонового звука можно разместить где угодно.
- Убедитесь, что у него включена опция “Is Master Sound”.
- Убедитесь, что у него отключена опция “Is Triggered”.
Дополнительные фоновые звуки (Additional Ambient sounds)
- Используются для более крупных зон (например, лесов).
- Должны иметь включённый булевый параметр “Is Triggered”.
- Чтобы увидеть, насколько далеко он распространяется, в окне “Visibility Window” включите “Sound Entities” в группе “Visibility Masks”.
- Чтобы изменить их радиус действия, их можно масштабировать так же, как и другие сущности редактора (с помощью клавиши “b” или гизмо).

Реверберация (Reverb)
- Для каждого случая использования существуют разные префабы: reverb_x.
- Добавляет эффект реверберации к любому звуку, порождённому внутри его границ.
- Обычно используются для тесных или подземных зон.
- Их можно размещать в узких переулках между высокими зданиями, на обрывах, в пещерах или в густых лесах.
- Должны иметь включённую опцию “Is Triggered”.
Детали (Detail)
- Используются для небольших деталей.
- Убедитесь, что “Is Triggered” отключена.
- Размещайте их там, где хотите, чтобы они воспроизводились.
Перемещение звуков по путям (для рек и т. п.)
Иногда полезно перемещать звуки вдоль береговой линии или реки. Описанная ниже техника более производительна и точна, чем размещение множества звуковых сущностей вдоль, например, реки.
- Разместите путь (path) вдоль реки. Подробнее см. Редактирование путей (Path Editing).
- Добавьте звук в сцену.
- Разместите любой дополнительный фоновый звук, как описано выше.
- Добавьте скрипт “path_converger” к сущности вашего фонового звука.
- Введите имя вашего пути в поле “path_converger”.
- Теперь звук будет следовать по пути в зависимости от позиции камеры.
Звуки в движке
Вы можете проверить файл “MODDING_TOOLS_DIRECTORY/Sounds/GUIDs.txt” для получения списка звуков в игре. Эти имена можно использовать внутри скрипта звуковых сущностей.
Освещение (Lights)
- Разместите в сцене хотя бы один “envmap_prop”.
- Для тёмных зон, таких как пещеры, используйте “local_envmap_prop”.
- Он будет влиять на освещение в зоне в зависимости от значений своего скрипта “ReflectionCapturer”.
- Убедитесь, что деревня и лагеря бандитов хорошо освещены.
- Уделите особое внимание точкам разговора.
- Используйте факелы и другие сущности.
- Убедитесь, что у факелов внутри зданий и других тёмных мест включена опция “alwaysBurn” в скрипте LightCycle.
- Старайтесь избегать размещения “искусственного освещения” без реального источника.
- Вы можете запечь (bake) фоновое освещение в вашей сцене с помощью системы GI. Это сделает фоновое освещение гораздо более реалистичным. Подробнее см. Система GI (GI System).

Атмосфера (Atmosphere)
- Убедитесь, что ваша сцена работает и хорошо выглядит со всеми атмосферами “TOD_x” и во всех временах года! (так как она будет тестироваться именно с ними).
- Выберите “Color Grade”, которая подходит вашей сцене (мы рекомендуем использовать те, что предназначены для фракции, для которой создаётся сцена, например: “color_grade_empire_soft”).

