Gamedev Владимир Семыкин
3 231

Как работает искусственный интеллект в Sea of Thieves — часть первая

Трудности создания ИИ в игре-сервисе.

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

Автор блога AI and Games Томми Томпсон опубликовал на сайте Gamasutra первую часть разбора работы ИИ в Sea of Thieves. Он рассказал о том, почему сложно создать адекватный искусственный интеллект в игре-сервисе, а также описал, в чём заключается разница между типами миссий с точки зрения организации игрового процесса многопользовательского тайтла. Мы выбрали из текста самое интересное.

Sea of Thieves родилась из желания создать что-то уникальное. Хоть Rare и стремилась впервые сделать игру-сервис, дизайн Sea of Thieves максимально ориентирован на пользователей — они могут выполнять задания в собственном темпе, что позволяет расставлять приоритеты для тех событий, которые нравятся больше всего. Со временем Sea of Thieves набрала базу фанатов, которые продолжают плавать по морям в поисках приключений.

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

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

Unreal Engine 4 известен как надёжный движок как для сетевого геймплея, так и для кроссплатформенной разработки, что было крайне важно, учитывая намерение запустить игру как на Xbox One, так и на ПК. Кроме того, UE4, возможно, имеет самый надёжный набор инструментов ИИ, доступных в коммерческом движке для разработчиков.

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

Когда разработка Sea of Thieves только началась, в качестве эксперимента в ней использовалась система запросов среды (или EQS), которая может моделировать сенсорные входы и минимизировать нагрузку на железо для проверки адекватной реакции NPC. Однако этого было недостаточно для реализации задумки Rare. Только скелеты и другие наземные ИИ, такие как свиньи и курицы, используют оригинальные ИИ-структуры.

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

Кроме того, врагам, таким как кракены и корабли с привидениями, требовались специальные инструменты, которые позволили бы ИИ вести себя так, как это просто невозможно в UE4 по умолчанию. Таким образом, Rare удалось создать уникальные системы, которые вписываются в существующий рабочий процесс ИИ в Unreal Engine, и гарантировать, что набор инструментов не станет слишком громоздким для управления.

В течение первого года в игре было три основных типа действий, в которых могли участвовать пользователи. Каждое из них имеет свои собственные особенности, связанные с геймплеем, структурой миссий и поведением ИИ. Неигровые персонажи давали три вида миссий от разных торговых компаний: поиск клада («Златодержцы»), доставка определённого объекта («Торговый союз»), охота на оживших скелетов («Орден Душ»).

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

Кроме того, в квестах «Торгового союза», игра генерирует нужных животных в определённых регионах острова, чтобы пользователь без особых проблем мог их поймать. Недавно в игре добавилась четвёртая компания — «Братство охотников», которая представила рыболовную механику и новый искусственный интеллект рыб.

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

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

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

Со временем каждый из этих типов миссий прогрессирует по-своему, создавая всё более сложные задачи для игроков. Каждая из этих цепей миссий изменяется независимо друг от друга, что позволяет игрокам расставлять приоритеты по линиям квестов, которые они предпочитают. Следовательно, после нескольких часов игры в «Ордене Душ» можно перейти к миссиям «Торгового союза», но масштаб и сложность последующей миссии не будут зависеть от предыдущих часов игры.

Учитывая, что на сервере обитает сразу несколько команд пользователей, весь расчёт поведения ИИ может потребовать немало ресурсов. На самом деле NPC для каждой миссии появляются только тогда, когда это необходимо. Из-за этого не тратятся ресурсы процессора и памяти на остров, который находится далеко от ближайшего игрока. Этот процесс гарантирует, что охота одной команды на мегалодона не влияет на другую команду, которая выполняет миссию «Ордена Душ».

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

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

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

#ИИ #геймдизайн

{ "author_name": "Владимир Семыкин", "author_type": "editor", "tags": ["\u0438\u0438","\u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 7, "likes": 48, "favorites": 86, "is_advertisement": false, "subsite_label": "gamedev", "id": 53124, "is_wide": false, "is_ugc": false, "date": "Thu, 06 Jun 2019 15:39:40 +0300" }
Подкаст «Жиза ГД»:
Press X to win
Слушать фоном🎧
{ "id": 53124, "author_id": 94357, "diff_limit": 1000, "urls": {"diff":"\/comments\/53124\/get","add":"\/comments\/53124\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/53124"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64954, "last_count_and_date": null }

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

Популярные

По порядку

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

Как работает ИИ - запускают живых людей по геймпассу

Ответить
–1

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

Ответить
5

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

Ответить
0

это финансово невыгодно, вы еще не знали?

Ответить
–1

главное что бы CD Projekt Red, Obsidian, inIxile, Bethesda и прочие прочие об этом не узнали.

Ответить
2

ну обсидиан-то как никто другой об этом знает, они уже не раз были на грани закрытия

Ответить
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" } } } ]
В Steam появилась функция продажи
подержанных цифровых копий игр
Подписаться на push-уведомления