Adding a verb¶
Start with the verb's column in Current Rune Type. A verb is a word; what it does to each noun lives in that noun's rules, and how it looks lives on each puzzle.
1. The verb word¶
Create a RuneDataAsset in Content/Rephrased/Gameplay/Runes/Verbs/ and set:
| Field | Meaning |
|---|---|
RuneWord |
Player-facing word. Match the rune matrix exactly. |
EnglishDefinition |
Definition shown under the word above its world rune while the G definitions toggle is on. |
WordType |
VERB. |
RuneVisualMesh |
Rune mesh shown on the word's pedestal, as the drawn rune, and on a world rune whose Visual has no mesh of its own. |
| Duration | How long the verb's temporary effects last, such as how long Rise holds. |

2. One rule per matrix cell¶
For each noun the verb affects, open the noun's data asset and add rows under Rules:
| Field | Meaning |
|---|---|
| Verb | This verb. |
| From Status | The exact state the noun is in, e.g. Closed. |
| To Status | The exact state after the command. Keep it equal to From Status when the verb changes no state, such as Rotate on a Column. |
| Stops Motion | Tick for Freeze-style verbs: the puzzle stops moving where it is. |
Cells whose effect lasts a while go under Temporary Rules instead: Verb and From Status. The state stays the same and the puzzle plays for the verb's Duration.
Every row titles itself, e.g. Closed + OPEN -> Open or Normal + RISE (temporary). Data validation reports two rows for the same cell.
3. How it plays on each puzzle¶
On each noun's puzzle Blueprint, add a Performances entry for the result the verb reaches:
- To Status: the resulting state
- From Status and Specific Verb: optional, to narrow the match
- Animate to Look: animates the parts into the new state's look
- Play Cinematic: plays a Level Sequence as the camera shot
- Behavior: optionally Move, Rotate, Rise (Temporary), or Swap Mesh
Rules that reach the same result share a performance, so a new verb often plays an existing one. A rule that changes the state also applies the new state's State Looks row. See Puzzle rules and behaviors.
4. A new behavior¶
When no existing behavior expresses the verb, create a URunePuzzleBehavior subclass under Source/Rephrased/RuneSystem/Behaviors/:
UCLASS(meta = (DisplayName = "My Behavior"))
class REPHRASED_API URunePuzzleMyBehavior : public URunePuzzleBehavior
{
GENERATED_BODY()
public:
virtual bool MovesObject() const override { return true; }
protected:
virtual void Update(float Alpha) override;
};
Update(Alpha)runs every frame from 0 to 1 overGetTotalTime();GetTarget()is the component it drives.Start,Finish, andStopcover setup, the settled end, and being cut short.MovesObjectreturning true lets Freeze stop it and lets checkpoints save the target's pose.
Blueprint children implement OnBegin, OnUpdate, and OnComplete instead. Both appear in the Behavior dropdown.
Verification¶
- The verb has a rule row for every matrix cell it covers, and validation reports no duplicate cells.
- Commands in a state with no row reject with feedback.
- Each result plays the intended performance and settles into the right State Looks row.
- Freeze stops the verb's movement where it is.
Rephrased.Rune.CORE009passes, and PIE covers each supported cell and one rejected cell.- For C++ work:
convention_check, human compile,request_review, and devlog are complete.
Source files¶
Source/Rephrased/RuneDataAsset.hSource/Rephrased/RuneSystem/Effects/RuneNounRule.hSource/Rephrased/RuneSystem/Effects/RunePuzzleActor.hSource/Rephrased/RuneSystem/Behaviors/RunePuzzleBehavior.h
Change history¶
- 2026-10-02 — Gabriel Li — Performances list Animate to Look, Play Cinematic, and an optional Behavior; word field descriptions for
EnglishDefinitionandRuneVisualMeshmatch the Rune Data Asset; added editor screenshots (CORE-011). - 2026-09-29 — Gabriel Li — Rewrote verb authoring around noun rules, puzzle performances, and puzzle behaviors (CORE-009).
- 2026-09-17 — Gabriel Li — Updated verb authoring to
VerbEffectClass, noun overrides, status transitions, and runeable-object command delivery. Custom verb example is a concrete class so the receiver can instantiate it. - 2026-09-10 — Gabriel Li — Marked the effect-component recipe as legacy for SP2 and documented the current command-receiver route.
- 2026-09-05 — Gabriel Li — Updated to the shipped hybrid Content structure (PR #19): PreProShowcase sandbox under
Content/Rephrased/Levels/Prepro/, Art/Gameplay/Levels layout, Imports isolation,Content/Developers/<Discipline>/<Name>/scratch space. - 2026-05-23 — Gabriel Li — Designer vs engineer routing callout at top.