Как делать осадную сцену
Вступление
Этот список советов поможет вам при создании городов и замков, подходящих для осады.
Осадные стены
Осадные стены - это те стены, которые поддерживают функцию пробитых стен в сценах осады. Нам нужно будет указать эта сломанных и целых стен, их ключевые позиции, а также изменения навигационной сетки ИИ, для состояния после пробития.
- Добавьте тег к родительскому объекту, который позже будет использоваться на осадных лестницах и осадных башнях (например, wall_segment_left, wall_segment_right). Этот тег будет определять, какие осадные машины связаны с какими полосами движения, и будет использоваться для переменной «целевой сегмент стены» (target wall segment) на осадных машинах.
- Добавьте тег «broken_child» к сломанной стене и добавьте тег «solid_child» к целой стене.
- Добавьте два объекта в качестве дочерних к целой стене. Первый указывает, в каком месте войска защитников будут ожидать приближение атакующих к замку, а второй - где они должны стоять для защиты. Эти объекты должны иметь теги «wait_pos» и «middle_pos» соответственно.
- Для сломанной стены добавьте три дочерних объекта. У них должны быть теги «wait_pos», «middle_pos» и «attacker_wait_pos». Первые два такие же, как для целой стены, а позиция ожидания атакующего - это место, где атакующие будут ждать (желательно за укрытиями), пока другие осадные машины займут позиции.
- Скрипт WallSegment
- Введите в сторону осаждаемой стены (она должна быть левой или правой, середина зарезервирована для замковыми воротами независимо от ее положения).
- Введите идентификаторы навигационной сетки, которые вы будете использовать для этой осадной стены.
- Переделайте навигационную сетку и присвойте ему идентификатор.
- Убедитесь, что новые грани навигационной сетки имеют правильные уровни.
НАВИГАЦИОННАЯ СЕТКА ЦЕЛЫХ СТЕН | НАВИГАЦИОННАЯ СЕТКА СЛОМАННОЙ СТЕНЫ |
- Если вы не собираетесь использовать идентификаторы навсетки под обломками, вы можете ввести «-1» в соответствующие идентификаторы в скрипте сегмента стены.
- В этом примере, когда стена не сломана, 328 подключится к 342, 331 подключится к 391, 341 будет активным, а 351 будет активным.
- Когда стена сломана и есть пролом, 328 подключится к 371, 381 подключится к 391, а 361 будет активным.
- Таким образом, если у нас будет много обломков вокруг осаждаемой стены, у нас будет гораздо меньше агентов, застрявших из-за отсутствия навигационной сетки.
- На этом изображении пустые пространства между навигационными сетками были увеличены для ясности.
Замковые ворота
Ворота замка - это локация и префаб, которые взаимодействуют с тараном. Нам нужно будет использовать 2 из них: 1 внешние ворота, которые будут разрушены тараном, и внутренние, которые будут разрушены обычными атаками войск.
- Разместите внешние и внутренние ворота.
- Внешние ворота должны иметь тег «external_gate», а внутренние ворота должны иметь тег «inner_gate».
- Скрипт CastleGate
- Введите идентификатор навигационной сетки, который вы будете использовать для ворот.
- Сделайте боковую переменную (side variable) «средней».
- Измените HP ворот в соответствии с их положением и уровнем (HP внешних ворот должно быть: 12000 на уровне 1, 15000 на уровне 2 и 18000 на уровне 3. HP внутренних ворот должно быть 1000 для всех уровней).
- Переделайте навигационную сетку и присвойте ему идентификатор.
- Убедитесь, что новые грани навигационной сетки имеют правильные уровни.
- Отрегулируйте положение «middle_position» внешних ворот. Оно должно быть близко к внутренней стороне внутренних ворот.
- Вы можете отключить навигационную сетку для открытого состояния ворот, используя соответствующий идентификатор [navigationmeshidtodisableonopen] навигационной сетки.
- Используемые префабы
- Aserai_castle_gate_inner_l1
- Aserai_castle_gate_outer_l1
- Battania_castle_gate_inner_l3
- Battania_castle_gate_outer_l3
- Empire_castle_gate_inner_l2
- Empire_castle_gate_inner_l3
- Empire_castle_gate_outer_l2
- Empire_castle_gate_outer_l3
- European_castle_gate_outer_l1
- European_castle_gate_outer_l2
- Khuzait_castle_gate_outer_l1
- Sturgia_castle_gate_inner_l3
- Sturgia_castle_gate_outer_l3
Точки развертывания
Все осадные машины размещены под точками развертывания. Эти точки позже в миссии становятся выбираемыми позициями, на которых игроки могут размещать свое осадное оборудование, такое как баллисты, таран или осадные башни.
- Их должно быть 4 для осадных машин защитника. 4 для атакующих осадных машин. По 2 на каждую осадную башню. И один для тарана.
- Осадные машины могут быть подключены к этим точкам развертывания, либо размещены их в радиусе их действия, либо с помощью тегов.
- Полезные советы
- Убедитесь, что радиусы точек развертывания не перекрываю друг друга.
- Вам понадобятся разные точки развертывания для каждого уровня, например:
- Поскольку стены меняются с каждым уровнем, осадные машины обороняющихся, естественно, должны находиться в разных положениях над ними.
- Поскольку положение ворот меняется, таран должен выбрать другой путь. То же самое и с осадными башнями.
Вторичные осадные машины
Вторичные осадные машины - это осадные машины дальнего боя, которые поддерживают нападение или пытаются отбиться от атакующих. Они включают баллисты и мангонели для обеих сторон и требушеты для атакующего.
- Мангонели и баллисты должны быть включены для каждой позиции защитника, а префабы мангонелей, баллист и требушетов должны быть включены для каждой позиции атакующего.
- Должно быть 4 позиции «точки развертывания» для защитников и 4 для атакующих.
- И осадные машины, и точки развертывания имеют «боковой» тег (Side Tag), убедитесь, что эти переменные верны.
- Ни одна осадная машина не должна находиться под контролем более чем одной точки развертывания.
- Используемые префабы
- Ballista_a_spawner
- Ballista_b_spawner
- Mangonel_a_spawner
- Mangonel_b_spawner
- trebuchet_a_spawner
Осадная Башня
Осадные башни - это префабы, которые появляются, когда осаждающие строят осадную башню на карте кампании. Они размещаются на одном из участков стены. Если установлена осадная башня, она будет перекрывать осадную лестницу на этой «стороне». Если на линии есть брешь, осадную башню будет невозможно там развернуть.
- Поместите подходящую осадную башню в сцене.
- Отрегулируйте угол опускающегося трапа, выбрав трап и повернув его, или используя параметр «RampRotationDegree» в скрипте «SiegeTowerSpawner».
- Если ваш трап имеет большой угол наклона вверх или вниз, убедитесь, что сборный элемент навигационной сетки соответствует трапу, в противном случае сделайте его.
- Постройте путь к осадной башне, используя инструмент "Путь".
- Cкрипт SiegeTowerSpawner
- Введите имя пути.
- Введите целевой сегмент стены. Это тег, который мы добавили к стене, у которой есть средняя позиция и позиция ожидания. Осадная башня будет искать этот тег, а затем искать свои дочерние объекты, чтобы соответствующим образом направлять войска ИИ.
- Введите боковой тег (Side Tag).
- Как только башня будет подключена к своему пути, поместите точку развертывания в начале пути в соединении с осадной башней.
- Вы можете пометить зубцы на пути к осадной башне меткой tower_merlon. Эти зубцы будут удалены, как только на их место будет развернута осадная башня. Убедитесь, что у них есть сценарий «DestructableComponent» и выбран тег «CanBeDestroyedInitially».
- Поместите префаб «_barrier_ai_04x04m» на стену, где будет приближаться осадная башня. Присвойте барьеру уникальный тег, например «tower_barrier_lvl3». Теперь вставьте этот тег в параметр «BarrierTagToRemove» в сценарии SiegeTowerSpawner. Помеченный барьер будет удален, как только откроется пандус осадной башни.
- Используемые префабы
- Siege_tower_5m_spawner
- Siege_tower_9m_spawner
- siege_tower_12m_spawner
Таран
Таран - это префаб, который появляется, когда осаждающие строят таран в кампании. Таран будет соединен с боковой меткой и повредит внешние ворота. Как только он достигнет ворот, войска будут им размахивать.
- Постройте путь с помощью инструмента «Путь». Индикатор поломки на призрачном объекте префаба тарана должен соприкасаться с воротами, чтобы соответствовать анимации и визуальным эффектам.
- Скрипт BatteringRamSpawner
- Введите боковой тег (Side Tag)
- GateTag: outer_gate
- Введите название пути к скрипту.
- Как только таран будет подключен к своему пути, установите точку развертывания в начале пути в соединении с тараном.
- Используемые префабы
- Batteringram_a_spawner
Заполнители канав
Если в сцене есть канавы и ров вокруг замка, у нас должна быть система заполнения рвов, которая позволит осадным башням и таранам работать должным образом. Заполнители канав появятся, если игрок развернет подключенные осадные машины. Нам нужно будет расположить и идентифицировать различные грани навигационной сетки, чтобы ИИ правильно использовал поиск пути вокруг насыпи канавы.
- После размещения нужного объекта, чтобы заполнить ров, соберите их всех под одним родительским объектом.
- Добавьте тег «ditch_filler» и соответствующий боковой тег (левый, правый или средний) к подключенной осадной машине.
- Как только осадная башня или таран будут развернуты, заполнитель канав также будет развернут вместе с ними.
- Мы манипулируем навигационной сеткой так же, как прорывами в стенах.
- Идентификаторы навигационной сетки находятся в скриптах осадной башни и тарана.
- Введите идентификаторы навигационной сетки, которые вы будете использовать для этого заполнителя канавы.
- Переделайте навигационную сетку и присвойте ему идентификатор.
- Убедитесь, что новые грани навигационной сетки имеют правильные уровни.
СКРИПТ SIEGETOWERSPAWNER | ЗАПОЛНИТЕЛЬ КАНАВ |
- В этом примере, когда нет заполнителя канавы, 423, 426 и 424 будут деактивированы. 422 и 433 останутся подключенными 427 будут активными, 432 и 425 будут подключены.
- Когда есть наполнитель канавы, 422 отключится от 433 и подключится к 423, 426 будет активным, 425 будет отключено от 432 и подключится к 424, а 427 будет отключено.
Осадные лестницы
Осадные лестницы по умолчанию размещаются на обеих осаждаемых стенах, если нет осадной башни или бреши.
- Выберите правильный размер создаваемой лестницы, никогда не изменяйте её высоту.
- Скрипт SiegeLadderSpawner
- Введите целевой сегмент стены. Это тег, который мы добавили к стене, у которой есть средняя позиция и позиция ожидания. Лестница будет искать этот тег, а затем искать его дочерние предметы, чтобы соответствующим образом направлять войска ИИ.
- Введите идентификатор навигационной сетки, который вы будете использовать.
- Введите боковой тег (SideTag).
- Тэги "merlon_solid_left" или "merlon_solid_solid_right" должны добавлять оба лестничных мерлона в соответствии с положением стен справа или слева. Эти теги добавляются для того, чтобы убедиться, что тегнутые зубцы не ломаются и не вызовут физических проблем при движении войск ИИ.
- Переделайте сетку и установите соответствующий идентификатор.
- Поверхность навигационной сетки на осадной лестнице должна быть направлена к стене.
- Отрегулируйте положение стойки и держателя вил, используя «UpperStateRotationDegree» и «DownStateRotationDegree», чтобы они соответствовали ландшафту и стенам.
- Поместите префаб «_barrier_ai_04x04m» на стену, где будет устанавливаться лестница. Присвойте барьеру уникальный тег, например «left_ladder_barrier_a». Теперь вставьте этот тег в параметр «BarrierTagToRemove» лестничной диаграммы. Помеченный барьер будет удален, как только осадная лестница будет поднята на стены.
- Используемые префабы
- Siege_ladder_6m_spawner
- Siege_ladder_7m_spawner
- Siege_ladder_8m_spawner
- Siege_ladder_11m_spawner
- Siege_ladder_14m_spawner
Позиции лучников
Позиции лучников - это места расположения ИИ, с помощью которых сценоделы могут установить места, откуда лучники могут стрелять. Есть 2 типа позиций лучника.
- Большие позиции лучников
- Позиции, используемые построениями лучников.
- С префабами «defender_archer_position» и «attacker_archer_position».
- У них есть теги «archer_position» и «archer_position_attacker».
- Маленькие позиции лучников
- Позиции, используемые агентами-лучниками.
- С префабами с именами “strategic_archer_point” и “strategic_attacker_archer_position”.
- У них есть скрипт «strategicarea». В скрипте есть переменные:
- Сторона нападающего или защитника.
- Дальность (позиция лучника должна быть в пределах досягаемости, чтобы её можно было использовать). Внутри этого диапазона должна быть большая позиция лучника, чтобы маленькая позиция лучника была активной. Диапазон по умолчанию - 40 м для защищающегося и 60 м для атакующего.
- Глубина и ширина: обе представляют размер области, используемой войсками. 1x1 подходит для одного солдата на площади 1 x 1 м. 4x2 подходит для 8 войск на площади 4 x 2 м.
- Используемые префабы
- Defender_archer_position
- Attacker_archer_position
- Strategic_archer_point
- Strategic_attacker_archer_position
Границы развертывания
Мы размещаем граничные объекты на сцене, чтобы ограничить, где атакующие и защитники могут разместить свои войска. Они работают почти как мягкие границы.
- Все граничные объекты должны иметь эти 3 тега:
- walk_area_vertex
- защитник или нападающий
- deployment_castleboundary[вставить номер]
- deployment_castleboundary[вставить номер] теги с тем же номером в [вставить номер] соединены друг с другом для создания выпуклой области. Например, 5 объектов с тегом deployment_castle_boundary_3 создадут пятиугольник, определяющий область границы.
- Вы можете использовать префабы «attacker_boundry», «defender_boundry» и редактировать их по своему усмотрению.
- Если вы добавляете тег «out» к одному из этих наборов границ, он действует как отрицательное пространство, вычитая из зоны развертывания, а не добавляя к ней. С помощью этого метода можно создавать вогнутые зоны развертывания.
- Используемые префабы
- Attacker_boundry
- Defender_boundry
Камера
Положение и угол камеры определяют точку обзора, которая будет использоваться на этапе развертывания.
- Создайте пустой объект.
- Камера атакующего должна иметь тег «strategycameraattacker».
- Камера защитника должна иметь тег «strategycameradefender».
- Убедитесь, что положения камеры находятся внутри границ развертывания.
Точки спауна
Точки спауна - это места, где войска NPC и игрок будут появляться на сцене в начале битвы.
- Используйте стандартный префаб sp_battle_set для создания войск и подкреплений. Префаб включает 16 объектов для каждого типа войск, атакующего и защитника, в начале сражения (обычный) или в ходе подкреплений.
- Убедитесь, что вы установили правильную видимость уровня, так как другой префаб sp_battle_set используется на гражданском уровне для боевых миссий в общей зоне.
Линии отступления
Есть линии отступления как для нападающих, так и для защитников. Если их поместить в сцены осады, ИИ будет предпочитать убегать, используя линии отступления, а не ближайшую мягкую границу.
- Защитники должны бежать в крепость.
- Чтобы быть активными, линии бегства должны быть закрыты навигационной сеткой.
- Используемые префабы
- Flee_line_attacker
- Flee_line_defender
Скрипт Тактическая Позиция
Скрипт [tacticalposition] позволяет нам изменять ширину различных позиций ИИ.
- После добавления к объекту вы можете изменить многие параметры в нем. Для целей осады важен только параметр _width. Введенное здесь значение равно ширине построения в метрах.
- Вы можете использовать этот скрипт в [wait_pos], [middle_pos], [attacker_wait_pos], позициях лучников и позициях ожидания осадной лестницы.
ТАКТИЧЕСКАЯ ПОЗИЦИЯ | РАЗВЕРТЫВАНИЕ |
Барьер ИИ
Барьер ИИ должен быть добавлен во все места, где войска ИИ могут упасть с неприемлемой высоты.
- С помощью инструмента Пути сначала нарисуйте линию пути, затем установите флажок «Включить создание барьера» (Enable Barrier Build). После того, как барьер построен, нажмите «Перейти к объекту» и проверьте скрипты префаба. Необходимо проверить следующие параметры скрипта «indicator_builder»:
- Ограничитель ИИ (AI Limiter)
- Только агент (Agent Only)
- При необходимости Flip можно проверить по стороне стены.
Куча метательных камней
Мы можем разместить полезные для сцены осады каменные кучки.
- Префаб [throwable_rock_pile] состоит из трех компонентов:
- Куча камней: с 8 интерактивными точками, с помощью которых ИИ может подбирать камни.
- throw_pos: куда агент переместится, чтобы бросить камень.
- volume_box: обозначает область, в которую ИИ может бросить камень.
- Когда вражеский ИИ перемещается в volume_box, префаб вызывает агента, этот агент поднимает камень и пытается бросить его врагу в volume_box, на который он может нацелиться.
- У вас может быть несколько throw_pos на volume_box. Просто продублируйте объект throw_pos.
- Подключайте объекты throw_pos к volume_box, добавляя тег к volume_box и вводя это имя тега в скрипт throw_pos.
Использование метательных камней и позиций лучника (и почти всего остального) под сломанными и целыми стенами.
- Позиции throwable_rock_pile и позиции лучников работают, когда они являются дочерними объектами.
- Таким образом, вы можете отдельно разместить эти объекты, а также любые другие объекты, которые вы хотите, под целыми или сломанными стенами в качестве дочерних объектов. Так, вы можете создавать позиции лучников, прикрывающие брешь, или использовать целую стену, когда бреши нет.
ПРИМЕР ЦЕЛЫХ СТЕН | ПРИМЕР СЛОМАННОЙ СТЕНЫ |
Зубцы и другие разрушаемые компоненты
В соответствии с HP стены поселения мы создаем пробоины в стенах, но также уничтожаем некоторые объекты, содержащие скрипт destructable_component. Эта функция была предназначена для зубцов стен, но она проверяет не только зубцы, а сам скрипт.
- В скрипте destructable_component присутствует параметр с именем «CanBeDestroyedInnıfully». Если этот флажок установлен, у этого объекта есть шанс быть уничтоженным в начале миссии, в зависимости от ХП замка (которые сбиваются во время осады на карте кампании).
- По умолчанию он включен для зубцов и выключен почти для всего остального. Если вы создаете разрушаемые объекты для конкретной сцены, убедитесь, что вышеупомянутый параметр установлен правильно.
Комментариев 0
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.