CrimsonAbilitySystemv1.0Coming to FabPersonal $39.99 · Professional $79.99
Join the Discord

A complete GAS layer: extended ASC, ready-made ability shapes, pluggable costs, data-driven contracts, a slot-based augment system, runtime modifiers, game phases, and an optional graph-authored combo system.

Gameplay · GAS · Unreal Engine 5

Epic gives you GAS. This gives you a combat system.

A GAS foundation for combat: an extended ability system component, four ready-made ability shapes, pluggable costs, a data-asset augment system, server-authoritative game phases and an optional graph-authored combo system. Standalone, with only engine plugins. Designers work in data and Blueprint; attributes stay C++, as GAS requires.

Why CrimsonAbilitySystem

A GAS foundation layer, plus the systems action RPGs actually ship: augments, combos, phases, and the tooltip layer that explains them.

An ASC that does the busywork

UCrimsonAbilitySystemComponent extends the engine ASC with tag-driven input, activation groups, tag relationship rules, cooldown management, effect-stack utilities and the augment runtime. It lives on the Player State, so replicated state survives pawn respawns. ACrimsonAbilityCharacter and ACrimsonAbilityPlayerState wire it up for you.

Four ability patterns, ready to use

UCrimsonGameplayAbility adds activation policies and commit timing, and four subclasses cover the action-RPG staples: cast time, charges, channeling and toggle. Subclass in Blueprint, drop in your montage and effects, ship.

Contracts: abilities publish their schema

A UCrimsonAbilityContract declares the property tags an ability reads, plus class slots, object slots, configuration structs and augment events it exposes. Editors populate dropdowns from the contract, not free-text pickers, and abilities read values with equipped augments folded in: data-driven tuning without string typos.

Augments change one ability instance

A UCrimsonAbilityAugment attaches to a single ability spec: two characters, same ability, different augments, and the asset never changes. A mutation transforms a property on read (+15% crit for this skill), an action fires on an event tag, a listener accumulates across events.

Combos as graphs, not montage scripts

Optional and off by default. Flip one switch and each combo step becomes its own gameplay ability, chained by a UCrimsonComboGraphAsset into branching sequences: light-light-heavy, charge attacks, directional finishers. The owning client predicts transitions; the server validates them inside a ping-tolerant window.

Modifiers, global effects, phases & travel

Tag-based modifiers adjust ability properties at runtime, like a shrine that halves every fire cooldown for 30 seconds. UCrimsonGlobalAbilitySystem applies an ability or effect to every ASC at once, UCrimsonGamePhaseSubsystem drives server-authoritative phase flow, and a state-carrier subsystem snapshots the ASC across a level transition.

A closer look

One working ability, end to end, in a sitting

A firing, cooling-down ability without writing the plumbing: register the globals class, write one C++ attribute set (GAS gives you no choice there), reparent your Player State to ACrimsonAbilityPlayerState, grant a CrimsonAbilitySet, bind input by tag, activate.

  • Cooldowns, costs, activation groups and replication are already handled
  • The Quick Start ends with the ability verified from a client

Make this fireball different, not every fireball

Author an augment against an ability's contract and equip it through the ASC. That character's live ability spec mutates (more projectiles, a different damage type, a changed cooldown), and unequipping restores it. Your ability Blueprint never knows augments exist.

  • Lifetimes: until a combo step or combo ends, for N uses, for seconds, or permanent
  • Grant an augment before its ability exists; the ASC equips it onto every compatible ability, now or later
  • Authored in a dedicated Augment Editor with a palette, an ordered stack and live validation
  • Build socketed runes and gems, or a talent that upgrades a single skill, on top

Author combos like a designer, debug them like an engineer

Chain whole abilities in a combo graph asset, branching on input, direction or hold time. Every step is a real UCrimsonGameplayAbility, so each keeps its own costs, cooldowns and effects.

  • Windows are authored numbers scaled by play rate, not animation notifies
  • A missed notify on a dedicated server cannot desync the chain
  • Dev-tools window shows the active graph, the current step, and why a transition did or didn't fire

One place to author what the player actually sees

An ability's icon, display name, description and subtitle live on the ability itself as instanced Display Data, so every HUD slot, skill tree node and tooltip you build reads one source instead of three lookup tables that drift when something is renamed.

  • Augments describe themselves: a generated description free, {Token} values resolved live from the data
  • BuildAbilityTooltip assembles an ability plus its equipped augments; a preview build diffs a candidate before the player commits
  • OnAbilityPropertiesChanged tells your UI when to refresh instead of polling
  • Gameplay events at six lifecycle moments: activated, ended, cost, cooldown, succeed, failed

Technical details

Engine
UE 5.8
Tested platforms
Windows
Blueprint-ready
Yes
C++ required
Yes
Network replicated
Yes
Dependencies
GameplayAbilities, GameplayTasks, GameplayTags, EnhancedInput, GameFeatures, ModularGameplay, DeveloperSettings, NetCore, IrisCore

Frequently asked questions

Do I need to know GAS already?
It helps, but the plugin removes the parts that make GAS hard to start: the ASC setup, input plumbing, cooldown/cost boilerplate, and replication patterns are done. The Quick Start gets a working ability running end to end, and the Concept pages teach the mental model as you go.
Do I need C++ to use it?
Yes, for a small but unavoidable part: attribute sets are C++ only. Blueprint cannot declare FGameplayAttributeData, which is a GAS constraint rather than a plugin one, so defining health, stamina or mana means one C++ class, and the Quick Start walks through the complete file. Two smaller things are also native-only: assigning a tag relationship mapping (SetTagRelationshipMapping is not Blueprint-callable and the property is not editable in Class Defaults, so a Blueprint-only project needs one small C++ base class to call it once; the mapping asset is fully data-authored), and the combo system's optional input providers, Set Move Input Provider and Set Modifier State Provider (direction-agnostic combos work without either; key modifiers work standalone, and named tag modifiers come through a hook that CrimsonCore binds for you). A custom UCrimsonGameplayAbilityExtension (a HUD slot or pawn facing without CrimsonCore) is a C++ subclass too. Everything downstream is Blueprint: abilities, augments, contracts, combo graphs, phase abilities, costs, clamping via effects, tooltips, and binding UI to attribute changes.
Can a Blueprint-only project use it?
Not end to end, and it would be dishonest to say otherwise. You need a C++ module for at least the attribute set, because GAS itself requires it. After that a designer can work entirely in Blueprint and data assets. If your team has no C++ at all, budget for one engineer to write that one class (plus a Player State that creates it as a subobject) before the rest of the plugin is usable.
Does it work in multiplayer?
Yes. It's built for a dedicated server plus clients, and the docs state where every piece runs rather than leaving you to guess. Granting abilities, effects and attribute sets is server-side; activation uses standard GAS client prediction; augment equipping replicates as registered subobjects; combo transitions are client-predicted and server-validated with a ping-leniency window; game phases are authority-only. The ASC lives on the Player State so state survives pawn respawns.
Is there any required setup beyond enabling the plugin?
One line, and it matters: you must register the plugin's globals class in Config/DefaultGame.ini (AbilitySystemGlobalsClassName=/Script/CrimsonAbilitySystem.CrimsonAbilitySystemGlobals). Without it MakeEffectContext returns the engine context instead of FCrimsonGameplayEffectContext and every feature that reads Crimson context data breaks. It's step 1 of the Quick Start.
Is the combo system mandatory?
No. It's optional and off by default, gated behind a single bEnableComboSystem switch in Project Settings. The ASC, ability shapes, costs, augments, contracts, effect components and game phases all work without ever turning it on.
Does it depend on other Crimson plugins?
No. It builds and runs standalone with only engine plugins (GameplayAbilities, EnhancedInput, GameFeatures, ModularGameplay), and it owns its ability sets, tag stacks and input router. CrimsonCore, the free full-suite integration layer (it requires every Crimson plugin), adds the cross-plugin extras: camera modes and lock-on from abilities, pawn facing and fixed HUD slots as ability extensions, named combo modifiers from CrimsonInput, and one shared use-item ability. Standalone, you write those as your own UCrimsonGameplayAbilityExtension or bind the plugin's hooks.
Do I need CrimsonCommon?
No. CrimsonCommon is an optional toolbox that nothing depends on. The ability sets, the input router and the ability-system owner interface it used to hold now live in this plugin, and every event (ability progress, failures, combo state) is a delegate on the ASC or the combo controller rather than a message-bus broadcast.

Ship GAS features, not GAS plumbing

Reparent two classes, grant an ability set, and you're activating abilities with cooldowns and replication handled. Then layer in augments, combos, and phases as your game grows.

Pricing

CrimsonAbilitySystem is sold on Fab under Epic’s two standard licenses. Both include the full plugin, source, and updates.

Personal$39.99For individuals & teams under $100K revenueComing to Fab. Join the Discord
Professional$79.99For companies over $100K revenueComing to Fab. Join the Discord