Будущих студентов курса "Unity Game Developer. Basic" приглашаем принять участие в открытом уроке на тему "2d-платформер головоломка".


А также делимся продолжением перевода интересного материала.


PSankalp Patro (ML-Agents): Отслеживание выходных данных модели

Обучение с подкреплением требует значительных вычислительных ресурсов, которые зачастую намного больше, чем среднестатистический пользователь может аккумулировать на своем ноутбуке или персональном компьютере. Чтобы упростить нашим пользователям обучение, команда ML-Agents в настоящее время разрабатывает ML-Agents Cloud — экспериментальный обучающий облачный сервис для ML-Agents (заявленный в нашем блоге Release 1).

ML-Agents Cloud предлагает пользователям ряд преимуществ. Теперь разработчики могут проводить несколько исследований параллельно, а не быть ограниченными одним исследованием за раз на своем локальном компьютере. Благодаря передовым вычислительным мощностям время обучения сокращается, и сложные среды можно обучать за меньшее время. ML-Agents Cloud также позволяет избежать необходимости установки и настройки библиотек машинного обучения и контроля версий (таких как Tensorflow и PyTorch), необходимых для обучения ML-Agents.

Проблема: Отсутствие отслеживания и обслуживания моделей, созданных в ходе исследований

До этой стажировки ML-Agents Cloud не предоставляла пользователям возможности взаимодействовать с моделями, созданными в ходе их исследований. Поскольку исследования с обучением с подкреплением могут занимать часы, в дополнение к окончательному результату разумно создавать промежуточные контрольные точки модели. Модели контрольных точек можно использовать для построения графика прогресса обучения модели или для возобновления обучения с заданной точки. Поскольку обученные модели являются наиболее важным продуктом ML-Agents, мы хотели предоставить пользователям удобный способ просмотра и отслеживания своих моделей.

Решение: Создание бэкенда для отслеживания и обслуживания моделей

Чтобы решить эту проблему, я решил создать бэкенд для отслеживания и обслуживания файлов моделей, обученных в ML-Agents Cloud. Эта задача включала:

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

  • API и CLI: затем я создал интерфейс для взаимодействия пользователей со своими моделями, хранящимися в облаке, путем расширения API ML-Agents Cloud и CLI (интерфейса командной строки).

  • Прототипирование ML-Agents Cloud с помощью редактора Unity: используя компоненты, упомянутые ранее, я построил прототип для интеграции ML-Agents Cloud с редактором Unity. Цель этого компонента заключалась в том, чтобы представить потенциальную end-to-end интеграцию между ML-Agents Cloud и редактором Unity, чтобы сделать редактор универсальным средством RL обучения. Кроме того, это послужило доказательством концепции того, насколько плавным может стать обучение в облаке с помощью ML-Agents Cloud, устраняя почти все накладные расходы на настройку.

Aryan Mann (Game Simulation): Game Simulation и процедурная генерация

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

Проблема: Контроль качества процедурного контента — сложная задача

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

Решение: Тестирование с использованием умных агентов, которые играют в вашу игру

Вместо этого мы хотим достичь полной взаимозависимости агентов. Для этого требуется агент, который может играть на любом уровне в репрезентативном диапазоне вашего процедурного генератора. С помощью этого агента можно оценить баланс или качество уровня. Такие измерения, как время завершения, сложность или непроходимость, становятся возможными благодаря агента, играющему в игру. Это изменяет балансировку игры с математического моделирования на запуск игры как функции черного ящика. Чтобы оценить эту функцию, мы можем заставить группы смоделированных игроков исследовать более крупные и более репрезентативные подмножества сгенерированного контента с помощью такого инструмента, как Unity Game Simulation. Чтобы доказать эту теорию, мы обучили простого бота игре в Obstacle Tower Environment от ML-Agents. Это процедурно сгенерированная башня с возрастающей сложностью, которая служила бенчмарком для глубокого обучения с подкреплением в челлендже, проведенном в прошлом году.

Башня препятствий: Тематическое исследование.

Главный вопрос, который нужно было изучить, заключался в том, можно ли точно определить типы и диапазоны входных параметров, которые результируют в тупиках во время обучения нашего агента, таким образом уравновешивая процедурно сгенерированную башню для нашего агента. Башня препятствий имеет пять различных тем, которые определяют стиль и тип объектов, составляющих уровень, таких как столбы, двери или пол. Используя Unity Game Simulation, мы запускали симуляции на общем наборе уровней (начальных значений) по пяти различным визуальным темам, а затем сравнивали сгенерированные метрики. Они включали максимальную производительность и горячие точки распределения позиций агента. У темы modern была худшая производительность и странная горячая точка перед дверью к уровню. Мы обнаружили тупик, в котором была неправильно перевернута стрелка на двери, что блокировало продвижение агента. Измерение содержания на основе синтетических данных — задача непростая, но, по нашему мнению, она того стоит. Следите за новостями в блогах, чтобы узнать об образцах сред и методах оценки контента с помощью Game Simulation.

Christina Guan (Game Simulation): Простые боты для тестирования игры

Один из этапов использования Game Simulation — создание бота, который сможет пройти игру или уровень, который вы хотите протестировать. Существует ряд инструментов для создания игрового искусственного интеллекта, который естественно распространяется и на создание ботов, которые могут проходить игру.

Проблема: Создание ботов

В рамках этой стажировки я хотела поэкспериментировать с инструментами Unity для создания простых ботов, которые разработчики могут использовать для тестирования своих игр в Game Simulation. Это обеспечит Unity собственным решением, которое без проблем будет работать с новой системой ввода Unity. Система ввода (Input System) разработана так, чтобы быть более расширяемой и настраиваемой, чем классическая система ввода. Она позволяет пользователям быстро и легко связывать определенные действия с несколькими типами контроллеров без необходимости вносить серьезные изменения в скрипт, что упрощает поддержку игр на различных платформах и устройствах. Она также имеет дополнительные преимущества, заключающиеся в том, что ее легко запускать из кода и обрабатывать событиями, которые можно отслеживать и, в свою очередь, обрабатывать, что дает разработчикам инструменты для создания простых, но в то же время полезных ботов для своих игр.

Решение: Боты системы ввода

В ходе стажировки я построила двух разных ботов, которые оба использовали пакет системы ввода: бот «обезьяна» (monkey) и бот «повтор» (replay). Эти боты были разработаны с оглядкой на контроль качества и тестирование багов. Робот-обезьяна может непрерывно тестировать большое количество комбинаций входных данных в случайном порядке, что полезно для тестирования граничных случаев входных данных. Бот повтор был бы наиболее полезен для записи и воспроизведения различных QA тестов, позволяя человеку-тестировщику сосредоточиться на других задачах, а не на одном и том же повторяющемся наборе тестов. Кроме того, оба бота спроектированы таким образом, чтобы не требовать определенных зависимостей игрового кода, и структурированы таким образом, что разработчики могут добавлять или изменять их части по мере необходимости.

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

Бот «повтор» позволяет разработчикам записывать и воспроизводить последовательности входных данных. Он перехватывает эвент трейсы от системы ввода при срабатывании ввода и сопоставляет эти события с вводами, которые влияют на игру. Затем бот создает список вводных данных и временных меток, которые хранятся в JSON объекте. JSON объекты можно изменять или воспроизводить как есть через бота. В настоящее время этот бот совместим только с устройством ввода с клавиатуры.

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


Узнать подробнее о курсе "Unity Game Developer. Basic".

Записаться на открытый урок по теме "2d-платформер головоломка".


Читать первую часть.


ЗАБРАТЬ СКИДКУ