← Модуль 11/RL-агенты
EN
Модуль 11 · AI/ML в играх

RL-агенты: почему их почти не шипят

RL порождает сверхчеловеческих игроков (OpenAI Five, AlphaStar, GT Sophy) — и почти никогда не становится ИИ в вышедшей игре. Это самый острый пример главного суждения курса: знать, когда ML — не ответ.
~16 мин🧭 когда ML НЕ ответ
Суть за 30 секунд
RL учит агента проб-и-ошибкой максимизировать награду и умеет достигать сверхчеловеческой игры: OpenAI Five (Dota 2, 256 GPU, месяцы), AlphaStar (StarCraft II, грандмастер), GT Sophy (Gran Turismo). И всё же RL почти никогда не шипят как ИИ в релизной игре. Шесть причин: (1) сэмпл-неэффективность — миллионы self-play-партий / месяцы compute на игру; (2) недетерминизм — то же состояние, другое действие; баг прошлой недели не воспроизвести; (3) непредсказуемость — учит эксплойты, ощущается нечестно; (4) ненастраиваемость — RL учит оптимальную игру, значит «жестоко-сложно или отуплённо», без «сложно-но-честно»; (5) медленный инференс — 10–100× классики; (6) train-test gap — эксплуатирует любое отличие тренировочного сима от релиза. А классика (FSM/BT/скрипты) детерминирована, отлаживаема, дешева, настраиваема, честна. Итог: RL выигрывает демо и проигрывает релиз. Где ML реально окупается в играх — оффлайн: авто-плейтест/QA, моделирование игрока (отток/DDA), генерация контента — не real-time-управление NPC. Дисциплина спрашивать «нужен ли тут RL или скриптовый BT лучше?» — в этом весь смысл.

Механизм: сверхчеловек в лабе, скрипт в релизе

Что такое RL и на что он способен

Агент в среде: состояние s → действие a → награда r → новое состояние. Цель — политика π(a|s), максимизирующая ожидаемую дисконтированную отдачу:

J(π)= E[ ∑t γt rt ]

Алгоритмы — Q-learning, policy gradient, actor-critic; двигатель — self-play (агенты усиливают друг друга). Результаты впечатляют: OpenAI Five (PPO, кластер 256 GPU + ~128k CPU, «сотни лет игры в день», обыграл чемпионов в ограниченной Dota), AlphaStar (грандмастер >99.8%, warm-start на реплеях → self-play-лига), GT Sophy (RL-гонщик, реально повлиявший на фичу Gran Turismo 7 — редкий случай).

Почему это не шипят — шесть причин (дизайнеру нужен контроль)

✗ RL в релизе
Сэмпл-неэффективность: миллионы взаимодействий, месяцы compute на игру. Недетерминизм: случайность в политике — баг не воспроизвести. Непредсказуемость: находит эксплойты, «читерит», нечестно. Ненастраиваемость: учит оптимум — сложность не покрутить в «честно-сложно». Инференс: 10–100× медленнее классики (100 NPC не потянуть). Train-test gap: ловит любое расхождение сим↔релиз (упрощённая физика → эксплойт).
✓ Классика (FSM/BT/скрипт)
Детерминизм: трассируешь исполнение, воспроизводишь баг. Настройка: поменял порог угрозы — мгновенный эффект. Ограничения: гарантируешь, что ИИ «видит» только то, что игрок (не читерит). Производительность: микросекунды, сотни NPC. Честность: предсказуемое, «читаемое» поведение = хороший противник. Предсказуемость: знаешь, что сделает.

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

Исключения подтверждают правило

GT Sophy — редкий RL, повлиявший на релиз (Gran Turismo 7), но это курируемый опциональный соперник, не дефолтный ИИ всей игры, и потребовал усилий Sony AI индустриального масштаба. Drivatars (Forza) — это имитационное обучение (behavior cloning мимикрии стиля игрока), не RL. Warm-start на человеческих реплеях (AlphaStar) — тоже имитация как разгон перед self-play. У имитации свои болячки: distribution shift (агент попадает в состояния, которых человек не видел), усреднение мод (несколько хороших действий → сеть усредняет в плохое), GIGO (плохие демонстрации → плохой агент).

Где ML в играх реально окупается — оффлайн

ML силён не в real-time-управлении, а в оффлайн-задачах генерализации и анализа: авто-плейтест/QA (агенты играют в 1000× быстрее людей, находят краши, софт-локи, эксплойты; embarrassingly parallel, оффлайн — тренировочная случайность не мешает), моделирование игрока (предсказание оттока — бустинг/логрег по фичам сессий; DDA), генерация контента (PCG, ассеты). Паттерн модуля: ML — для генерализации/анализа оффлайн; классика — для управления онлайн.

🕹 Что посмотреть — и что заметить

OpenAI Five / AlphaStar сверхчеловек, но демо

Обыгрывают чемпионов, но играют «по-инопланетному» (нечеловеческий микро, странные тайминги), стоили месяцев на сотнях GPU и жили в ограниченных условиях. Витрина мощи RL — и его нешипабельности.

🎮 Заметь: посмотри записи матчей OpenAI Five/AlphaStar — поймай моменты, где игра нечеловеческая (идеальный фокус-фаер, невозможный APM/микро). Это и сила (сверхигра), и проблема: такого противника нельзя «настроить на честно», и он ест сотни GPU. Вот почему это демо, а не ИИ релиза.

GT Sophy редкое исключение

RL-гонщик Sony AI, реально попавший в Gran Turismo 7 как соперник. Но: курируемый, опциональный, не дефолтный ИИ, и потребовал ресурсов уровня большой лабы.

🎮 Заметь: если есть GT7 — попробуй Sophy-режим и сравни с обычным ИИ гонки. Sophy сильнее и «живее», но это отдельная витринная фича, а рутинных соперников по-прежнему ведёт классика. Исключение, доказывающее правило: даже уникальный успех RL остаётся нишевым.

Обычный игровой бот почему шипят это

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

🎮 Заметь: в любимой игре понаблюдай за ИИ-противником: он читаем (понимаешь его логику), победим и не жульничает сверх заявленного. Это фича, а не слабость: FSM/BT дают ровно контролируемое поведение, которое RL дать не может. «Скучный» предсказуемый бот шипается, «гениальный» RL — нет.

Хардкор · сэмпл-неэффективность и асимметрия computeможно пропустить

Почему RL так дорог по данным

RL учится из наград, часто разреженных (сигнал — только победа/поражение в конце 30-минутной партии), и должен исследовать, чтобы вообще найти хорошие траектории — отсюда миллионы взаимодействий. Self-play смягчает (бесконечный поток противников растущей силы), но не отменяет масштаб: OpenAI Five — «сотни лет игры в день» на 256 GPU месяцами. Сравни с скриптовым BT: 0 обучения, детерминированный, инференс в микросекунды, правится за минуты. Асимметрия compute/данных — не деталь, а причина: даже если RL-политика лучше, стоимость её получить и переполучить (на каждый патч баланса!) для паблишера запретительна.

Train-test gap и reward hacking

RL эксплуатирует любое расхождение между средой обучения и релизом: упростил физику при тренировке — агент найдёт трюк, невозможный в реальной игре (или наоборот, сломается). И он оптимизирует букву награды, а не замысел (reward hacking): наградил за урон — будет фармить урон вместо победы. Это тот же Goodhart, что везде в ML, но в игре он ещё и ломает баланс и ощущается нечестным. Классику этих проблем лишает то, что она задана, а не выучена: нет зазора сим↔релиз и нет прокси-награды для взлома.

Хардкор · почему «оптимальный» ≠ «весёлый» и где ML всё же местоможно пропустить

Оптимум ломает flow-канал

RL по построению стремится к оптимальной игре — а оптимальный противник почти всегда вне flow-канала: либо жестоко силён (тревога), либо, если его «отупить» шумом/дырами, — тупит непредсказуемо (тоже плохо), и плавно покрутить сложность нельзя (нет ручки «на 20% слабее, но всё ещё осмысленно»). Классический ИИ, наоборот, — сплошные ручки: пороги, тайминги реакции, точность; сложность настраивается напрямую и читаемо. Дизайну нужен не сильнейший бот, а управляемая кривая силы — этого RL из коробки не даёт.

Правильные ниши ML в играх

ML окупается там, где (а) задача оффлайн (тренировочная случайность и стоимость не мешают), (б) нужна генерализация, которую не прописать руками, (в) ошибка не бьёт по real-time-контролю. Отсюда: QA-агенты (найти эксплойты/софт-локи параллельно, 1000× быстрее людей), churn/DDA-модели (паттерны оттока сложны, признаки неочевидны), PCG (генерация уровней/ассетов), имитация стиля (drivatars). Общее: ML заходит как инструмент анализа/генерации, а не как мозг NPC. Мозг NPC почти всегда дешевле, честнее и отлаживаемее написать.

Аналогия
RL — как нанять саванта, который, сыграв в игру десять миллионов раз в запертой комнате, стал непобедим — но играет странно и по-инопланетному, не может себя объяснить, каждый раз делает чуть иначе и не умеет «поддаться, но честно». Для витринного матча — идеально. Для вышедшей игры, где нужен предсказуемый, отлаживаемый, настраиваемый и честный противник, работающий на консоли за микросекунды, тебе не нужен савант — нужен хорошо отрепетированный актёр по сценарию (FSM/BT), который каждый вечер попадает в свои реплики. Савант (RL) выигрывает показательный поединок; актёр (классика) выпускает шоу.
Почему это важно
Это самая прямая формулировка тезиса курса и твоей ценности как ML-инженера: уметь обучать — полезно, но знать, когда не обучать — редко и ценнее. Игры — честная лаборатория этого суждения: сильнейший RL проигрывает скриптовому BT в проде по всем осям, которые реально важны при доставке (детерминизм, стоимость, настройка, честность). Зрелость тянуться к детерминированному, дешёвому, отлаживаемому классическому решению и звать ML лишь туда, где генерализацию не прописать руками, — это то, что делает инженера глобально полезным, а не тем, кто всюду суёт нейросеть.
🔁 Куда это ведёт — прямая проекция на прод-ML
Урок — про границу применимости RL и обучения и зрелость выбирать классику по умолчанию.

ML / AI (твой домен): RL-в-играх — микрокосм RL-в-проде вообще: те же причины, по которым RL редко шипят в играх (сэмпл-неэффективность, недетерминизм, неотлаживаемость, sim-to-real, reward hacking, стоимость), — почему RL редок в проде вне узких дорогих ниш (RLHF для LLM, рекомендации, отдельные control/ops), и где работает — обычно оффлайн-обучен + жёстко огорожен, а не online-learning-в-петле. Имитация/behavior cloning ↔ SFT с теми же патологиями (distribution shift и накопление ошибки = проблема DAgger; усреднение мод; GIGO). «Оптимум-или-ничего, не покрутить сложность» ↔ почему часто нужна управляемая/steerable модель, а не максимально заоптимизированная. Self-play ↔ петля самоусиления AlphaZero/RLHF. А мета-урок — большинство «ИИ» в шипнутых играх это НЕ ML, и это правильно — самый ценный перенос: зрелость взять детерминированное, дешёвое, отлаживаемое классическое решение и звать ML только туда, где генерализацию не написать руками.

Прод-инженерия: детерминизм, воспроизводимость, отлаживаемость, стоимость инференса — критерии, по которым «умное» решение проигрывает «скучному» в эксплуатации.

Дизайн ИИ: цель — не сильнейший, а управляемый и честный противник; читаемость поведения важнее оптимальности.

Принцип: по умолчанию — заданное, детерминированное, дешёвое; RL/обучение — только где генерализацию нельзя прописать, задача терпит оффлайн-тренинг и цена оправдана.

🔧 Подумай и проверь суждение
🧭 Аудит «нужен ли тут RL» ~20 мин
Возьми 4 ИИ-задачи из своего Новгорода (враг-патруль, босс-паттерны, балансировка, поиск эксплойтов тестами). Для каждой пройди чек-лист: онлайн-контроль или оффлайн-анализ? Нужна ли генерализация или хватит правил? Терпит ли недетерминизм? Есть ли compute? Реши классика/имитация/RL/оффлайн-ML — и обоснуй.
🧪 Мини-RL, чтобы прочувствовать цену опц., высокое усилие
Обучи табличный Q-learning на крестики-нолики или CartPole (десятки строк / gym). Замерь, сколько эпизодов до приличной игры, и как результат «дёргается» между прогонами (недетерминизм). Сравни с тем, что крестики-нолики идеально решает minimax из прошлого урока без всякого обучения. Прочувствуй, почему для решаемых поиском задач RL — из пушки по воробьям.
Чеклист: провёл аудит 4 задач и обосновал выбор; (опц.) ощутил сэмпл-неэффективность и недетерминизм RL; сформулировал, где в твоём проекте ML оффлайн окупается, а где нет.
Связи
основа
Minimax/MCTS — self-play RL обучает policy/value внутри AlphaZero; для решаемых поиском игр обучение часто лишнее.
итог
Классика vs ML — этот урок — главное доказательство: контроль (классика) vs генерализация (ML).
смежное
Сложность — «оптимальный» RL-бот вне flow-канала; дизайну нужна настраиваемая сила.
основа
FSM/BT — то, что реально шипят вместо RL для управления NPC.
Вопросы пытливого ума
Если RL сверхчеловечен, почему просто не зашипить его?
Потому что «сильнейший» — не то, что нужно в релизе, а стоимость и риски запретительны. По осям, важным при доставке, RL проигрывает: стоимость (месяцы на сотнях GPU — и переобучать на каждый патч баланса), детерминизм (баг не воспроизвести — кошмар для QA и поддержки), настройка (нельзя выдать «на 20% слабее, но осмысленно» — RL даёт оптимум или, если испортить, непредсказуемый бред), инференс (10–100× медленнее — не потянуть сотню NPC на консоли), честность (эксплойты и sim-to-real-трюки ощущаются как читы), train-test gap (эксплуатирует любое расхождение). А главное — игроку не нужен непобедимый инопланетянин: нужен читаемый, победимый, честный противник, задающий поток. Скриптовый BT даёт всё это за микросекунды и правится за минуты. Так что дело не в том, что RL «недостаточно хорош», — он хорош не по той метрике: демо оптимизирует силу, релиз оптимизирует контроль, стоимость и опыт.
GT Sophy же зашипили — это не опровержение?
Наоборот, подтверждение правилом-исключением. GT Sophy — реальный успех: RL-гонщик Sony AI попал в Gran Turismo 7. Но посмотри как: (1) это курируемая опциональная фича-витрина (особый соперник), а не дефолтный ИИ, ведущий всю игру; (2) он потребовал ресурсов и экспертизы индустриальной ИИ-лаборатории (Sony AI), годы работы — недоступно обычной студии; (3) гонки — почти идеальный случай для RL (чёткая награда = время/позиция, стабильная физика-сим, узкий домен управления), и даже здесь это редкий, дорогой, точечный успех. То есть Sophy показывает не «RL готов шипаться», а «RL можно зашипить в очень благоприятном домене ценой лаборатории мирового уровня — как отдельную фичу». Рутинных соперников в GT7 по-прежнему ведёт классика. Исключение очерчивает границу, а не стирает её.
А имитационное обучение (клонировать игроков) — работает?
Частично и в узких местах — но не как основной механизм управления. Плюс имитации над RL: не нужно миллионов self-play-партий и разреженной награды — учишься супервизно на записях людей (дешевле, стабильнее). Реальные ниши: drivatars в Forza (мимикрия стиля вождения конкретного игрока — тут цель именно «играть как человек X», и имитация подходит идеально), warm-start RL на реплеях (AlphaStar разогнали на партиях людей перед self-play). Но у behavior cloning свои болячки: distribution shift — агент неизбежно попадает в состояния, которых в данных не было (человек туда не заходил), и, не зная, что делать, накапливает ошибку (проблема, которую в ML лечат DAgger); усреднение мод — если хороши два разных действия, регрессия усредняет их в третье, плохое; GIGO — клонируешь посредственных игроков → получаешь посредственного агента. Поэтому имитация хороша, когда цель — воспроизвести человеческий стиль (drivatars) или разогнать обучение, но для предсказуемого честного контроля классический BT всё равно надёжнее. Это ровно SFT в LLM с теми же ограничениями.
Как это переносится на RL/RLHF в проде вне игр?
Один в один — игры просто честная витрина общей картины. Причины, по которым RL редок в шипнутых играх, — те же, по которым «чистый онлайновый RL» редок в проде вообще: сэмпл-неэффективность, недетерминизм, неотлаживаемость, sim-to-real, reward hacking (Goodhart), стоимость. Где RL реально работает в индустрии, он почти всегда (а) оффлайн-обучен, (б) жёстко огорожен и (в) в узкой высокоценной нише: RLHF/RLAIF для выравнивания LLM (и там половина боли — reward hacking модели-награды), рекомендации/аллокация (часто контекстные бандиты, не полный RL), отдельные control/ops-домены (датацентр-кулинг, роутинг). Online-learning-в-петле-с-пользователем — редкость, потому что недетерминизм и эксплойты слишком дороги. Имитация ↔ SFT с distribution shift. «Оптимум, который нельзя настроить» ↔ почему часто предпочитают управляемую модель максимально заоптимизированной. Так что интуиция «RL — мощный, но капризный инструмент для узких оффлайн-ниш, а не дефолт» — прямо переносится с игрового ИИ на весь твой прод-ML. Игры дают её нагляднее всего, потому что тут провал RL виден (нечестный бот, сломанный баланс), а не спрятан в метрике.
Что почитать