Quick Start
By the end of this page your pawn moves with WASD and fires one GAS ability - both routed by gameplay tag through a UCrimsonInputConfig. You will make the Enhanced Input assets, tag them in a config, bind them, and apply the mapping context.
CrimsonCommon and CrimsonInput are installed, you have a Pawn / Character and a PlayerController you can edit, and (for the ability step) an ability system on your pawn or player state. New to Enhanced Input? Step 2 walks you through the raw assets.1. Enable the plugin
Open Edit -> Plugins, type Crimson in the search box, tick CrimsonInput's checkbox (and CrimsonCommon, its dependency), and restart the editor when prompted. For a Blueprint project that is the entire install - you never hand-edit the .uproject or any .Build.cs.
C++ projects: after enabling the plugin, add its module to your build file so your game code can use its types:
// YourGame.Build.csPublicDependencyModuleNames.Add("CrimsonInput");
2. Create the Enhanced Input assets
CrimsonInput does not replace Enhanced Input - it sits on top of it. You still need the standard assets: an Input Action per action, and one Input Mapping Context (IMC) that binds keys to those actions. If you already have them, skip ahead.
- Content Browser -> right-click -> Input -> Input Action. Make
IA_Move(set its Value Type toAxis2D (Vector2D)) andIA_Ability1(leave itDigital (bool)). - Right-click -> Input -> Input Mapping Context. Make
IMC_Default. - Open
IMC_Default, add a mapping forIA_Move(bind WASD - use the standard 2D-vector modifiers) and a mapping forIA_Ability1(bind e.g. the1key).
IA_Move, IA_Ability1, and an IMC_Default whose mappings light up the right keys when you preview them.3. Use the Crimson input component
UCrimsonInputComponent is the Enhanced Input component with the tag-based binders. Point the project at it once in Config/DefaultInput.ini - this applies to every controller with no per-pawn code:
[/Script/EnhancedInput.EnhancedInputDeveloperSettings]DefaultInputComponentClass=/Script/CrimsonInput.CrimsonInputComponent
InputComponentClass = UCrimsonInputComponent::StaticClass(); in that pawn's constructor instead. The project-wide DefaultInputComponentClass above is the recommended default and matches how CrimsonCore ships.CastChecked<UCrimsonInputComponent>(PlayerInputComponent) in SetupPlayerInputComponent succeeds. In Blueprint, Get Component By Class -> Crimson Input Component on the pawn returns a valid component at runtime.4. Create a UCrimsonInputConfig
Right-click in the Content Browser -> Miscellaneous -> Data Asset -> CrimsonInputConfig. Open it and tag the actions from step 2: put IA_Move in NativeInputActions with tag InputTag.Move, and IA_Ability1 in AbilityInputActions with tag InputTag.Ability.1. (The plugin ships no input tags - add these under an InputTag parent in your Project Settings -> GameplayTags, or use native tags.)
InputTag hierarchy.5. Bind the actions
Bind native input (move) and ability input (ability 1) from the config. Blueprint and C++ take different paths - the C++ binders are template helpers, so Blueprint drives input from the standard Enhanced Input Action event nodes instead. Both need a reference to your config: see How-To: Get the Building Blocks.
BindNativeAction / BindAbilityActions are C++-only templates. In Blueprint you place an Enhanced Input Action event per action (it references the UInputAction asset directly) and call your logic from it. For ability input, forward the tag to your ASC (this example uses CrimsonAbilitySystem's Ability Input Tag Pressed) - see How-To: Bind Ability Input for the full node chain.InputTag.Ability.1.6. Apply the mapping context
Finally, apply IMC_Default through Add Mapping Context With Chord Triggers (not the vanilla Add Mapping Context). It applies the IMC and injects chord triggers on any rebindable mapping; with no chords authored yet it behaves exactly like the vanilla node. Do this once when the pawn is possessed (e.g. BeginPlay). Getting the subsystem is covered in How-To: Get the Building Blocks.
ACrimsonCharacter and assign a Crimson Pawn Data asset whose InputConfig is your config; UCrimsonHeroComponent then binds all input (native + ability) from an init-state machine with zero wiring. See Concept: Full-Stack Integration & Multiplayer.