Skip to main content

Cutscenes and Timelines

The scene timeline is a fixed-capacity sequencer for short in-engine cutscenes, scripted presentation beats, UI changes, audio events, fog, and controller vibration. Author clips in View > Advanced Scene Authoring > Cutscenes.

Clip Settings

Each clip has a unique name, duration, playback speed, loop flag, and Disable Player Controls option. When control blocking is enabled, both Play Mode and the PS1 runtime skip their native player-controller update while the clip is active. Lua scripts and the rest of the scene update continue; this is not a global game pause.

Use Preview in Game View to start the selected clip through Play Mode. Stop Play Mode to restore normal editor preview state.

Visual Timeline

The Cutscenes tab includes a visual timeline shared with standalone Animation authoring:

  • use Zoom or Fit to change the visible time range;
  • drag the horizontal view control when the full clip does not fit;
  • click or hold the ruler to scrub the playhead;
  • click a keyframe diamond to select it and move the playhead;
  • double-click an empty track row to add a default key at that time;
  • drag a diamond to retime its keyframe.

Double-click creation and drag retiming each create one undoable edit. The canvas becomes read-only while Play Mode or a build owns project state. Treat Game View as an authoring preview and validate timing, events, rumble, UI, fog, and camera behavior in the packaged PS1 build.

Track Types

GroupTracks
CameraPosition, rotation, FOV
GameObjectPosition, rotation, scale, enabled state
UIVisibility, ProgressBar value, color, anchored position, size
EventsAudio Source one-shot, Lua script function
FeedbackRumble Small (high-frequency motor) and Rumble Large (low-frequency motor) strength tracks
SkeletalPlay a named clip on a target Animator
RenderingFog color and fog range

Camera FOV is clamped to the runtime camera range. UI progress and both rumble strength tracks use 0.0 to 1.0. The small motor is thresholded by the PS1 runtime, while the large motor supports analog strength. Audio events target an Audio Source GameObject; a name or audio GUID in the event-name field can be used as fallback lookup when no valid target is present. Script events invoke the named function on the target Lua Behaviour with (targetGameObjectId, 0, payload, "timeline").

UI Position writes the target element's anchored X/Y position. UI Size writes its positive X/Y size. A Skeletal Animation event uses the keyframe event name as the target clip name and its boolean value as the loop flag. The target GameObject must have a valid Animator.

Keyframes and Interpolation

Tracks use timestamped keyframes. Numeric vector, scalar, and color values can use:

  • Step
  • Linear
  • Ease In
  • Ease Out
  • Ease In Out

Boolean and event data remain discrete. Keep timestamps strictly increasing and inside the clip duration. The editor can sort by time, and validation rejects duplicate or descending timestamps before packaging.

Starting a Clip from Lua

function OnTriggerEnter(gameObjectId, otherGameObjectId)
if not Timeline.IsPlaying() then
Timeline.Play("Door Reveal")
end
end

function skipCutscene(gameObjectId)
Timeline.Stop()
end

See Timeline Lua API.

Lua may attach an OnComplete callback when starting a clip. It runs only on a natural non-loop end; stopping, replacing, or looping the clip does not invoke it.

Limits

ResourceLimit
Clips per scene8
Tracks per clip12
Keyframes per track48
Keyframes across all clips256

Timelines are intended for compact, exclusive scene presentation. For concurrent reusable environment and UI sequences, use Standalone Animations. Imported skeletal assets are authored through the skeletal FBX pipeline; a timeline can trigger their clips but does not edit bones or source motion.