Gamedev Владимир Семыкин
13 886

Глаза охотника: как ИИ в Horizon Zero Dawn воспринимает окружение

Сложная система навигации и отдельные карты авиамаршрутов.

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

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

Автор блога AI and Games Томми Томпсон опубликовал вторую часть разбора принципов функционирования ИИ в Horizon Zero Dawn. На этот раз он рассказал про системы, которые помогают каждой отдельной машине выстраивать своё поведение в зависимости от окружающих условий. Мы выбрали из материала главное.

Сенсоры и передвижение

Существует значительное количество уникальных датчиков, которые могут использовать машины: глаз Watcher; радары и датчики приближения Longlegs; слуховые датчики, которые улавливают всё от взрывов на большом расстоянии до бросков камня; способность ощущать столкновение с игроком. У всех роботов есть набор этих сенсоров, каждый из которых откалиброван по-разному. Благодаря этому, например, легче подкрасться к Watcher или Grazer, но намного сложнее застать врасплох Stalker.

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

Эти данные сообщают получателю — роботу, который что-то обнаружил, — информацию о том, что он нашёл. Следовательно, машины и NPC могут различить мёртвое тело и стрелу, которая пронеслась мимо их головы. Это также гарантирует, что они не обнаружат героя, который прячется в высокой траве.

Каждый персонаж — как машина, так и человек — может обрабатывать и интерпретировать сенсорные данные по-разному, поэтому одни будут игнорировать определённую информацию, а другие будут очень быстро реагировать на неё. При этом, многое зависит от чувствительности датчиков, что помогает разным персонажам реагировать на информацию по-своему.

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

А для противников в Horizon Zero Dawn — это особенная проблема, потому что они должны вести себя одновременно и как роботы, и как животные. Для этого важно, чтобы навигационная и боевая системы обращали внимание на расстояние, которое машина пройдёт, и учитывали набор инструментов анимации, который регулирует её визуализацию.

Зона триггера для активации анимации атаки

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

Навигация

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

Навигационная сетка для наземного робота

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

Следовательно, люди могут перемещаться по маленькой сетке наряду с Watchers, в то время как у Thunderjaw и ему подобных есть своя навигационная сетка. Ещё есть две дополнительные навигационные сетки: одна для плавающих машин, таких как Snapmaw, а также уникальная сетка, которая гарантирует, что машины стоят в подходящих местах, если игрок пытается залезть на них.

Более крупные животные имеют отдельные навигационные сетки

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

Как упоминалось в первой части, патрули активно избегают высокой растительности, но они будут проходить через неё при необходимости. А небольшие скалы и деревья могут стать непреодолимыми препятствиями для всех, кроме Behemoths, Rockbreakers и Thunderjaws. Эти звери могут разбивать камни на части и выкорчёвывать деревья при условии, что они находятся в состоянии гнева или преследуют игрока. В других обстоятельствах они будут относиться к ним так же, как к любому другому препятствию.

Перемещение по воздуху

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

В мире Horizon Zero Dawn можно найти холмы, леса, скалы и крутые горные подъёмы. Glinthawk и Stormbird должны хорошо ориентироваться в воздухе: взлетать, следовать по маршруту патрулирования, приземляться, а также пикировать и атаковать игрока. Для всего этого, существует отдельная навигационная система в воздухе.

Система навигации в воздухе использует методы Mip Map для хранения карты высот с различными уровнями детализации

Это оказалось испытанием для команды, которая создавала ИИ. Используемая техника называется — «иерархическое планирование пути по картам MIP». MIP Mapping — это метод, используемый в компьютерной графике, который направлен на уменьшение необходимого объёма памяти за счёт смены разрешения одних и тех же текстур или изображений. Он идеально подходит для управления уровнем детализации в играх, потому что объекты на расстоянии нескольких сотен метров всё ещё видны, но используют меньше памяти, чем те, которые находятся прямо перед пользователем.

Когда машина летит над землёй, ей не нужно точно знать локальную геометрию локаций, в которой она окажется через минуту, но необходимо знать всё вокруг на случай, если ей понадобится приземлиться. Система планирования траектории для летающих машин использует MIP Mapping для отображения высот локальной геометрии. Когда происходит передвижение сверху вниз, карта становится всё более сложной и реалистичной. Уровень 3 — это простая и абстрактная модель, а карта уровня 0 — довольно точная.

