Рубрика развивается при поддержке

Особенности работы ИИ в Uncharted 4 Материал редакции

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

В закладки
Аудио

Дизайнер ИИ-систем Аллен Чоу сразу после релиза 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 и запускает одну из четырёх анимаций.

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

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

{ "author_name": "Владимир Семыкин", "author_type": "editor", "tags": ["\u043e\u043f\u044b\u0442","\u0438\u0441\u0442\u043e\u0440\u0438\u0438","uncharted"], "comments": 38, "likes": 106, "favorites": 279, "is_advertisement": false, "subsite_label": "gamedev", "id": 74458, "is_wide": true, "is_ugc": false, "date": "Thu, 10 Oct 2019 12:08:17 +0300", "is_special": false }
0
{ "id": 74458, "author_id": 94357, "diff_limit": 1000, "urls": {"diff":"\/comments\/74458\/get","add":"\/comments\/74458\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/74458"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "last_count_and_date": null }
38 комментариев
Популярные
По порядку
Написать комментарий...
17

Что в ластах, что в анче 4 у ИИ напарника одна проблема: в стелсе постоянно мельтешит перед врагами, а те его не видят в упор (дабы постоянно не руинить игроку прохождение). Выглядит, мягко говоря, так себе. Надеюсь, во вторых ластах этот момент проработают лучше.

Ответить
0

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

Ответить
0

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

Ответить
0

Нет, не про игрока речь, а только про ИИ напарника (Элли, брат Дрейка). Они там в буквальном смысле в метре от противника прямо перед лицом бегают. А игрока там боты видят хорошо, если сложность высокая.

Ответить
–15

ИИ сценарий там писал разве что)

Ответить
15

А чем вас, собсна, сценарий не устраивает? Вполне себе голливудское приключение.

Ответить
1

Персонажи не орут "ORA-ORA!". 

Ответить
0

На ДжоДжо не бухтеть. Уж лучше тамошнее безумие, чем дженерик кинцо.

Ответить
0

На картинке вылитый Новобранец прям

Ответить
3

Так Филлион Дрейка даже играл в короткометражке.

Ответить
0

А при разработке Horizon Zero Dawn специалисты из Naughty Dog не привлекались? Лазание уж очень напоминает Uncharted.

Ответить
8

Мне кажется внутренние студии Сони консультируются друг с другом и заимствуют идеи у других внутренних студий.

Ответить
1

у них есть такая штука как "internship" но это не интернатура и не практика, а обмен сотрудниками на некоторе время. Также, у Naughty Dog есть подстудия которая отвечает за инструменты и механизмы разработки для всей SWS. 

Ответить
2

Хорайзен более примитивный в паркуре.

Ответить
0

Вы точно играли в Horizon? Там лазанье похоже на Анчартед разве что в трейлерах, на деле система совсем другая. Как минимум, в Анче можно залезть практически на всё, что кажется доступным, а вот в Хорайзон даже на самой разнообразной горе есть всего 1-2 строго линейных маршрута за пределами которых залезть никуда не выйдет и приходится, вместо того, чтобы залезть прямо сейчас на уступ, пиксельхантить нужный "триггер". Отвратительная система, до сих пор с ужасом вспоминаю. 

Ответить
0

в Анче можно залезть практически на всё, что кажется доступным

Ключевое слово "кажется", в Uncharted куда нельзя не залезешь, и уровни сами по себе ограниченные. Иллюзия свободы создаётся за счёт грамотного проектирования уровней. Кстати, в Horizon Zero Dawn применяется та же самая маркировка, что и в Uncharted - те точки, уступы где можно забраться подкрашены жёлтым (в Uncharted маркировка жёлтым используется в основном в городских условиях).

Ответить
2

Всё-таки не играли Вы в Horizon. Если бы играли, не пороли бы такую чушь. По сравнених с Хорайзон, в Анчартеде лазанье просто гиперреалистичное - если есть уступ, то за него можно ухватиться. В хХрайзоне в 99% случаев это не так, и если даже уступ есть, но он не соответствует проложенной разработчиками "трассе", то героиня проигнорирует его вплоть до прыжка в пропасть и смерти. Первые час-полтора из-за этого испытаываешь колоссальный диссонанс и неудобство.

Ответить
0

Всё-таки не играли Вы в Horizon.

Садись, "два"! Экзамен по телепатии провален :)
В Horizon маршруты, по которым можно лазить маркированы жёлтым цветом, стоит понять эту простую логику и игра становится значительно легче.
В Uncharted в уровнях вне города на скалах отчётливо нарисованы "царапины", которые явным образом обозначают нужный маршрут.

Ответить
0

Если бы эти маршруты всегда были видны - было бы круто. Но, например, в игре часто встречаются столбы "фаллического" типа, когда продолжение трассы может находиться по ту сторону скалы и из-за особенностей камеры найти нужный маркер бывает сложно. Ну и банальные недоработки, когда виден уступ следующего уровня, но до него типа не дотянуться, т.к. маршрут идёт иначе. В общем, лазанье в Хорайзоне - боль.

Ответить
0

это в Одиссее можно на любую скалу залезть в любом месте и по любому пути

Ответить
1

У меня прям дежавю такое ощущение, что я это уже читал...

Ответить
0

На гамасутре ещё было.. тоже давно, кажется в прошлом году

Ответить
0

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

Ответить
0

Во второй не было. В третьей была только лошадь, да и на той можно было только вперёд скакать. В первой был, да, но бестолковый и никому не нравился.

Ответить
0

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

Ответить
1

Не спорю, просто в прошлых частях он был с кучей оговорок.

Ответить
0

Хоть с оговорками, но был. И этот факт нельзя отрицать

Ответить
0

Интересная статья, спасибо!

Ответить
0

Слишком схематично показано - ни одной формулы нет.

Ответить
0

Билд натскринах время 20:23 - кранч детектед! 

Ответить
0

Билд собирает билд-машина, часто автоматически, так что это не докозательство :)

Ответить
0

Но скрины-то делали руками, а значит всё-таки кранч!

Ответить
0

На скринах написано когда был собран билд - когда они делали скрины я не нашёл. Нету кранча!

Ответить
0

Я эти скрины видел на Хабре год назад

Ответить
–3

Блин, анчартэд сосет. имхо

Ответить

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovz", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "chfbl", "p2": "gnwc" } } } ]