Lights, Camera, Verse: Playing Cinematic Sequences
Tutorial intermediate compiles

Lights, Camera, Verse: Playing Cinematic Sequences

Updated intermediate Scene Graph Animation Cinematic Code verified

Lights, Camera, Verse: Playing Cinematic Sequences

In Part 1 we animated one mesh. But a real reveal — a vault door grinding open while the camera swoops and the lights flare — is a dozen things moving in sync. You don't hand-code that in Verse. You author it once in Sequencer (UEFN's cinematic timeline), wrap it in a Cinematic Sequence device, and then drive the whole shot from Verse with a couple of calls.

A cinematic stage: a camera rig facing a reveal pedestal, a play button and a rewind button in front

What a Cinematic Sequence device gives you

<!-- section-art:what-a-cinematic-sequence-device-gives-you --> Lights, Camera, Verse: Playing Cinematic Sequences: What a Cinematic Sequence device gives you

Reverse Rewind

You build the content of the shot in Sequencer — camera cuts, animated props, lights, fades. The device hands Verse the transport:

Cine.Play()           # roll the sequence forward
Cine.PlayReverse()    # roll it backward
Cine.Stop()           # stop and stay put
# React the moment it finishes (StoppedEvent carries no data):
Cine.StoppedEvent.Subscribe(OnSequenceDone)

Two things make this powerful:

  • PlayReverse() gives you a perfect rewind for free — no second Sequencer track, no re-authoring. The same cinematic plays backward.
  • StoppedEvent fires the instant the sequence stops — at its natural end, or because you called Stop()/GoToEndAndStop(). That's your hook to do something when the show's over.

One setup note: the no-argument Play() / PlayReverse() only work when the device's Plays For option is set to Everyone. (If it's set to a specific instigator, you pass an agent: Cine.Play(SomeAgent) — we'll use that form in the capstone.)

A play/rewind console with a payoff

Here's a drop-in device: one button rolls the cinematic forward, another rewinds it, and when the sequence finishes, a fanfare plays. That fanfare is wired through StoppedEvent — the cinematic literally earns its payoff.

The load-bearing details:

  • Cine : cinematic_sequence_device — the @editable slot for your Sequencer-authored shot.
  • StoppedEvent.Subscribe(OnSequenceStopped) — note OnSequenceStopped takes no parameters. StoppedEvent is a listenable(tuple()) — it signals "stopped" with an empty payload, so your handler's signature must match (no agent, nothing).
  • It fires on every stop. Reach the end naturally → fanfare. Call Stop() → fanfare. That's usually what you want for a "show's over" cue, but it's worth knowing so you don't double-trigger.

This device is compile-verified in UEFN 5.8 (the whole project builds clean with it installed). Grab it as 03-device.verse, then wire its slots: your Cinematic Sequence device into Cine, two Buttons into PlayButton/RewindButton, and an Audio Player (set to Heard by Everyone) into Fanfare.

Subscribable, not a callback you poll

<!-- section-art:subscribable-not-a-callback-you-poll --> Lights, Camera, Verse: Playing Cinematic Sequences: Subscribable, not a callback you poll

Event Subscription

Notice we never check "is the sequence done yet?" in a loop. We subscribe to StoppedEvent once in OnBegin, and Verse calls our handler when it happens. That's the events model the whole engine runs on — a listenable you Subscribe to, exactly like a Button's InteractedWithEvent. Cinematics are just one more thing that broadcasts.

Recap

  • Author the shot in Sequencer; wrap it in a Cinematic Sequence device; drive it from Verse.
  • Transport is Play(), PlayReverse(), Stop() — and PlayReverse() is a free, perfect rewind.
  • StoppedEvent is a listenable(tuple()) — subscribe to it to react when the sequence stops; the handler takes no parameters.
  • It fires on every stop (natural end or a manual Stop/GoToEndAndStop).
  • No-argument Play() needs the device set to Everyone; otherwise pass an agent.

Next — Part 3: The Director's Chair — we stop just pressing play and start directing: slow-mo, freeze-frame, scrubbing the playhead, and reading the sequence's live position to sync other systems.

Get the complete code — free

You've read the full walkthrough. The complete, copy-paste-ready Verse solution is free for members — sign in to unlock it.

Free with your BrainDead.TV / BrainDeadGuild Discord account. The walkthrough above is always free.

Verse source files

Check your understanding

Test yourself with an interactive quiz and track your progress + earn XP — free for members.

Up next · Scene Graph: Skeletal & Sequenced Animation The Director's Chair: Scrub, Speed & Reverse Continue →

Turn this into a guided course

Add UEFN Verse cinematics — cinematic_sequence_device Play/PlayReverse/Stop, StoppedEvent listenable(tuple()), Sequencer, subscribe model to your free study plan — we'll suggest related pages and stitch the lot into one compile-checked, self-guided lesson with worked examples and quizzes.

Original tutorial generated by Verse Island from the Verse/UEFN knowledge base, with references to the Epic Games sources above. Code is validated against the knowledge base.

Comments

    Sign in to vote, comment, or suggest an edit. Sign in