Bunderkin: The Ocular Eclipse
Built the NPC animation system for a 42-character stealth action-adventure in UE5. One data-driven Animation Blueprint drives every character in the game, and a free public demo is on Steam.
The Shipped Demo, By The Numbers
42+
characters on disparate skeletons
1
master NPC Animation Blueprint
129
IK Retargeters from 4 source skeletons
21
Control Rigs, foot IK to dialogue look-at
~103
montages: traversal, stealth, captures
+10 FPS
recovered via anim LODs + significance
Asset counts enumerated from the shipped demo's package manifest; the FPS figure was measured in production on the 40-minute demo build.
The Problem
42 characters with disparate skeleton hierarchies, each needing its own Animation Blueprint. Per-character ABPs meant every animation change multiplied across the cast, and with that many NPCs ticking at once the frame budget was gone before gameplay had a chance.
In a stealth game it matters twice: animation is the player's information channel. A guard's look-around, flashlight sweep, or alert wind-up is how the player reads danger. The system had to scale across the whole cast without flattening those reads, and it had to run.
Architecture: One ABP, Layered Per Character
A single master Animation Blueprint owns the state machine, locomotion blend spaces, and montage slots for every NPC. Character-specific behavior plugs in through Linked Anim Layers, so a cop, a cultist, and a shopkeeper share one graph while keeping their own personality layers. Add a character and it inherits the entire system: no new ABP, no copy-paste maintenance.
Runtime pose flow for every NPC in the game. Per-character variation lives in linked layers; Control Rig and spring-bone physics finish the pose.
Why linked layers
Child ABPs fork the graph, and every fork is a future merge conflict. Linked Anim Layers keep one authoritative state machine while letting each character override exactly the slots that make them feel distinct. The cast stays maintainable at 42 and at 62.
Why data-driven
Which blend space, which montage set, which layer: all of it resolves from data per character rather than branching logic in the graph. Animators add and tune characters without touching the master ABP, which is what the studio team was trained to do before I rolled off.
Retargeting: Four Source Skeletons Feed The Whole Town
Animation is authored once on a small set of source skeletons, then fanned out across the cast through UE5's IK Rig + IK Retargeter chain: 44 IK Rigs and 129 retargeter assets in the shipped build. Disparate hierarchies stop being a blocker, they become a lookup.
One clip authored on a source skeleton lands on every character it maps to.
Stealth: Animation As The Player's Information Channel
Perception-driven AI (StateTree patrols) escalates through an animation vocabulary the player learns to read: idle patrol, a suspicious look-around with a moving flashlight, full alert, search, capture. Each beat is a distinct montage. Dialogue and cutscenes get their own Control Rig treatment, including a skeleton-agnostic look-at rig so any character can track any target with no per-character setup.
The escalation loop as the player experiences it; every state maps to real montages in the shipped build.
Getting caught: on the player character my scope was targeted, BeeDee's capture sequence and the look-at behavior. His core locomotion and traversal moveset are the studio animation team's work.
The living town: every character on screen runs through the same master graph and retargeting chain.
Performance: Recovering 10 FPS From The Animation Budget
A town full of ticking NPCs is a budget problem before it is an animation problem. A significance system layered with animation LODs gives characters the player is engaging with the full graph while background characters step down through cheaper evaluation tiers. Measured on the 40-minute demo build: 10 FPS recovered. On top of that, a 5-layer idle life system and physics-based secondary motion keep background characters reading as alive without bespoke animation per NPC.
Priority goes where the player is looking. Stealth reads stay crisp on the guards that matter; the market crowd stops billing the frame for fidelity nobody can see.
What I Built
- The NPC animation system: the unified data-driven ABP architecture every character runs on.
- The cross-skeleton retargeting pipeline that lets one authored clip serve the whole cast.
- Animation LODs and the significance system behind the 10 FPS recovery.
- A skeleton-agnostic Control Rig look-at system for dialogue and perception.
- BeeDee's capture sequence: the caught beat on the player character.
- A 5-layer idle life system plus physics-based secondary motion.
- Team enablement: trained the studio's animators to own and maintain the systems.
Bunderkin is a team effort by Studio Zubio's developers, artists, and animators. This describes my slice: the NPC animation systems layer, plus the capture sequence and look-at behavior on the player character. BeeDee's core locomotion and traversal, character art, gameplay, world, and the game's charm belong to the whole team.
Built With
Unreal Engine 5
Animation Blueprints
Linked Anim Layers
IK Rig / IK Retargeter
Control Rig
StateTree
Animation LODs
Blueprint