Особенности работы ИИ в Uncharted 4

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


Заранее заготовленные позиции и автоматизация диалогов.

Дизайнер ИИ-систем Аллен Чоу сразу после релиза Uncharted 4 опубликовал в своём блоге подробности создания искусственного интеллекта. Разработчик наглядно показал, какие системы контролируют поведение NPC и описал принципы работы многих аспектов. Мы выбрали из текста главное.

Для передвижения и ориентации в пространстве NPC используют систему закреплённых на карте «постов». Большинство из них сгенерировано инструментами, а некоторые расположены вручную. Для каждой ситуации есть свой набор постов: например, есть шаблоны для стелса, боя и так далее. В зависимости от обстановки NPC использует один из наборов.

Система «buddy follow», благодаря которой напарники следуют за героем, перекочевала из The Last of Us. Основной принцип этой системы заключается в том, что у NPC есть несколько заранее заготовленных позиций рядом с игроком, из которых он может выбирать. На его решение влияет позиция героя, наличие потенциальных препятствий впереди и так далее.

Для передвижения по стенам также есть свой набор постов — он активируется, когда игрок сам начинает карабкаться. При этом компаньоны будут двигаться тогда же, когда и главный герой.

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

Если пользователь будет быстро переключается между состояниями лазания и хождения, компаньоны будут колебаться между двумя этими действиями. Поэтому разработчики добавили гистерезис (запаздывание) — NPC начинали следовать за героем только в том случае, если он перемещался достаточно далеко в одном состоянии.

В некоторых эпизодах NPC сами начинали вести героя. Это система также пришла из The Last of Us — в ней используются сплайны, которые указывают основной путь для персонажа.

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

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

Система укрытия с напарником также пришла из The Last of Us. Тем не менее фигура Джоэла была значительно больше Элли, поэтому он мог почти полностью перекрывать её собой. Для Uncharted 4 такой формат не подходил, потому что все герои были примерно одного роста. Поэтому здесь напарники просто скрываются за укрытием, а Нейт находится рядом с ними.

Логика такого подхода очень проста: если игрок попадает в зону укрытия напарника, то он меняет позицию.

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

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

В Uncharted 4 появилась механика скрытностного перемещения в траве — чтобы всё работало корректно, разработчики помечали нужные области как зоны для стелса. Если игрок находился в ней, то противник его не замечал. Эта система отлично работала и для компаньонов.

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

Есть два фактора, которые могут вызвать подозрения у противников — присутствие игрока и обнаружение мёртвого тела. Если NPC увидит подозрительные действия, то он попробует позвать ближайшего союзника, чтобы проверить вместе. После этого они делятся на роли — один становится «следователем», а второй — «наблюдателем». Также прозвучит одна из двух реплик: «Там что-то есть. Я пойду проверю» или «Там что-то есть. Иди проверь».

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

В некоторых случаях противники будут особенно активно проводить расследование — например, начнут дотошно проверять заросли и высокую траву.

Чтобы диалоги в игре выглядели естественно, разработчики создали целую систему со взглядом глаза в глаза, жестами и так далее. При разработке The Last of Us ушли месяцы на проработку всех этих диалогов, поэтому студия не хотела опять проходить через это. Когда команда поняла, что без автоматизации не обойтись, уже было вручную создано несколько скриптовых сцен.

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

В Uncharted 4 впервые в серии появился управляемый транспорт. В игре есть несколько способов устранить вражескую технику: убить водителя; стрелять по транспорту или протаранить его. В зависимости от причины смерти выбирается анимация как для самого транспорта, так и для всех пассажиров. В определённый момент после запуска анимации объекты начинают двигаться по физике, чтобы это выглядело более естественно.

Когда игрок таранит вражеский мотоцикл, система анализирует точку удара на плоскости XZ и запускает одну из четырёх анимаций.

При столкновении с внедорожником учитывается угол движения обеих машин и их скорость.

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


Источник: dtf.ru

Комментарии: