Interaction Engine Documentation

Interactable reference

Interactable Component reference.

The InteractableComponent owns the target-side data for an interactive object: initial slot definitions, replicated runtime slot state, object metadata, widgets, outline settings, respawn behavior, custom data, save identity, and target-side events.

Runtime rule: configure Slots before BeginPlay. After BeginPlay, use the dedicated runtime APIs such as SetSlotEnabled, SetSlotBlocked, ResetSlot, SetSlotHealth, and StartSlotCooldown. Directly replacing the slot definition array at runtime is intentionally refused.

Slot definitions versus runtime slot state

Interaction Engine separates static slot setup from mutable gameplay state. Slots describes what actions the target exposes. SlotRuntimeStates mirrors the changing state of those slots during play, such as enabled, blocked, health, cooldown, completion, toggle, and in-progress values.

FieldPurposeReplication behavior
Slots Initial slot definitions authored in the editor or assigned before BeginPlay. Replicates as initial setup data. Use it for design-time configuration, not ongoing runtime changes.
SlotRuntimeStates Runtime-only state for each slot, including availability, health, cooldown, toggle, and completion data. Replicates through a FastArray for deterministic, low-churn multiplayer updates.

Core fields

VariableWhat it doesWhen to change it
bIsInteractableMaster enable/disable switch for the whole component.Use when the entire object should become unavailable without editing each slot.
InteractionTitleObject-level title used by widgets and focus data.Use for target identity, such as Chest, Workbench, or Ancient Door.
InteractionDescriptionObject-level descriptive text.Use when the widget needs context beyond the selected slot prompt.
InteractionDistanceOverrideOptional per-target interaction range override. A value of 0 uses the interactor's normal distance rules.Use for oversized, tiny, or special objects that need custom reach.
SelectionPriorityPriority used during automatic target selection.Raise it when this target should win focus against nearby candidates.
DistantIndicatorOptional icon shown at longer range before the main prompt becomes relevant.Use for discoverable pickups, resources, doors, and objects the player should notice from farther away.
OutlineSettingsPer-target focus outline configuration.Use when this object should control its own CustomDepth/Stencil focus visuals.

Save and persistence fields

VariableWhat it doesWhen to change it
bRegisterForSave Registers this component with the interactable registry so it can be included by world-level save/load nodes. Leave enabled for persistent world objects. Disable for decorative, temporary, or runtime-only interactables that should not be saved.
PersistentInteractableGuid Stable editor-stored identity used to match saved state back to the same interactable. Normally generated and maintained automatically. Avoid manually duplicating the same GUID across different placed actors.
Recommended save flow: persistent placed interactables should keep bRegisterForSave enabled and be saved through Store All Interactable Snapshots / Restore All Interactable Snapshots. See Save and Persistence for the full workflow.

Respawn fields

VariableWhat it doesWhen to change it
bShouldRespawnAllows the interactable to become available again after completion.Use for repeatable resources, reusable objects, or timed world resets.
bAutoRespawnOnCompletedSchedules respawn automatically when a completing slot finishes.Disable when a specialized owner, such as a foliage proxy, controls the lifecycle manually.
RespawnTimeMinMinimum respawn delay.Used only when respawn is enabled.
RespawnTimeMaxMaximum respawn delay.Use a value above the minimum when the reset should have variable timing.

Widget fields

VariableWhat it doesWhen to change it
WidgetDisplayModeControls when the main interaction widget can be shown.Use to choose focus-driven, custom, or hidden prompt behavior.
WidgetClassWidget class used for the main prompt when the target owns its own widget.Set this when the interactable should provide a custom prompt presentation.
FocusWidgetPlacementModeChooses between projected target placement and fixed screen placement for focus prompts.Use projected placement for world-attached prompts; use fixed screen placement for HUD-style prompts.
WidgetDrawSizeExplicit widget draw size in pixels. (0, 0) uses the widget's desired size.Set when you need a stable fixed prompt size.
WidgetRelativeOffsetWorld-space offset applied from the actor or widget anchor in projected mode.Use to position the prompt above, beside, or near the object.
FixedScreenPositionNormalized viewport anchor for fixed screen placement.Use values from 0 to 1, such as (0.5, 0.5) for screen center.
FixedScreenWidgetOffsetPixel offset applied after resolving the fixed screen anchor.Use for final HUD layout adjustment.
WidgetVisibilityDistanceMaximum distance where the main widget may be visible.Use when prompt visibility should differ from interaction reach.
WidgetInteractionAnchorComponentLegacy component reference fallback kept for compatibility.Prefer adding an InteractionWidgetAnchorComponent to the actor instead.

