Behavior Tree или Utility AI?
Верным может быть и то, и другое. Решает то, сколько вещей ваш противник должен взвешивать одновременно.
Сила деревьев поведения
Behavior Tree читаем. Дизайнер посмотрит и скажет: «этот враг сначала проверяет дистанцию, потом атакует». Отладка тоже проста — видно, на каком узле он застрял.
Он идеален для последовательного и условного поведения: открыть дверь, войти, осмотреться, поднять тревогу. В таких сценариях дерево естественным образом принимает правильную форму.
Где выигрывает Utility AI
Если врагу нужно взвешивать десять вещей сразу — сколько здоровья, есть ли патроны, рядом ли союзник, силён ли игрок — дерево быстро становится нечитаемым.
Utility AI просит каждое действие выдать оценку для текущего состояния и выбирает наибольшую. Добавить новое поведение — значит написать функцию оценки, а не перестраивать дерево.
На практике — оба
В последних проектах верхнеуровневое решение принимает Utility AI («атаковать», «отступить», «занять укрытие»), а маленькое дерево поведения исполняет, как именно это решение разворачивается.
Такое разделение берёт сильную сторону обоих подходов: решения остаются гибкими, исполнение — читаемым.
Забытая третья часть
Какую бы архитектуру вы ни выбрали, правдоподобие решает система восприятия. Когда враг вас видит, когда слышит, когда забывает?
ИИ с идеальной информацией ощущается нечестным независимо от структуры дерева за ним. Большая часть моего времени уходит на восприятие, а не на поведение.