Rune system core¶
The rune system turns world or drawn words into one-shot Verb + Noun commands. It is split into activation, drawing, and effects under Source/Rephrased/RuneSystem/.
Pipeline¶
AWorldRune / exact drawn pattern
|
v
URuneCoordinatorComponent
|
v
FRuneTransaction
|
v
AExpandingRingActor command orb
|
v
URuneableObjectComponent::ReceiveCommand
|
v
Noun rule (URuneDataAsset::ResolveRule)
|
v
ARunePuzzleActor: State Looks + Performance
URuneCoordinatorComponent¶
A native component on ARephraseCharacter. It owns:
- nearby world-rune registration and nearest-candidate selection
- pending token and two-word transaction state
- drawing panel state and drawing input bindings
- drawn-word presentation
- grammar rejection feedback
- the single command orb in flight
- per-receiver command delivery
bRuneInteractionEnabled disables trigger binding and rune input for pawns that should not use runes.
The coordinator receives the character's InteractionTrigger through SetInteractionTrigger. It binds its action assets through Enhanced Input and adds IMC_RuneDrawing while the drawing panel is open.
FRuneTransaction¶
A token contains:
Rune: word data assetOrigin: Physical, Environmental, or DrawnSource: actor/object that supplied a world token
The first activation becomes pending. Activating the identical token cancels it. A second token evaluates the pair:
- one Verb + one Noun:
CommandReady - two Verbs or two Nouns:
Rejected
The pair is order-independent and clears after evaluation.
AWorldRune¶
A placed rune contains:
RuneDataandOriginInteractionCollisionCommandRangeDeactivationRange- candidate and pending glow configuration
- viewport visibility toggles for all three ranges
The command origin is the noun rune's visual when available. Its command radius comes from CommandRange.
Drawing¶
URuneDrawingDataAsset defines the 21-stroke graph and exact FRunePattern sets. FRuneDrawingState owns selection and active strokes. URuneDrawingWidget renders and interacts with that state.
Exact matches activate automatically. A pending drawn word is represented by UDrawnRunePresentationComponent and remains available after the panel closes. The coordinator keeps the first pattern parked while the player draws the second word.
The tablet graph, the widget and input surface, the drawn-word presentation, and the pattern authoring tool are documented in Mind drawing.
Command delivery¶
A valid pair starts one AExpandingRingActor from the noun origin. As the expanding edge reaches actors, the coordinator looks for URuneableObjectComponent and sends the Verb, command source, and command Noun.
Each receiver is scanned once. Delivery requires the receiver's NounRune to match the command Noun.
URuneableObjectComponent¶
The runeable object owns:
- noun identity (
NounRune, shown as Noun) - the current state, as
Status.*tags - the starting state: an empty Status starts in the noun's Default Status
- rule resolution and the command acceptance gates
- status, rule, and rejection events
When a command arrives, the receiver asks its noun for the rule matching the verb and the exact current state. One match applies; no match, or two matching rows, rejects the command with feedback. A permanent rule sets the new state. A temporary rule (Rise) keeps the state and plays for the verb's Duration.
Noun rules¶
Each noun data asset holds its row of the effects matrix:
| Field | Meaning |
|---|---|
| Default Status | The state a placed object starts in, e.g. Closed for a Door. |
| Rules | One row per matrix cell: Verb, From Status, To Status, and Stops Motion for Freeze. |
| Temporary Rules | Cells whose effect lasts a while, such as Rise: Verb and From Status. |
| States | Read-only summary of every state the rules use. |
Every state has its own tag, including default ones (Status.Closed, Status.Normal), and combined states are tag combinations such as Broken + Open. Status.Normal never combines: it names the default state of a noun whose default has no word of its own, and any other state replaces it. Rows title themselves in the Details panel, e.g. Closed + OPEN -> Open, and validation reports duplicate cells.
A verb data asset carries the word and, under Verb, the Duration its temporary effects last.
Puzzle actor¶
ARunePuzzleActor is the base of every puzzle device. It owns the command collision, the runeable object, the save ID, and the designer-facing Puzzle category:
- State Looks: one row per state. Each row lists the parts that change: mesh, materials, hidden, on/off (Active), and offset, rotation, or scale.
- Performances: what plays when a rule reaches a state, picked by To Status and optionally narrowed by From Status or Specific Verb. Rules that reach the same result share one performance. Each performance can tick Animate to Look, tick Play Cinematic, and carry a Behavior.
- Cinematic Sequence (on a performance that ticks Play Cinematic): the optional Level Sequence Actor the performance plays. Every other part is a component of the puzzle's own Blueprint.
- Accepts Drawn Runes: off means only world runes command this puzzle.
One performance plays at a time. Freeze can land in the middle of any action and stops movement where it is; a cinematic sequence has no motion to stop, so it keeps playing. Performance behaviors are described in Puzzle rules and behaviors.
Events¶
The coordinator exposes:
OnPendingChangedOnCommandEvaluatedOnDrawingOpenChangedOnDrawingStateChangedOnDrawingInvalidConfirmed
Runeable objects expose:
OnStatusChangedOnCommandRejected
Tests¶
Automation tests live in Source/Rephrased/RuneSystem/Tests/:
PROT-001/underRephrased.Rune.PROT001: transactions, character interaction, drawing, feedback, presentation, and puzzle states.CORE-009/underRephrased.Rune.CORE009: the Door matrix, duplicate rows, default status, Freeze, State Looks, performances, and saving.
Source files¶
RuneSystem/Activation/RuneCoordinatorComponent.*RuneSystem/Activation/RuneTransaction.*RuneSystem/Activation/WorldRune.*RuneSystem/Drawing/RuneDrawingDataAsset.*RuneSystem/Drawing/RuneDrawingState.*RuneSystem/Drawing/RuneDrawingWidget.*RuneSystem/Drawing/DrawnRunePresentationComponent.*RuneDataAsset.*RuneSystem/Effects/RuneNounRule.hRuneSystem/Effects/RuneableObjectComponent.*RuneSystem/Effects/RunePuzzleActor.*RuneSystem/Effects/RuneStatusTags.*RuneSystem/Behaviors/*
Change history¶
- 2026-10-07 — Gabriel Li —
Status.Normalnever combines with another status tag. - 2026-10-02 — Gabriel Li — Performances carry Animate to Look, Play Cinematic, and the Cinematic Sequence, and narrow by Specific Verb (CORE-011).
- 2026-10-01 — Gabriel Li — Replaced Linked Actors with Blueprint components and an optional Cinematic Sequence (CORE-011).
- 2026-09-29 — Gabriel Li — Documented noun rules, the puzzle actor, and performances (CORE-009).
- 2026-09-17 — Gabriel Li — Linked the drawing section to the new Mind Drawing system reference.
- 2026-09-17 — Gabriel Li — Replaced the system reference with the shipping activation, drawing, command-delivery, and effect architecture.
- 2026-09-16 — Gabriel Li — Current activation lives under
RuneSystem/Activation,Drawing,Effects. This page stays the archived calculator pipeline. - 2026-09-10 — Gabriel Li — Marked this as the legacy slot/calculator pipeline and routed current work to the Second Playable authoring guide.
- 2026-05-23 — Gabriel Li — Redefinition manager links Development plan exposure section.