Notification field

VariableWhat it doesWhen to change it
NotificationWidgetClassViewport widget class used when this interactable sends a notification payload to an interactor.Set when this target should show custom messages such as locked, missing key, blocked, or requirement feedback.
Notification widgets: notification widgets should inherit from InteractionNotificationWidgetBase so the plugin can apply FInteractionNotificationData consistently.

Custom Data

CustomData is a replicated array of named float entries. It lets you attach lightweight gameplay state to an interactable without subclassing it: fuel, charge, temperature, lock attempts, puzzle progress, durability, or any float value your game needs. It is server-authoritative, replicated to clients, and included in component state snapshots.

NodeWhat it doesNotes
SetCustomData(Key, Value)Adds or updates a named float value.Authority only. Broadcasts custom data change events.
SetCustomDataSilent(Key, Value)Adds or updates a value without immediately firing the change event.Authority only. Useful for batch writes.
NotifyCustomDataChanged()Fires change events for the current entries.Call after a group of silent writes when listeners should react once to the batch.
GetCustomData(Key, DefaultValue)Reads a value by key.Safe to call on any machine. Returns the default when the key is missing.
HasCustomData(Key)Checks whether a key exists.Safe to call on any machine.
RemoveCustomData(Key)Removes a key and broadcasts the change.Authority only. Removed keys report NewValue = 0.

Slot API

NodeWhat it doesNotes
GetSlotFinds a slot definition by SlotID.Pure read. Use for inspecting setup data.
GetSlotsReturns the current slot definition array.Pure read.
SetSlotsReplaces the initial slot definition list.Valid before BeginPlay. Refused after BeginPlay by design.
GetEnabledSlotsReturns slots currently available according to runtime state.Useful for UI and target inspection.
GetOrderedSlotsReturns slots sorted by their configured priority/order rules.Can optionally return enabled slots only.
AddSlotAdds a slot definition.Authority only. Intended for setup-time or controlled runtime initialization paths.
RemoveSlotRemoves a slot by SlotID.Authority only.
SetSlotPromptUpdates a slot prompt and optional hint.Authority only. Useful for dynamic labels.
SetSlotEnabledEnables or disables a slot at runtime.Authority only. Use instead of editing Slots directly.
SetSlotBlockedBlocks or unblocks a slot and can provide a failure reason.Authority only. Use for locked, missing requirement, or temporarily invalid states.
ResetSlotRestores one slot runtime state.Authority only.
ResetAllSlotsRestores all slot runtime states.Authority only.
StartSlotCooldownStarts the configured cooldown for a slot.Authority only.

Interaction and validation API

NodeWhat it doesNotes
CanInteractChecks whether an interactor can use this target.Pure validation helper.
CanInteractSlotChecks whether an interactor can use a specific slot.Pure validation helper.
CanInteractSlotWithReasonChecks a slot and returns an EInteractionResult plus failure text.Use when UI or notifications should explain why an action failed.
GetEffectiveInteractionDistanceReturns the effective range after applying the target override.Pure helper.
IsWithinInteractionDistanceChecks interactor distance against the effective range.Pure helper.
SetInteractableChanges the component-level enabled state.Authority only.
SetInteractionInfoUpdates object-level title and description.Authority only.
IsInteractionBlockedChecks whether this target is blocked for a specific interactor.Pure helper.
IsBeingInteractedReturns whether the target currently has an active interaction.Pure helper.
ForceCompleteSlotCompletes a slot from authoritative gameplay code.Authority only. Useful for scripted outcomes.

Health and damage API

NodeWhat it doesNotes
GetSlotHealthReturns current and max health for a slot.Use for damageable interactions and UI.
GetSlotHealthNormalizedReturns health normalized to 0-1.Use for progress bars or health indicators.
SetSlotHealthSets runtime health for a slot.Authority only.
ApplyDamageToSlotApplies damage to a slot with an optional damage type and instigator.Authority only. Use for damage-based and multi-hit interactions.

Snapshot and respawn API

NodeWhat it doesNotes
CaptureStateSnapshotCaptures the component's persistent runtime state.Pure helper used by save systems.
ApplyStateSnapshotRestores a previously captured component state.Authority only. Triggers the same relevant change events used by runtime changes.
GetRespawnRemainingTimeReturns how much time remains before respawn.Pure helper.
CancelRespawnCancels a pending respawn.Authority only.

Widget, outline, and notification API

NodeWhat it doesNotes
ShowWidgetShows this interactable's main widget.Use for explicit widget control.
HideWidgetHides this interactable's main widget.Use for explicit widget control.
GetWidgetComponentReturns the spawned widget component, if any.Pure helper.
GetWidgetInteractionAnchorComponentReturns the scene component used as the widget anchor.Pure helper. Prefer InteractionWidgetAnchorComponent on the actor.
GetWidgetAnchorTransformReturns the resolved widget anchor transform.Use for custom projected UI.
GetWidgetAnchorWorldLocationReturns the resolved widget anchor location.Use for indicators, debug, or custom UI placement.
GetUserWidgetReturns the user widget instance inside the widget component.Useful when you need to call functions on a custom prompt widget.
GetOutlineSettingsReturns this target's outline settings.Pure helper.
NotifyInteractorSends a structured local notification to a specific interactor.Use for missing item, blocked, failed, or contextual feedback.
NotifyInteractorMessageBlueprint-friendly helper for sending text notifications.Use when you do not need to build a full notification struct.

Distant indicator API

NodeWhat it doesNotes
InitializeDistantIndicatorCreates or initializes the distant indicator widget component.Usually handled by the plugin.
ShowDistantIndicatorLocalShows the distant indicator on the local client.Client-side only. Not replicated.
HideDistantIndicatorLocalHides the distant indicator on the local client.Client-side only. Not replicated.

Target-side events

EventWhen it firesCommon use
OnInteractionStartedWhen a validated interaction starts on this target.Start animations, sounds, highlight changes, or target-side state.
OnInteractionCompletedWhen an interaction completes.Open, collect, consume, unlock, destroy, or transition the target.
OnInteractionCancelledWhen an active interaction is cancelled.Stop animations, reset progress, or revert temporary visuals.
OnHoldProgressTickWhen hold progress updates.Update target-side progress effects.
OnHitReceivedWhen a hit/damage interaction reaches this target.Play impact feedback or update damage visuals.
OnAllHitsReceivedWhen a multi-hit or damage requirement is fully satisfied.Trigger break, harvest, destroy, or completion effects.
OnToggledWhen a toggle interaction changes state.Switch lights, machines, doors, or modes.
OnInteractorFocusedWhen an interactor focuses this target.Target-side visual response.
OnInteractorUnfocusedWhen an interactor stops focusing this target.Remove target-side visual response.
OnCooldownFinishedWhen the interactable cooldown completes.Re-enable broad target feedback.
OnSlotCooldownFinishedWhen a specific slot cooldown completes.Re-enable slot-specific UI or logic.
OnInteractableStateChangedWhen bIsInteractable changes.React to global availability changes.
OnBlockedStateChangedWhen blocked state changes.Update locked/blocked visuals.
OnSlotsStateChangedWhen slot runtime state changes.Refresh custom UI or gameplay logic that depends on slot availability.
OnRespawnedWhen the interactable finishes respawning.Restore visuals, collision, or gameplay state.
OnInteractionDeniedWhen an interactor attempts to use this target but fails validation.Send feedback, play denied sounds, or show requirement messages.
OnCustomDataChangedWhen a custom data key is added, changed, removed, replicated, or restored.React to lightweight gameplay state changes.
OnCustomDataChangedWithSourceSame custom data change, with an EInteractionStateChangeSource.Differentiate runtime changes, replication, and snapshot restore paths.

Authority and multiplayer notes

Blueprint checklist

Related chapters

  • Slot-specific fields Use Slot and Settings Reference for the nested data inside Slots.
  • Prompt and notification presentation Use UI and Feedback for widget placement, rows, indicators, notifications, and outline behavior.
  • Saving target state Use Save and Persistence for snapshot nodes and world-level save/load flow.
  • Player-side acquisition Use Interactor Reference for tracing, focus selection, prediction, and interaction entry points.