Данные о высоте на разных уровнях Mip Map и рассчитанные траектории полёта

Как и навигационная сетка, MIP-карты создаются в моменты, когда это необходимо для расчёта полёта в пределах фиксированной области. Когда роботу нужно лететь в какое-то место, ИИ использует алгоритм поиска A* по самому высокому уровню Mip Map, благодаря чему вычисляет простейшую траекторию по грубой версии геометрии. А* делает взлёт и преодоление препятствий более ресурсоёмкими, поэтому машины чаще облетают горы, а не пролетают над ними.

Каждый раз, когда ИИ активирует алгоритм A*, он имеет только фиксированное количество итераций, поэтому, как только траектория построена на самой простой MIP-карте (известной как уровень 3), он проверяет вычисленный путь на картах уровня 1 и 0. Такая система создана для реалистичного и более точного воспроизведения передвижения. Кроме того, он сглаживает путь так, чтобы избежать крутых поворотов.

Эта система работает очень хорошо, учитывая, что любая машина, находящаяся в воздухе, всегда имеет план полёта. Но у такого подхода есть одно ограничение: учитывая, что система функционирует на основе понятия максимальной высоты определённого региона карты, роботы не могут летать под мостами или скалами.

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

Для взлёта и посадки используется особая система, которая взаимодействует с навигационной сеткой и воздушными MIP-картами. Обычно для приземления она ищет точки, находящиеся чуть выше средней высоты на поверхности, а затем высчитывает правильный угол и скорость. На земле машина использует навигационную сетку, соответствующую её размеру. При падении используется тот же инструмент.

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

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

#ИИ #геймдизайн #лонг #horizonzerodawn

{ "author_name": "Владимир Семыкин", "author_type": "editor", "tags": ["long","\u043b\u043e\u043d\u0433","\u0438\u0438","horizonzerodawn","\u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 40, "likes": 150, "favorites": 207, "is_advertisement": false, "subsite_label": "gamedev", "id": 39393, "is_wide": false, "is_ugc": false, "date": "Mon, 18 Feb 2019 16:51:18 +0300" }
{ "id": 39393, "author_id": 94357, "diff_limit": 1000, "urls": {"diff":"\/comments\/39393\/get","add":"\/comments\/39393\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/39393"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "last_count_and_date": null }

40 комментариев 40 комм.

Популярные

По порядку

Написать комментарий...

Комментарий удален

42

Лол, один из лучших сюжетов за последние годы, фасттравел есть сразу почти, трав хватает всегда, роботов убивать по сюжетке не надо массово ни разу. Персонажи - не огонь, согласен. Но ты играл вообще?) Бред какой-то говоришь из головы

Ответить
17

Как же вы откровенно за*бали. Стоит появится статье по любой хорошей игре, как найдутся люди, которые считают своим долгом смешать ее с говном. Это касается любой игры, даже таких шедевров как TLOU, RDR 2, Ведьмак 3 или любая Зельда. Причем ладно бы это была нормальное критическое рассуждение насчет игры с ее минусами и плюсами. Тут же один спошной негатив.

Не понравилась игра? Проходите мимо. Такое может случится с каждым. Мне например не нравится Скайрим (в отличие от Моры и Обливиона) и серия Масс Эффект (в отличие от Dragon Age Origins). Но я ни разу не говорил о них ничего плохого, т.к. понимаю что эти игры отличные, но не для меня.

Ответить
–12

Ругают игру а не статью. Критика заслуженная к игре

Ответить
9

Критика - это когда говорят о плюсах и минусах. Тут же сплошные минусы перечислены. Игра не такой мусор как о ней пишут. В ней масса замечательных моментов.

Ответить
2

Как же вы откровенно за*бали.

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

Критика - это когда говорят о плюсах и минусах. Тут же сплошные минусы перечислены.

Ты хочешь что бы каждый коммент стал СТЕНОЙ текста на 3-5 минут чтения? Нет, серьезно - тебе очень интересно почему случайному человеку из интернета ненавистна условная Zelda, и ты готов регулярно тратить по 10-15 минут своей жизни на чтение "аргументации"? Не проще шлепнуть минус и забыть об этом (предположительно) двуногом недоразумении?

Хватит страдать херней! Комменты созданы что бы делиться мнением о предмете обсуждения в новости\статье, а не писать эссе на тему. И нигде не написано о том что все должны улыбаться и махать. Поэтому если пользователь считает что условный Boobs Saga или tLoU говно и позорит игровую индустрию - он имеет полное право это написать, даром что он при этом... не флудит.

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

Ответить
0

почитай на досуге, а это высер, а не критика)
https://f3.livejournal.com/106428.html

Ответить
5

На кой вы троллей кормите? Чувак регается и пишет что всё гавно. Не о чем с ним разговаривать.

Ответить
23

Фастревела в опенворлде нет, ну точнее есть, ток его хуй найдешь

Сразу бы сказал, что не играл, а видос чей-то на ютубе смотрел 5 минут

Ответить
5

Ты точно играл?

А за слова про сюжет тебе можно в лицо плюнуть

Ответить
3

Ну ладно уж, сюжет там и правда говёненький, в отличие от шикарнейшего лора

Ответить
0

а в чем лор?) сюжет наоборот хороший, а лора вообще кот наплакал. Лор это вон к ТЕС, сюжет там правда не завезли как раз.

