EverambleGAME API / 1

CONTENT CONTRACT · VERSION 1

cutscene

A personal cutscene with a declarative timeline.

Signature

{ camera_script: (ScriptId)?, cast: {CastMember}, duration_ticks: PositiveTicks, id: ContentId, kind: "cutscene", name: TextKey, places: {ScenePlace}, skip: CutsceneSkip, staging: {SceneStep}, timeline: {VisualStep} }

Fields

NameTypeMeaning
camera_scriptScriptIdPresentation script evaluated per frame of a viewer's cutscene (`VisualFrame -> VisualResult`); the timeline stands in wherever it cannot run.
Length: 1…129; Pattern: ^[a-z][a-z0-9_]{0,31}:[a-z][a-z0-9_]{0,95}$; Reference: script
cast{CastMember}NPCs that must be present, by unique role.
Items: 0…16; Unique entries
duration_ticksPositiveTicksHost duration of the cutscene.
Range: 1…2147483647; Unit: tick
idContentIdPackage-qualified identity; unique within its declaring namespace.
Length: 1…129; Pattern: ^[a-z][a-z0-9_]{0,31}:[a-z][a-z0-9_]{0,95}$
kind"cutscene"Discriminant
nameTextKeyLocalization key for the displayed name.
Length: 1…129; Pattern: ^[a-z][a-z0-9_]{0,31}:[a-z][a-z0-9_]{0,95}$; Reference: text
places{ScenePlace}Places its staging uses.
Items: 0…64; Unique entries
skipCutsceneSkipWhether the player may skip it.
staging{SceneStep}Staging of the cast and camera shots, played with the timeline.
Items: 0…256
timeline{VisualStep}Camera, subtitle and fade steps; camera spans never overlap. The complete fallback of a camera script.
Items: 0…256

Validated example

{
  "cast": [],
  "duration_ticks": 150,
  "id": "core:hill_golem_coming",
  "kind": "cutscene",
  "name": "core:hill_golem_rises_name",
  "places": [],
  "skip": "allowed",
  "staging": [],
  "timeline": [
    {
      "at_ticks": 0,
      "duration_ticks": 20,
      "from_permille": 1000,
      "kind": "fade",
      "to_permille": 0
    },
    {
      "at_ticks": 0,
      "duration_ticks": 110,
      "easing": "smooth",
      "from": "core:valley/hill_golem_overlook",
      "kind": "camera",
      "to": "core:valley/hill_golem_arena"
    },
    {
      "at_ticks": 15,
      "duration_ticks": 60,
      "kind": "subtitle",
      "text": "core:hill_golem_rises_text"
    },
    {
      "at_ticks": 78,
      "duration_ticks": 60,
      "kind": "subtitle",
      "text": "core:hill_golem_rises_arena"
    },
    {
      "at_ticks": 135,
      "duration_ticks": 15,
      "from_permille": 0,
      "kind": "fade",
      "to_permille": 1000
    }
  ]
}