W grach RPG walka to nie tylko statystyki i animacje. To przede wszystkim poczucie, że przeciwnik „wie”, co robi. Jako programiści Unity mamy do dyspozycji dwa główne podejścia do tworzenia logiki AI: Finite State Machines (FSM) oraz Behavior Trees (BT).
Które z nich wybrać, aby Twoje RPG nie straszyło „drewnianymi” postaciami?
1. Finite State Machines (FSM) – Klasyka gatunku
Maszyna Stanów to najprostszy sposób na AI. Przeciwnik znajduje się w jednym konkretnym stanie (np. Patrol), a gdy zajdzie określony warunek (np. Zauważenie Gracza), przechodzi do kolejnego stanu (Atak).
Kiedy stosować?
-
Przy prostych zachowaniach (np. strażnik, który tylko chodzi i goni).
-
Gdy masz bardzo ograniczoną liczbę stanów.
Problem: Przy złożonych przeciwnikach RPG (którzy muszą się leczyć, uciekać, wołać o pomoc i używać czarów), FSM zamienia się w tzw. „Spaghetti Code”. Każdy stan musi wiedzieć o wszystkich innych, co sprawia, że dodanie nowej mechaniki staje się koszmarem.
2. Behavior Trees (BT) – Hierarchia i modułowość
Drzewa Zachowań to standard w nowoczesnych grach (od Halo po Wiedźmina). Zamiast liniowych przejść, mamy tu strukturę drzewiastą. AI „przepływa” przez węzły, sprawdzając warunki od najważniejszych (np. Czy mam mało HP?) do najmniej istotnych (Czy mogę patrolować?).
Zalety dla RPG:
-
Modułowość: Możesz stworzyć węzeł „Ucieczka”, a potem podpiąć go pod każdego NPC w grze.
-
Priorytety: AI może łatwo przerwać czynność o niskim priorytecie na rzecz ważniejszego zadania (np. przerwanie jedzenia, gdy gracz wyciągnie miecz).
-
Czytelność: Zamiast setek linii kodu
if/else, masz jasną strukturę wizualną.
Praktyka w Unity i C#
W Unity możemy napisać własny system BT lub skorzystać z gotowych rozwiązań (np. NodeCanvas lub Behavior Designer). Jeśli jednak budujesz system od zera w C#, warto oprzeć węzły na prostym interfejsie:
C#
public enum NodeState { RUNNING, SUCCESS, FAILURE }
public abstract class Node
{
public abstract NodeState Evaluate();
}
Dzięki temu każdy element drzewa – czy to sprawdzanie dystansu, czy zadawanie obrażeń – jest osobną klasą, którą łatwo testować i debugować.
Werdykt: Co wybrać?
-
Wybierz FSM, jeśli tworzysz proste moby, które mają tylko dwa stany (np. idź/stój). To szybkie i wydajne.
-
Wybierz Behavior Trees, jeśli budujesz bossów lub towarzyszy gracza. To inwestycja, która zwróci się w momencie, gdy zaczniesz dodawać kolejne mechaniki RPG.
W moich projektach stawiam na Behavior Trees, ponieważ dają one graczowi iluzję inteligencji, która reaguje na jego akcje w sposób nieprzewidywalny i angażujący.

Podsumowanie
Dobry system AI to nie ten najmądrzejszy, ale ten, który najłatwiej modyfikować w trakcie produkcji. W następnym wpisie pokażę Wam, jak połączyć BT z NavMeshem, aby przeciwnicy nie tylko „myśleli”, ale i sprawnie poruszali się po trudnym terenie.
Czy wolicie pisać własne systemy AI od zera, czy korzystacie z gotowych assetów z Unity Store? Podzielcie się swoimi doświadczeniami!