Настройка И.И. с более продвинутым поведением

Материал из CryWiki Russia

Версия от 10:44, 13 апреля 2011; DCamer (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Настройка И. И. с более продвинутым поведением

Sandbox SimpleAI image001.jpg

Введение

Это учебное пособие покажет вам, как разместить врагов на карте и указать им, куда они могут идти или где могут скрываться. По умолчанию они запрограммированы стрелять в игрока, как только он попадёт в зону их видимости.

Типы характеров искусственного интеллекта, их взаимодействие с оружием, как далеко они могут видеть и слышать, продвинутое поведение, такое как групповая тактика, переговоры между ИИ, использование транспортных средств и взаимодействий с сложными объектами, описано в других обучающих программах и справочной библиотеке.

Добавление противника на карту

Размещение ИИ на ваш уровень

Для размещения ИИ в RollupBar выберите Objects затем Entity, в папке AI выберите Grunt и перетащите в окно перспективы.

Sandbox SimpleAI image003.png

Снабжение ИИ оружием

Для снабжения ИИ оружием нажмите кнопку в поле EquipmentPack откроется диалоговое окно пакетов экипировки. Для получения дополнительной информации о настройке пакетов экипировки, прочтите учебное пособие по Equipment Pack.

Sandbox SimpleAI image005.png

Важно: Чтобы изменения вступили в силу нажмите кнопку Reload Script (расположена ниже свойств сущности) чтобы Grunt начал использовать выбранный пакет оружия.

Sandbox SimpleAI image007.png

Архетипы противников

Все ИИ-персонажи Crysis размещены как архетип-объекты, это означает, что настроить параметры нужно всего один раз, чтобы использовать на разных уровнях. Чтобы увидеть параметры, которые они используют, просто нажмите на окно Entity Archetype (в следующем скриншоте текст CAMPER/CAMP.Light_Rifle).

Sandbox SimpleAI image009.png

Генерация навигации ИИ

Даже на равнинном ландшафте, убедитесь, что вы генерируете новую навигацию ИИ, хотя бы один раз после создания карты, а также после любых изменений на ландшафте.

Sandbox SimpleAI image011.png

Навигация ИИ может быть сгенерирована нажатием элемента Generate All Navigation, из меню AI.

Тестирование результатов

Перейдите в режим игры (CTRL+G) и подойдите к ИИ, если вы всё правильно настроили, то ИИ будет стрелять в игрока, когда он его увидит или услышит.

Sandbox SimpleAI image013.jpg

Настройка навигации

Введение

Чтобы ваш ИИ работал правильно на вашем уровне, вы должны настроить различные типы навигации.

Введение ai_DebugDraw=79 в консоль покажет вам, настроена ли уже триангуляция, это означает, что ИИ сможет найти свой путь из одной точки в другую не натыкаясь на препятствия.

Sandbox SimpleAI image015.png

Растительность

ИИ автоматически обходит объекты растительности, если всё настроено правильно.

Если Вы хотите, чтобы ИИ скрылись за деревьями установите флаг Hideable в свойствах Vegetation.

Sandbox SimpleAI image017.png

Затем, скорректируйте AIRadius Vegetation, чтобы ИИ понимал, насколько большой объект растительности.

Sandbox SimpleAI image019.png

ИИ будет так же автоматически обходить более сложные объекты, такие как транспортные средства.

Утесы и большие твердые объекты

Введение ai_debugdraw 85 в Консоль выведет на экран все области, которые слишком круты, чтобы подняться (показаны красным цветом) и области которые могут вызвать скольжение (зеленый).

Теперь мы должны изолировать все такие области запретными областями ForbiddenAreas (смотрите раздел ниже).

Sandbox SimpleAI image021.png

Запретные области

Вы должны окружить каждую внутреннею область точки пути формой ForbiddenArea, таким образом, ИИ не будет врезаться в стены и другие объекты.

Нажмите на AI/ForbiddenArea и создайте форму вокруг области, которую вы хотите сделать непроходимой (например, внешние стены здания). Выберите ForbiddenArea из меню, как показано ниже.

Sandbox SimpleAI image023.png

Как только ваша ForbiddenArea будет создана, а уровень будет триангулирован, ИИ не будет врезаться в стены.

Sandbox SimpleAI image025.png

Настройка точек пути во внутренних областях

Чтобы ИИ смог входить в двери и перемещаться внутри здания необходимо добавить Waypoint Region. Вам нужно расширить одну секций этого Waypoint Region вне запретной области, чтобы сделать вход для ИИ, как показано ниже.

Sandbox SimpleAI image027.png

3 вещи, которые необходимо настроить в Waypoint Region:

  • Область AI Navigation Modifier
  • AIWaypoint (разных типов)
  • Точки входа/выхода (Entry/Exit) AIWaypoint

Вы должны окружить каждую область точки пути формой AINavigationModifier с типом навигации (NavType) «Human Waypoint».

Щелкните по AI/AINavigationModifier и создайте форму указанного выше типа.

Sandbox SimpleAI image029.png

По умолчанию тип навигации «Human Waypoint», так что ничего изменять не надо.

Разместите AI/AIPoint внутри вашей области. Вы увидите, что они стали синим тогда, когда они будут находится в правильной области.

Sandbox SimpleAI image031.png

В том месте, где ИИ должнен входить и выходить из области, там изменить тип AIPoint на Entry/Exit (будет отображен символ двери, вместо синего шара).

Sandbox SimpleAI image033.png

Одна часть области AINavigationModifier должна быть вне формы запретной области (красная линия), чтобы ИИ смог достичь точки.

Sandbox SimpleAI image035.png

Чтобы сгенерировать соединения со всеми точками, выберите вашу AINavigationModifier и нажмите Auto-Dynamic' в Waypoint Connection Parameters.

Sandbox SimpleAI image037.png

И, наконец, щёлкните по одной из точек и нажмите кнопку Regen Links:

Sandbox SimpleAI image039.png

Теперь, все точки должны быть соединены, как на рисунке ниже и ИИ сможет перемещаться внутри области, и входить/выходить из неё там, где вы установили конкретные точки входа и выхода.

Sandbox SimpleAI image041.png

Смотрите раздел ниже чтобы узнать о том, как должны быть настроены и размещены ForbiddenArea и Waypoints.

Воздушная навигация

Вы должны окружить каждую область, в которой вы хотите чтобы пилотировал воздушный транспорт формой AINavigationModifier с типом навигации «Flight». Вы также должны задать для этой области высоту.

Водная навигация

Вы должны окружить каждую область, в которой вы хотите чтобы ориентировался водный транспорт (например, лодки) формой AINavigationModifier с типом навигации «Water».

Пути и дороги

Sandbox SimpleAI image043.png

Создайте AIPath с отмеченной галочкой Road, и транспортные средства будут автоматически иметь сильное предпочтение для использования дорог/путей. Также можно заставить ИИ следовать по пути используя нод потокового графа «AIFollowPath».

Внешние точки прикрытия

Чтобы заставить скрыться ИИ в определенных местах вы должны поставить AIAnchor (вне областей пути).

Разместите AI/AIAnchor рядом с любым твёрдым объектом, например, к стене. Теперь, обратите внимание на два красные полосы перед точкой скрытия, которые указывают, что ИИ можете использовать анимацию присядки/скрытия, либо анимации наклона влево/вправо. Красная линия спереди точки скрытия показывает, сколько нужна места для наклона влево и вправо. Убедитесь, что зелёная область ничем не заблокирована, так, чтобы ИИ смог его использовать.

Sandbox SimpleAI image045.png

Тип «Hide» у AIPoint в областях навигации

Тот же самый принцип, что у AIAnchor, также применяется у точки скрытия, типа AIPoint. Чтобы превратить точку пути в навигационной области, в точку скрытия, нужно просто выбрать тип Hide в поле Type раздела AIPoint Properties.

Sandbox SimpleAI image047.png

Sandbox SimpleAI image049.png

Как правильно настроить ИИ — Расширенные советы

Запретные области

Sandbox SimpleAI image051.png

Здесь запретная область находится слишком далеко от самих объектов.

Sandbox SimpleAI image053.jpg

Вместо этого размещайте их ближе к краям объектов. Это позволит избежать, попадания ИИ в области скольжения. Теперь ИИ обходит эти объекты намного лучше.

Sandbox SimpleAI image055.jpg

Не ставьте две запретные области так близко друг к другу. Навигация будет всё-равно идти между ними, даже если ИИ не сможет там пройти.

Sandbox SimpleAI image057.jpg

Вместо этого удалите одну запретную зоны, и создайте одну большую запретную зону, содержащую оба объекта.

Sandbox SimpleAI image059.jpg

Не размещайте предметы рядом с краем запретной зоны. В противном случае ИИ будет кружить вокруг скрытых объектов и сможет проскользнуть в запретную зону.

Sandbox SimpleAI image061.jpg

Размещайте скрытые объекты либо внутри запретной зоны, либо за её пределами. Убедитесь в том, что если ИИ будет кружить вокруг скрытых объектов, то он не проскользнёт в запретную зоне.

Большие, открытые сбоку структуры, не должны иметь одну большую запретную зону вокруг них.

Sandbox SimpleAI image063.jpg

Вместо этого разместите меньшую запретную зону вокруг них.

Sandbox SimpleAI image065.jpg

Якоря прикрытия

Sandbox SimpleAI image067.png

ИИ скрывается в якоре скрытия, если приближается враг. Чем больше у вас ИИ, тем больше должно быть размещено якорей скрытия. Не размещайте якоря скрытия только в одном направлении. Разместите их на все возможные направления.

Sandbox SimpleAI image069.jpg

Размещайте якоря скрытия не только по краям объектов, но и у боков. Бока обеспечивают лучшее прикрытие, чем края.

Sandbox SimpleAI image071.jpg

Для тонких объектов, размещайте якоря скрытия так близко к краям, чтобы ИИ смог быстро покинуть свою позицию. Не забудьте разместить их по обе стороны, и обратите их друг к другу.

Sandbox SimpleAI image073.jpg

Размещайте якоря скрытия только в тех позиции, где ИИ истинно сможет спрятаться. Передняя и задняя часть, к примеру, автомобиля даёт небольшое прикрытие. Середина даёт лучшее прикрытие.

Sandbox SimpleAI image075.jpg

Обычно края домов дают небольшое прикрытие. Первый якорь скрытия разместите близко к краю, и направьте его прямо. Затем разместите якорь скрытия с вращением 45°, немного подальше от края.

Sandbox SimpleAI image079.jpg

Если вас не достаточно якорей скрытия для нескольких ИИ, то вы можете количество якорей скрытия. Основные якоря скрытия наиболее важны. Затем, вы можете увеличить количество якорей скрытия с вращением 45°.

Sandbox SimpleAI image081.jpg

Если у вас длинные объекты, то не размещайте якоря скрытия в середине, в противном случае ИИ придётся далеко перемещаться, чтобы сменить позицию. Вы можете размещать их в середине, только тогда, когда есть другая позиция покрытия поблизости к середине.

Точки пути

Sandbox SimpleAI image083.jpg

Для двух комнат, будет достаточно разместить две точки пути. ИИ сможет из каждого угла комнату достигнуть ближайшую точку пути. Соединение дает ИИ возможностью переключать комнаты.

Sandbox SimpleAI image085.jpg

Размещайте точки пути на краях объектов. Никаких проблем с ИИ не будет и он никогда не застрянет.

Sandbox SimpleAI image087.jpg

В данном примере ИИ стоит у стены и ищет ближайшую точку пути. По чистой случайности, ближайшая точка пути находится за препятствием. В новых движках ИИ нашел бы верную точку пути, но он требует более высокую производительность. Вместо этого размещайте точки пути на одинаковом расстоянием от объекта.

Sandbox SimpleAI image089.jpg

Будьте осторожны, когда соединяете точки пути. Соединение никогда не должны находиться в непосредственной близости от физических объектов, либо проходить через них.

Sandbox SimpleAI image091.jpg

Избегайте нахождение точек пути вблизи к соединениям. Если два ИИ начнут двигаться, то они могут столкнуться, так как соединения помогают ИИ обходить друг с друга.

Sandbox SimpleAI image093.jpg

Избегайте пересечения соединение на углах объектов.

Sandbox SimpleAI image095.jpg

Вы можете легко решить эту проблему путем добавления новой точки пути на краю (одна точка на краю обязательно должна быть).

Sandbox SimpleAI image097.jpg

Если у вас есть альтернативные маршруты, то подумайте, как это будет выглядеть, если бы вы сами ходили точно по линии. Иногда лучше использовать большое количество точек пути для имитации более естественного движения, как в примере выше.

Sandbox SimpleAI image099.jpg

Если у вас есть комната, то перво-наперво разместите все точки пути по краям всех объектов. Делайте это для объектов, через которые нельзя пройти.

Sandbox SimpleAI image101.jpg

Затем, вы ищете точки пути, которые находятся близко друг к другу. Если они находятся близко друг к другу, то используйте одну точку вместо двух, что даст чистую навигацию и меньший шансов того, что ИИ застрянет.

Sandbox SimpleAI image103.jpg

После точек пути, разместите точки скрытия, соблюдая общие правила из раздела «Якоря скрытия».

Sandbox SimpleAI image105.jpg

Точки скрытия также являются частью навигация, сделайте слияние точек скрытия и точек пути, если они расположены слишком близко друг к другу.

Sandbox SimpleAI image107.jpg

Если все точки навигации размещены, то начинайте их соединение.

Sandbox SimpleAI image109.jpg

Эта точка пути в середине, не обеспечивает идеальное движение, но уменьшает шанс застревания ИИ.

Sandbox SimpleAI image111.jpg

Красные линии показывают плохие соединения: либо соединения проходят через/близко к геометрии, либо они расположены слишком близко к другим соединения. Это нормально, если ИИ должен сделать 1-2 шага, прежде, чем начнёт движение в правильном направлении.

Результат

Настроив всё это правильно, у вас будет ИИ способный идти в любую точку чтобы начать бой с игроком. Чем лучше вы разместите точки пути и точки скрытия, тем реалистичней и сложней будет игроку бороться против ИИ.

Sandbox SimpleAI image113.png

См. также