For a story-driven game in Unreal Engine, the trend isn't that Behavior Trees have been replaced—it's that they're increasingly used as one layer in a broader AI architecture rather than as the entire system.
Here's roughly where things stand today:
| System | Best for | Weaknesses |
|---|
| Behavior Trees | Reactive moment-to-moment behavior | Can become huge and hard to maintain |
| GOAP | Emergent planning and dynamic goals | Harder to author and debug narrative behaviors |
| Utility AI | Choosing between competing behaviors | Doesn't define how behaviors execute |
| State Machines | Simple, explicit logic | Doesn't scale well for many situations |
| Modular task systems | Reusable gameplay actions | Needs a decision layer above it |
What many Unreal teams do now
Instead of giant Behavior Trees, a common architecture looks like:
High-level Director
│
▼
Goal Selection
(Utility / Story / Planner)
│
▼
Behavior Tree
│
▼
Reusable Tasks
│
▼
Gameplay Ability / Movement / Animation
The Behavior Tree is responsible for execution, not strategic thinking.
For example:
Current Goal:
Investigate noise
Behavior Tree:
Sequence
MoveToNoise
LookAround
SearchNearby
IfEnemyFound
Engage
Else
ReturnToPatrol
Tomorrow the high-level goal might instead be:
Escort NPC
and the same BT can reuse many of the lower-level tasks.
Utility AI is becoming very popular
Rather than a giant selector:
Selector
Attack
Patrol
Eat
Sleep
Talk
Flee
Search
Idle
Celebrate
many games score behaviors:
Attack score = 72
Flee score = 65
Talk score = 5
Search score = 34
Highest score wins.
This keeps adding new behaviors from requiring edits across a massive tree.
GOAP is excellent—but for specific kinds of games
GOAP shines when NPCs should discover solutions instead of following authored scripts.
Classic example:
Goal:
Enemy dead
Planner discovers:
Need weapon
Need ammo
Need cover
Reload
Shoot
instead of designers scripting every path.
It's fantastic for:
- immersive sims
- systemic RPGs
- sandbox games
Examples include games inspired by F.E.A.R. or modern systemic simulations.
For heavily story-driven games:
- designers usually want predictable performances
- dialogue timing matters
- cinematics matter
- emotional pacing matters
So GOAP often creates more work than it saves.
Behavior Trees still excel at authored experiences
Suppose an NPC should:
Walk into tavern
Sit
Drink
Notice player
Smile
Wait until dialogue starts
Stand
Lead player upstairs
A BT is excellent here because it's explicit and easy to sequence.
Trying to make a planner discover this sequence is usually unnecessary.
One pattern that scales well
Instead of enormous trees:
Civilian_BT
with 800 nodes...
build many small subtrees.
Root
Select Goal
Run Behavior
Patrol_BT
Investigate_BT
Combat_BT
Conversation_BT
Search_BT
Escort_BT
Flee_BT
Each subtree stays around 30–80 nodes.
Make tasks tiny
Avoid:
InvestigateAndSearchAndReturnHome
Prefer:
MoveTo
Wait
LookAt
PlayAnimation
ChooseSearchPoint
CheckLOS
FaceTarget
OpenDoor
CloseDoor
Tiny tasks become building blocks used everywhere.
Separate knowledge from behavior
Avoid putting logic like:
If Health < 30
If FriendDead
If PlayerVisible
If WeaponLoaded
directly into every tree.
Instead maintain a world state (often via a blackboard plus perception and game state):
Health
CurrentEnemy
LastSeenLocation
HasWeapon
Morale
AlertLevel
CompanionAlive
Behavior Trees then consume this data instead of recomputing it.
Separate decision frequency
Not everything needs updating every frame.
For example:
Combat choice:
10 Hz
Path updates:
5 Hz
Conversation:
event driven
Needs/Hunger:
0.2 Hz
Daily schedule:
0.05 Hz
Reducing unnecessary evaluation improves performance and often simplifies reasoning.
Story games benefit from layered control
A pattern used in narrative-heavy games is:
Story Director
│
▼
Current Role
Companion
Merchant
Quest Giver
Guard
Panicked Civilian
│
▼
Behavior Package
│
▼
Behavior Tree
Changing an NPC's "role" swaps the behavior package without changing the underlying movement, interaction, or combat implementations.
My preferred architecture for a medium-to-large Unreal project
For a narrative game with exploration and combat, I'd typically organize AI like this:
Story System
│
▼
Goal Selection
(Utility AI or story-driven rules)
│
▼
Behavior Tree
│
├── Modular Subtrees
├── EQS Queries
├── Blackboard
└── AI Perception
│
▼
Reusable Tasks
│
▼
Gameplay Ability System (if used)
│
▼
Animation / Movement
This keeps responsibilities clear:
- Story systems decide what an NPC should ultimately be trying to accomplish.
- Goal selection chooses the current objective based on narrative state and game context.
- Behavior Trees execute that objective reactively.
- Reusable tasks encapsulate low-level actions that can be shared across many behaviors.
For most story-driven Unreal games, I wouldn't replace Behavior Trees outright. I'd keep them focused on execution, use modular subtrees and reusable tasks to avoid monolithic graphs, and add a higher-level decision layer (often Utility AI or narrative rules) for selecting goals. GOAP is worth considering if you want NPCs to solve open-ended problems creatively, but for tightly authored narrative sequences it's usually more complexity than benefit.