Skip to content

Tutorials · Animation and Cutscenes · Chapter 12

The opening

35 minutes Uses: Timeline, CameraRig, AudioSource, Signal, PropertyAnimation, cut, emit, heard, heard_value, in_group, node, play_cutscene, play_sound, ragdoll, set_flag, set_param_flag, set_visible, shake, trigger, wait

By the end

  • A Camera Rig on camera with three framings, follow, stage and marionette, and the camera moved out from under the knight
  • opening, a cutscene of seven tracks and ten seconds: footlights, music, curtain, cloth, the camera’s markers, the marionette’s and the knight’s slash
  • The marionette’s bow, a clip of its own on the base layer’s graph, started by a marker its script turns into a trigger
  • A director that plays the opening and an operator that takes the camera’s shots by name, with a shake and a cut
  • The show exported, opening on its opening
On this page

A camera rig

Since chapter 1 the camera has been the knight’s child, a plain Camera hanging 108 units above him, and the hall’s Confiner has kept it inside the walls. That is a camera that can do one thing. The opening needs three: the stage, with the curtain, then the marionette, close, then the knight. A Camera Rig is a component on the camera that holds several shots, called framings, and blends between them. Each framing is a subject to look at and a way to look at it. Which one is live is decided by which are switched on and which of those has the highest priority.

  1. In the Hierarchy, drag camera out from under knight and drop it on theatre. It goes to the end of theatre’s children, and its Position now reads 160, 180: the editor keeps a node where it stood when you give it a new parent, so the picture does not change.
  2. Select theatre, click + Add node and choose Node. Rename it stage_mark and set its Position to 320, 180: the middle of the stage, a point for the stage shot to look at.
  3. Select camera, click Add component and choose CameraRigComponent. Enabled is ticked, as it comes.
  4. Press + beside Framings three times. Three rows appear, [0], [1] and [2]. Open the first by its arrow.
  5. In [0], set Name to follow, and the row reads 1 follow, its place and its name. Set Subject to knight by choosing him from the list or dragging him from the Hierarchy. Set Duration to 1, Dead Zone to 24, 0, Soft Zone to 160, 0, Offset to 0, 108, Damping to 0.3, 0.5, Time to 0.35, Smoothing to 0.4 and Limit to 48. Active, Priority 0, Zoom 1, Rotation 0 and Ease EaseInOut stay as they come.
  6. In [1], set Name to stage and Subject to stage_mark. Set Priority to 2, Zoom to 1.25, Duration to 0.8, Ease to Cut and Damping to 0, 0. The rest stays as it comes.
  7. In [2], set Name to marionette and Subject to marionette. Untick Active. Set Priority to 3, Zoom to 2, Rotation to 2.86, Duration to 1.2, Ease to Linear and Offset to 0, 60. The rest stays as it comes.
