nonscenes

Keyframe editor

The editor builds a cutscene from keyframes: points with a position, a view direction and a time. Use it to create a cutscene from scratch or to fine-tune a recording. All editor commands are player-only and need nonscene.edit.

Opening

/ns edit <name> [tolerance]

The draft is private: nothing is stored until /ns save, and only one player can edit a cutscene at a time. Leaving the server discards the draft.

What you see

While editing, the path is drawn only for you:

Keyframe commands

Keyframe numbers start at 1. Tab completion suggests valid numbers.

Command Description
/ns key add [#] Add a keyframe at your position and view. Without # it is appended at the end.
/ns key move <#> Move keyframe # to your position and view.
/ns key remove <#> Remove keyframe #.
/ns key speed <#> <seconds> How long the camera takes from keyframe # to #+1, 0.05-600 s. 2 and 2s both work.
/ns key tp <#> Teleport to keyframe #, looking the way the camera does there.
/ns key list List keyframes with their times.

A new segment copies the duration of its neighbour. Without a neighbour it uses cutscene.editor.default-segment-seconds (default 2).

Finishing

Command Description
/ns preview Watch the draft. Console and player command events are skipped in previews.
/ns save Store the draft. Needs at least two keyframes.
/ns discard Throw the draft away.

If the cutscene got shorter and some timeline events are now after its end, saving warns you about them. They are kept, but never fire.

How the camera moves

The camera follows a timed spline through the keyframes and never moves in straight lines between them. It passes keyframe # at exactly its time and does not stop there. Changing one segment’s duration only changes how fast the camera moves along that part of the path, not the path’s shape.

The curve type is cutscene.playback.interpolation:

To make the camera hold still, place two keyframes at the same spot and give the segment between them the hold time.

Simplification

Opening a raw recording reduces it to keyframes. A frame is dropped when the path through the keyframes around it, at the same moment, stays within these limits of the recorded frame:

cutscene:
  editor:
    simplify:
      position-tolerance: 0.25   # blocks
      angle-tolerance: 3.0       # degrees of yaw / pitch

Smaller values keep more keyframes. /ns edit <name> <blocks> overrides position-tolerance for one session, e.g. /ns edit tour 1 for a much simpler path. Every keyframe keeps its original time, so the cutscene’s length stays the same.

Once saved from the editor, a cutscene is stored as keyframes and is not simplified again the next time you open it.