Ответить
0

Чувак, это ММО. Все твои доебки к соло-игре, это попытки сделать из нее какой-нибудь ВОВ.

Ответить
37

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

Ответить
2

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

Ответить
0

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

Ответить
0

Но по умолчанию Horizon просто целую панель управления показывает.

Ответить
3

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

Ответить
21

Давайте уже вторую часть делайте блеат!

Ответить
6

да делают уже, к релизу пс5 доделают

Ответить
0

или через год-другой после.)
все же помнят как плохо игорь плавает на релизе ?)

Ответить
0

Ну надож консоль как то новую продавать, к тому же в этот раз они ее могут выпустить сразу на двух поколения консоли - на PS4(или ток на PS4 Pro) выпустить и на PS5.

Ответить
0

продавать то просто - пишем "совсем скоро выйдет хорайзен два !!!111"

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

Ответить
10

В игре супер продвинутый ИИ машин,а вот разбойников немного обделили умом

Ответить
5

Потрясающая игра ! Это было незабываемо. А какое длц ммммм. Разрабы СПАСИБО !!! 😊

Ответить
–2

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

Ответить
4

Чем они не хороши?
glinthawk разве что орут противно))
а так, весьма замечательные по-моему)
А на ньюгейм плюс и ультрахарде ни разу у меня того же glinthawk ваншотнуть не получилось.

Ответить
3

Ваншотаешь? Буревестника-то? Кинь ссылку на видео, где ты это делаешь, о сенсей. Я даже готов выделить десять выстрелов

Ответить
0

Коршунов, именно они основной летающий враг и просто бесят.

Ответить
1

А ну расскажи каким оружием можно ваншотить летающих врагов

Ответить
–11

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

Ответить
2

Пример того, как может выглядеть идеальная статья на DTF:
- про игру
- разбирает новаторскую механику
- не затрагивает жареных тем (и поэтому не наберёт 1000+ комментов).

Ответить
1

Судя по игровым ощущениям логика у всех роботов одна - просто бежать прямо на игрока сломя голову)

Ответить
1

Незабываемая встреча в лесу 😊

Ответить
1

Игра мне дико понравилась своим сеттингом, геймплеем, левелдизайном и сюжетом. Но лично меня в ней напрягает непроработанность "незначимых" кат-сцен, особенно во второстепенных заданиях (как по мне, они лучше проработаны в Frozen Wilds), частые графические артефакты с тенями, дождём, пылевыми бурями и т.п. А вот ИИ как по мне как хорош, так и "сука что за срань с тобой происходит?": во время потной перепалки группа роботов может и скоординированные атаки проводить, и убежать в даль оставив 1-3 бойцов, и застыть на месте забив на меня, изредка подавая какие-то телодвижения (частая проблема громозевов и бегемотов).

Ответить
0

Моя навигация в ночь пятницы

Ответить
0

такая красивая статья, а на деле лол
p.s. прошел полное издание

Ответить
0

Прямой эфир

[ { "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": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "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, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "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" } } } ]
Пять простых способов разогнать свой ПК
с помощью соли и чайной ложки
Подписаться на push-уведомления