Skip to content

Rune Story Syntax Reference

Generated by story syntax from the Rune Story descriptor registry. The type sections below are authoritative for the current binary (and any loaded plugins). Do not edit by hand.

Sprites

arc — ArcSprite

Primitive pie-sector arc Story sprite. Width/Height define the full ellipse bounding box; Start/Sweep define the visible sector in degrees (converted to radians internally).

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
widthdimensionDimensionThe width as a Dimension.
heightdimensionDimensionThe height as a Dimension.
sizeclr:Rune.Story.Primitives.Size, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSize?The size as a composite value.
alignclr:Rune.Story.Sprites.SpriteAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteAlignmentThe alignment that determines what x,y refers to relative to the sprite bounds.
shadowshadowBoxShadow?The box shadow.
startnumberDouble?
sweepnumberDouble?
fillbrushBrush

bar — BarSprite

Vertical bar chart Story sprite. Bars use fixed element width, computed chart dimensions, and animate their heights from the bottom baseline.

Primary: data — Story Type ID clr:System.Collections.Generic.List`1[[Rune.Story.Sprites.ChartDataEntry, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (ordinal), CLR List<ChartDataEntry>

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
dataclr:System.Collections.Generic.List`1[[Rune.Story.Sprites.ChartDataEntry, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eList<ChartDataEntry>ChartDataListConverterThe initial data entries. This is the constructor default argument.
barRadiusnumberDoubleThe top corner radius for rounded bars (0 = sharp).
spacingnumberDoubleThe pixel gap between bars.
colorsclr:System.String[], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eString[]The custom color palette.
barWidthnumberDoubleThe width of each bar in pixels.
barHeightnumberDoubleThe maximum pixel height of a bar.
maxnumberDouble?The optional scale denominator.
alignclr:Rune.Story.Sprites.SpriteAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteAlignment

ellipse — EllipseSprite

Primitive ellipse Story sprite. Draws a filled ellipse via CmdDrawEllipse.

Primary: bounds — Story Type ID clr:Rune.Story.Primitives.Rect, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR Rect?

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
widthdimensionDimensionThe width as a Dimension.
heightdimensionDimensionThe height as a Dimension.
sizeclr:Rune.Story.Primitives.Size, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSize?The size as a composite value.
alignclr:Rune.Story.Sprites.SpriteAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteAlignmentThe alignment that determines what x,y refers to relative to the sprite bounds.
shadowshadowBoxShadow?The box shadow.
boundsclr:Rune.Story.Primitives.Rect, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullRect?The bounds (x, y, width, height) as a composite view. Subclasses that accept bounds as constructor input should expose a matching public constructor parameter.
fillbrushBrushThe ellipse fill brush. Animatable — internally decomposed to RGBA RuneValue channels.

funnel — FunnelSprite

Funnel chart Story sprite. Layers are centered rounded rectangles whose widths scale from the configured maximum and stack downward in insertion order.

Primary: data — Story Type ID clr:System.Collections.Generic.List`1[[Rune.Story.Sprites.ChartDataEntry, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (ordinal), CLR List<ChartDataEntry>

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
dataclr:System.Collections.Generic.List`1[[Rune.Story.Sprites.ChartDataEntry, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eList<ChartDataEntry>ChartDataListConverterThe initial data entries. This is the constructor default argument.
spacingnumberDoubleThe pixel gap between layers.
colorsclr:System.String[], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eString[]The custom color palette.
maxWidthnumberDoubleThe maximum layer width at the maximum value.
layerHeightnumberDoubleThe height of each layer in pixels.
maxnumberDouble?The optional scale denominator for layer widths.
alignclr:Rune.Story.Sprites.SpriteAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteAlignment
radiusnumberDoubleThe rounded corner radius.

image — ImageSprite

Displays an image loaded from a file path. Supports corner radius, stroke, source viewport, blur, and fit modes.

Primary: image — Story Type ID string (ordinal), CLR String

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
widthdimensionDimensionThe width as a Dimension.
heightdimensionDimensionThe height as a Dimension.
sizeclr:Rune.Story.Primitives.Size, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSize?The size as a composite value.
alignclr:Rune.Story.Sprites.SpriteAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteAlignmentThe alignment that determines what x,y refers to relative to the sprite bounds.
shadowshadowBoxShadow?The box shadow.
imagestringStringThe image file path (relative to .story.yaml).
fitclr:Rune.Story.Primitives.ImageFitMode, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullImageFitModeThe fit mode (contain, cover, fill, none). Default: contain.
radiusnumberDouble?The corner radius.
strokebrushBrushThe border color.
strokeWidthnumberDoubleThe border width.
srcclr:Rune.Story.Primitives.Rect, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullRect?The source viewport rect (pixels). Null = full image.
blurnumberDoubleThe blur radius.

layer — LayerSprite

Groups a locally ordered tree of child sprites under a shared Story sprite.

Primary: sprites — Story Type ID clr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Sprites.LayerChild, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (ordinal), CLR IReadOnlyList<LayerChild>

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
motionBlurdurationDoubleThe motion-blur exposure duration in seconds.
rotationXnumberDoubleThe clockwise rotation around the local x axis, in degrees.
rotationYnumberDoubleThe clockwise rotation around the local y axis, in degrees.
translateZnumberDoubleThe translation toward the viewer in DIPs.
perspectivenumberDoubleThe positive perspective depth in DIPs.
perspectiveOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe static perspective vanishing-point origin.
planeBoundsclr:Rune.Story.Primitives.Rect, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullRect?Optional explicit local bounds for the projected plane.
backfaceclr:Rune.BackfaceVisibility, Rune, Version=0.1.0.0, Culture=neutral, PublicKeyToken=nullBackfaceVisibilityWhether the projected back face remains visible.
clipclr:Rune.Story.Primitives.ClipShape, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullClipShapeThe clip shape for this layer.

line — LineSprite

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
x1numberDouble?
y1numberDouble?
x2numberDouble?
y2numberDouble?
cp1clr:Rune.Story.Primitives.Point, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPoint?PointConverterThe first Bézier control point. When set alone, produces a quadratic curve. When set together with Cp2, produces a cubic curve.
cp2clr:Rune.Story.Primitives.Point, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPoint?PointConverterThe second Bézier control point. When set, produces a cubic curve (requires Cp1 to also be set).
strokebrushBrush
strokeWidthnumberDouble?
capclr:Rune.LineCap, Rune, Version=0.1.0.0, Culture=neutral, PublicKeyToken=nullLineCap?
dashstringString
dashOffsetnumberDouble?

path — PathSprite

SVG-path Story sprite. Parses a subset of SVG path d syntax and renders with optional fill and/or stroke.

Primary: d — Story Type ID string (ordinal), CLR String

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
widthdimensionDimensionThe width as a Dimension.
heightdimensionDimensionThe height as a Dimension.
sizeclr:Rune.Story.Primitives.Size, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSize?The size as a composite value.
alignclr:Rune.Story.Sprites.SpriteAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteAlignmentThe alignment that determines what x,y refers to relative to the sprite bounds.
shadowshadowBoxShadow?The box shadow.
dstringString
viewBoxclr:Rune.Story.Primitives.Rect, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullRect?
fillbrushBrush
strokebrushBrush
strokeWidthnumberDouble?
trimStartnumberDouble
trimEndnumberDouble
trimOffsetnumberDouble
capclr:Rune.LineCap, Rune, Version=0.1.0.0, Culture=neutral, PublicKeyToken=nullLineCap?
joinclr:Rune.LineJoin, Rune, Version=0.1.0.0, Culture=neutral, PublicKeyToken=nullLineJoin?
dashstringString
dashOffsetnumberDouble?

pie — PieSprite

Pie chart Story sprite. Each sector uses dual RuneValue fields (start angle + sweep angle) so the engine animates smooth transitions.

Primary: data — Story Type ID clr:System.Collections.Generic.List`1[[Rune.Story.Sprites.ChartDataEntry, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (ordinal), CLR List<ChartDataEntry>

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
dataclr:System.Collections.Generic.List`1[[Rune.Story.Sprites.ChartDataEntry, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eList<ChartDataEntry>ChartDataListConverterThe initial data entries. This is the constructor default argument.
radiusnumberDoubleThe outer radius.
startAnglenumberDoubleThe starting angle in degrees (-90 = top).
colorsclr:System.String[], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eString[]The custom color palette.
totalnumberDouble?The optional total used as the pie denominator.
alignclr:Rune.Story.Sprites.SpriteAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteAlignment

polygon — PolygonSprite

Polygon Story sprite with dynamic animatable vertices. Supports shape morphing via arc-length parameterized vertex correspondence.

Primary: points — Story Type ID clr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Primitives.Point, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (ordinal), CLR IReadOnlyList<Point>

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
pointsclr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Primitives.Point, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eIReadOnlyList<Point>PointListConverterThe polygon vertices. This is the constructor default argument.
fillbrushBrush
strokebrushBrush
strokeWidthnumberDouble?
capclr:Rune.LineCap, Rune, Version=0.1.0.0, Culture=neutral, PublicKeyToken=nullLineCap?
joinclr:Rune.LineJoin, Rune, Version=0.1.0.0, Culture=neutral, PublicKeyToken=nullLineJoin?
closedboolBoolean
dashstringString
dashOffsetnumberDouble?

rect — RectSprite

Primitive rectangular Story sprite.

Primary: bounds — Story Type ID clr:Rune.Story.Primitives.Rect, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR Rect?

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
widthdimensionDimensionThe width as a Dimension.
heightdimensionDimensionThe height as a Dimension.
sizeclr:Rune.Story.Primitives.Size, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSize?The size as a composite value.
alignclr:Rune.Story.Sprites.SpriteAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteAlignmentThe alignment that determines what x,y refers to relative to the sprite bounds.
shadowshadowBoxShadow?The box shadow.
boundsclr:Rune.Story.Primitives.Rect, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullRect?The bounds (x, y, width, height) as a composite view. Subclasses that accept bounds as constructor input should expose a matching public constructor parameter.
fillbrushBrushThe optional fill brush. Animatable — internally decomposed to RGBA RuneValue channels.
radiusclr:Rune.Story.Primitives.CornerRadius, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullCornerRadius?The optional corner radius. A scalar sets all corners; four values are ordered top-left, top-right, bottom-right, bottom-left.

svg — SvgSprite

Displays a vector .svg document loaded from a file path. The whole SVG is parsed into an immutable, resolution-independent asset and drawn into the sprite bounds with a fit mode. Supports fill/contain/none (default contain); positioning, scaling, alignment, box shadow, opacity, and whole-sprite animation are inherited from BoundedSprite. cover, corner radius/clip, blur, and per-element recolor are not supported in this version.

Primary: svg — Story Type ID string (ordinal), CLR String

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
widthdimensionDimensionThe width as a Dimension.
heightdimensionDimensionThe height as a Dimension.
sizeclr:Rune.Story.Primitives.Size, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSize?The size as a composite value.
alignclr:Rune.Story.Sprites.SpriteAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteAlignmentThe alignment that determines what x,y refers to relative to the sprite bounds.
shadowshadowBoxShadow?The box shadow.
svgstringStringThe SVG file path (relative to the .story.yaml).
fitclr:Rune.Story.Primitives.ImageFitMode, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullImageFitModeThe fit mode. Default: contain. cover is not supported in this version.

text — TextSprite

Text Story sprite. Shapes text once at creation time and renders via CmdDrawShapedText. Text renders at its natural shaped size; width/height serve as the sprite's bounding box for layout purposes.

Primary: text — Story Type ID string (ordinal), CLR String

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
textstringStringThe text content. Supports \n for manual line breaks.
fontSizenumberDouble?The font size in DIPs used for shaping.
fontFamilyfontFamilyStringThe font family name.
fontWeightfontWeightStoryFontWeight?The font weight.
colorbrushBrushThe text brush (solid color). Animatable — internally decomposed to RGBA RuneValue channels.
alignclr:Rune.Story.Sprites.SpriteAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteAlignmentThe alignment that determines what x,y refers to relative to the text bounding box.
textAlignclr:Rune.Story.Primitives.HorizontalAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullHorizontalAlignment?The horizontal text alignment for multi-line text within the bounding box.
letterSpacingnumberDoubleThe additional spacing in DIPs between adjacent shaped glyphs.
maxWidthnumberDoubleThe optional wrap width constraint.

video — VideoSprite

Displays a frame from a video source path.

Primary: video — Story Type ID string (ordinal), CLR String

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
opacitynumberDoubleThe sprite opacity.
scaleclr:Rune.Story.Primitives.Scale, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullScaleThe unitless sprite scale.
rotationnumberDoubleThe clockwise rotation in degrees, applied around TransformOrigin.
transformOriginclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe transform origin for semantic transform commands.
xdimensionDimensionThe x coordinate as a Dimension.
ydimensionDimensionThe y coordinate as a Dimension.
posclr:Rune.Story.Primitives.Position, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullPosition?The position as a composite value.
widthdimensionDimensionThe width as a Dimension.
heightdimensionDimensionThe height as a Dimension.
sizeclr:Rune.Story.Primitives.Size, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSize?The size as a composite value.
alignclr:Rune.Story.Sprites.SpriteAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteAlignmentThe alignment that determines what x,y refers to relative to the sprite bounds.
shadowshadowBoxShadow?The box shadow.
videostringStringThe video file path (relative to .story.yaml).
timedurationDoubleThe current source time in seconds.
fitclr:Rune.Story.Primitives.ImageFitMode, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullImageFitModeThe fit mode (contain, cover, fill, none). Default: contain.
radiusnumberDouble?The corner radius.
srcclr:Rune.Story.Primitives.Rect, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullRect?The source viewport rect (pixels). Null = full frame.

Actions

align — AlignAction

Creates an alignment layout result between a subject and target.

Primary: subject — Story Type ID clr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR SpriteRef

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
subjectclr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteRefThe sprite or layout being aligned.
toclr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteRefThe target sprite to align against.
subjectAtclr:Rune.Story.Actions.BoundsAnchor, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullBoundsAnchor?The optional anchor on the subject.
targetAtclr:Rune.Story.Actions.BoundsAnchor, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullBoundsAnchor?The optional anchor on the target.
placementclr:Rune.Story.Actions.AlignPlacement, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullAlignPlacement?The optional placement mode.
offsetclr:System.Collections.Generic.IReadOnlyList`1[[System.Double, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eIReadOnlyList<Double>The optional x/y offset.

arrange — ArrangeAction

Requests arrangement of a sprite or layout target.

Primary: target — Story Type ID clr:Rune.Story.Actions.LayoutRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR LayoutRef

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
targetclr:Rune.Story.Actions.LayoutRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullLayoutRefThe sprite or layout target to arrange.
withclr:Rune.Story.Animations.AnimationRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullAnimationRef?The optional animation or transition name.

column — ColumnAction

Creates a vertical column layout result.

Primary: items — Story Type ID clr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (ordinal), CLR IReadOnlyList<SpriteRef>

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
itemsclr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eIReadOnlyList<SpriteRef>The sprite or layout names contained by the column.
gapnumberDouble?The optional gap between items.
hAlignclr:Rune.Story.Primitives.HorizontalAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullHorizontalAlignment?The optional horizontal alignment.
vAlignclr:Rune.Story.Primitives.VerticalAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullVerticalAlignment?The optional vertical alignment.
boundsclr:Rune.Story.Primitives.Rect, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullRect?Optional layout bounds.

create — CreateAction

Creates and attaches a root sprite instance to the scene. When With is provided, the sprite is created with opacity 0 and animated to its declared opacity.

Primary: sprite — Story Type ID clr:Rune.Story.Sprites.SpriteConstruction, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR SpriteConstruction

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
spriteclr:Rune.Story.Sprites.SpriteConstruction, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteConstructionThe sprite construction plan to execute.
withclr:Rune.Story.Animations.AnimationRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullAnimationRef?The optional animation for a fade-in transition after creation.
spaceclr:Rune.Story.StorySpace, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullStorySpace?The optional root composition space. Omitted root creates use world space.

cue — CueAction

Marks a presentation cue point. Implicitly behaves as wait: done — all active completion sources settle before the cue takes effect. In presentation mode the story pauses at cue points until user input. In export/preview mode the cue acts as wait: done with an optional auto-cue hold duration.

Primary: duration — Story Type ID clr:Rune.Story.Completion.StoryDurationWaitTarget, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR StoryDurationWaitTarget

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
durationclr:Rune.Story.Completion.StoryDurationWaitTarget, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullStoryDurationWaitTargetThe optional per-cue hold duration that overrides the global --auto-cue. Parsed from cue: 3s syntax. null means use the global default.

data — DataAction

Applies insert, update, and remove operations to a chart sprite's data. The target sprite must implement IChartSprite.

Primary: target — Story Type ID clr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR SpriteRef

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
targetclr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteRefThe target chart sprite name.
insertclr:System.Collections.Generic.List`1[[Rune.Story.Sprites.ChartDataEntry, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eList<ChartDataEntry>ChartDataListConverterThe new data entries to insert.
updateclr:System.Collections.Generic.List`1[[Rune.Story.Sprites.ChartDataEntry, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eList<ChartDataEntry>ChartDataListConverterThe data entries to update (value and/or color).
removeclr:System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eList<String>StringListConverterThe names of data entries to remove.
withclr:Rune.Story.Animations.AnimationRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullAnimationRef?The optional animation for the data transition.

destroy — DestroyAction

Removes a named sprite instance from the scene. When With is provided, fades the sprite's opacity to 0 before removing it on animation completion.

Primary: target — Story Type ID clr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR SpriteRef

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
targetclr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteRefThe sprite name to remove.
withclr:Rune.Story.Animations.AnimationRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullAnimationRef?The optional animation for a fade-out transition before removal.

morph — MorphAction

Replaces a named sprite instance while preserving state and dynamic properties.

Primary: sprite — Story Type ID clr:Rune.Story.Sprites.SpriteConstruction, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR SpriteConstruction

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
spriteclr:Rune.Story.Sprites.SpriteConstruction, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteConstructionThe replacement sprite construction plan.
sizingclr:Rune.Story.Primitives.Sizing, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSizing?The optional sizing mode.
withclr:Rune.Story.Animations.AnimationRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullAnimationRef?The optional transition name.

motion — MotionAction

Moves an anchor sprite along an inline static path in parent-local coordinates.

Primary: target — Story Type ID clr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR SpriteRef

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
targetclr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteRefThe anchor sprite that follows the path.
pathstringStringThe inline absolute SVG path data.
withclr:Rune.Story.Animations.AnimationRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullAnimationRef?The optional animation. Omission uses the built-in default preset.

play — PlayAction

Requests non-speech audio playback.

Primary: url — Story Type ID string (ordinal), CLR String

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
urlstringStringThe audio source URL or identifier.
volumenumberDouble?The optional volume override.

playback — PlaybackAction

Schedules deterministic video playback by driving a video sprite's source time.

Primary: target — Story Type ID clr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR SpriteRef

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
targetclr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteRefThe video sprite to drive.
todurationDouble?The target source time in seconds.
loopboolBooleanWhether playback loops indefinitely.
ratenumberDoubleThe playback speed multiplier.
mutedboolBooleanWhether embedded audio is muted.
volumenumberDoubleThe embedded-audio gain.

reorder — ReorderAction

Moves sprites within their parent layer's painter-order sibling list.

Primary: subjects — Story Type ID clr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (ordinal), CLR IReadOnlyList<SpriteRef>

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
subjectsclr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eIReadOnlyList<SpriteRef>SpriteRefListConverterThe sprites to move in the supplied order.
beforeclr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteRef?The optional sibling before which the subjects are moved.
afterclr:Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSpriteRef?The optional sibling after which the subjects are moved.

row — RowAction

Creates a horizontal row layout result.

Primary: items — Story Type ID clr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (ordinal), CLR IReadOnlyList<SpriteRef>

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
itemsclr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Primitives.SpriteRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eIReadOnlyList<SpriteRef>The sprite or layout names contained by the row.
gapnumberDouble?The optional gap between items.
hAlignclr:Rune.Story.Primitives.HorizontalAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullHorizontalAlignment?The optional horizontal alignment.
vAlignclr:Rune.Story.Primitives.VerticalAlignment, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullVerticalAlignment?The optional vertical alignment.
boundsclr:Rune.Story.Primitives.Rect, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullRect?Optional layout bounds.

set — SetAction

Applies descriptor-backed property updates to named sprites in the scene.

Primary: properties — Story Type ID clr:Rune.Story.Primitives.StoryPropertyAssignments, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR StoryPropertyAssignments

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
propertiesclr:Rune.Story.Primitives.StoryPropertyAssignments, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullStoryPropertyAssignmentsDescriptor-backed property references and values.
withclr:Rune.Story.Animations.AnimationRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullAnimationRef?The optional animation or transition name.

speak — SpeakAction

Requests speech playback.

Primary: text — Story Type ID string (ordinal), CLR String

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
textstringStringThe text to speak.
voiceclr:Rune.Story.TTS.VoiceRef, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullVoiceRef?The optional voice identifier.

track — TrackAction

Starts a named child timeline.

Primary: script — Story Type ID clr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Actions.StoryAction, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (ordinal), CLR IReadOnlyList<StoryAction>

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
scriptclr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Actions.StoryAction, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eIReadOnlyList<StoryAction>The action script executed by the track.

wait — WaitAction

Blocks the current timeline until a wait target completes.

Primary: target — Story Type ID clr:Rune.Story.Completion.StoryWaitTarget, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR StoryWaitTarget

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
targetclr:Rune.Story.Completion.StoryWaitTarget, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullStoryWaitTargetThe target to wait on.

Animations

spring — StorySpringAnimation

Describes an inline spring animation.

Primary: parameters — Story Type ID clr:Rune.Story.Animations.StorySpringParameters, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR StorySpringParameters

tween — StoryTweenAnimation

Describes an inline tween animation.

Primary: timing — Story Type ID clr:Rune.Story.Animations.StoryTweenTiming, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (ordinal), CLR StoryTweenTiming

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
easingclr:Rune.Story.Animations.StoryEasing, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullStoryEasingThe tween easing curve.

Objects

camera — StoryCamera

Persistent model state for the built-in Story camera.

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
xdimensionDimensionThe world x coordinate shown at the canvas center.
ydimensionDimensionThe world y coordinate shown at the canvas center.
zoomnumberDoubleThe finite positive uniform camera zoom.
rotationnumberDoubleThe finite clockwise camera angle, in degrees.

story — RuneStory

Represents a compiled Rune Story with metadata and an action script. Runtime scene state is produced by Bake.

Primary: version — Story Type ID string (ordinal), CLR String

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
namestringStringThe story name used for window title and default output filename.
canvasclr:Rune.Story.Primitives.Size, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullSizeThe canvas size in pixels for resolving percentage values. Parsed from canvas: 1280x720.
fpsnumberInt32The default frame rate for preview/export hosts.
scriptclr:System.Collections.Generic.IReadOnlyList`1[[Rune.Story.Actions.StoryAction, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798eIReadOnlyList<StoryAction>The action script — an ordered list of actions executed during bake.

world — StoryWorld

Persistent model state for the built-in direct world transform.

FieldStory Type IDCLR typeReqAnimMorphConverterDescription
xdimensionDimensionThe direct horizontal world translation.
ydimensionDimensionThe direct vertical world translation.
scalenumberDoubleThe finite positive uniform world scale.
rotationnumberDoubleThe finite clockwise direct world angle, in degrees.
originclr:Rune.Story.Primitives.TransformOrigin, Rune.Story, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullTransformOriginThe animatable world scale and rotation pivot.

Grammar appendix (curated)

This section is curated, not generated from descriptors. It documents parser/host-level grammar that has no descriptor metadata.

Top-level file schema

story (required, version tag) and script (required, action list). Optional: name, canvas, fps, design, tokens, styles, plugins.

Animation with: forms

  • $<animationToken>
  • none
  • spring: <damping>, <frequency>
  • tween: <duration> (optional easing: x1, y1, x2, y2)

Animation names are token references, not a top-level registry. Use with: $name for a compiled animation token, with: none for an immediate change, or an inline Sibling Constructor for spring/tween. The former top-level animations: field is invalid.

Wait targets

done, settle, rest, speak, audio, video are bare selectors; a named completion source uses $path, a duration literal is for example 0.5s, and next waits one frame. The former :tag spelling is invalid.

Universal symbol references

Unquoted $ references are target-directed: the consuming Field or Primary requests its exact, ordinal Story Type ID facet. CLR assignability never selects between semantic facets.

text
SymbolReference := "$" [Domain ":"] Path
Path            := Identifier ("." Identifier)*
Domain          := "design"  // v1beta1

. is member traversal. $design:name explicitly selects the immutable DesignScope; $name uses lexical lookup before DesignScope. Quoted forms remain literal strings.

Persistent bindings

=path and !bind $path both install a one-way runtime property endpoint binding. v1beta1 accepts one direct, unquoted $path only; bindings cannot target $design:name.

Strict Story YAML profile

  • standard YAML mappings, sequences, and scalars
  • anchors, aliases, and merge keys are rejected
  • !bind is accepted only on one unquoted plain $path
  • !semanticType is accepted only on an alias token Primary

Design files, tokens, and styles

A design file is a strict .design.yaml document declaring design: v1beta1. Its root fields are design, extends, tokens, styles. Story-local design: is an ordered list of extensionless ./ or ../ paths; the valid import forms include ./name, ../name. implicit suffix is added during package-confined loading. Imports use first-visit DFS post-order and later compatible layers override or merge earlier layers.

Typed token declarations use type@name: value. The registered semantic value types are: animation, bool, brush, color, dimension, duration, float2, float3, float4, fontFamily, fontWeight, image, number, shadow, string, voice.

Story value type registry

Story Type ID (ordinal)KindCLR typeNullIntrinsic defaultConstraints
animationsemanticStoryAnimationnone
arraystructuralImmutableArray<Object>valuelength
boolsemanticBooleanvalue
brushsemanticBrushnull
colorsemanticSolidColorBrushnull
dimensionsemanticDimensionvalue
durationsemanticDoublevaluenumeric
float2semanticFloat2value
float3semanticFloat3value
float4semanticFloat4value
fontFamilysemanticStringvaluelength
fontWeightsemanticStoryFontWeightnone
imagesemanticStoryImageReferencenone
numbersemanticDoublevaluenumeric
refstructuralStoryRefValuenull
shadowsemanticBoxShadowvalue
stringsemanticStringvaluelength
voicesemanticStoryVoicePresetnone

Only semantic descriptors are token-authorable facets. Structural IDs (array, ref) are registry-backed Composite Field values, not object types. Structural arrays freeze recursively to immutable values; structural refs use the immutable StoryRefValue contract rather than an object fallback or an unvalidated string.

Token constructors and semantic facets

ConstructorPublished semantic facetCanonical form
aliasexact source facetalias@name: $source or alias@name: !semanticType $source
animationanimationanimation@name: <Primary>
azurevoiceazure@name: <Primary>
boolboolbool@name: <Primary>
brushbrushbrush@name: <Primary>
colorcolorcolor@name: <Primary>
dimensiondimensiondimension@name: <Primary>
durationdurationduration@name: <Primary>
float2float2float2@name: <Primary>
float3float3float3@name: <Primary>
float4float4float4@name: <Primary>
fontFamilyfontFamilyfontFamily@name: <Primary>
fontWeightfontWeightfontWeight@name: <Primary>
imageimageimage@name: <Primary>
numbernumbernumber@name: <Primary>
shadowshadowshadow@name: <Primary>
springanimationspring@name: <Primary>
stringstringstring@name: <Primary>
tweenanimationtween@name: <Primary>
voicevoicevoice@name: <Primary>
windowsvoicewindows@name: <Primary>

alias@name: $source preserves one exact source facet without conversion. For a multi-facet source, select one exact facet with alias@name: !semanticType $source; semantic tags are valid only on alias Primaries. Direct assignment requires the target Field/Primary's exact facet, even when CLR types match. A concrete type@name: $source is the only cross-semantic conversion form: it resolves the source, runs the explicit target constructor, and publishes that target facet.

Built-in facets are the lowest-priority layer and are deterministic by ordinal name:

  • default: animation + voice
  • fade: animation
  • female: voice
  • linear: animation
  • male: voice
  • smooth: animation
  • snappy: animation The default symbol intentionally shares both animation and voice facets. The built-in voice facets default, male, and female are host-provided frozen intents; there is no author-facing platform voice constructor. The former top-level voice: registry is invalid.

Canonical styles

Styles use targetType@name: with an optional scalar base StyleRef Primary and sibling Field initializers. Nested Primary maps, bindings, child Sprites, Actions, and timelines are invalid. A style is a typed compile-time default set, not CSS or runtime state; every typed target Field is styleable, including public and inherited Composite Fields.

A local Composite target may use an extensionless ./ or ../ type path relative to the declaring design file. Style Fields are values or token references, not bindings.

Style construction metadata

Every Sprite construction accepts one construction-only style initializer, for example style: $title (or the explicit style: $design:title). It selects a typed DesignScope StyleRef; the metadata is expanded at compile time and is not runtime state.

Precedence (highest first):

  • instance Field
  • instance Primary
  • selected style Field
  • base style chain
  • intrinsic default

Style constraints:

  • construction-only metadata; not retained on runtime Sprites
  • one same-target base StyleRef in the style declaration Primary
  • all typed Sprite Fields are styleable
  • no constructor Primary, children, Actions, timelines, bindings, or nested styles

Composite semantic value Fields

Composite definitions resolve declared Field type IDs through the same Story value registry that supplies design token semantic facets. The documented Field surface includes:

  • field@name: semanticType public property declarations
  • action@name inputs with semantic value types
  • public Composite properties (typed semantic Fields)
  • script-backed Composite Action inputs
  • inherited Sprite Fields exposed by the Composite descriptor Field metadata may add default, required, animatable, numeric bounds, or length constraints. Composite accepts only registered value Type IDs (including structural IDs); an object descriptor never becomes a value type and there is no object fallback. Token references request the exact semantic Field type during compile-time definition binding; private Composite members and public Actions are not styleable Fields.

Registry composition and plugin limits

Compilation composes plugin value types only from token constructors registered through the plugin registrar. Published Story Type ID/CLR/kind and constructor conflicts are rejected, and the composed registry is sealed before DesignScope construction. story syntax --reference loads plugin object descriptor registries for the generated object sections, but its value-type/constructor appendix currently remains the built-in host registry; plugin object descriptors therefore do not become Composite value types. Dynamic plugin loading is unavailable under Native AOT, where --reference degrades to built-ins only.

Compile-time references

  • $name and $design:name resolve token, animation, voice, and style references during compilation
  • AnimationRef and VoiceRef embed frozen values; no named animation/voice registry remains at runtime
  • Composite semantic Field token references lower while the immutable definition is compiled Quoted $name values remain literal strings. $design:name explicitly selects the immutable DesignScope; ordinary $name lookup uses lexical scope before DesignScope.

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