Unreal AI — five components, not one system
When people say "Unreal AI", they really mean five different components wired together by strict rules: an AIController owns the pawn and runs the tree; a Behavior Tree is the decision logic; the Blackboard is shared memory; the NavMesh is the walkable-geometry topology; AIPerception provides the senses (sight, hearing). Each is understandable on its own — but real AI behaviour only emerges from their wiring.
The classic mistake is writing behaviour in the pawn's Tick: "each frame turn here, check that". That is not the Unreal AI stack at all. The canonical flow looks completely different: the controller runs the tree → the tree reads the Blackboard → the tree fires MoveTo or another Task → the NavMesh produces the path → AIPerception updates the Blackboard. Tick is empty.
The second recurring confusion is Behavior Tree (logic) vs Blackboard (data). They are not interchangeable: the Blackboard stores what the AI knows; the Behavior Tree decides what to do with that knowledge. The full map lives in the layers below.
Topic map
- Behavior Trees — Selector/Sequence/Decorator/Task, traversal order, looping, what invalidates a branch.
- Blackboard — typed keys, per-instance storage, syncing with BT, observed keys.
- AIController — separate actor, AutoPossessAI, manual Possess, outliving the pawn.
- AIPerception — the component, sight/hearing/damage,
AIPerceptionStimuliSourceon targets. - NavMesh —
NavMeshBoundsVolume, dynamic rebuild, agent radius, NavLink. - MoveTo — the Task, async behaviour, target updates, stopping on failure.
Common traps
| Mistake | Consequence |
|---|---|
Attaching AIController as a component to the pawn | AIController is a separate actor, not a component |
Putting AIPerceptionComponent on the pawn | It belongs on the AIController |
| Treating Blackboard as a global singleton | Per-instance — every pawn has its own |
Calling MoveTo without a NavMeshBoundsVolume | Silent no-op; no path is produced |
| Hard-coding waypoint coords inside the BT | They belong in Blackboard keys |
| Writing to a Blackboard key and expecting the BT to react | Needs an Observed Blackboard Key Decorator |
SetActorLocation instead of MoveTo | Bypasses NavMesh; pawn clips through walls |
Assuming the AIController dies with the pawn | By default it outlives the pawn |
Confusing Service (periodic ticking) with Task (action) | Services don't move; Tasks don't tick data updates |
Forgetting AIPerceptionStimuliSource on the target | The pawn is never sensed even when in view |
Interview relevance
AI is a mandatory middle-level topic for any UE5 gameplay interview. Checks:
- That Behavior Tree, Blackboard, and AIController are different components with different responsibilities.
- That
AIControlleris a separate actor, not a component on the pawn. - Why the Blackboard is per-instance.
- How the BT reacts to a key change (Decorator + Observed key).
- Why
MoveTodoes not work without a NavMesh. - Where the
AIPerceptionComponentlives (on the controller) and whyStimuliSourceis required.
Common wrong answer: "I do AI through Tick on the pawn — simple and works." The real answer: that is not the Unreal AI stack, it's procedural code in Tick. The stack is BT + Blackboard + controller; anything else bypasses the engine's machinery.