Skip to content

Player and interaction

ARephraseCharacter owns movement, camera, interaction discovery, and the player's rune coordinator.

Components

  • CameraBoom and FollowCamera: player camera fallback outside authored camera overrides.
  • InteractionTrigger: overlap box positioned in front of the character each tick.
  • RuneCoordinator: native URuneCoordinatorComponent for world runes, drawing, transactions, and command feedback.

The shipping Blueprint is Content/Rephrased/Gameplay/Core/BP_RephraseCharacter1.

Enhanced Input

The character owns:

  • DefaultMappingContext
  • MoveAction
  • InteractAction
  • ResetAction
  • ToggleMindPalaceAction
  • ToggleRuneDefinitionsAction
  • MindPalaceMappingContext, with ToggleStarViewAction, NavigateStarAction, SelectStarAction, and ClickStarAction

IMC_Default is added at priority 0 during BeginPlay. MindPalaceMappingContext is added only while the pawn is possessed in a level that has an ARuneStarField. URuneCoordinatorComponent owns the rune-specific actions and adds IMC_RuneDrawing at a higher priority while the drawing tablet is open.

See Enhanced Input in Rephrased.

Interaction order

Interact() follows this order:

  1. If the drawing tablet is open, return.
  2. If a command orb is active, return.
  3. If the Mind Palace star view is open, return.
  4. Find the closest available IInteractableInterface actor in the interaction box.
  5. Interact with that actor and return.
  6. Ask RuneCoordinator to activate the nearest world-rune candidate.

This makes authored interactables such as unlock actors take priority when they overlap a world rune.

IInteractableInterface

Interactive actors can implement:

  • OnPlayerNearby(Player)
  • OnPlayerLeave(Player)
  • OnInteract(Player)
  • CanInteract(Player)
  • GetInteractionPrompt()

The character tracks overlapping interactables, chooses the nearest valid actor, and sends nearby/leave notifications with a short cooldown to avoid boundary flicker.

World-rune discovery

The coordinator also listens to the character's InteractionTrigger for AWorldRune overlaps. It chooses the nearest registered rune as the candidate and updates its glow.

World-rune activation uses the same Interact action after the character has checked ordinary interactables.

Input modes

Opening the drawing tablet switches to game-and-UI input and adds the rune drawing context. Closing it removes that context and restores the coordinator's authored ERuneInputModeRestore policy:

  • GameOnly
  • GameAndUI
  • UIOnly

The policy is explicit on the coordinator so menus and alternate pawns can choose their required return mode.

Water

An actor tagged Water that the player stands on returns the player to the last dry spot. Water is still solid; the return enforces that it is not walkable.

  • Every 0.1 s CheckWaterFloor reads the floor under the character. A floor without the Water tag is a dry spot and is added to a short history.
  • A Water floor that has a URuneableObjectComponent in Status.Frozen is walkable and is not a dry spot, so standing on ice keeps the shore the player walked out from as the return point. Dirty & Frozen counts as frozen.
  • A Water floor that is not frozen, including water that thaws under the player, starts a return to the oldest dry spot in the history. WaterReturnLag (default 1 s) sets how far back that reaches, so the player lands clear of the shore. Control is disabled while the player is carried there over WaterReturnDuration (default 0.6 s). The carry ends WaterReturnDropHeight (default 100 cm) above the spot, and control returns as the player falls the rest of the way.
  • With no dry spot yet, such as a spawn on water, nothing happens.

The history is not saved. A checkpoint restore places the player and the next dry floor starts it again.

To make a surface water, add the Water tag to its actor. Lvl_Overworld tags MAIN PUZZLE - CENTRAL WATER CHANNEL; the waterfall is not tagged.

Source files

  • Source/Rephrased/RephraseCharacter.h
  • Source/Rephrased/RephraseCharacter.cpp
  • Source/Rephrased/InteractableInterface.h
  • Source/Rephrased/RuneSystem/Activation/RuneCoordinatorComponent.h

Change history

  • 2026-10-07 — Ricky Lu — The water return carries the player back with control disabled and drops them onto the dry spot instead of teleporting (CT-003).
  • 2026-10-06 — Ricky Lu — Added the water return: standing on unfrozen Water-tagged ground returns the player to the last dry spot (CT-003).
  • 2026-10-02 — Gabriel Li — Listed the Mind Palace, rune definition, and star view input actions and added the star view step to the interaction order (CORE-011).
  • 2026-09-17 — Gabriel Li — Updated player interaction to the native rune coordinator, interactable-first priority, and drawing-context input flow.
  • 2026-05-23 — Gabriel Li — GDD as design authority; implementation status link.
  • 2026-05-08 — Gabriel Li — Added baseline change history section for weekly wiki maintenance.