The foot of the Hierarchy: mark_left with sole_left under it, mark_right with sole_right under it, and then camera, stage_mark and opening, level with the marks, opening highlighted
The foot of the Hierarchy: camera and stage_mark are children of theatre now, and so is opening, which comes next.
Three views of the camera’s Inspector, narrowed with the search box, camerarig, to its CameraRigComponent: Enabled ticked, and Framings with three items, 1 follow, 2 stage and 3 marion…, a different one open in each. At the left, the first: Name follow, Subject knight, Active ticked, Priority 0, Zoom 1, Rotation 0°, Duration 1.00 s, Ease EaseInOut, Dead Zone 24.0 and 0.0 u, Soft Zone 160.0 and 0.0 u, Offset 0.0 and 108.0 u, Damping 0.3 and 0.5 s, Time 0.35 s, Smoothing 0.40 s and Limit 48.00 u. In the middle, the second: Name stage, Subject stage_mark, Active ticked, Priority 2, Zoom 1.25, Rotation 0°, Duration 0.80 s, Ease Cut, Dead Zone, Soft Zone, Offset and Damping all 0.0, Time 0.00 s, Smoothing 0.20 s and Limit 0.00 u. At the right, the third: Name marionette, Subject marionette, Active unticked, Priority 3, Zoom 2, Rotation 2.86°, Duration 1.20 s, Ease Linear, Dead Zone and Soft Zone 0.0, Offset 0.0 and 60.0 u, Damping 0.25 and 0.5 s, Time 0.00 s, Smoothing 0.20 s and Limit 0.00 u. Under each, the other two rows are closed, above the Cut to live framing button
The three framings, each opened in turn: follow, stage and marionette.
Enabled
The Camera Rig’s Enabled: whether the rig drives the camera. Ticked, as it comes. Unticked, the rig holds the camera where it is and keeps its springs running, so a cutscene that takes the camera by hand and gives it back does not lurch on the way. Chapter 13’s boss holds a shot that way.
Framings
The Camera Rig’s shots, one row each, in no particular order: which one is live is decided by Active and Priority, not by position in the list. The Cut to live framing button under them lands the camera on the winning shot at once, abandoning any blend, so you can nudge a priority and see the result without waiting out the move.
Name
A framing’s Name: what to call it. A script switches a framing by its name, as the operator does below: framings.stage.active is the Active of the framing called stage.
Subject
The node a framing follows: knight, stage_mark and marionette. Empty, it holds a fixed point. stage_mark is an empty node that never moves, so the stage shot holds still however the knight runs.
Active
Whether a framing is in the running. follow and stage are; marionette starts out of it, and the opening switches it on and off by name.
Priority
Who wins: of the active framings, the higher number takes the camera. stage, 2, beats follow, 0, for as long as it is active, so the show opens on the stage and the knight’s shot waits. marionette, 3, beats both once it is switched on.
Zoom
A framing’s magnification, matching the Camera’s own Zoom. At 1 the view is the whole 640 wide; 1.25 shows 512 of them, a closer stage; 2 shows 320, the marionette filling the picture.
Rotation
A framing’s roll, a Dutch angle; zero is level. The Inspector shows it in degrees: the marionette’s 2.86° leans the picture about three degrees, so the close shot feels staged. Every other framing is level.
Duration
A framing’s blend time: seconds to get into this shot from whatever was live. It belongs to the shot being arrived at, so follow takes a second to come back to the knight and marionette takes 1.2 to get to the wings.
Ease
The shape of the blend into a framing: Cut is no blend at all, Linear is constant speed, EaseInOut speeds up out of the old shot and slows into the new, and Overshoot carries a little past the mark and settles back. stage is a Cut: its Duration, 0.8, is kept but not used while it is, so that switching the shot to an ease does not lose the number. marionette is Linear: a dolly on rails.
Dead Zone
How far the subject may move from where it is supposed to sit, per axis, in world units, before the camera follows: the middle of the picture moved by the Offset. follow’s 24, 0 lets the knight run 24 units either way of his place before it moves, and has it follow his height at once.
Soft Zone
The half-size of the box the subject may not leave, per axis; the camera lags behind him by at most that. 0 on an axis is no limit there. follow’s 160, 0 keeps the camera from ever being more than 160 units behind him sideways, whatever Damping says, and puts no such limit on his height.
Offset
Where in the picture the subject sits, relative to its middle. follow’s 0, 108 puts the knight 108 units below the middle, which is where he stood when the camera hung 108 above him; marionette’s 0, 60 puts the marionette’s feet 60 below it, so the whole figure, cross and feet, fits in the picture.
Damping
Seconds the camera takes to close nine tenths of the gap to its subject, per axis. follow’s 0.3, 0.5 is a little slower going up and down than along, so a jump is mostly ignored and a run is tracked. A new framing’s is 0.25, 0.5; stage holds a fixed point, so its 0, 0 is only tidy.
Time
A framing’s look-ahead: seconds of the subject’s motion the camera leads by. follow’s 0.35 puts the camera where the knight will be a third of a second from now, so it shows more of where he is running. 0 is no lead, and is what the other two have.
Smoothing
Seconds over which the look-ahead itself is damped. Without it the lead would flip the instant the knight turned round, snapping the camera across him. follow’s is 0.4; a new framing’s is 0.2.
Limit
The largest look-ahead, in world units: 48. 0 is uncapped.
Three frames, the three shots of the rig. The stage framing at 3.3 s: the hall’s back wall with its tall vined window, the red valance across the top, the knight small and crouched at the left and five lamps lit along the boards. The marionette framing at 5.5 s, closer: the marionette on its cross, knees bent, one arm raised, with the lever and the trapdoor’s lid at the lower left. The follow framing at 12 s: the same hall seen from further back, the valance high at the top, the knight small at the left and the boards running to the right edge
The three shots as the game draws them, at 3.3 s, 5.5 s and 12 s of a run: stage, marionette and follow.

