Фундаментальні Алгоритми ШІ
Кістяк, на якому тримається будь-яка поведінка: від A* до Дерев Поведінки
1. Машини Скінченних Станів (Finite State Machines - FSM)
Це "дід" усіх ігрових ШІ. FSM — це найпростіший спосіб наділити NPC здатністю приймати рішення. Ідея полягає в тому, що NPC може перебувати лише в одному "стані" в один момент часу.
Уявіть собі охоронця:
- СТАН "ПАТРУЛЬ": NPC ходить між точками A і B.
- УМОВА (ПОЧУВ ШУМ): Перехід у СТАН "РОЗСЛІДУВАННЯ".
- СТАН "РОЗСЛІДУВАННЯ": NPC іде до джерела шуму.
- УМОВА (ПОБАЧИВ ГРАВЦЯ): Перехід у СТАН "АТАКА".
- СТАН "АТАКА": NPC стріляє у гравця.
Це простий, надійний і дуже "дешевий" для процесора ШІ. Привиди з *Pac-Man* — це класичний приклад FSM. Однак, коли станів стає занадто багато (наприклад, "втеча", "пошук аптечки", "перезарядка"), логіка стає дуже заплутаною.
2. Пошук Шляху (A-star / A*)
Якщо FSM — це "мозок" ШІ, то A* — це його "ноги" та "очі". Це фундаментальний алгоритм, який дозволяє ШІ **навігувати** у складному світі. Без нього NPC просто билися б головою об стіни.
A* (вимовляється "А-стар") — це розумний алгоритм пошуку найкоротшого шляху з точки А в точку Б, оминаючи перешкоди. Він постійно аналізує два параметри:
- G-вартість: Скільки кроків вже зроблено від старту.
- H-вартість (Евристика): Приблизна відстань до фінішу.
A* обирає шлях з найменшою сумою G+H, що дозволяє йому неймовірно ефективно знаходити оптимальний маршрут. Кожен раз, коли ворог біжить за вами укриттями, або ваш напарник оббігає лаву, — ви бачите в дії саме A*.
3. Дерева Поведінки (Behavior Trees - BT)
Це сучасна та набагато гнучкіша заміна FSM. Дерево Поведінки — це ієрархічний набір завдань, який ШІ "читає" зверху вниз, перевіряючи пріоритети. Це дозволяє створювати набагато складнішу та реалістичнішу поведінку.
На відміну від FSM, де NPC "застрягає" в одному стані, BT перевіряє всю логіку кожного кадру. Наприклад, дерево для солдата може виглядати так:
- (Пріоритет 1) Чи летить у мене граната? -> ТАК -> **ДІЯ: Відбігти вбік.**
- (Пріоритет 2) Чи мало в мене здоров'я? -> ТАК -> **ДІЯ: Знайти укриття і лікуватися.**
- (Пріоритет 3) Чи бачу я ворога? -> ТАК -> **ДІЯ: Стріляти в укритті.**
- (Дія за замовчуванням) -> **ДІЯ: Патрулювати.**
Цей підхід дає ШІ гнучкість. Якщо під час стрільби (Пріоритет 3) йому під ноги кинуть гранату (Пріоритет 1), він негайно перерве стрільбу і почне відбігати. Це стандарт де-факто для сучасних ААА-ігор, таких як *Halo*, *The Last of Us* та вбудований у *Unreal Engine*.