Map Editor Documentation

Cutscenes

Building an in-game scene from camera keyframes and timed lines, and the one rule that keeps a skipped cutscene from breaking a match.

Page 10 of 12

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

FieldWhat it does
idThe name a trigger uses to start it
lockInputWhether the player can act during the scene
letterboxWhether the black bars come in
Camera trackKeyframes of position, angle and zoom, with easing
linesTimed dialogue, each with a speaker and a duration
SoundCues 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.