The cutscene

A cutscene is a .timeline file: tracks of cues, all on one clock. A Timeline component on a node plays it. The opening is ten seconds of seven tracks, and the Cutscene tab is where you build it. Before that, three things on the cast need to be ready for a cutscene to run them.

  1. Select curtain. Chapter 3 saved it standing up, at 96, -240, where its rise ends. Set its Position to 96, 48: it hangs down, and the cutscene will raise it.
  2. In its Property Animation, untick Playing: the cutscene will start rise, so the curtain should not start it itself.
  3. In its Audio Source, untick Autoplay, so that cloth1.ogg stops playing as the game starts. Press + beside Triggers, open the new row, and set Name to cloth and Clip to cloth1.ogg. The cutscene will play it by that name.

The music and the fanfare are two sounds from two more downloads: the castle loop, by StarNinjas, and a steel jingle from Kenney’s Music Jingles. Copy them before the next steps.

  1. Select theatre, click + Add node and choose Cutscene. Rename it opening. It comes with a Timeline component, its Timeline slot empty.
  2. On opening, click Add component and choose AudioSourceComponent. Set Bus to Music, untick Positional, and leave Autoplay off. Add two Triggers: Name music with Clip the castle loop, and Name fanfare with Clip jingles_STEEL07.ogg.
  3. Add a SignalComponent to opening. Press + beside Connections, open the new row, and set Signal to show and To to camera. The director, below, says show when the opening is over, and the camera’s operator hears it.
  4. With opening selected, open the Cutscene tab and press New cutscene. It writes scenes/opening.timeline, beside the scene, named after the node, and points the Timeline at it.
  5. In the bar, set the length, the box that reads 0.00 s, to 10.
opening selected, its Inspector narrowed with the search box, audio, to its AudioSourceComponent: Clip none, Bus Music, Volume 1.00, Pitch 1.00, Looping and Autoplay unticked, and the Spatial group open with Positional unticked, Max Distance 512.00 dimmed and Pan 0.00, with no Blend, Rolloff or Min Distance; then Max Voices 0; under Triggers, two items, the first, 1 music, open with Name music, Clip abandoned_… cut off by the box beside its play button, Clips with no items, Mode Shuffle and its Pitch and Volume groups; and the second, 2 fanfare, open as far as its Name fanfare, its Clip jingles_STE… cut off by the box, Clips and the top of Mode
The opening’s sounds: the Music bus, Positional off, and the two triggers, music and fanfare.
opening selected, its Inspector narrowed with the search box, signal, to its SignalComponent: Connections with one item, its row [0] open with Signal show and To camera
The wire the director uses: show, to camera.
opening selected, its Inspector narrowed with the search box, timeline, to its TimelineComponent: Timeline opening.timeline, Playing unticked and Speed 1.00; the Viewport shows the whole stage as it opens, the red curtain at its left, the hall along its top and the marionette’s small figure at the right, over a dark field
The Timeline component, pointing at the file New cutscene wrote.
Positional
An Audio Source’s Positional: whether its sound is placed in the room. Ticked, as a new Audio Source has it, the sound is quieter the further the node is from the camera, to nothing at its Max Distance, 512, and leans to the left or right of the picture. Unticked, it plays at full volume, centred, wherever the camera is: the Inspector hides Blend, Rolloff and Min Distance, which only a placed sound uses, and dims Max Distance, which a sound that is not placed does not read. The opening’s is unticked.
Timeline
A Timeline Component’s Timeline: the .timeline asset this node runs, here opening.timeline, the file New cutscene wrote. Its tracks and cues are what the Cutscene tab edits.
Playing
A Timeline’s Playing: whether its playhead advances. Unticked, as it comes: a cutscene starts only when something begins it, not when the room loads. The Director script below begins this one by calling play_cutscene. Set on a cutscene that has ended, it plays again from the start.
Speed
A Timeline’s Speed: how fast its clock runs against the game’s. 1 is as authored. Negative plays it backwards from its end, silently: markers and sounds never fire backwards. Chapter 13 rewinds one.

A track belongs to one node and holds one kind of cue. The Cutscene tab has four kinds, and the opening uses each:

Activation
Shows its node for a stretch, or from a time on. Before its first stretch the node is hidden, so the footlights are dark until their cue.
Audio
Does something with sound, by the name of a trigger the node’s Audio Source has. Play sound plays it once, through the node’s Audio Source: placed in the room if Positional is ticked, centred if not. Play music hands it to the Music bus as the room’s music, looping, the same everywhere, replacing whatever music played before. Stop music names no sound and stops the room’s music.
Animation
Starts a clip on the node: a sprite clip from its Animated Sprite, a property clip from its Property Animation, or both if both have the name. It starts from the clip’s first frame.
Event
Names a moment, with a number or word if you like, for a script to hear. It plays nothing itself.
  1. Press Add track, choose Activation, press Pick a node and choose footlights. Add the other six the same way, in this order: Audio on opening, Animation on curtain, Audio on curtain, Event on camera, Event on marionette, and Animation on knight.
  2. To place a cue exactly, click the ruler at its time first: the readout beside the transport shows the playhead, 3.50 s of 10.00, and the red line runs down every lane. Then click the lane on the red line. A cue lands on the nearest sixtieth of a second, which is as exact as the file keeps; drag it if it is a frame off.
  3. On footlights, click the lane at 1.5. A bar a second long appears. Right-click it and tick Open end: it runs to the end, drawn with >>. The lights come on at 1.5 seconds and stay on.
  4. On opening’s Audio track, click at 0.5: a green cue named music appears, a Play sound cue for the node’s first sound. Right-click it and, under Action, press Play music. The cue turns purple and reads Music: music. Click at 5, right-click the new cue and, under Sound, choose fanfare; leave Action on Play sound.
  5. On curtain’s Animation track, click at 2, right-click the cue and choose rise. On its Audio track, click at 2: the cue is cloth, its only sound.
  6. On camera’s Event track, click at 3.5, right-click the marker and type wings into its Marker box. Click at 7, name it stage, and under Payload choose Float and set it to 6.
  7. On marionette’s Event track, click at 5 and name it bow; click at 6.6 and name it rise.
  8. On knight’s Animation track, click at 7.2: the cue names knight, his first clip. Right-click it and choose slash. Press the bar’s Save to write the file.
The Cutscene tab on opening: the bar with the name opening, a length of 10.00 s, On opening, undo, redo and Save; the transport at 3.50 s of 10.00 and 60.52 px/s; a ruler from 0.00 to 10.00 with a red playhead at 3.5; and seven tracks. footlights Activation: a green bar from 1.5 to the end, ending in two arrows. opening Audio: a purple music diamond at 0.5 and a green fanfare diamond at 5. curtain Animation: rise at 2. curtain Audio: cloth at 2. camera Event: wings at 3.5, on the playhead, and stage (6.000) at 7. marionette Event: bow at 5 and rise at 6.6. knight Animation: slash at 7.2. Under them the Add track button
The finished cutscene, the playhead on the wings marker.
The same tab with the playhead at 0.50 s on the first Audio cue and a menu open over it: Action, with three buttons, Play sound, Play music lit, and Stop music; Sound, with music and fanfare; and a red Remove cue; behind it the opening Audio lane has its first cue, labelled Music: music, under the menu, and fanfare at 5
The audio cue’s menu, with Play music lit: the cue is the room’s music.
The same tab with the playhead at 7.00 s on the stage marker and a menu open over it: Marker, with the name stage; Payload, 6.00; a No payload button; and a red Remove cue; behind it the camera Event lane has its wings diamond at 3.5 and the selected stage diamond on the playhead
The stage marker’s menu: its name, and the number it carries.

The lane says which kind each audio cue is, in its label and in its colour. A green name, fanfare, is a Play sound cue: the sound plays once. A purple Music: is a Play music cue, the room’s music, which loops until something replaces it or a grey Stop music cue stops it. The music keeps going under the fanfare and after the opening is over.

The Cutscene tab’s own Play button is a moving scrub: it runs the playhead and poses the scene as it goes, so the curtain rises and the knight swings in the Viewport, but it fires no marker, no sound and no script. To hear and see the whole opening, press F5, and when it is over, press F5 again to stop: what Play changes is not kept.

The marionette’s bow

The marionette’s bow marker at five seconds should make it bow. It does so through its layers, as everything the marionette does has since chapter 9, and not through a cue. A bow is a clip, a graph state for the clip, and two triggers.

  1. Select marionette. In the Animation tab’s Properties mode, press the + beside the clip tabs, type bow and press Enter.
  2. Turn Record on. Key the middle time first. Move the playhead to 0.6, select torso, set its Position to 0, -45.3, and the clip keys it there. Do the same on bar (0, -95.3), on upper_arm_right (its Rotation, -51.57, typed in degrees, as the Inspector takes them) and on head (157.08). The torso and the bar dip 10; the head tips and the right arm sweeps.
  3. Move the playhead to 0 and set each of the four back to where it stood: torso to 0, -55.3, bar to 0, -105.3, upper_arm_right to 0 and head to 180. Do it again at 1.6. At the ends the clip lays the 0.6 pose, so putting the value back is an edit, and the clip keys it; a key at the value the node already had would be no edit, which is why the middle goes first. The bow’s table at the end of the chapter has every key.
  4. At 0 only, select lower_leg_left, lower_leg_right, foot_left and foot_right in turn and set the Weight of its chain to 1, as the idle keys them, so the soles stay on their marks while the knees fold.
  5. On the right arm’s row and the head’s, open the interpolation menu and choose Linear (angle). On the four weight rows choose Step. The two translation rows stay Linear.
  6. Click Ease on the torso translation row. A box shows a straight line from the bottom left to the top right. Double-click the line to add a point, and drag it to about 0.3 across and 0.8 up. Do the same on the bar translation row. The bow starts fast and settles slowly. Turn Record off and press Save in the Properties bar, which writes marionette.propanim.
  7. Select marionette and open the Graph tab. It opens on Layer: base, chapter 9’s graph. In the Parameters list, type bow into the name box, choose trigger in the list of kinds beside it and press Add. Do the same for rise.
  8. In the row over the canvas, type bow into State and bow into Clip, and press Add state. Drag the new box below idle and dance.
  9. Click the Any State box, press Link and click bow. Choose Trigger in its row, type bow in the name box under it and set its blend to 0.3. Press the up arrow at the row’s left until the number at its left reads 0: transitions are tried in order, and this one must not wait behind idle to dance.
  10. Click bow, press Link and click idle. Choose Trigger, type rise and set the blend to 0.3. Press Save in the Graph tab’s bar, and Ctrl+S.
The Animation tab in its Properties mode on marionette, the bow clip lit among its tabs dance, RESET, idle, wave, breath and bow, the playhead at 0.60 s; the torso translation row open on its Ease, a box drawing a curve from the bottom left, up steeply to a point a third of the way across and four fifths up, then gently to the top right, with a Remove ease button under it; below, the rows bar translation, upper_arm_right rotation, head rotation, lower_leg_left weight, lower_leg_right weight, foot_left weight and foot_right weight, the first four with keys at 0, 0.6 and 1.6, the weights with one at 0
The bow clip, the torso’s Ease open: a drawn curve, not one of the named ones.
The Graph tab on marionette, Layer: base, Entry idle: the dashed Any State box at the top left, idle, selected, with the rehearsal’s green dot, below it at the left, dance to the right of idle and bow below them; arrows between idle and dance labelled dancing is false, 0.30s, and dancing is true, 0.30s; and arrows between Any State and bow and between bow and idle labelled trigger bow, 0.30s, and trigger rise, 0.30s; at the right the Parameters, bow trigger, dancing switch and rise trigger, and the Rehearse section with Fire buttons for bow and rise, a dancing tick box, Clip finished, Step and Restart, and the line In: idle
The base layer’s graph: idle and dance, and bow off Any State, whose arrow runs behind idle.

Last, the marionette’s script turns the cutscene’s two markers into the graph’s two triggers. Open marionette.rgs, add this hook between on_enter and loop, and press Ctrl+S. In the comment over the component, after turn and turn about, you can add , and bows when the opening calls for it.

rgs part of marionette.rgs
    fn on_signal() {
        if heard("marker:bow") {
            trigger("bow");
        }
        if heard("marker:rise") {
            trigger("rise");
        }
    }

on_signal runs on a step when a signal reached the node’s inbox, and heard asks which. The Event track on marionette puts marker:bow there at five seconds and marker:rise at six and six tenths, and the script raises trigger, which lives for one step of the graph and is gone after it, whether an edge took it or not. The marionette goes from idle, or from wherever the dance has it, to bow on the first, and from bow back to idle on the second.

Who plays it

Two small scripts run the opening. The director starts the cutscene and says when it is over. The operator takes the camera’s shots as the cutscene’s markers call for them.

  1. In Assets, press Create, choose New script, type director, and press Enter. Replace its text in the Code tab with the script below, and press Ctrl+S. Select opening, click Add component and choose Director.
  2. Make operator the same way, and add Operator to camera.
rgs director.rgs
/// The opening: it plays as the show starts, and when it has played, it
/// tells the camera the show is the knight's.
component Director {
    fn on_create() {
        await play_cutscene();
        emit("show");
    }
}
rgs operator.rgs
/// The camera operator: takes the shots the opening calls for, by their
/// names, and hands the picture to the knight once the opening is over.
component Operator {
    fn on_signal() {
        if heard("marker:wings") {
            set_flag("CameraRigComponent", "framings.marionette.active", true);
        }
        if heard("marker:stage") {
            set_flag("CameraRigComponent", "framings.marionette.active", false);
            cut();
            shake(heard_value("marker:stage"), 0.4);
        }
        if heard("show") {
            set_flag("CameraRigComponent", "framings.stage.active", false);
        }
    }
}

The director’s on_create runs once, on the first step the node exists. play_cutscene starts opening from its start, and with await in front it waits until the cutscene ends. Then emit, from chapter 5, sends show down the wire you made, to camera, and the operator hears it on the next step.

The operator’s on_signal reads three signals. A marker is a signal named marker: and its name, which reaches the node its track belongs to: the camera track’s two markers reach camera, where the operator is, and the marionette track’s two reach marionette. At marker:wings it switches the marionette’s framing on; the rig blends to it over the framing’s own Duration. At marker:stage it switches it off, cuts, and shakes the picture by the number the marker carried. At show it switches stage off, and the highest framing left is follow: the camera eases back to the knight.

