Невидимые AI-тестировщики Tom Clancy's The Division
Введение
Разработчики такой игры-сервиса, как Tom Clancy's The Division сталкиваются с множеством разнообразных проблем. Обеспечение стабильности игры для пользователей с разным интернет-соединением, обработка разных путей передвижения игрока по миру, исследование интерактивных систем и игровых испытаний, но что более критично, проверка, что игра работает как ожидается, чтобы игрок не разочаровался, потому что мировые события не сработали или миссии не завершились. Безусловно, это является испытанием для QA и команды тестирования игры в целом. Особенно когда по мере усложнения игры в несколько раз увеличиваются и рабочие нагрузки QA. И здесь искусственный интеллект может помочь не только создать внутриигровую функциональность, но и изменить подход к разработке игры.
В этой заключительной статье об ИИ в Division 2 я собираюсь рассмотреть секретных ИИ игроков, которые проводят плейтесты Tom Clancy's The Division, с опытом Philip Dunstan - ведущего ИИ-программиста в отделе разработки Massive Entertainment. Я буду рассматривать кастомных ИИ-ботов, которые были развёрнуты для проверки отдельных частей игры, и как первый выпуск DLC после релиза игры изменил подход к ее тестированию, который затем был перенесён и в Division 2.
Тестовые фреймворки
Tom Clancy's The Division располагает не одним, а двумя видами ботов, которые используются для помощи в тестировании игр франшизы: серверные боты и клиентские боты. Серверные боты -- как можно предположить -- запускаются сразу на сервере и не взаимодействуют с игрой как игроки. Как бы я объяснил за минуту: эти боты ведут себя полностью противоположно реальным пользователям и разработаны для стресс-тестирования предела возможностей серверов Division. Тем временем, клиентские боты запускаются как если бы они играли на сборке со стороны клиента. Они предполагают контролирование игры за игрока, придерживаясь тех же правил, что и обычный игрок, вплоть до того, что все игровые системы верят, что это персонаж реального пользователя. У них нет специальных модификаций, которые позволяют им манипулировать или обманывать игру, также они созданы для запуска на любой платформе: ПК, Xbox, PlayStation. Их работа -- проверять, что игра действительно готова для игроков: тестировать миссии основного сюжета, бродить по открытому миру и собирать все показатели производительности на протяжении всего пути, которые помогают разработчикам лучше понять как система будет взаимодействовать с игроками, когда они войдут в Вашингтон.
Нужда в этих инструментах постоянно растёт. По мере расширения внутриигровых миров в игре-сервисе также в геометрической прогрессии растёт количество потенциальных багов. Даже если вы рассматриваете оба Division, то это не просто карта Washington DC, которая больше Манхэттена. Каждое обновление обеих игр включает не только новый контент, который содержит баги, но также способно изменить или повлиять на уже имеющийся контент в игре, что подразумевает ещё больше ошибок, потому что вы сломали то, что уже работало. И это усугубляется тем, что игры-сервисы должны обновляться часто, чтобы удерживать игроков и поддерживать вовлечённость, и эти обновления должны работать. Это проблема, которая превосходит возможности тестировщиков: по мере создания нового и модификации существующего контента необходимо контролировать качество и того, и того. Это тысячи часов игры и становится всё тяжелее соблюдать баланс. Иногда требования к тестирования превышают количество свободных тестировщиков, которые могут просто сесть и поиграть в игру…
Серверные боты
Philip Dunstan: "Как вы можете представить, мы создаём серверы, которые вмещают тысячу игроков, но действительно трудно найти ту самую тысячу пользователей, которые будут играть одновременно. И если вы хотите знать, выдержат ли ваши серверы такую нагрузку в течение недели, то будет настоящим вызовом найти тысячу игроков, которые могут играть непрерывно, чтобы проверить стабильность игры на таком раннем этапе разработки.”
Как упоминалось в предыдущей статье, оригинальная Tom Clancy's The Division запускается с серверным ботом: это ИИ-игрок, который заходит на Division-сервер и взаимодействуют с игрой внутри. Это необходимо, чтобы проверить, работают ли игровые системы в соответствии с ожиданиями разработчиков. Как объяснял Филип, пока команда разработки выигрывает от этого, ИИ, созданный ими, остаётся простым технически и много обманывает.
Philip Dunstan: "На ранних этапах Division 1 у нас были серверные боты, которые подключались к игре, они были... ну, очень глупы. Они не пытались имитировать стиль поведения игрока вообще. Они просто перемещались по всему миру, искали NPC, стреляли в них и сразу телепоровались в другую часть мира. Ещё у них включен режим бога, их нельзя убить, и они просто делают это постоянно. Иногда они отключаются от игры и переподключаются, могут объединяться в группы в co-op, и потом отключаются. Мы тестировали нашу способность объединять игроков в группы, чтобы создать все фазы для подключения и отключения игроков. И тогда, на удивление, у этих ботов были невероятно высокие показатели эффективности. Даже если они не пытаются имитировать игрока, их метрики производительности очень близки к тому, что мы наблюдаем у пользователей."
"Мы, если честно, не смогли бы зарелизить стабильные Division 1 или Division 2 без этих ботов. Division 1 и Division 2 были крайне стабильными играми, учитывая сколько игроков у нас было после запуска. И если вы посмотрите на прошлогоднюю статистику, то увидите, что число существенных простоев, вызывающих проблемы, было чрезвычайно низким. И мы достигли этого, потому что можем тестировать до тех пор, пока не останемся довольны, при помощи автоматизации."
Клиентские боты
Хоть серверные боты были внедрены на ранних этапах, клиентские боты были совсем другой историей, которая началась с интересной проблемы в первой Division. Но не с запуска, а со второго DLC “The Underground”.
“The Underground” открыл абсолютно новый режим в Division, доступный из подвала вашей базы: почта Джеймса Фарли через улицу от Мэдисон Сквер Гарден. В подполье игроки могли выполнять процедурно сгенерированные миссии, где были разные вражеские фракции, скрывающиеся под Нью-Йорком. И отсюда начались новые проблемы: в отличие от остальных миссий Division, которые были линейными, процедурная генерация породила тысячи возможных вариаций прохождения. Как проверить каждую из них, чтобы быть уверенными, что она работает?
Philip Dunstan: "Клиентские боты были интересны. The Underground, поскольку это процедурная генерация, была уникальным в своём роде вызовом. До этого момента мы могли проверить, можно ли завершить уровень, попросив QC пройти его и убедиться, что это возможно. У нас в Ubisoft большая команда тестирования, которая могла покрыть все возможные сценарии, в том числе и этот. И это прекрасно работало для запуска Division и режима выживания. Но в “The Underground” мы получили сотни и тысячи вариаций уровня. Их больше нельзя было тестировать вручную. У нас была техническая проблема - генерация navmesh'а работала некорректно, и когда мы генерировали navmesh для подземного уровня, одна вариация могла быть играбельной, но позже, когда кто-то перемещал несколько пропсов туда и сюда, последовательная генерация navmesh'а давала сбой. Стало не просто проблемой определить сколько тестировщиков нужно, ручное тестирование совсем потеряло смысл."
Клиентские боты возглавлялись одной студией-партнёром Massive, работающей над Division: Ubisoft Reflections в UK. Как упоминалось ранее, команда выбрала более сложную задачу создания абсолютно новой системы. ИИ-боты не были основаны на существующих архетипах ИИ, вместо этого был разработан кастомный слой искусственного интеллекта, который контролировал ввод игрока. Это помогает держать всю разработку инструментов изолированно от основного ИИ противника, но, как упоминалось выше, что каждая система в результате верила, что игрой пользуется реальный человек. ИИ имел доступ в дебаг-консоль и инструменты, позволяя некоторым игровым действиям обходить слой контроллера и обрабатываться персонажем игрока. Это означает, что подобно игроку, ИИ может выполнять действия, только если состояние игры позволяет это.
Одним из важных приоритетов для ботов было тестирование покрытия навигационной сетки (navmesh'а, или navigation mesh). Navmesh -- это структура данных, встроенная в уровень, которая сообщает ИИ, куда они могут перемещаться. Без работающего navmesh'а ни дружественные NPC, ни игроки, ни враги не смогут перемещаться по карте. Следовательно, если какая-то его часть не работает, необходимо это немедленно идентифицировать для дальнейшей проверки геймдизайнерами и разработчиками. Помимо этого, были созданы боты-преследователи, которые позволяли ИИ-игрокам следовать за людьми, чтобы проверять, как можно использовать navmesh для передвижения в сложных условиях и на боевых аренах. У них было простое боевое поведение, они не обращали внимания на свой уровень здоровья, опасности и уничтожали цели, просто повернув по направлению к ним голову и нажав на курок.
Со временем это масштабировалось от низкоуровневых тестов с перемещением в пространстве и простого боя до возможности пройти полноценную миссию. Что потребовало усложнения системы и взаимодействия с отдельной системой миссий, встроенной в кодовую базу Division, поскольку нужно было иметь доступ к цели миссии, а также все изменения в ней в любой момент времени. Процесс стал более детализированным - боты убивали всех врагов в локации, перемещались к маркеру, уничтожали объекты, если нужно, и взаимодействовали с NPC или миром в доступном им радиусе.
Вместе с успешным внедрением ботов мы получили не только возможность тестировать сотни вариаций в “The Underground” за выходные, но и проводить ночные тесты по всем сюжетным линиям главной ветки из первой игры.
Philip Dunstan: "Это был большой успех для “The Underground”, наша система стала важной частью тула для прохождения, но что ещё важнее, когда мы ввели новых ботов в Division 2, они гораздо лучше справились с проверкой производительности клиента во время прохождения уровня. Вы могли собрать в одной комнате несколько консолей, на которых были запущена игра с ботами, и записывать их показатели FPS и нагрузку на оперативную память каждую ночь или 24/7, и на основе этой информации создавать отчёты. В открытом мире можно было собрать группу клиентских ботов, которые перемещаются по открытому миру и находят те части, где производительность становится проблемой. Они стали действительно важной частью тестирования производительности на консолях и это работает точно так же и сейчас, в Division 2."
Переход этой технологии от Division 1 к Division 2 всё ещё требовал много дополнительной работы, а также изменения в рабочих процессах и для тестировщиков, а также для левел/геймдизайнеров. Последовательность в миссиях в Division 2 не такая линейная, как в первой игре, потому боты могли запутаться в необходимых для прохождения действиях в некоторых частях миссии. Поэтому во время разработки Division 2 левел дизайнеры добавили невидимую разметку тестирования в каждую миссию игры. Она совершенно незаметна для игроков и не влияет на наш игровой опыт, но клиентские боты могут читать её как направление для продолжения своей работы. Тесты миссий запускаются по ночам и помогают избежать проникновения ошибок на продакшн, поскольку они выявляют хрупкие места в виде неработающего контента миссии или не работающих должным образом игровых систем. Также есть отдельный вид ошибок регистрации, когда клиентский бот не работает как ожидалось и разработчики стараются обеспечить нулевые показатели сбоев во всех трёх категориях.
К тому же, тестирование открытого мира используется командами QA и TechArt в игре, чтобы определить области, в которых имеются просадки производительности, затем они сообщают о конкретных ошибках после просмотра данных. По мере посещения всех игровых пространств клиентскими ботами идентифицируются области, в которых они застряли и не могут вернуться, где бывают падения частоты кадров, которые могут быть обусловлены большим числом высокополигональных объектов или проблемами с текстурами, или даже системой частиц в окружающей среде. И, наконец, есть ещё ИИ Gym, который посвящён тестированию и функциональности ботов и основных игровых механик при их изменениях.
Также всё ещё есть ограничения возможностей этих систем из-за сложностей игрового мира, которые интуитивно понятны игроку, но клиентскому боту потребуется рука помощи. И, конечно, несмотря на большой толчок автоматизации, ценнее всего, когда люди садятся и просто играют в игру.
Philip Dunstan: "Есть определённые ограничения того, что могут делать наши боты. Повторюсь, они не пытаются играть как люди, мы не пытаемся смоделировать человеческую игру. Они перемещаются в уровнях по “золотому пути”, вручную спроектированному так, как вы обычно перемещаетесь по уровню. Они должны знать как взаимодействовать с дверями или как взаимодействовать с ноутбуками, чтобы разблокировать следующую часть миссии. Они требуют некоторой ручной настройки скриптов. Так что, на самом деле, они не играют как настоящие игроки. Но они всё ещё приносят много пользы, несмотря на свои ограничения. Вам всё ещё нужно иметь девтестеров, проверяющих, что вы не можете выйти за границы карты, что нет блокеров навигационных сеток, мешающих вам добраться до некоторых частей уровня, потому что клиентский бот будет двигаться только по золотому пути и не будет проверять эти области боевого пространства. В итоге, мы получаем систему смоук-тестирования на ранних этапах, которая может сообщить: “с этим уровнем что-то неладно”.
Заключение
Так как игры продолжают становиться больше и сложнее, появляется реальная необходимость автоматизации критических аспектов разработки. Будь то тестирование фреймворков, пакетных процессов арт-пайплайнов (batch processes of art pipelines), контроллеров анимации, дизайн-инструментов и остального. Все эти сервисы необходимы команде разработки. Они позволяют программистам, художникам и дизайнерам сосредоточить свои силы на создании лучшей игры. Искусственный интеллект постепенно меняет способ создания игр и применяется в таких направлениях, о которых игроки даже и не думали. Настоящее достижение -- это использование ИИ такими новыми и прагматичными способами, которые помогают решать проблемы, всплывающие во время разработки. Это сохраняет проект на плаву и в рамках бюджета. Но важно, чтобы игроки понимали проблемы, связанные с созданием игр: будь то Division 2, другие проекты Ubisoft или всей индустрии в целом.