close

Вход

Забыли?

вход по аккаунту

?

Slide 1 - Конференция Разработчиков компьютерных Игр

код для вставкиСкачать
КОНФЕРЕНЦИЯ РАЗРАБОТЧИКОВ КОМПЬЮТЕРНЫХ ИГР
AI in Action
Как достичь кинематографичности
в Action игре
Александр Радченко
программист
Апрель 1-3, 2005
Москва, Россия
Оглавление
Введение
Общая архитектура AI системы.
AI персонажей.
AI рукопашного боя
Кинематографическая система
AI мотоциклетного боя
AI для бокса на ринге
Обобщение опыта автора в
написании AI для Action игр
Александр Радченко – AI in Action
2
Общая архитектура AI системы
Game System
AI System
NPC
Character
Agent
Brain
AI Actor
Local Service
Александр Радченко – AI in Action
Global Service
3
Примеры использования
Мозг бандита
Содержит агентов
• Движение в точку
• Движение по пути
• Преследование
• Ближний бой
• Стрельба
Александр Радченко – AI in Action
4
Примеры использования
Мозг пешехода
Содержит агентов
• Движение в точку
• Движение по пути
• Убегать
• Бояться
Александр Радченко – AI in Action
5
Примеры использования
Мозг бомжа
Содержит агентов
• Движение в точку
• Искать мусорный бак
• Копаться в мусоре
• Попрошайничать
• Бояться
• Убегать
Александр Радченко – AI in Action
6
Архитектура. Достоинства и недостатки
Достоинства
Простота
Гибкость
Система компонентная и позволяет
легко добавлять, переносить код
Недостатки
Слишком большая гибкость
Вседозволенность программиста
Александр Радченко – AI in Action
7
Взаимодействие AI с игровой логикой
Common Game System
Common Game AI
AxleRage AI
AxleRage Game
Shadow Fight AI
Shadow Fight Game
Александр Радченко – AI in Action
8
AI рукопашного боя. Общие положения
• Добежать до
противника
• По прямой
• По waypoints
Во время драки надо
соблюдать требования
• Логичность
• Разнообразность
• Настраиваемость
Александр Радченко – AI in Action
9
AI рукопашного боя. Драка
Агент ближнего боя
• Постоянный «Lock»
на противника в бою
• Прыжки aka уклоны
• Выбор атак
• Все на одного!
• Отталкивание и
притягивание
• Стенка на стенку!
Александр Радченко – AI in Action
10
AI рукопашного боя. Выбор атаки 1/2
Цель
Бросок для ближней
дистанции
Две атаки для
средней дистанции
AI Unit
Атака с прыжком для
дальней дистанции
Александр Радченко – AI in Action
11
AI рукопашного боя. Выбор атаки 2/2
[BigGuyHammerAttack1_1 : gai::CloseCombatAttack]
• AnimCommand = ‘bigguy_hammerattack1‘
• DamageHealth = 0.2
• DamageEnergy = 0.3
• EnergyCost = 0.1
• MinDistance = 1.1
• MaxDistance = 2.1
[BigGuyHammerAttack1_1 : gai::CloseCombatAttack]
• AnimCommand = bigguy_hammerattack2‘
• PrevAttack = 'BigGuyHammerAttack1_1'
• DamageHealth = 0.5
• DamageEnergy = 0.6
• EnergyCost = 0.1
• MinDistance = 1.5
• MaxDistance = 2.1
Александр Радченко – AI in Action
12
AI рукопашного боя. Разнообразность.
• Итак, мы выбрали наилучшую атаку
• А что же с разнообразностью ?
• Можно для атак в одном диапазоне писать задавать
вероятности их появления
• Это плохой способ ! Мы получим разнообразность,
сомнительного качества, но не сможем добиться легкой
настройки
• Здесь и появляется первый раз кинематографическая
система
Александр Радченко – AI in Action
13
Исключение повторений атак. Красивый бой
Выбор атаки для NPC идет по следующим правилам
• Выбирается наиболее подходящая атака по дистанции
до цели.
• После этого идет проверка по заранее заданным
фильтрам и буферу уже проводившихся атак.
• В самом простом случае будут отсекаться
повторяющиеся атаки и прочие некрасивые
последовательности.
• Некрасивые последовательности определяются
эмпирически и задаются в специальном ini файле
Александр Радченко – AI in Action
14
AI рукопашного боя. Все на одного!
Цель
-
Производит атаку
+
Атакующая группа
Группа поддержки
Александр Радченко – AI in Action
15
Рукопашный бой. Стенка на стенку!
• Эта система уже позволяет реализовать драку группа
на группу
• Но! Возникает т.н. «самурайская тенденция»,
персонажи разбиваются на пары и дерутся только с
одним противником
• А нам нужна массовая драка
• Победить это легко, достаточно сделать так, чтобы
персонажи из одной группы отталкивались на малом
расстоянии и начинали притягиваться с увеличением
расстояния.
• Теперь бойцы одной команды будут держатся кучно,
и цели у них будут меняться чаще.
Александр Радченко – AI in Action
16
Кинематографическая система. Введение
• Агенты пешего боя по
своей сути все
одинаковы, и обеспечить
только с их помощью
разнообразное и не
повторяющееся
поведение невозможно
Решения :
• Усложнение агентов
• Дополнительный
модуль над
игровым AI
Александр Радченко – AI in Action
17
Кинематографическая система 1/2
• Управление системой “группа атаки и группа
поддержки” для пешего боя. Перевод NPC из одной
группы в другую
• Выбор атак для нападающих. Исключение повторений
атак
• Выбор момента для проигрывания idle анимаций
• Выбор момента для проигрывания idle звуков.
• Выбор типа получения удара
•легкий без отлетания
•тяжелый с отлетанием
•тяжелый с падением .
Александр Радченко – AI in Action
18
Кинематографическая система 2/2
• Активизация “двойных атак” (атака двух NPC против
одного).
• Поведение камеры: выбор наиболее красивых моментов
смерти врагов и показ их с различными эффектами
• Поведение npc атакующих главного героя в поле зрения
камеры
Александр Радченко – AI in Action
19
AI мотоциклиста
• Было решено разделить
задачу
• Низкий и высокий уровни
• Езда по путям
• Драка 1 на 1
• Драка все на одного!
• Связь AI с физикой
мотоцикла
• Связь AI с анимацией
мотоциклиста
Александр Радченко – AI in Action
20
AI мотоциклиста. Езда по пути.
• По трассе в несколько
рядов были проложены
пути
• Мотоцикл катался
исключительно по путям,
иногда перестраиваясь из
одного пути в другой
• Если надо было убегать
«огородами» – создаем
специальный путь
• Если надо гнаться за
целью – дополнительный
путь создается на ходу
Александр Радченко – AI in Action
21
AI мотоциклиста. Драка один на один 1/2
Требования :
• Должно быть
достаточно легко
приблизиться к врагу
и начать его бить
• NPC не должен
вести себя слишком
пассивно
• Как упростить
принятие решения ?
• AI мотоциклетной
драки работал в
системе координат цели
Александр Радченко – AI in Action
22
AI мотоциклиста. Драка один на один 2/2
Было сделано множество агентов, реализующих разные
мотоциклетные действия
•
•
•
•
•
•
•
•
Виляния позади цели
Виляния впереди цели
Обгон персонажа cлева и параллельное нанесение атаки
Обгон персонажа cправа и параллельное нанесение
атаки
Байкер едет в отдаление слева от Акселя
Байкер едет в отдаление справа от Акселя
Байкер атакует Акселя с наездом из режима эскорта
Байкер едет в отдаление впереди от Акселя и стреляет
И все было хорошо…
Александр Радченко – AI in Action
23
AI мотоциклиста. Драка несколько на одного
• Действия двух байкеров против одного выглядели ужасно
• Настройки поведения байкера были вынесены в
отдельную папку ( .ini ) и их можно было менять.
• Проблема была в том, что эти настройки были одни, для
всех байкеров
• И байкеры не знали друг о друге
• И поскольку мы активно использовали вероятности,
байкеры часто делали синхронные действия.
• Чтобы это решить, были применены наработки из
кинематографической системы
• В частности идея с конфликтующими действиями.
• Активация одного действия блокировала как минимум
такое же действие, как максимум – все то, что выглядело
неестественно
Александр Радченко – AI in Action
24
AI мотоциклиста. Достоинства и недостатки
Достоинства
Система компонентная и легко
настраиваемая
Работы над AI удалось распараллелить
Недостатки
Высокий уровень часто неспособен
адекватно и вовремя реагировать на сигналы
из низкого
Распараллеливание привело к
дополнительным сложностям в определении
интерфейсов
Александр Радченко – AI in Action
25
Боксерский AI
• Модифицированный
рукопашный бой
• Боксеры постоянно
«залочены» на цель
• И цель только одна
• Очень простые
перемещения
Александр Радченко – AI in Action
26
Боксерский AI. Атаки и блоки
• Система «Атака – Пауза»
• При атаке - только бьем
• При паузе – только
блокируем.
• Длительность атаки 0.7
+/- 0.3 сек. Пауза 70% +/30% от времени атаки
• При пропущенной атаке
вероятность блока по
этому уровню должна
расти
• С течением времени надо
уменьшать вероятность
блока по обоим уровням
Александр Радченко – AI in Action
27
Подведение итогов
• Компонентная структура AI дала возможность легко
добавлять и изменять код
• Кинематографическая система - как отдельный модуль
над AI
• С вероятностями надо быть очень осторожным,
случайности совсем не случайны!
• AI должен быть логичным, разнообразным и легко
настраиваемым
• Визуальная настройка AI параметров очень сильно
облегчает жизнь
Александр Радченко – AI in Action
28
Подведение итогов. Изменения в runtime
• Очень важно, чтобы была
возможность изменить
параметры AI прямо в игре
• У нас есть среда разработки, в
которой можно запускать игру
• Там доступен весь граф сцены
• В том числи и настройки AI
персонажей
• Это очень удобно, время на
доводку сокращается на
порядок
Александр Радченко – AI in Action
29
Спасибо за внимание
Вопросы ?
Вопросы автору также можно задать на radchenko@akella.com
Александр Радченко – AI in Action
30
Документ
Категория
Презентации
Просмотров
4
Размер файла
4 028 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа