Адаптивна поведінка NPC з RL, гібридними архітектурами та self-play

Класичні скінченні автомати (FSM) та поведінкові дерева (BT) перестають справлятися, коли NPC має адаптуватися до нестандартних тактик гравця. Противник застрягає біля стіни, союзник ігнорує фланговий обхід, пішоходи діють за шаблоном — кожен такий баг потребує правки вручну. У сучасних AAA-проєктах

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    997
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1264
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1002

Класичні скінченні автомати (FSM) та поведінкові дерева (BT) перестають справлятися, коли NPC має адаптуватися до нестандартних тактик гравця. Противник застрягає біля стіни, союзник ігнорує фланговий обхід, пішоходи діють за шаблоном — кожен такий баг потребує правки вручну. У сучасних AAA-проєктах із сотнями типів NPC такий підхід призводить до тижнів налагодження. Зв'яжіться з нами, щоб обговорити ваше завдання та отримати попередню оцінку.

Ми розробляємо системи поведінки NPC з використанням Reinforcement Learning (RL) та гібридних архітектур вже понад 10 років. За цей час реалізували AI для 50+ NPC у шутерах, RPG та симуляторах. Клієнти економлять до $40,000 на бюджеті на ітераціях балансу NPC — інвестиції окупаються за 3–6 місяців. Гібрид BT+RL на 30% швидший у розробці, ніж чистий RL, і на 60% адаптивніший за чистий BT. У 80% проєктів обирають саме гібрид. Ми гарантуємо якість інтеграції та надаємо 30-денну підтримку після деплою.

Чому RL перемагає FSM у сучасних AAA-іграх?

FSM/BT обмеження:

  • Розробник описує кожен перехід — при додаванні нової поведінки дерево переписується.
  • Edge-кейси (застрягання, однакові патерни) виправляються лише патчами.
  • Масштабування на 50+ типів NPC — тижні ручної роботи.

RL переваги:

  • NPC навчається на взаємодії з гравцем, адаптуючись до його стилю.
  • Єдиний фреймворк для різних типів поведінки: бойові, соціальні, економічні.
  • Self-play (навчання проти попередніх версій себе) автоматично генерує складні тактики.

Порівняємо підходи в таблиці:

Параметр FSM/BT RL (на базі PPO)
Адаптивність Статична, задається дизайнером Динамічна, навчається на досвіді
Час розробки нової поведінки Дні — тижні (ручне кодування) Години — дні (доучування моделі)
Непередбачуваність Низька (передбачувані патерни) Середня — висока
Контроль гейм-дизайнера Повний Через reward function та BT+RL гібрид
Production-readiness Висока (перевірено роками) Середня (вимагає гібрида)

Як гібрид BT+RL дає контроль гейм-дизайнерам?

Чистий RL у production — рідкість: непередбачуваність неприйнятна для дизайнерів. Гібрид вирішує проблему:

BehaviourTree: → Selector: → IsPlayerVisible AND HealthHigh → RL AggressivePolicy → IsPlayerVisible AND HealthLow → RL RetreatPolicy → PatrolTask (детермінований) 

RL-політика відповідає за конкретні фази бою (атака, відступ), BT контролює high-level структуру. Дизайнери керують умовами переходу, RL наповнює деталі — NPC фланкує, використовує укриття, ставить пригнічуючий вогонь.

Стек та приклад реалізації: Unity ML-Agents

Стандартний інструмент для ігрового AI — Unity ML-Agents (PPO, self-play). Приклад компонента агента на C#:

public class NPCCombatAgent : Agent { public override void CollectObservations(VectorSensor sensor) { sensor.AddObservation(RelativePlayerPosition); sensor.AddObservation(PlayerVelocity); sensor.AddObservation(Health / MaxHealth); sensor.AddObservation(Ammo / MaxAmmo); sensor.AddObservation(IsInCover); sensor.AddObservation(NearestCoverDistance); } public override void OnActionReceived(ActionBuffers actions) { float moveX = actions.ContinuousActions[0]; float moveZ = actions.ContinuousActions[1]; bool shoot = actions.DiscreteActions[0] == 1; bool takeCover = actions.DiscreteActions[1] == 1; MoveNPC(moveX, moveZ); if (shoot) Shoot(); if (takeCover) SeekCover(); } public override void OnEpisodeBegin() { ResetPosition(); Health = MaxHealth; } } 

