Adding a rune¶
Step-by-step recipe. No code required for runes that reuse an existing verb component or noun mesh.
What you need to know first¶
New to the editor? Read Unreal Editor 101 and verify Play In Editor (PIE) in Rune Showcase (Content/Levels/) before placing assets.
Read Data assets and the rune fields in Authoring/RuneAuthoring before starting. Both linked from this page assume that context.
Adding a noun (uses an existing mesh)¶
- Content browser →
Content/Runes/Nouns/→ right-click → Miscellaneous → Data Asset → pickRuneDataAsset. - Name it
DA_Rune_<WORD>— e.g.DA_Rune_BOULDER. - Open the asset:
RuneWord= "BOULDER"EnglishDefinition= the definition text the player sees in the palace.RuneVisualMesh= the floating tablet mesh. Reuse the standardSM_RuneTabletunless this rune needs a unique tablet.WordType=NOUN. Verb-only fields disappear.NounMesh= the world mesh objects with this noun should display.NounMaterials= leave empty to use the mesh's built-in materials. Override only if the noun needs a different look.bNounSimulatesPhysics= true if instances should fall under gravity (campfires, props that should land); false for static-feeling objects.InherentEffectComponents= empty unless the noun should always carry an effect (campfire →BP_FireComponent).VerbComponentOverrides= empty unless this noun reacts differently to a specific verb.- Audio fields = leave null for default sounds.
- Save the asset.
- Place an
ARuneableObjectin a level, setInitialNounDatato your new asset. The object now uses the new mesh and reacts to sentences targetingBOULDER.
Adding a verb (reuses an existing component)¶
- Content browser →
Content/Runes/Verbs/→ Data Asset →RuneDataAsset. - Name
DA_Rune_<WORD>— e.g.DA_Rune_FREEZE. - Open:
RuneWord= "FREEZE", definition, etc.WordType=VERB.TwoWordEffectComponent= the BP subclass of the component to use (e.g.BP_StopComponentif Freeze should reuse Stop's behavior).ThreeWordEffectComponent= leave null to fall back to the two-word component, or set to a different class if 3-word semantics differ.- Save.
- The verb is now available. Any calculator with a slot can accept this rune.
If both effect-component fields are null, the verb is interpreted as IS (Transform Into). Don't leave them null by accident.
Making a rune available to the player¶
Three paths:
Initial rune in a slot — On any ARuneSlot or subclass, set bSpawnWithInitialRune = true and InitialRuneData = your new data asset. Spawns at BeginPlay.
Combine slot recipe — Author a UMergeRecipeDataAsset whose OutputRune is your new rune. Drop the recipe on a ACombineSlot. Player merges the inputs to produce the new rune.
Memory palace assignment — UPlayerRuneKnowledge::DiscoverRune is called when the player encounters the rune the first time (typically through a slot). The palace then auto-assigns it on the next visit. No designer step needed beyond making the rune findable somewhere.
Splittable runes¶
If bIsSplittable = true, set RuneSplitData to the rune assets the split produces. Example: DA_Rune_GRANDFATHER_TIME splits into DA_Rune_TIME and DA_Rune_OLD.
The split fires when the player presses the Split input action while carrying the rune. The split runes spawn at ARephraseCharacter::SplitRuneSpawnDistance in front of the player.
Common mistakes¶
- Forgetting
RuneVisualMesh— the tablet appears invisible. - Forgetting
NounMeshon a noun — runeable objects with that noun become invisible after a transform. - Setting
WordType = VERBand leaving both effect components null on accident — the verb silently becomes IS. - Adding the rune to a calculator slot but never to a memory palace path — the player can solve the puzzle once but never re-encounter the rune.
Verifying your work¶
- Place a calculator with the rune in question.
- Run the level.
- Form the sentence. The expected verb effect should fire on every matching subject in range.
- Remove the rune. Effect should revert (mesh / component / scale / state).
- Open the memory palace. The rune should be available in the next empty slot after first encounter.
If any of those fail, check the data asset against the field list in Authoring/RuneAuthoring.
Source files¶
Source/Rephrased_Demo/RuneDataAsset.hSource/Rephrased_Demo/Rune.hSource/Rephrased_Demo/RuneSlot.hSource/Rephrased_Demo/MergeRecipeDataAsset.h
Change history¶
- 2026-05-23 — Gabriel Li — Rune Showcase path; PIE spelled out on first use.
- 2026-05-08 — Gabriel Li — Added baseline change history section for weekly wiki maintenance.