# Янник Килчер о PCGRL: «Дизайн уровня как игра»

Источник: https://www.youtube.com/watch?v=ml3Y1ljVSQ8
Канал: Yannic Kilcher
Опубликовано: 04.08.2020

---

## Генерация игровых уровней через обучение с подкреплением: Разбор подхода PCGRL
[[JUMP:0:00]]

Исследователь ИИ Янник Килчер (Yannic Kilcher) представил обзор научной работы, посвященной инновационному подходу к процедурной генерации контента (PCG) в видеоиграх — PCGRL (Procedural Content Generation via Reinforcement Learning). Вместо того чтобы использовать традиционные алгоритмические методы, авторы работы — Ахмед Халифа (Ahmed Khalifa), Фили Бонтрагер (Fili Bontrager), Сэм Эрли (Sam Early) и Джулиан Тогалеос (Julian Togelius) — предлагают рассматривать само создание дизайна уровня как игру, в которой агент обучается максимизировать качество итогового игрового пространства.

### Концепция «дизайн как игра»
[[JUMP:1:48]]

В основе подхода лежит идея превращения процесса расстановки объектов на уровне в последовательную задачу, решаемую с помощью обучения с подкреплением (Reinforcement Learning, RL).

*   **Агент и среда:** Система строится на классическом разделении: среда (уровень) предоставляет агенту наблюдение (текущее состояние матрицы уровня), а агент совершает действие — изменяет отдельный тайл.
*   **Гибкость:** Обученный таким образом генератор работает крайне быстро, что позволяет создавать множество уникальных уровней даже в условиях дефицита обучающих примеров.
*   **Специфика:** В отличие от стандартного RL, где агент учится *играть* в игру, здесь агент учится *быть дизайнером*.

### Пространство действий: три пути дизайна
[[JUMP:6:34]]

Авторы работы сравнивают три различных способа формулировки «пространства действий», которые определяют, как именно агент взаимодействует с игровым полем:

1.  **Narrow (Узкое):** Среда сама выбирает, какой тайл разрешено изменить в данный момент. По мнению Килчера, это наиболее проблемный подход, так как агент не может планировать действия наперед и вынужден принимать лишь локальные, «жадные» решения.
2.  **Turtle (Черепашье):** Агент перемещается по полю подобно «черепахе» (по аналогии с Turtle Graphics), имея возможность менять или не менять текущий тайл, а затем переходить в соседнюю клетку. Это позволяет создавать более связные структуры, такие как длинные стены, но все еще ограничивает возможность глобального редактирования.
3.  **Wide (Широкое):** Самый мощный вариант, где агент на каждом шаге может выбрать любую клетку уровня для изменения. Это дает максимальную свободу планирования, но значительно усложняет обучение из-за огромного количества вариантов действий.

### Награды и ограничения: как сделать уровень интересным
[[JUMP:12:41]]

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

*   **Проверка решаемости:** Для верификации уровня авторы используют внешний решатель (solver), основанный на алгоритме поиска по дереву. Если уровень непроходим, агент получает штраф.
*   **Параметр изменения (Change Percentage):** Чтобы агент не игнорировал исходное состояние и не пытался всегда свести уровень к одной «идеальной» схеме, введено ограничение — менять можно не более 20% тайлов. Это, по словам Килчера, эффективно повышает разнообразие генерируемых уровней.

### Ограничения и будущее направления
[[JUMP:22:25]]

Несмотря на перспективность, у метода есть свои «узкие места»:

*   **Зависимость от решателя:** Агент способен создавать уровни лишь той сложности, которую может обработать текущий алгоритм-решатель. С усложнением игровых механик эта задача становится крайне ресурсоемкой.
*   **Простота контента:** Большинство сгенерированных уровней оказываются довольно легкими, так как успех алгоритма опирается лишь на базовую решаемость, а не на интересность геймплея.

Янник Килчер полагает, что в будущем возможна совместная работа человека и ИИ: дизайнер задает общую структуру («поставь здесь стену»), а агент мгновенно дорабатывает детали, обеспечивая проходимость и баланс уровня. Еще одним многообещающим направлением он называет «куррикулумное обучение» (curriculum learning), где агент-генератор и агент-игрок тренируются одновременно, непрерывно повышая сложность создаваемого контента.