play_cutscene
Plays the Timeline on this node from its start. With await in front, the hook waits until it ends: on the step the cutscene reaches its end. If the node has no Timeline, or the file cannot be loaded, the call is said once in the Console and still ends on the next step, so an await never hangs.
set_flag
Writes a true or false onto another component on this node: here "CameraRigComponent", the path "framings.marionette.active", and true. A path segment on a list that is not a number reaches the first row whose Name is that word, so framings.marionette.active is the Active of the framing called marionette, wherever it stands in the list.
cut
Cuts the game’s camera straight to its live framing, with no blend, on the next step.
shake
Shakes the game’s camera by up to strength world units for seconds; a weaker shake during a stronger one changes nothing. The picture moves, not the camera: the shake is drawn on top of the Camera component’s own Offset, never written into it or into a framing, and the room’s Confiner, which holds where the camera rests, never swallows it.
heard_value
The number a signal carried into this node’s inbox this step: marker:stage carries the 6 you typed into its payload, so shake(6, 0.4) is a shake of up to six units for four tenths of a second.
marker:wings
Heard on the step the cutscene’s playhead passes a marker called wings on an Event track of this node: at 3.5. The same goes for marker:stage, at 7, and, on the marionette, marker:bow and marker:rise.
Four frames of the foot of the stage, the red curtain above the boards and the footlights. In the first the curtain hangs to the boards and the footlights are dark. In the second the foot of the curtain glows red and gold above the lit lamps. In the third the curtain has risen about halfway, leaving the dim stage floor below it with the lamps lit along the boards. In the fourth it is gone, and the vined window and the back wall show
1.0 s to 3.0 s: steps 60, 96, 150 and 180, which are 1.0 s, 1.6 s, 2.5 s and 3.0 s of a run. The lights come up at 1.5 s, the curtain rises from 2.0 s.
Four frames of the camera leaving the stage for the marionette: the stage with its vined window and the knight small at the left; the hall’s wall and a window passing, spikes along the boards; the marionette on its cross coming into the right of the frame; and the marionette on its cross at the right of the frame, the whole picture leaning a little
3.5 s to 5.0 s: steps 210, 240, 270 and 300. The wings marker lands on the first; the dolly takes 1.2 seconds, to 4.7 s.
Eight frames of the marionette on its cross in the close shot: standing, one arm raised at the left of the picture and the other out to the right; then its knees folding outward and its body sinking while the arm at the right sweeps, lowest in the fourth and fifth frames; then rising, its arm up, to stand again
5.0 s to 6.6 s: steps 300, 312, 324, 336, 348, 360, 378 and 396. The lowest key is at 5.6 s, the fourth frame.
Four frames: the marionette in the close shot on its cross, with the lever and the trapdoor’s lid; then three of the stage shot, the red valance across the top and the vined window behind, the knight small at the left, crouched in the first two, and in the last swinging his sword in a white arc
6.95 s to 7.3 s: steps 417, 423, 432 and 440. The cut lands at 7.0 s; the shake, up to six units for 0.4 s, moves the picture a few pixels, which a strip of four cannot show; the slash starts at 7.2 s.

The cutscene’s keys are the knight’s. If you hold D from the first step, he runs on while the show plays: out of the stage shot, into the marionette’s close shot, to the hall’s end, and at ten seconds the follow framing takes the picture to him.

Four frames of a run with D held from the start: the stage shot with the curtain gone and the knight not in it; the marionette’s close shot with the knight beside it at the right; the same shot with the knight at the right edge; and the follow shot, wide, with the marionette in the wings and the knight small beside it at the far right of the hall
With D held from the first step to ten seconds: steps 200, 300, 420 and 720, 3.3 s, 5.0 s, 7.0 s and 12 s. The shots stay the cutscene’s until it ends.

The show, exported

