Skip to content

Actions, execution, and timing

Mental model

Story time advances through ordered actions plus explicit waits. The script is an action list, but bake does not simply “sleep between commands.” It binds each action as a typed Sibling Object, executes it inside lexical scopes, collects completion sources, and advances the shared clock only when waits resolve against those sources.

Responsibilities and boundaries

  • create, set, destroy, morph, motion, playback, speak, layout actions, and track actions all use the same descriptor-backed action model.
  • The root scope owns scene-wide names, root world/screen composition, and the persistent camera and world property objects.
  • Composite scopes own private identities, private layouts, bindings, and child timelines. Parents see only public fields and actions.
  • Waits observe visible completion sources; they do not create forward promises.

Stable current behavior

  • Named creates and named action calls publish waitable aggregate sources.
  • Bare wait selectors such as done, settle, rest, speak, audio, and video observe currently visible work in lexical scope.
  • Assignment animation intent flows through exact-type bindings, so one authored with: can animate a downstream property graph.
  • Action-created private sprites persist after the action finishes until they are explicitly destroyed or their owner is permanently removed.
  • Speech and video timing join the same completion model as other actions, so narration, playback, and property animation all participate in one timeline.

Current limitations

  • $ reads current model targets, not sampled presentation state.
  • Named waits can only target sources that already exist in visible scope.
  • motion updates sampled path position outside the property-binding runtime, so it does not drive exact-type = bindings.
  • Cross-scope access stays lexical: parent/root state does not leak into private Composite internals, and private lookup does not fall back upward.

How the pieces connect

  1. Compilation binds each action against descriptor metadata and exact field types.
  2. Bake executes the root timeline and any child timelines in deterministic registration order.
  3. Each action collects immediate work, finite blocking work, or detached owner work.
  4. Wait actions resolve visible sources and move Story time to the next boundary.
  5. Snapshots captured at those boundaries become the shared playback, export, preview, and diagnostic substrate.

Go deeper

Rune Project brings Rune Story authoring together with the Rune Engine rendering foundation.