A cutscene is a timeline: camera keyframes, timed lines of dialogue, letterbox bars and an input lock, all against a clock. Scenes are stored in the map and started by a trigger action.
The editor is a scrubbable timeline with the viewport above it. Move the camera where you want it, press "set keyframe from current view", and the scene interpolates between keyframes using the same camera machinery the campaign and the trailer pipeline use, so what you scrub through is what plays.
What a scene contains
| Field | What it does |
|---|---|
id | The name a trigger uses to start it |
lockInput | Whether the player can act during the scene |
letterbox | Whether the black bars come in |
| Camera track | Keyframes of position, angle and zoom, with easing |
lines | Timed dialogue, each with a speaker and a duration |
| Sound | Cues placed on the timeline |
The rule that matters
A cutscene cannot change the game. No spawning, no orders, no resource changes. Those are all trigger actions and they belong in a trigger.
The reason is skipping. Camera position and letterbox bars are presentation: one player skipping the scene while another watches it is fine, because neither affects the simulation. Spawning a unit is not presentation. If a scene could spawn, then a player who skipped it would be running a different world from a player who watched it, and the match would fork the moment the skip happened.
So the simulation records only that scene X started on tick T. Everything the
player sees is built from that on each client, and everything the scene needs
to actually do is expressed as trigger actions before or after the
playCutscene action.
In practice this is a small change to how you write a scene. Instead of:
SCENE "ambush"
camera to "ridge_view"
spawn 6 goblin_brawler at "ambush_point" ← not allowed
line: "They were waiting for us."write:
TRIGGER hero enters region "ravine"
create 6 goblin_brawler at region "ambush_point" for player 5
play cutscene "ambush"
SCENE "ambush"
camera to "ridge_view"
line: "They were waiting for us."The units exist before the camera moves, every client agrees they exist, and the scene is purely what the player watches.
Timing and length
Keep scenes short. The input lock is the expensive part: a player who cannot act for forty seconds is a player who is not playing, and in a multiplayer match everyone else is still going.
For a mission opening, a scene of ten to twenty seconds with three or four camera moves is usually enough to establish a place and a problem. Longer than that and the useful pattern is several short scenes triggered by progress rather than one long one at the start.
Dialogue
Lines are timed against the scene clock, with a speaker and a duration. There is no voice acting pipeline for custom maps: lines are text.
If a map is part of a series with a recurring cast, name your speakers consistently across scenes. The interface shows the speaker name as written.
Starting a scene
The playCutscene action takes a scene id. It is a normal trigger action, so a
scene can be started by anything a trigger can detect: the map starting, a hero
reaching a region, a building finishing, a timer, a wave count, a player being
eliminated.
A scene started while another is playing replaces it. There is no queue, on the grounds that two cutscenes competing for the camera is a bug rather than a feature.
Next: Testing.