Skip to content

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)

  1. Content browser → Content/Runes/Nouns/ → right-click → MiscellaneousData Asset → pick RuneDataAsset.
  2. Name it DA_Rune_<WORD> — e.g. DA_Rune_BOULDER.
  3. Open the asset:
  4. RuneWord = "BOULDER"
  5. EnglishDefinition = the definition text the player sees in the palace.
  6. RuneVisualMesh = the floating tablet mesh. Reuse the standard SM_RuneTablet unless this rune needs a unique tablet.
  7. WordType = NOUN. Verb-only fields disappear.
  8. NounMesh = the world mesh objects with this noun should display.
  9. NounMaterials = leave empty to use the mesh's built-in materials. Override only if the noun needs a different look.
  10. bNounSimulatesPhysics = true if instances should fall under gravity (campfires, props that should land); false for static-feeling objects.
  11. InherentEffectComponents = empty unless the noun should always carry an effect (campfire → BP_FireComponent).
  12. VerbComponentOverrides = empty unless this noun reacts differently to a specific verb.
  13. Audio fields = leave null for default sounds.
  14. Save the asset.
  15. Place an ARuneableObject in a level, set InitialNounData to your new asset. The object now uses the new mesh and reacts to sentences targeting BOULDER.

Adding a verb (reuses an existing component)

  1. Content browser → Content/Runes/Verbs/Data AssetRuneDataAsset.
  2. Name DA_Rune_<WORD> — e.g. DA_Rune_FREEZE.
  3. Open:
  4. RuneWord = "FREEZE", definition, etc.
  5. WordType = VERB.
  6. TwoWordEffectComponent = the BP subclass of the component to use (e.g. BP_StopComponent if Freeze should reuse Stop's behavior).
  7. ThreeWordEffectComponent = leave null to fall back to the two-word component, or set to a different class if 3-word semantics differ.
  8. Save.
  9. 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 assignmentUPlayerRuneKnowledge::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 NounMesh on a noun — runeable objects with that noun become invisible after a transform.
  • Setting WordType = VERB and 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

  1. Place a calculator with the rune in question.
  2. Run the level.
  3. Form the sentence. The expected verb effect should fire on every matching subject in range.
  4. Remove the rune. Effect should revert (mesh / component / scale / state).
  5. 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.h
  • Source/Rephrased_Demo/Rune.h
  • Source/Rephrased_Demo/RuneSlot.h
  • Source/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.