The GAS interaction mechanism layer — data-driven scan tasks for cursor or forward aim, a server-side ability granter, trigger statics, and project-wide scan settings. Author one small interact ability; the rest is done.
Gameplay · Interaction · Unreal Engine 5
Every "Press E" in your game. Scanning, filtering and authority, handled.
CrimsonInteraction is the mechanism layer for player interaction in Gameplay Ability System projects: ability tasks that detect nearby ICrimsonInteractableTarget actors by cursor or forward trace, filter their options by what the player can actually activate, and keep each option's ability granted on the server — plus the statics, settings, and helpers that glue those pieces to your interact ability. It ships no abilities, no widgets, and no input bindings: the Quick Start walks you through the roughly 100 lines you author, keep, and extend.
Why CrimsonInteraction
Detection, filtering, granting, and firing are done — the small interact ability on top stays yours.
Two scan tasks, two camera styles
UCrimsonAbilityTask_WaitForInteractableTargets_TopDownTrace deprojects the cursor to the ground for Diablo-style games; _SingleLineTrace traces forward through the camera for FPS/TPS. Swap one task call to change strategy — or subclass the base task and bring your own trace.
Options filtered by what you can activate
Every scan task is a real UAbilityTask spawned from your running interact ability. Gathered options are filtered by CanActivateAbility, so the prompt only ever shows interactions the player can actually perform — no stale or impossible options.
A server-side ability granter
UCrimsonAbilityTask_GrantNearbyInteraction runs on the server only: it grants each nearby option's abilities to the avatar's ASC and revokes them when the interactable leaves range. Options fire through GAS with the granted ability already in place.
Fire by replicated handle
UCrimsonInteractionStatics resolves targets and actors and exposes TriggerInteractionOption — fire an option's ability by replicated handle from Blueprint or C++, so the interaction runs with normal GAS prediction and server authority.
Instant, hold & channel — all data
An option's activation shape lives in its data: InputType = Instant fires on press, Hold with an InputHoldDuration confirms after a timed hold, and an InteractionActionAbility starts a timed channel like mining or reviving. UCrimsonInteractionDurationContext carries progress to your UI.
Zero collision setup to start
The default Interaction Trace Channel is Visibility, so any actor with default collision is detected immediately. When you outgrow that, UCrimsonInteractionSettings centralizes channel, profiles, range, rate, and debug — and the plugin ships Interactable_OverlapDynamic / Interactable_BlockDynamic profiles for a dedicated-channel setup.
A closer look
The complete loop in one Quick Start
Walk up to a chest, press interact, and the chest reacts — in singleplayer and multiplayer — using only CrimsonInteraction and CrimsonCommon. You author two small abilities along the way (a handler and an interact ability), and the wiki walks you through every line. They're yours to keep and extend, not black boxes to work around.
Holds and channels are data, not input triggers
Hold timing lives in ability timers, never in an Enhanced Input Hold trigger — per-option durations are data, and the input layer can't know what you're aiming at. Holding fills the target's progress and releasing early cancels; channels pre-grant their action ability automatically. Progress reaches your UI two ways: NotifyInteractionProgress on the target itself, or FCrimsonInteractionProgressMessage on the message bus for HUD widgets.
Built for multiplayer from the first trace
Scanning runs on the owning client to drive the local prompt; granting runs on the server only and revokes out-of-range grants; firing goes through GAS by replicated handle so prediction and authority just work. The aim helpers even tolerate AI and non-locally-controlled avatars, so a listen-server host running multiple pawns won't crash.
Technical details
- Engine
- UE 5.8
- Platforms
- Windows, Mac, Linux
- Blueprint-ready
- Yes
- C++ required
- No
- Network replicated
- Yes
- Dependencies
- CrimsonCommon, GameplayAbilities, GameplayTasks, GameplayTags, EnhancedInput
- Last updated
- June 2026
Frequently asked questions
Do I need the Gameplay Ability System?
UAbilityTask spawned from a running UGameplayAbility, options are filtered by CanActivateAbility, and interactions fire as gameplay events on an ASC. There is no non-GAS fallback. The upside: it works with plain UGameplayAbility subclasses — you don't need CrimsonAbilitySystem or any particular GAS base class.Do I need C++ to use it?
FCrimsonInteractionOptionBuilder for building options natively.Does it work in multiplayer?
GrantNearbyInteraction early-outs unless it has authority, and TriggerInteractionOption fires by replicated handle so the granted ability runs with normal GAS prediction and server authority.Does it depend on other Crimson plugins?
ICrimsonInteractableTarget, FCrimsonInteractionOption, the message bus) lives there. Pair it optionally with CrimsonInput for a safe press-and-hold trigger or CrimsonUI for world indicators, but nothing requires them.How does it relate to the free CrimsonCommon foundation?
Detect, prompt, press, react — today
The Quick Start takes you from an empty GAS project to a chest that reacts to the interact key, in singleplayer and multiplayer, in roughly 100 lines you own. Holds, channels, and progress prompts are one how-to further.
Pricing
CrimsonInteraction is sold on Fab under Epic’s two standard licenses — both include the full plugin, source, and updates.
Completes your setup
Built on the free CrimsonCommon foundation, so it pairs cleanly with the rest of the suite:
Layout-agnostic, fully replicated inventory and crafting.
- Pluggable Topology
- Runtime Constraints
- Scoped Containers
- No RPCs to Write
Equipment slots that grant abilities and spawn gear.
- Slot-Based Equipping
- Grants Ability Sets
- Spawns Visual Actors
- Interface-Decoupled