Как работает ИИ в Final Fantasy XV
Краткое описание основных систем.
Разработчик ИИ из Square Enix Юитиро Миякэ на GDC 2018 выступил с докладом о работе искусственного интеллекта в Final Fantasy XV. Он рассказал, какие техники используются в игре, чтобы оживить персонажей, а также описал внутренние системы, которые отвечают за все действия NPC. Мы выбрали из выступления главное.
По словам Миякэ, в Final Fantasy XV в работе ИИ участвуют три главных компонента: мета-ИИ, который отвечает за все события, связанные с NPC; ИИ персонажа, который контролирует как одиночное поведение, так и групповое; а также навигационный ИИ, который отвечает за сбор информации.
Мета-ИИ — это «режиссёр» игры, который учитывает контекст происходящего и настраивает поведение NPC в соответствии с ситуацией. Например, если игрок попадает в серьёзную передрягу, то именно мета-ИИ отвечает за то, чтобы к герою на помощь пришёл его компаньон.
При создании ИИ персонажа большое значение имеет анимация — за каждым действием закреплено своё движение, поэтому разработчикам было важно сделать так, чтобы переходы между ними выглядели естественно и корректно. Фактически, авторам игры пришлось искать способ совместить анимацию и ИИ.
Для этого они взяли промежуточный слой — тело, которое связывает два этих аспекта. При этом за каждое звено этой системы отвечали разные специалисты: ИИ — геймдизайнеры, тело — программисты, анимация — аниматоры.
Искусственный интеллект в игре — это динамическая структура, которая получает информацию из игрового мира и выдаёт действие, соответствующее ситуации. Когда ИИ получает информацию, запускается процесс, состоящий из трёх этапов: распознавание, принятие решения, совершение действия.
Получение информации происходит так же, как и в реальном мире — у ИИ есть специальные сенсоры, которые позволяют анализировать окружение.
Обычно принятие решений — сложный процесс, но в играх оно упрощено до семи простых алгоритмов. Например, в основе rule-based ИИ лежит система правил — при выполнении определённого условия выполняется соответствующее действие. А behaviour-based ИИ основывается на дереве поведения, в котором последовательно размещены действия персонажа, которые выполняются в зависимости от условий. Этот подход отличается тем, что он позволяет плавно адаптировать поведение.
В state-based ИИ главную роль играют состояния — например, состояние персонажа меняется при смене состояния мира. Конечные автоматы позволяют непрерывно контролировать каждый шаг персонажа.
Разработчики Final Fantasy XV решили использовать преимущества разных подходов, поэтому создали гибридную систему, соединив конечные автоматы и дерево поведения.
Идея этой системы заключается в том, что структура одного графа может отсылаться к структуре иного графа. Геймдизайнеры могут сильно углубляться в такие структуры, чтобы создавать огромное разнообразие поведения.
Зачастую ИИ приходится решать сразу несколько задач одновременно, поэтому он использует параллельное мышление, чтобы совместить разные действия. Другая особенность ИИ в Final Fantasy XV заключается в том, что общая логика поведения может быть присуща сразу множеству монстров. Но при определённых условиях это общее поведение заменяется на то, что соответствует конкретному типу противников.
После принятия решения ИИ начинает движение в игровом мире. Чтобы передвигаться по карте, ИИ использует навигационную сетку, которая растянута на весь игровой мир. Также она содержит информацию для передвижения NPC любых размеров.
Для эффективного использования способностей персонажей, с учётом особенностей ландшафта и в реальном времени, применяется Point Query System. Её суть заключается в том, что ИИ оценивает пространство вокруг цели, высчитывает все возможные позиции, а затем подбирает точку, с которой можно эффективнее всего применить способность.
PQS применяется для выполнения разных задач: для поиска позиции атаки монстров, союзников; поиска места для начала разговора с напарником или спауна противников.
Например, для поиска места диалога с напарником используются все три компонента системы: мета-ИИ, ИИ персонажа и система навигации.
Чтобы разные NPC в игре не сталкивались друг с другом, каждый из них генерирует лучи во все стороны и подбирает свободный путь, который находится ближе всего к цели.
Для адекватной атаки монстра ИИ анализирует положение игрока в пространстве и подбирает нужное движение — у каждой атаки есть своя зона поражения, и если герой попадает в неё, то противник применяет соответствующий удар.