Montage Slots Layered Over Locomotion¶
A montage can be playing correctly and still do nothing visible if the AnimGraph has no matching Slot node in the final pose path. Slots are the insertion points; layered blending decides whether the action is full body or only upper body.
At a glance
Use this for: attacks, reloads, emotes, hit reactions, interactions, and combo sections that should play over or replace locomotion - Main pieces: Montage asset slot track, AnimGraph Slot node, optional cached locomotion pose, optional Layered Blend Per Bone - Can fail by: wrong slot name/group, slot not reaching Output Pose, montage interruption, missing AnimInstance, layer order, or local-only multiplayer playback - Official docs: Animation Montage, Animation Slots, and Play Montage
The one-minute version¶
- A Slot node is an AnimGraph entry point where montage animation can be inserted.
- When no montage is active for that slot, the Slot node usually passes through its source pose.
- When a matching montage plays, the slot can blend the montage pose into or over that source pose.
- The montage asset's slot track name must match the Slot node name in the AnimGraph path that reaches Output Pose.
- For upper-body attacks, cache locomotion, run a Slot for the upper-body montage, then use Layered Blend Per Bone to apply that slot only to spine/arm bones.
- Multiplayer montage visibility comes from triggering playback on the machines that should see it, usually after a server-owned gameplay decision.
What a Slot node does¶
In the AnimGraph, a Slot node has a source pose and a slot name:
Locomotion pose
-> Slot "DefaultSlot"
-> Output Pose
If no montage uses DefaultSlot, the node behaves like a pass-through for the
source pose. If a montage using DefaultSlot is playing on that AnimInstance,
the slot becomes the place where that montage contributes pose data.
That is why this can happen:
Character calls Play Montage AttackMontage
-> On Completed / On Interrupted callbacks work
-> but the mesh never visibly attacks
The request existed, but the AnimGraph had no matching slot path feeding the final pose.
Slot names and groups¶
Montages use slots by name. Common names:
DefaultSlot;UpperBody;FullBody;- project-specific names such as
RifleUpper,LeftArmOnly, orEmote.
Use names intentionally:
AttackMontage slot track = UpperBody
AnimGraph Slot node name = UpperBody
Slot groups help organize which montage tracks can play together or conflict.
For a first project, the main rule is simpler: do not leave everything on
DefaultSlot once you need independent full-body, upper-body, and additive
actions.
Full body vs upper body¶
Full-body montage:
Locomotion cached pose
-> Slot "FullBody"
-> Output Pose
Use for:
- death animations;
- emotes that replace movement;
- knockdowns;
- long interactions where locomotion should not continue underneath.
Upper-body montage:
Locomotion State Machine
-> Save Cached Pose "Locomotion"
Upper source:
Use Cached Pose "Locomotion"
-> Slot "UpperBody"
Final:
Layered Blend Per Bone
Base Pose = Use Cached Pose "Locomotion"
Blend Pose = Upper source
Branch Filter = spine_01, depth 4
-> Output Pose
Use for:
- firing while running;
- reloads while walking;
- melee swings over foot movement;
- interactions where legs should keep locomotion.
Sections, notifies, and gameplay timing¶
Slots only place the montage pose in the graph. The Montage still owns:
- sections such as
Start,Loop,End,Combo_2; - notifies and notify states;
- blend in/out times;
- play rate and interruption behavior.
Gameplay should read those timing signals deliberately:
Play Montage Attack
-> On Notify Begin "MeleeWindow": start trace
-> On Notify End "MeleeWindow": stop trace
-> On Completed / Interrupted: clear attack state and cleanup
Do not use a Slot node as the proof that damage happened. The Slot displays the pose. Gameplay still owns hit rules, health, score, and replication.
Root motion in slots¶
Montages can carry root motion. That changes the movement question:
- a full-body root-motion montage may drive the capsule through Character Movement's root-motion handling;
- an upper-body slot should usually avoid moving the root/pelvis if locomotion is meant to continue;
- Layered Blend Per Bone has root-motion-related settings that affect how root contribution is treated.
If an attack lunge should move the character, decide whether it is truly root motion or a gameplay movement action. Do not accidentally put a root-moving attack in an upper-body layer and then wonder why the capsule, mesh, and feet disagree.
Replicated montage requests¶
Play Montage is local to the mesh/AnimInstance where you call it. In
multiplayer, ask which machines should see the action:
Owning client presses Attack
-> local prediction may play montage immediately for responsiveness
-> Run on Server RequestAttack
-> server validates
-> server sets replicated attack state or multicasts cosmetic montage request
-> relevant clients play montage on their local mesh copies
For private first-person arms, maybe only the owning client needs a montage. For a third-person attack other players should see, relevant clients need a playback trigger or replicated state. For damage, the server still decides the hit result.
Debugging "the montage plays but I see nothing"¶
Check in this order:
1. Is the SkeletalMeshComponent target valid?
2. Is the mesh using the expected Animation Blueprint at runtime?
3. Does Play Montage return callbacks or an interrupted path?
4. Does the montage asset use the slot name you expect?
5. Does the AnimGraph have a Slot node with that exact slot name?
6. Does that Slot node reach Output Pose?
7. Is a Layered Blend Per Bone weight/branch hiding the affected bones?
8. Is another montage or slot group interrupting it?
9. Is root motion moving the mesh/capsule differently than expected?
10. In multiplayer, did you call it on the machine whose viewport you are watching?
Do not rebuild the state machine until the slot path is proven.
When it fails, and what failure looks like¶
| Symptom | Likely cause |
|---|---|
| Montage callbacks fire but pose unchanged | No matching Slot node reaches Output Pose. |
| Full body freezes locomotion | Slot replaces the final pose and is not layered over a cached base. |
| Upper-body attack moves legs | Slot is placed after the whole body path or branch filter includes lower body/root. |
| Reload does not affect arms | Wrong slot name/group, layer branch bone, blend weight, or incompatible animation. |
| Attack interrupts reload unexpectedly | Slot/group conflict or "stop all montages" behavior. |
| Notify never fires | Montage is interrupted, wrong notify type, or playback never reaches the marker. |
| Other clients do not see it | Montage was only played locally. |
Failure often looks like "animation is broken," but the real issue is usually slot path, layer path, or network trigger path.
What Slot nodes do not do¶
- They do not start montage playback by themselves.
- They do not create the montage asset or sections.
- They do not decide full-body vs upper-body without the surrounding graph.
- They do not validate gameplay or apply damage.
- They do not replicate animation playback.
- They do not fix missing/incompatible AnimInstances or skeletons.
- They do not guarantee root motion is appropriate for the movement feature.
Lookalikes - which one do I want?¶
| Tool | Use when | Watch out |
|---|---|---|
| Slot node | Montage/slot animation needs an AnimGraph insertion point. | Must match the montage slot and reach Output Pose. |
| Play Montage | Gameplay/Blueprint starts a montage and wants callbacks. | Local to the target mesh unless you replicate the trigger/state. |
| Layered Blend Per Bone | Slot output should affect only selected bones. | Branch filter and root motion settings matter. |
| Cached pose | Locomotion should be reused as both base and slot source. | Not persistent storage. |
| State Machine | Current mode should be chosen by transition rules. | One-shot actions often fit montages better. |
| Anim Notify/Notify State | Timing inside the montage should fire a moment/window. | Not a playback-start node. |
Rule of thumb: montage asset chooses the action, Play Montage starts it, Slot node receives it, layered blend decides which bones show it.
Going deeper¶
- Animation Montages / Play Montage - callback pins, sections, interruption, and asset playback.
- Cached poses and Layered Blend Per Bone - the upper-body-over-locomotion graph shape.
- Animation Notifies and Notify States - timing hit windows and effects inside montage playback.
- Root Motion vs Character Movement - when montage movement should drive the capsule.
- Blueprint Custom Events as RPCs - triggering montage presentation from server-approved gameplay.
- Official docs: Animation Slots, Animation Montage, Play Montage, and FAnimNode_Slot.
- Engine source (requires engine access - we do not reproduce it here):
slot runtime data is declared in
Engine/Source/Runtime/AnimGraphRuntime/Public/AnimNodes/AnimNode_Slot.hwith implementation in the matchingAnimGraphRuntimeprivate source; montage runtime data lives inEngine/Source/Runtime/Engine/Classes/Animation/AnimMontage.h;UAnimInstance::Montage_Playand montage update/callback behavior live inEngine/Source/Runtime/Engine/Private/Animation/AnimInstance.cpp.