Reward-функція для бойового NPC:

void FixedUpdate() { if (DamagedPlayer()) AddReward(1.0f); if (TookDamage()) AddReward(-0.5f); if (Killed()) AddReward(-10.0f); if (KilledPlayer()) AddReward(10.0f); AddReward(-0.001f); // штраф за бездіяльність } 

Self-Play для бойових NPC

Для навчання NPC необхідний противник, здатний створити виклик. Проти random-агента NPC навчиться лише базовим патернам, тому застосовуємо self-play: агент грає проти попередніх версій себе. Офіційна документація Unity ML-Agents підтверджує, що self-play дозволяє безперервно покращувати політику, граючи проти власних копій. Конфіг для ML-Agents:

behaviors: NPC: trainer_type: ppo self_play: save_steps: 50000 team_change: 100000 swap_steps: 2000 play_against_latest_model_ratio: 0.5 window: 10 

Self-play забезпечує постійне покращення: немає reward hacking проти конкретної стратегії, тактики стають глибшими.

Observation Design

  • Ray Perception: променеві сенсори (до 20 променів) бачать теги об'єктів + відстань. Швидко, ефективно.
  • Camera Sensor: CNN обробляє render texture — повільніше, але дає реалістичну «зорову систему».

Типи поведінок для навчання

Тактичні: фланкування, укриття, пригнічуючий вогонь, retreat-and-heal. Соціальні (NPC-жителі): реакція на гравця (страх, цікавість, агресія), адаптація до репутації. Економічні (торговці): ціноутворення на основі попиту, прийняття пропозицій.

Порівняння типів поведінок за складністю реалізації та часом навчання:

Тип поведінки Складність Час навчання (базовий NPC)
Тактичне (бій) Висока 6–10 тижнів
Соціальне (жителі) Середня 4–6 тижнів
Економічне (торговці) Низька–середня 3–5 тижнів

Scalable Training

Навчання тисяч NPC паралельно:

from mlagents_envs.environment import UnityEnvironment from mlagents_envs.envs.unity_parallel_env import UnityParallelEnv env = UnityParallelEnv(UnityEnvironment("game.x86_64")) # один step обробляє всіх агентів одночасно 

GPU inference: після навчання експорт в ONNX → Barracuda runtime прямо в Unity. Жодного Python на продакшені. Для масштабування використовуємо до 1000 паралельних агентів за один step.

Типові помилки при навчанні NPC
  • Неправильна reward-функція призводить до небажаної поведінки (наприклад, NPC вчиться програвати, щоб отримувати нагороду за смерть).
  • Занадто складний простір спостережень уповільнює збіжність — використовуйте лише релевантні ознаки.
  • Ігнорування self-play: навчання проти статичного противника дає слабкого NPC.

Процес роботи та що входить

  1. Аналітика: вивчаємо механіки гри, визначаємо типи NPC та вимоги до поведінки.
  2. Проектування: розробляємо архітектуру (BT+RL гібрид, reward-функції, спостереження).
  3. Реалізація: навчаємо моделі, інтегруємо в ігровий движок, налаштовуємо inference.
  4. Тестування: перевіряємо адаптивність, відсутність багів, відповідність гейм-дизайну.
  5. Деплой: експорт в ONNX, оптимізація для цільових платформ (PC, консолі, мобільні).

Результат включає:

  • Документацію з архітектури та навчання.
  • Вихідні коди агентів та конфігів.
  • Навчену ONNX-модель.
  • Інтеграцію у ваш проєкт.
  • Підтримку протягом місяця.

Терміни орієнтовно

Базовий бойовий NPC з self-play — від 6 тижнів. Повноцінна система з гібридом BT+RL, кількома типами поведінок та production-ready inference — від 14 до 20 тижнів. Вартість стартує від $12,000 та розраховується індивідуально під ваш проєкт. Отримайте консультацію — допоможемо визначити підходящу архітектуру для вашої гри. Замовте розробку NPC AI вже сьогодні та отримайте попередній аналіз протягом 2 днів.

Більше 10 років ми займаємося ML у геймдеві — реалізували NPC AI для шутерів, RPG та симуляторів. Наші сертифіковані спеціалісти гарантують якість. Якщо хочете обговорити ваше завдання, зв'яжіться з нами — оцінимо проєкт та запропонуємо рішення.