Skip to content

Demo Cinematic Mode ​

An auto-edited highlight reel from a recorded match.

Usage ​

demo 1                        # load a demo (from demolist, or by filename)
demoplay analyze              # print the highlights it finds, without playing
demoplay cinematic 2          # play a 2-minute reel

From the lobby's Demos page, ⚡ Highlights does the same and lets you pick a reel of 1, 2 or 5 minutes. The shared playback bar offers pause, a timeline and previous/next shot controls. HUD toggles the game HUD during first-person shots; H shows or hides playback overlays and replay chat. Escape or the gold exit plate leaves playback. See Demos.

How a reel is made ​

  1. Analyse. DemoAnalyzer scans every frame of the demo for moments worth keeping and scores each one.
  2. Build. SequenceBuilder picks the best moments to fit the length you asked for (about 8 seconds a segment on average), gives each a camera and a speed, and adds transitions. The top 15% of moments also get an instant replay from another angle.
  3. Play. CinematicDemoPlayer drives the normal demo viewer through the segments, switching the camera for each one.

The analyser works on the recorded frames alone and touches no rendering or network code. It lives in the engine repo (src/shared/demo/); the player is client/CinematicDemoPlayer.ts.

What counts as a highlight ​

TypeWhat it is
fragA kill
multi_killSeveral kills within 200 ticks (1.6 s)
airborne_fragA kill made while the killer was in the air
streak_killA kill that extends a streak
first_bloodThe match's first kill
movementA trick jump, a high-speed run or a big height gain, with no kill

Each moment carries 3 seconds of lead-in and 2 seconds of follow-through.

Scoring ​

A kill starts at 10 points and a movement moment at 5. Tags then multiply the score:

Tag×Tag×
rocket_jump1.8unstoppable1.6
airborne1.5raging1.4
first_blood1.5low_hp (under 30 HP)1.3
trick_jump1.3long_range (over 1500 u)1.2
on_fire1.2high_speed (over 600 u/s)1.2
height_gain1.2close_range (under 150 u), revenge1.1

A rocket jump replaces the airborne bonus rather than stacking with it, and a multi-kill adds 50% per extra kill. Where two moments overlap in time, only the higher-scoring one is kept.

Cameras and speed ​

PresetLookSpeed
chase_heroFirst-person chase on the killerNormal
orbit_killFree camera orbiting the actionSlows to half speed just before the kill, then back
rocket_jump_heroBelow the jump arc, looking up0.75×, dropping to 0.25× at the peak
victim_povChase on the victim before they dieHalf speed just before the kill
dramatic_zoomWide-to-tight dolly0.25× around the kill
replay_orbitSlow 360° orbit for the instant replay0.25×

Transitions between segments are a cut, a crossfade, a white flash or a fade to black.

Tips ​

  • Reel too short or empty? Run demoplay analyze first. A demo of two idle players can have few highlights, and a longer reel cannot invent more.
  • Exporting. There is no built-in video export; record the reel with a screen recorder.

Built on the SHAG Engine.