Quick Start

By the end of this page you'll have a pawn that owns an ability system, is granted an ability set, and activates an ability from an input press - on both server and clients.

Prerequisites
The CrimsonAbilitySystem plugin is installed, your project uses Enhanced Input, and you have a UCrimsonAbilitySet data asset (or follow How-To: Grant an Ability Set to make one).

1. Enable the plugin

Open Edit -> Plugins, type Crimson in the search box, tick CrimsonAbilitySystem's checkbox (and CrimsonCommon, its dependency), and restart the editor when prompted. For a Blueprint project that's the entire install - you never hand-edit the .uproject or any .Build.cs.

Screenshot pendingImages/CrimsonAbilitySystem/qs-enable-plugin.png
Edit -> Plugins -> search 'Crimson' -> tick CrimsonAbilitySystem's Enabled checkbox -> restart the editor.
Blueprint-only project?
Enabling the plugin in Edit -> Plugins is the whole installation - there is no .uproject or .Build.cs to edit. The editor writes the plugin entry for you. The C++ step below is needed only when you reference Crimson types from your own C++ code.

C++ projects: after enabling the plugin above, add its module to your build file so your game code can use its types:

csharp
// YourGame.Build.cs
PublicDependencyModuleNames.Add("CrimsonAbilitySystem");
Verify
The plugin shows as enabled in the Plugins window and the editor restarts without errors.

2. Use the Player State that owns the ASC

Set your game mode's Player State class to ACrimsonAbilityPlayerState (or a subclass). The ASC lives here so it survives pawn respawns.

Screenshot pendingImages/CrimsonAbilitySystem/qs-gamemode-playerstate.png
Game Mode -> Classes -> Player State Class = ACrimsonAbilityPlayerState (or a BP child).

3. Use the ability-ready Character

Use ACrimsonAbilityCharacter (or a subclass) as your pawn. It calls InitAbilityActorInfo on both server and client via PossessedBy / OnRep_PlayerState.

Screenshot pendingImages/CrimsonAbilitySystem/qs-default-pawn.png
Game Mode -> Classes -> Default Pawn Class = your ACrimsonAbilityCharacter subclass.
Verify
Hit Play. The pawn possesses without warnings and GetAbilitySystemComponent() returns a valid UCrimsonAbilitySystemComponent.

4. Grant an ability set

On the server, after the ASC initializes, grant a UCrimsonAbilitySet. It bundles abilities, effects, and attribute sets in one call.

Screenshot pendingImages/CrimsonAbilitySystem/qs-grant-set.png
On the Player State (Has Authority), call Give To Ability System with your set asset.
Authority
Grant abilities and apply effects on the server only. The ASC replicates the granted state down to clients automatically. Never grant on a client.

5. Bind input to ability tags

Abilities are driven by gameplay tags. Forward Enhanced Input events to the ASC, then flush the input queue each frame with ProcessAbilityInput (the ability player controller does this for you in PostProcessInput).

Screenshot pendingImages/CrimsonAbilitySystem/qs-bind-input.png
On the input action: Started -> Ability Input Tag Pressed; Completed -> Ability Input Tag Released.
Verify
Press the bound key in PIE. The ability whose contract maps to that input tag activates. In a Listen Server + Client test, it activates on both.
What's next
Make a cast-time ability, give it tunable stats with a contract, or add an augment - see the How-To pages. To understand how the pieces fit, read the Concept pages.