Класичні скінченні автомати (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.
Процес роботи та що входить
- Аналітика: вивчаємо механіки гри, визначаємо типи NPC та вимоги до поведінки.
- Проектування: розробляємо архітектуру (BT+RL гібрид, reward-функції, спостереження).
- Реалізація: навчаємо моделі, інтегруємо в ігровий движок, налаштовуємо inference.
- Тестування: перевіряємо адаптивність, відсутність багів, відповідність гейм-дизайну.
- Деплой: експорт в ONNX, оптимізація для цільових платформ (PC, консолі, мобільні).
Результат включає:
- Документацію з архітектури та навчання.
- Вихідні коди агентів та конфігів.
- Навчену ONNX-модель.
- Інтеграцію у ваш проєкт.
- Підтримку протягом місяця.
Терміни орієнтовно
Базовий бойовий NPC з self-play — від 6 тижнів. Повноцінна система з гібридом BT+RL, кількома типами поведінок та production-ready inference — від 14 до 20 тижнів. Вартість стартує від $12,000 та розраховується індивідуально під ваш проєкт. Отримайте консультацію — допоможемо визначити підходящу архітектуру для вашої гри. Замовте розробку NPC AI вже сьогодні та отримайте попередній аналіз протягом 2 днів.
Більше 10 років ми займаємося ML у геймдеві — реалізували NPC AI для шутерів, RPG та симуляторів. Наші сертифіковані спеціалісти гарантують якість. Якщо хочете обговорити ваше завдання, зв'яжіться з нами — оцінимо проєкт та запропонуємо рішення.







