Quick answer: If the sequence plays in editor but not runtime, the possessable bindings cannot resolve at runtime. Use spawnables for self-contained sequences, or rebind possessables via SetBindingByName before playing. Check “Auto Play” on the Level Sequence Actor is on for sequences that should fire automatically.

Here is how to fix Unreal Sequencer keyframe not evaluating. You author a cinematic in the Level Sequence editor. The camera swoops, the character walks, particles trigger. Press Play in editor — perfect. Launch the game, trigger the cutscene — nothing. Or the camera moves but the character doesn’t animate. Or only half the tracks play. Sequencer’s binding system is powerful but strict about what can be resolved when.

The Symptom

A Level Sequence that plays correctly in editor does not evaluate properly at runtime:

What Causes This

Possessable binding failure. A possessable refers to a specific actor by name. If the referenced actor was destroyed, renamed, or does not exist in the runtime level, binding fails — that track does nothing. Editor preview uses the actor at design time; runtime may not have it.

Spawnable vs possessable confusion. A spawnable is owned by the sequence — spawned on Start, destroyed on End. If you convert a possessable to spawnable, you get a duplicate actor. If you convert spawnable to possessable, the original actor no longer exists.

Auto Play disabled. The Level Sequence Actor has an Auto Play property. If off, the sequence is loaded but not played. You must call Play programmatically.

Playback range wrong. Work Range (editor preview) and Playback Range (runtime limits) are separate. A track outside Playback Range does not play at runtime even though it’s visible in the editor.

Runtime evaluation disabled. Project Settings > Sequencer has options that can disable runtime playback. For shipping builds, make sure sequence evaluation is enabled.

The Fix

Step 1: Convert critical bindings to spawnables. For a cutscene where you do not care about game state — a camera fly-through, a self-contained intro — right-click each binding in the Sequencer outliner and choose “Convert to Spawnable.”

Spawnables are self-contained: the actor data is stored in the sequence, and playing the sequence creates a fresh actor. Runtime binding is automatic.

Step 2: Rebind possessables at runtime. For sequences that target the current player (e.g. “player takes damage and falls down”), keep them as possessables and rebind before playing:

// Rebind possessable to current player
ULevelSequencePlayer* Player = nullptr;
ALevelSequenceActor* SeqActor = nullptr;

UMovieSceneSequencePlayer::CreateLevelSequencePlayer(
    GetWorld(), LevelSequence, FMovieSceneSequencePlaybackSettings(),
    SeqActor);
Player = SeqActor->GetSequencePlayer();

// Get the binding we want to rebind
FMovieSceneObjectBindingID BindingID = GetBindingIDForPlayer();
TArray<UObject*> OverrideArray;
OverrideArray.Add(GetPlayerCharacter());

Player->SetBindingByTag(TEXT("Player"), OverrideArray);
Player->Play();

Use Binding Tags on possessables for this pattern: tag the possessable “Player” in the Sequencer, then rebind by tag at runtime.

Step 3: Verify Auto Play or call Play explicitly. Select the Level Sequence Actor in the level. Auto Play options:

For programmatic triggering, use:

LevelSequenceActor->GetSequencePlayer()->Play();

// Or with options:
FMovieSceneSequencePlaybackSettings Settings;
Settings.LoopCount.Value = 0;
Settings.PlayRate = 1.0f;
SeqActor->GetSequencePlayer()->PlayAt(Settings);

Step 4: Check playback range matches work range. In the Level Sequence editor, the green playback range bar should cover all your keyframes. A playback range that ends before the last keyframe means runtime skips the rest.

Expand the playback range: drag the right green marker, or Sequence Settings > Playback Range > End.

Debugging Binding Resolution

Enable Sequencer verbose logging:

[Core.Log]
LogMovieScene=Verbose
LogLevelSequence=Verbose

Run the game. The log shows binding resolution attempts, successes, failures. “Could not bind” messages tell you exactly which actor could not be found.

Also useful: ke * ListSequences in console shows active sequences and their state in real-time.

Blueprint Play Pattern

In Blueprint, use Create Level Sequence Player node to instantiate, bind parameters, then call Play. Fire on gameplay events (level enter, boss defeated, player death). Attach cleanup logic to OnFinished delegate.

“Sequencer is a binding system first and a timeline second. Bindings that cannot resolve are silent failures; learn to check them first.”

Related Issues

For related animation issues, see Skeletal Mesh Merge Not Combining Materials. For actor attachment in cutscenes, AttachActorToComponent Wrong Transform covers related runtime patterns.

Spawnables for self-contained, possessables with tagged rebinds for game-state-aware sequences.