Slot reference
Slot fields and nested settings.
A slot is one actionable operation on an interactable: open, pick up, hold, damage, toggle, mash, or any custom gameplay action you bind to the slot events.
This page documents the authored slot settings, the replicated runtime state, and the display data used by widgets and input glyphs.
Important: author slot definitions in the Slots array, but do not treat that array as your mutable runtime state after BeginPlay.
Runtime enable/disable, cooldown, health, blocking, and toggle state are tracked separately and replicated through the component's slot runtime state.
Slot definition versus runtime state
Slot definition
The authored data: SlotID, InteractionType, prompt text, input action, hold duration, damage values, conditions, cooldown rules, behavior, and feedback assets.
Runtime state
The live state: enabled, blocked, cooldown, toggle state, current health, hit count, and cooldown timing. Use the provided Blueprint functions to change this state at runtime.
Interaction types
| Type | Behavior | Primary settings |
Simple | Completes from a single press. | Display, Conditions, Cooldown, Behaviour, Feedback. |
Hold | Requires the input to remain active until the hold duration is reached. | Hold, Display, Conditions, Feedback. |
MultiHit | Damage-based interaction. Each hit reduces slot health until completion. | MultiHit, Feedback, damage type/multiplier setup. |
Toggle | Switches between active and inactive states. | Display, Conditions, Cooldown, Behaviour, Feedback. |
ButtonMash | Requires repeated presses within a timeout window. | ButtonMash, Display, Conditions, Feedback. |
Core slot fields
| Field | What it does | Notes |
SlotID | Unique identifier for the slot inside the interactable. | Use stable, readable IDs such as Open, Harvest, Damage, or Talk. Widgets and Blueprint calls use this ID. |
InteractionType | Selects the runtime behavior model for the slot. | Determines which nested settings matter for execution. |
SelectionPriority | Priority used when multiple slots on the same target can be selected. | Higher values are preferred by automatic slot selection. |
Display | Prompt, hint, fallback key label, and Enhanced Input action. | Feeds the focus widget, row widgets, and glyph resolution. |
Hold | Settings used by Hold mode. | Ignored by other interaction types. |
MultiHit | Settings used by MultiHit mode. | Ignored by other interaction types. |
ButtonMash | Settings used by ButtonMash mode. | Ignored by other interaction types. |
Conditions | Access restrictions and concurrency checks. | Evaluated before the slot can execute. |
Cooldown | Temporary slot lockout after use. | Used for repeat-use timing. |
Behaviour | Outcome behavior such as delayed destruction or automatic triggering. | Applies object-side behavior after interaction logic. |
Feedback | Sound, Niagara, and network delivery settings for feedback. | Lets you configure audiovisual feedback without rewriting slot logic. |
Display settings
Display settings are used by focus widgets, row widgets, and the input glyph system.
| Field | What it does | Notes |
Prompt | Main action text shown in the prompt widget. | Example: Open, Talk, Harvest, Break. |
Hint | Secondary contextual text. | Useful for requirements, consequences, or short instructions. |
KeyLabel | Legacy/fallback text label. | Used when InputAction is not set, Enhanced Input data is unavailable, or no glyph can be resolved. |
InputAction | Enhanced Input action associated with this slot. | Preferred source for resolving the current key, button, or glyph. Set this for keyboard, mouse, and gamepad-aware prompts. |
Recommended: set Display.InputAction for every player-facing slot.
Use KeyLabel only as a text fallback, not as the primary input binding source.
Hold settings
| Field | What it does | Notes |
HoldDuration | Duration that input must remain active before completion. | Use small values for quick interactions and longer values for heavy or deliberate actions. |
bResetProgressOnCancel | Resets hold progress when the player releases early. | Disable only when partial progress should persist across cancelled attempts. |
Multi-hit settings
| Field | What it does | Notes |
MaxHealth | Total durability that must be removed before completion. | Used as the starting health for damage-driven slots. |
DamagePerHit | Default progress/damage applied by each hit. | Used when the interactor does not provide an override or damage-type-specific multiplier. |
HitResetTimeout | Optional timeout that resets the hit sequence when exceeded. | Use 0 when hit progress should not reset by time. |
DamageMultipliers | Per-damage-type modifiers for hit effectiveness. | Useful for tools, weapons, or elemental damage. This tuning data is intentionally not replicated as a nested TMap. |
Button mash settings
| Field | What it does | Notes |
ButtonMashCount | Number of presses required for completion. | Defines how many repeated presses are needed. |
ButtonMashTimeout | Time limit for completing the press sequence. | If the player does not finish in time, the interaction fails or resets according to runtime logic. |
MinServerMashInterval | Authority-side anti-spam guard for mash RPCs. | This is not a UX delay. It prevents modified clients from completing a mash by sending many server requests in one frame. |
Condition settings
| Field | What it does | Notes |
RequiredInteractorTags | Name-based tags that must be satisfied by the interactor. | The interactor can satisfy these through the requirement provider interface, additional interactor tags, or editor fallback actor tags in non-shipping builds. |
RequiredInteractorGameplayTags | Gameplay tags that must all be present on the interactor. | Use this when your project already uses Gameplay Tags for abilities, items, states, or permissions. |
MaxSimultaneousInteractors | Maximum number of players allowed to use the slot concurrently. | Relevant for multiplayer and co-op interactions. Set to 1 for exclusive use. |
Cooldown settings
| Field | What it does | Notes |
bHasCooldown | Enables cooldown tracking for the slot. | The duration and initial cooldown fields are ignored when this is disabled. |
CooldownDuration | Duration of the cooldown after slot use. | Defines how long the slot remains unavailable. |
bInitiallyOnCooldown | Starts play with the slot already on cooldown. | Use when the slot should unlock after a delay instead of being immediately available. |
Behaviour settings
| Field | What it does | Notes |
bDestroyOwnerOnCompleted | Destroys the owner actor after the slot completes. | Common for pickups or disposable world objects. |
DestroyDelay | Delay before owner destruction is applied. | Useful when an effect, animation, sound, or notification should play before removal. |
AutoInteractDistance | Executes the slot automatically when the interactor enters range. | Used for trigger-like actions or automatic pickups. A value of 0 disables auto-interaction. |
Feedback settings
Feedback settings allow common sound and Niagara responses to be configured directly on the slot.
Delivery settings control whether the feedback follows the normal event scope or is limited to the interacting client.
| Field | What it does | Notes |
SoundOnInteract | Sound played on each interaction event. | Simple/Toggle: press. Hold: start. MultiHit: each hit. ButtonMash: first press. |
ParticleOnInteract | Niagara system spawned on each interaction event. | Useful for contact, sparks, impact, or start feedback. |
InteractFeedbackDelivery | Network delivery scope for start/hit feedback. | UseEventScope follows the normal event scope. InteractingClientOnly plays only for the player who interacted. |
SoundOnCompleted | Sound played when the slot completes successfully. | Used for confirmation and success feedback. |
ParticleOnCompleted | Niagara system spawned when the slot completes successfully. | Used for reward, break, collection, or completion effects. |
CompletedFeedbackDelivery | Network delivery scope for completion feedback. | Use client-only delivery for private UI-like feedback; use event scope for world feedback other players should perceive. |
SoundOnFailed | Sound played when the interaction fails before completion. | Useful for button mash failure, validation failure, or failed requirements. |
ParticleOnFailed | Niagara system spawned when the interaction fails before completion. | Use sparingly for failure feedback that should appear in the world. |
SoundOnCancelled | Sound played when an active interaction is cancelled. | Common for released hold interactions or interrupted interactions. |
ParticleOnCancelled | Niagara system spawned when an active interaction is cancelled. | Useful when cancellation should have visible feedback. |
CancelledFeedbackDelivery | Network delivery scope for cancellation feedback. | Same options as the other delivery fields. |
Feedback delivery modes
| Mode | Meaning | Use when |
UseEventScope | Feedback follows the normal interaction event scope. | The sound or effect represents something that happened in the world. |
InteractingClientOnly | Feedback is delivered only to the player performing the interaction. | The feedback is private, UI-like, or should avoid noise for other players. |
Runtime state fields
These fields expose the slot's current runtime state to Blueprint. They are typically read during UI updates,
state inspection, or gameplay logic. Change them through component functions rather than editing authored slot data directly.
| Field | What it tells you | Why it matters |
SlotID | The runtime state entry's slot identifier. | Used to match runtime state to a slot definition or widget row. |
bIsEnabled | Whether the slot is currently enabled. | Reflects changes made through enable/disable control. |
bIsBlocked | Whether the slot is currently blocked. | Useful for runtime gating and blocked UI states. |
BlockedReason | Current human-readable reason for the blocked state. | Can be surfaced directly to the player UI. |
HoldProgress | Current progress value for hold interactions. | Useful for progress bars and radial UI. |
CurrentHitCount | Current hit count in a multi-hit flow. | Useful for repeated impact UI and progression logic. |
CurrentHealth | Remaining health or durability in a multi-hit slot. | Useful for breakable nodes or damage-driven interactions. |
bIsToggleActive | Whether a toggle slot is currently active. | Useful for switches, lights, and stateful objects. |
bIsOnCooldown | Whether the slot is currently in cooldown. | Useful for disabled prompt states and timing checks. |
CooldownProgress | Normalized cooldown progress. | Useful for radial or bar-based cooldown presentation. |
CooldownDuration | Deterministic cooldown length replicated for presentation. | Clients can derive progress without relying on per-tick replication. |
CooldownStartServerTime | Server-time timestamp for cooldown start. | Used to keep cooldown UI consistent in multiplayer. |
Interaction data payloads
Interaction events expose FInteractionData. This includes the slot ID, transaction ID, interactor, target actor, hit data, hold progress, hit count, damage data, and optional payload data.
| Field | Status | Notes |
CustomPayload | Legacy | Kept for Blueprint compatibility. Prefer typed payloads for new gameplay. |
TypedPayload | Recommended | Use FInteractionPayload when you need structured gameplay data instead of a plain string. |
TransactionId | Current | Identifies one server-validated active interaction. Do not use SlotID alone to identify lifecycle messages. |
Blueprint authoring checklist
- Give every slot a stable
SlotID.
- Set
Display.InputAction for player-facing slots so glyphs and remapped inputs resolve correctly.
- Use
KeyLabel only as a fallback label.
- Use runtime slot functions for enable, block, cooldown, health, and reset changes after
BeginPlay.
- For multiplayer, keep gameplay outcomes server-authoritative and use confirmed events for final game state.
- For button mash, keep
MinServerMashInterval enabled unless you have a specific reason to tune it.
- For feedback, use
InteractingClientOnly only for private feedback; use event scope for world-facing feedback.