Coordinated packages
In File → Export…, choose Template set and select the output format. When the set has
Transition Logic, the OGraf ZIP is one coordinated .ograf.zip containing the controller,
referenced templates, shared components and their resources. The standalone page plays the
coordinated set in a browser. You can also use Export package… or Download package in the
Transitions tab's toolbar. Apply or discard any unapplied transition draft before exporting. Studio
snapshots current edits and certifies the exact package before saving.
The exported graphic starts Off. Its public data is a slots object: each slot contains a
stateId and that template's data; the empty string "" selects Off. The manifest supplies default selections and typed data
schemas. Standard play takes the selected states; stop takes all slots Out. Updating data
on an active slot requests its next appearance through the same transition planner.
Initial selections form a compatible baseline: lanes requiring another lane fully On start Off, and mutually conflicting states are not selected together. Independent lanes choose a compatible state in lane order. The custom Take form still suggests a valid state for its chosen lane; that suggestion does not activate the lane during startup.
Real-time Load privately prepares resources for the valid selected startup scene while lanes remain Off. A matching first Play reuses successful preparation after normal admission. This does not create an explicit Prepare state or satisfy a lane's On prerequisite. Changing selected states or data, superseding commands, reload and disposal discard stale preparation. Invalid selections still fail on Play; failed preparation is released so Play can retry through its normal readiness and error handling. Non-real-time playback keeps its existing behavior.
When the operator explicitly selects both a parent and its dependent lanes, play plans the whole selection and prepares its resources before changing output. It waits for required exits and completed parent entrances before starting the next stage. Conflicting selections or missing selected prerequisites are rejected without changing on-air selections. The same stage timing is used for real-time playback and non-real-time scheduled rendering. A newer playout command can supersede unfinished stages; canceled stages do not return later. Individual Take commands continue to require their prerequisites already On.
The coordinator has one On-air step. A plain Play after that step advances Out; use
playAction({goto:0}) to reapply the current On selection explicitly. Export certification checks
successful default startup as well as the API contract; a controller's green schema validation
alone does not prove that a requested scene played successfully.
skipAnimation:true skips authored transition waits; resource, rendering and GPU work still take
time. In OGraf Devtool, use the complete exported multilane scene: await successful Load, time and
await the first Play from Off, then check the response and capture ready output. Keep cold first-Play
measurements separate from warm replay and recheck after state/data changes. Latency depends on
the template and host; no single timing bound applies to every graphic and GPU.
The Devtool's detached-element latency check and visibly mounted playback should both be checked;
a slow command response alone does not establish dropped display frames. Text that already fits
its box avoids repeated layout measurements while retaining the same fitted size and minimum-size
behavior. Font loading, shader rendering and final-frame readiness still complete before success.
For real-time batch Play with skipAnimation:true, prepared independent lanes in the same
dependency stage share a final coherent frame and readiness pass outside nested Rules dispatch.
Each lane retains its request, ready and advance events. Rules keep their order after stage
readiness, and parent Rules or a superseding command can cancel later child stages. Direct Take,
animated playback and non-real-time replay keep their existing behavior.
Custom actions for playout
Playout integrations can address individual slots through these OGraf custom actions:
| Action | Payload | Result |
|---|---|---|
transition.take | {slotId, stateId, data?} | Prepare and take a state, or update the active state |
transition.patch | {slotId, stateId?, data} | Patch an on-air graphic in place, with an optional active-state guard |
transition.out | {slotId} | Animate a slot to Off |
transition.clear | {slotId?} | Immediately clear one slot, or all slots if omitted |
template.action | {slotId, actionId, data?} | Run an authored action or generated timer command on the active template |
loop.pause / loop.resume / loop.next | {slotId, groupId} | Control one timed loop group while other graphics continue |
The package includes an operator guide with the actual slot/state IDs and example payloads.
External quote feeds should use transition.patch to merge changed values into the existing
graphic. It keeps lane transitions, paused state and continuous animation intact; ordinary data
Rules and configured text-update effects still run. It rejects Off or leaving graphics. An entering
graphic can receive a patch without changing its transition deadline. A prepared replacement is
not retargeted by a patch to the current graphic. A new image loads before the patch applies, so it
never blanks, and a failed image leaves the old one on air and returns an error. Standard
updateAction and transition.take continue to use authored update transitions, unless the lane
is set to update In place. Scheduled transition.patch actions replay during non-real-time
rendering and backward seeks.
Shared instances remain mounted between takes. Incoming resources must be ready before they
replace the current output; newer pending requests replace older pending requests. The current
transition finishes first. The coordinator plays each layer's authored Start-to-first-Step IN
and final-Step-to-End OUT within the selected transition timing, including masks and effect tracks.
Retained shared elements morph without replaying their entrance. Independent loops, shaders and
text/clock effects continue. Timed loop groups expose a hold-duration field and independent
Pause/Resume/Next controls in Preview & Export.
Generated clock/timer Start, Pause, Reset and Restart commands are available through
template.action. The dropdown labels identify the template and timer; take that template on
air before issuing its command. Start resumes, Pause holds the value, Reset restores the initial
value and pauses, and Restart restores it and runs. System clocks ignore timer commands. Manual
Reset/Restart rearms alarms without replacing the feed. These commands keep transition timing and dependencies; their
non-real-time event times replay deterministically during seeks.
Choose Authored animation as the transition style to use those layer tracks without an
additional whole-graphic fade. Existing Dissolve, Slide and Wipe styles keep their chosen overlay motion.
Non-real-time packages
Non-real-time packages accept scheduled actions and deterministic goToTime seeking, including
backward seeking. Coordinated Rules support data conditions and change events, pointer input
(including once-per-entry hover commands), Played in, the first Step reached, and Taken out.
Take/Update/Out/Clear commands can be delayed on event rules. Pointer input requires real-time
playback. Template custom actions, Custom action ran triggers, template-local set-data,
custom-action chains and animated Rule properties are supported. Export requires matching output
dimensions and frame rates. Audio/media cues, shader/media Rule side effects, custom-action loop
activation and loops outside the first on-air step remain unsupported
and are reported before saving. Use the original
.ogs for editing; Import OGraf cannot reconstruct a coordinated template set from its runtime package.