The show is finished, and a finished show is one you can hand to someone who does not have the editor. Export writes the game to a folder of its own: your project, with its pictures and sounds prepared for the game to load, and a copy of the player that came with Rengy, named after your project’s folder. Nothing is compiled: the scripts run as they are. Exporting has the whole of it, and Crypt Knight’s export walks through the same steps.

  1. Save with File → Save all: Export copies the files as they are on disk.
  2. Click the Build tab, or choose View → Panels → Build if it is not there.
  3. In its Export section, a line under Export says where the game will be written, ending in animation-and-cutscenes/dist/animation-and-cutscenes/animation-and-cutscenes: your project’s folder, then dist, then a folder and a file both named after it.
  4. Press Export. When it is done, the editor opens the new folder in your file manager.
  5. Double-click animation-and-cutscenes, or animation-and-cutscenes.exe on Windows. On Linux, if double-clicking does not start it, run ./animation-and-cutscenes in a terminal in that folder.
The editor with nothing selected and Look through on, so the Viewport shows the stage as the game camera sees it, the red curtain down with the footlights lit along its foot; the Build tab open in the dock: Build now beside the line Interpreter, scripts run directly, nothing to build; the Export section with the Export and Cook only buttons and the line animation-and-cutscenes/dist/animation-and-cutscenes/animation-and-cutscenes; and a folded Cook assets section
The Build tab’s Export section: the two buttons, and under them the line that says where the game will be written.

The export is the same player running the same files, so the opening plays in it exactly as it plays when you press F5: the music from half a second in, the curtain, the camera’s shots, the marionette’s bow at five seconds, and then the knight. Nothing about a cutscene needs the editor.

The rig, the cutscene and the bow

The camera and its rig

NodeComponentFieldValue
cameraParenttheatre, at the end of its children
Position160, 180
Camera RigEnabledticked, as it comes
stage_markParenttheatre
Position320, 180
Framingfollowstagemarionette
Namefollowstagemarionette
Subjectknightstage_markmarionette
Activetickedtickedunticked
Priority023
Zoom11.252
Rotation0°0°2.86°
Duration10.81.2
EaseEaseInOutCutLinear
Dead Zone24, 00, 00, 0
Soft Zone160, 00, 00, 0
Offset0, 1080, 00, 60
Damping0.3, 0.50, 00.25, 0.5
Time0.3500
Smoothing0.40.20.2
Limit4800

The curtain

NodeComponentFieldValue
curtainPosition96, 48
Property AnimationPlayingunticked
Audio SourceAutoplayunticked
Triggers, Namecloth
Triggers, Clipcloth1.ogg

The opening

NodeComponentFieldValue
openingParenttheatre
TimelineTimelineopening.timeline
Audio SourceBusMusic
Positionalunticked
Triggers, Namemusic
Triggers, Clipabandoned_castle_music_-_starninjas_6.ogg
Triggers, Namefanfare
Triggers, Clipjingles_STEEL07.ogg
SignalsSignal, Toshow, camera
Directorno fields
cameraOperatorno fields
TimeTrackCue
0.5opening, AudioMusic: music
1.5footlights, Activationfrom here, open end
2curtain, Animationrise
2curtain, Audiocloth
3.5camera, Eventwings
5opening, Audiofanfare, Play sound
5marionette, Eventbow
6.6marionette, Eventrise
7camera, Eventstage, carrying 6
7.2knight, Animationslash

The cutscene is 10 seconds long, its seven tracks in the order the steps add them: footlights Activation, opening Audio, curtain Animation, curtain Audio, camera Event, marionette Event, knight Animation.

The bow

RowInterpolationAt 0At 0.6At 1.6
torso translationLinear, a drawn ease through 0, 0, 0.3, 0.8 and 1, 10, -55.30, -45.30, -55.3
bar translationLinear, the same drawn ease0, -105.30, -95.30, -105.3
upper_arm_right rotationLinear (angle)0°-51.57°0°
head rotationLinear (angle)180°157.08°180°
lower_leg_left, lower_leg_right, foot_left, foot_right weightStep1no keyno key

The clip is 1.6 seconds long.

FromToConditionBlend
Any Statebowtrigger bow0.3
idledancedancing is true0.3
danceidledancing is false0.3
bowidletrigger rise0.3

The base layer’s graph gains the state bow, on the clip bow, and the declared triggers bow and rise. Every other field of every node is as it comes.

Check it works