Declarative Structures — Experimental
API status — PROPOSED, NOT IMPLEMENTED. SkCine is currently a design specification in this conversation; no built SkCine.jar or syntax registry was supplied. All SkCine-specific examples are intended API contracts, not verified runnable
.sk. Do not advertise these as tested until each example passes a real Skript reload and runtime test.
SkCine's minimum viable scripting interface is imperative effects and expressions. A declarative section DSL is a desirable enhancement, not a prerequisite and not guaranteed to parse on every Skript release.
Aspirational scene structure
cine scene "story:arrival":
duration: 8 seconds
skippable: true
camera:
keyframe at 0 seconds:
position: {_start}
keyframe at 8 seconds:
position: {_end}
at 3 seconds:
title: "<gold>The Journey Begins"
This is illustrative, not runnable. Standard local Skript variables such as {_start} generally require event/function execution context; a compile-time structure cannot safely rely on arbitrary local variables. A real implementation should instead allow constants/expressions with a proven parse/execution model or prefer imperative runtime construction.
Requirements before declaring structures supported
- Register correct
StructureorSectionsyntax via supported Skript APIs. - Validate nested child nodes and entries.
- Define which expressions are parse-time constants and which are runtime.
- Guarantee no invalid local-variable lookup at load time.
- Test reload, re-registration and source ownership.
- Provide version adapters when APIs differ.
- Ensure the declarative path builds the same scene runtime model as imperative syntax.
Recommended baseline
command /demo:
trigger:
set {_scene} to new cine scene named "story:arrival"
set cine duration of {_scene} to 8 seconds
set {_camera} to new cine camera at location of player
# Populate keyframes and cues with SkCine effects.
set cine camera of {_scene} to {_camera}
set {_playback} to play cine scene {_scene} for player