Автоматизируйте игровое тестирование: Создание виртуальных игроков для моделирования игр

Автоматизировать игровое тестирование очень просто: создайте виртуального игрока (игрового агента), а затем используйте Game Simulation для проведения автоматизированных игровых тестов в масштабе. Ознакомьтесь с тремя примерами, описывающими, как iLLOGIKA, Furyion и Ritz Deli создали виртуальных игроков, переложив почти 40 000 часов (~4,5 года) автоматизированного игрового тестирования на Game Simulation.
Игры сложны для тестирования по той же причине, что и увлекательны - у игроков есть свобода формировать свой собственный опыт. Таким образом, игры имеют огромную площадь для появления ошибок и недочетов в дизайне. Разработчики должны часто тестировать с большим охватом, чтобы решать проблемы и надежно соблюдать сроки.
Раньше разработчики выбирали между тестами с низким охватом и высокой частотой (модульные тесты в CI-конвейере) и тестами с высоким охватом и низкой частотой (плейтесты перед крупным релизом).
Мы создали Unity Game Simulation, чтобы помочь разработчикам тестировать с охватом плейтестов и частотой юнит-тестов. Unity Game Simulation позволяет разработчикам проводить автоматические игровые тесты в облаке. Чтобы использовать Unity Game Simulation:
Создайте виртуального игрока (игровой агент).
Используйте пакет Game Simulation, чтобы создать инструменты для симуляции игры.
Реализуйте удаленно настраиваемые параметры для моделирования различных вариантов вашей игры. Внедрите метрики для регистрации данных, необходимых для ответа на вопросы проектирования.
Используйте пакет Game Simulation, чтобы создать и загрузить сборку вашей игры на наши серверы.
Запускайте свою игру тысячи раз из пользовательского интерфейса Game Simulation (UI).
Эта статья в блоге посвящена шагу 1 - созданию виртуального проигрывателя для автоматизированного тестирования. Шаги 2-4 просты и описаны в документации по Game Simulation. Вы можете попробовать Game Simulation бесплатно прямо сейчас.
Виртуальный игрок эмулирует действия реального игрока, чтобы протестировать некоторые аспекты вашей игры. Для простых тестов, таких как проверка того, что ваша игра может работать в течение 60 минут без возникновения исключения, виртуальный плеер может быть простым скриптом на C# с несколькими строками кода, который запускает сцену и выполняет случайные действия.
Для более сложных тестов, таких как проверка того, что все оружие примерно одинаково по силе или что каждый уровень может быть пройден, виртуальный игрок может быть создан с помощью тех же методов, которые обычно используются для создания неигровых персонажей (NPC). К ним относятся:
- Эвристические сценарии: Сценарий с очень простым правилом или алгоритмом
- Деревья поведения: - визуальное представление плана, состоящего из условий и задач.
- Конечные автоматы состояний: Сценарий с несколькими состояниями, между которыми чередуется виртуальный игрок, например, поиск и атака
- Unity AI Planner: Каркас визуального планирования с интуитивно понятным Unity Editor UI
- Обучение с подкреплением и имитационное обучение с использованием инструментария Unity ML-Agents: Посмотрите, как мы создали виртуальный плеер для Snoopy Pop от Jam City с помощью ML-Agents.
Ниже мы рассказываем о том, как три студии создали виртуальных игроков, в общей сложности выгрузив почти 40 000 часов игрового тестирования в Unity Game Simulation. Особенно примечательно то, что все три студии смогли получить огромную пользу от Game Simulation, при этом опираясь на относительно простые подходы к созданию виртуального игрока.
Инди-студия Ritz Deli разработала Eraser Blast, головоломку в стиле линкер, в которой участвуют более 50 персонажей, каждый из которых обладает уникальными игровыми характеристиками. Ritz Deli использовала Unity Game Simulation для запуска сотен симуляций, чтобы убедиться, что каждый персонаж генерирует все больше очков и монет по мере увеличения уровня XP.
Техническому директору Ritz Deli Эрику Джордану потребовалось создать виртуального игрока, способного решать головоломки в стиле линкера. Он реализовал виртуальный плеер с помощью скрипта на C#, основанного на простом эвристическом жадном алгоритме. Для игры Eraser Blast алгоритм подбирает самую длинную возможную цепочку пузырей одного типа:
Создайте набор всех возможных вариантов выбора одного пузырька.
Неизвестный тип блока "__block", укажите для него сериализатор в свойстве `serializers.types`. Неизвестный тип блока "__block", укажите для него сериализатор в свойстве `serializers.types`.
Выберите пузырь из набора правильных пузырей, который имеет наибольшее количество доступных совпадений.
Повторяйте шаги 1 и 2 до тех пор, пока ни один из доступных пузырьков не будет соответствовать действительности.
Обновите метрики для общего количества очков и монет в награду.
iLLOGIKA - студия, создавшая Rogue Racers, раннер в жанре "игрок против игрока" (PvP). Игроки создают колоды карт, содержащие бонусы, которые игрок использует во время гонки. iLLOGIKA использовала Game Simulation для тестирования каждой комбинации карт, чтобы убедиться, что ни одна карта или колода не является слишком мощной.
Разработчики из iLLOGIKA создали виртуальный плеер с помощью скрипта на C#:
Дайте виртуальному игроку возможность успешно доехать до конца гонки, используя лучи для обнаружения приближающихся препятствий, а затем избегая их, меняя полосы движения, пригибаясь или прыгая.
Добавьте ряд правил, описывающих, когда использовать карты в зависимости от состояния игры, включая текущее здоровье игрока, положение других игроков, их способности карт и т.д.
Неизвестный тип блока "__block", укажите для него сериализатор в свойстве `serializers.types`.
Для каждого действия, описанного в шагах 1 и 2, выберите неправильное, но возможное действие, чтобы учесть непредсказуемость реального игрока.
Furyion - разработчик Death Carnival, шутера с видом сверху вниз и уникальной системой сокетов оружия, позволяющей игроку выбирать из более чем ста тысяч возможных комбинаций оружия, патронов и оружейного модуля - каждая комбинация определяет уникальный игровой опыт.
Герберт Юнг, основатель и директор Furyion, использовал инструмент создания дерева поведения под названием Behavior Designer для создания виртуального игрока, чтобы оценить среднее время прохождения уровня для каждой комбинации оружия, патронов и модуля оружия. Затем Герберт провел тысячи симуляций с помощью Unity Game Simulation, чтобы проверить каждую комбинацию гнезд для оружия, что позволило сэкономить более 600 часов игры.
Для создания виртуального плеера Герберт использовал интуитивно понятный пользовательский интерфейс Behavior Designer и множество готовых задач в Behavior Designer:
Если враг находится в зоне действия, атакуйте его.
Если в зоне видимости нет противника, двигайтесь к выходу, пока в зоне видимости не появится враг.
Повторяйте шаги 1 и 2, пока не останется ни одного врага.
Перейдите к воротам в конце уровня и, как только уровень официально завершится, вызовите Application.quit().
Более подробную информацию о том, как создать бота с помощью Behavior Designer, можно найти в документации на странице Behavior Designer's Asset Store.
Команда Unity Game Simulation готова помочь вам в создании виртуальных игроков для автоматизированного тестирования, начиная с виртуальных игроков для QA-тестирования. Свяжитесь с нами, если вы хотите одними из первых попробовать наши новые инструменты и функции для создания виртуальных игроков для QA-тестирования.
Узнайте больше о том, как начать работу с Unity Game Simulation - вы даже можете попробовать ее бесплатно. И, пожалуйста, обращайтесь к команде Game Simulation с любыми вопросами.
