ИИ и Behavior Trees
ИИ в Unreal Engine — Behavior Tree, Blackboard, AIController, NavMesh, AI Perception, EQS, а также приёмы отладки и масштабирования AI-персонажей.
12 вопросов
JuniorТеорияОчень частоЧто такое Behavior Tree в системе ИИ Unreal и как оно управляет решениями?
Что такое Behavior Tree в системе ИИ Unreal и как оно управляет решениями?
Behavior Tree — это визуальный ассет, управляющий решениями ИИ. Он выполняется от корня через узлы Composite (Selector, Sequence) к листьям Task, читая состояние из Blackboard, чтобы выбрать действия.
Типичные ошибки
- ✗Путать Behavior Tree (логика) с Blackboard (данные)
- ✗Путать
Selector(до первого успеха) иSequence(до первой неудачи) - ✗Класть логику решений в Task вместо использования узлов
Decorator
Уточняющие вопросы
- →Чем узел
Selectorотличается отSequence? - →Какую роль играет узел
Serviceвнутри Behavior Tree?
MiddleКодОчень частоКак заставить ИИ преследовать игрока в Unreal Engine?
Как заставить ИИ преследовать игрока в Unreal Engine?
Сохраните игрока в Object-ключ Blackboard (через perception), затем Sequence в Behavior Tree запускает задачу MoveTo с целью на этот ключ. MoveTo каждый тик строит путь по NavMesh, а Decorator прерывает ветку, когда ключ очищается.
Типичные ошибки
- ✗Телепортировать через
SetActorLocationвместо движения черезMoveTo - ✗Кэшировать позицию игрока один раз вместо чтения живого ключа
- ✗Забыть NavMesh, из-за чего
MoveToмолча не двигает pawn
Уточняющие вопросы
- →Как
AcceptanceRadiusуMoveToвлияет на момент успеха задачи погони? - →Как заставить ИИ предсказывать и перехватывать движение игрока?
MiddleТеорияОчень частоКак работают Behavior Trees в Unreal Engine?
Как работают Behavior Trees в Unreal Engine?
Behavior Tree исполняется компонентом UBehaviorTreeComponent, который обходит узлы сверху вниз и слева направо. Композиты (Selector, Sequence) задают поток, листья-Task действуют, Decorator гейтит ветки по условию, а Service-узлы обновляют данные по расписанию.
Типичные ошибки
- ✗Думать, что узлы выполняются параллельно, а не упорядоченным обходом сверху вниз
- ✗Путать
Service(периодическое обновление данных) сTask(листовыми действиями) - ✗Считать, что условия
Decoratorпроверяются лишь один раз при старте
Уточняющие вопросы
- →Что делает настройка
Observer AbortsуDecorator? - →Как узел-
Taskсообщает родительскому композиту об успехе или провале?
JuniorТеорияЧастоЗа что отвечает AIController в Unreal Engine?
За что отвечает AIController в Unreal Engine?
AIController — это «мозг» без игрока, который владеет Pawn. Он запускает Behavior Tree, держит Blackboard и компоненты AIPerception, отдаёт команды движения через MoveTo и существует отдельно от управляемого pawn.
Типичные ошибки
- ✗Думать, что
AIController— компонент на pawn, а не отдельный actor - ✗Считать, что pawn запускает собственный Behavior Tree без контроллера
- ✗Полагать, что контроллер уничтожается при гибели или отвязке pawn
Уточняющие вопросы
- →В чём разница между
AutoPossessAIи ручным вызовомPossess? - →Почему
AIControllerможет пережить управляемый имPawn?
JuniorТеорияЧастоЧто такое система AI Perception в Unreal и что она позволяет делать ИИ?
Что такое система AI Perception в Unreal и что она позволяет делать ИИ?
AI Perception позволяет ИИ воспринимать мир. AIPerceptionComponent регистрирует чувства вроде Sight, Hearing и Damage и вызывает события при обнаружении или потере стимулов, чтобы ИИ реагировал.
Типичные ошибки
- ✗Забывать зарегистрировать конфиг чувства, из-за чего стимулы не обнаруживаются
- ✗Путать AI Perception (восприятие) с NavMesh (передвижение)
- ✗Считать, что
Sightигнорирует перекрытие линии обзора стенами
Уточняющие вопросы
- →Как событие
OnTargetPerceptionUpdatedпомогает управлять реакциями ИИ? - →В чём разница между чувствами
SightиHearing?
JuniorТеорияЧастоЧто такое Blackboard в системе ИИ Unreal?
Что такое Blackboard в системе ИИ Unreal?
Blackboard — это память «ключ-значение», общая для Behavior Tree и его AIController. Типизированные ключи (Object, Vector, Bool, Enum) хранят состояние ИИ; узлы Decorator и Service читают и пишут их, чтобы дерево реагировало на изменение данных.
Типичные ошибки
- ✗Путать Blackboard (данные) с Behavior Tree (логика)
- ✗Считать, что один Blackboard глобально общий для всех экземпляров ИИ
- ✗Думать, что ключи Blackboard нетипизированы и принимают любое значение
Уточняющие вопросы
- →Как
Decoratorможет автоматически реагировать на изменение ключа Blackboard? - →Почему каждому pawn ИИ во время выполнения выдаётся собственный экземпляр Blackboard?
MiddleКодЧастоКак реализовать патрулирование для ИИ в Unreal Engine?
Как реализовать патрулирование для ИИ в Unreal Engine?
Расставьте actor-точки патруля, выставьте их на pawn и используйте Sequence в Behavior Tree: кастомный Task кладёт следующую точку в Vector/Object-ключ Blackboard, MoveTo идёт туда, затем Wait делает паузу, после чего индекс сдвигается и цикл повторяется.
Типичные ошибки
- ✗Считать, что Behavior Tree не зацикливается —
Sequenceпод циклящим родителем умеет - ✗Класть координаты waypoint в дерево вместо ключа Blackboard
- ✗Забыть задачу
Wait, из-за чего ИИ дёргается между точками без паузы
Уточняющие вопросы
- →Как переключиться с патруля на погоню, когда perception видит игрока?
- →Должны ли точки патруля идти по кругу, маятником или случайно — и как это сделать?
MiddleТеорияЧастоКак реализовать восприятие врага по зрению и слуху в Unreal?
Как реализовать восприятие врага по зрению и слуху в Unreal?
Добавьте AIPerceptionComponent на AIController и настройте конфиги AISense_Sight и AISense_Hearing. Подпишитесь на OnTargetPerceptionUpdated; при срабатывании стимула запишите воспринятого actor в ключ Blackboard, чтобы Behavior Tree отреагировал.
Типичные ошибки
- ✗Размещать
AIPerceptionComponentна pawn вместоAIController - ✗Забывать, что целям нужен
AIPerceptionStimuliSource, чтобы их восприняли - ✗Думать, что одно чувство покрывает зрение и слух без отдельных конфигов
Уточняющие вопросы
- →Что контролирует настройка
Dominant Senseкомпонента восприятия? - →Как заставить ИИ «забыть» цель после потери её из виду?
MiddleДебаггингИногдаКак отлаживать поведение ИИ в Unreal Engine?
Как отлаживать поведение ИИ в Unreal Engine?
Нажмите клавишу апострофа в игре, чтобы открыть AI Debugger (Gameplay Debugger): он накладывает активный путь Behavior Tree, живые значения Blackboard, конусы perception, NavMesh и запрос EQS. Категории переключаются на numpad для изоляции сбойной системы. Здесь сбоит только навигация: под ботом нет NavMesh, поэтому MoveTo не может построить путь и висит в In Progress — чинить надо покрытие навигации, а не дерево.
Типичные ошибки
- ✗Не знать, что апостроф открывает Gameplay Debugger вживую
- ✗Полагаться только на логи вместо визуального оверлея Behavior Tree
- ✗Забывать проверить NavMesh (клавиша
P), когдаMoveToмолча не работает
Уточняющие вопросы
- →Как использовать отдельный визуальный отладчик Behavior Tree для воспроизведения сессии?
- →Что даёт Visual Logger сверх живого Gameplay Debugger?
SeniorТеорияИногдаЧто такое Environment Query System (EQS) в Unreal Engine?
Что такое Environment Query System (EQS) в Unreal Engine?
EQS — это система пространственных рассуждений: запрос генерирует кандидатов (точки или актёров), затем узлы-Test оценивают и фильтруют их по дистанции, линии взгляда и т.п. Он возвращает лучший элемент — для выбора укрытия, обхода с фланга или позиционирования.
Типичные ошибки
- ✗Путать EQS (оценка позиций) с поиском пути по NavMesh (прокладка маршрута)
- ✗Думать, что EQS заменяет Behavior Tree, а не питает его данными
- ✗Запускать тяжёлые запросы каждый тик вместо запуска по требованию или с троттлингом
Уточняющие вопросы
- →В чём разница между
Testдля фильтрации и для оценки элементов? - →Как запустить EQS-запрос в виде узла-
Taskвнутри Behavior Tree?
SeniorТеорияИногдаКак оптимизировать сцену с большим числом AI-персонажей в Unreal Engine?
Как оптимизировать сцену с большим числом AI-персонажей в Unreal Engine?
Используйте Significance Manager для масштабирования работы по значимости, повышайте интервалы тика Behavior Tree для далёких ИИ, троттлите perception и EQS, включайте LOD и animation budgeting, рассмотрите Mass Entity для толп. Отключайте или усыпляйте агентов вне экрана.
Типичные ошибки
- ✗Тикать Behavior Tree каждого ИИ на полной частоте независимо от дистанции
- ✗Считать стоимость ИИ GPU/полигонной, тогда как это в основном CPU-логика
- ✗Запускать perception и EQS каждый кадр для агентов вне экрана
Уточняющие вопросы
- →Когда стоит перевести толпу ИИ на фреймворк Mass Entity?
- →Как
Significance Managerрешает, сколько работы достаётся каждому ИИ?