What GAS solves, the vocabulary, composing an ability from tags and effects, and why it's built the way it is for multiplayer.
The Gameplay Ability System is Epic's framework for abilities, attributes and status effects, built to be data-driven, scalable and networked.
It solves the mess you otherwise hand-roll on every project:
Instead of bespoke per-ability code, you get a standardized, replication-aware system. It's a strong fit for ability-driven, competitive, networked games.
| Concept | What it is |
|---|---|
| Gameplay Ability | A self-contained unit of something an actor can do. Holds the logic to activate, pay a cost, start a cooldown and perform the effect. Granted to an actor, and can be activated, predicted and replicated |
| Attribute | A float stat — Health, Mana, AttackDamage — with a base value and a current value |
| Attribute Set | The C++ class owning a group of related attributes and the rules around them, such as clamping and reacting to changes. It's where attributes live on an actor |
| Gameplay Effect | The data-driven way to change attributes or apply tags. Instant (deal 30 damage), duration-based (slow by 20% for 3 seconds) or infinite (a passive). Handles stacking and periodic ticks |
| Gameplay Tag | A hierarchical label like State.Stunned or Ability.Fire.Fireball. Used everywhere to track state, categorize and gate abilities |
bIsStunned to State.Stunned — is most of what makes the rest of the system composable.
Tying it together: the Ability System Component lives on an actor and manages its abilities, attributes and effects. Gameplay Cues are the cosmetic layer — the replicated VFX and SFX responses to effects.
An ability is not an actor or a component. The UAbilitySystemComponent (ASC) is the actual actor component — one per actor that can use abilities. A UGameplayAbility is a plain UObject, granted via a TSubclassOf<UGameplayAbility> and owned/tracked by the ASC. It has no transform and no spatial presence — it pulls world info from the AvatarActor / GameplayAbilityActorInfo at activation time.
InstancingPolicy decides what "an instance" of that ability means:
| Policy | Behavior | Use when |
|---|---|---|
| InstancedPerActor common default | One UObject instance created on first activation, then reused for every future activation. State persists across activations. Lives until ClearAbility or actor destruction — not when a single activation ends | The ability needs to remember something between activations, and never runs concurrently with itself |
| InstancedPerExecution | A new instance spawns every activation and is discarded at EndAbility(). A spec can hold multiple concurrent instances if re-triggered before the previous run ends | Per-activation state would conflict across overlapping runs — rapid-fire or retriggerable abilities |
| NonInstanced deprecated | No instance; the CDO runs statelessly | Cheapest option, but unsafe for any per-activation or per-actor member state |
Walk a Fireball through, with cost, cooldown and effect:
| Part | How it's built |
|---|---|
| The ability | A Gameplay Ability, GA_Fireball, holding the activation logic |
| Cost | A Gameplay Effect that reduces Mana, assigned as the ability's cost. Activation checks it automatically and fails if Mana is short |
| Cooldown | A duration Gameplay Effect granting a Cooldown.Fireball tag for N seconds, assigned as the cooldown. The ability cannot reactivate while that tag is present |
| Effect on target | On hit, apply a damage Gameplay Effect modifying the target's Health — optionally plus a burn, a duration effect with a periodic tick and a State.Burning tag |
| Activation flow | Play the montage, spawn the projectile, and on overlap apply the damage effect to the target's Ability System Component. Fire a Gameplay Cue for the VFX and SFX |
| Gating | Tags block or cancel the ability — it cannot cast while State.Silenced is active |
Competitive networked games have two demands that pull against each other:
GAS is designed to reconcile them:
| Mechanism | What it does |
|---|---|
| Client-side prediction | The client predicts activation locally so it feels instant; the server validates and corrects if the prediction was wrong |
| Server authority | Attributes and effects replicate through the Ability System Component, and the server is the source of truth for health and damage |
| Efficient cosmetics | Gameplay Cues replicate VFX and SFX without spending bandwidth on gameplay-critical channels |
Chapter 16 covers the underlying authority model that this sits on top of.
Answer each out loud before re-reading the chapter.