Unreal Engine Gameplay Ability System Documentation

What GAS is, the classes it is built from, and the notes I keep while shipping combat with it.

The Gameplay Ability System ( GAS ) is the Unreal Engine plugin for abilities, stats and status effects. It is what you reach for when a character needs health that replicates, an attack that costs stamina, a stun that blocks other actions, and all of that working over the network without you writing the prediction code yourself.

The plugin is built from a small set of classes. UAbilitySystemComponent is the hub that every character owns, and it holds everything else: UGameplayAbility for the actions, UAttributeSet for the stats, UGameplayEffect for anything that changes a stat or stays on a character over time, and UGameplayTask for the waiting an ability does while a montage plays or an attribute changes ( the ability tasks derive from it ). An effect travels as an FGameplayEffectSpec, which is the built copy of that effect carrying its level and its captured attributes, and Gameplay Tags gate which of these are allowed to run at all.

If you came here looking for Epic's own reference, that is the official Gameplay Ability System documentation. This page is not it. It is thin in places, which is exactly why this page exists: these are the notes I have written while building GAS combat and RPG systems on shipped games like Lords of the Fallen and Killsquad.

Start with Introduction to GAS: The Six Pieces of Unreal's Gameplay Ability System if what you are missing is the map. After that the posts below go one piece at a time: attribute sets, gameplay effect durations and components, ability instancing policies, the ability tasks you use inside an ability, and the one-shot GiveAbilityAndActivateOnce pattern. I also keep a list of the GAS resources I actually recommend, Epic's own docs and the community ones included.

Getting started with GAS

The map first, then where to go when you want more than my take on it.

  1. Introduction to GAS: The Six Pieces of Unreal's Gameplay Ability System

    The six pieces of GAS, how one attack flows through them, and three rules that prevent most GAS bugs.

  2. Unreal Gameplay Ability System Documentation and GAS Resources

    Unreal Gameplay Ability System is not well documented. Here are some useful resources for GAS.

Attributes and Gameplay Effects

  1. How to create Attribute Sets using Unreal Gameplay Ability System

    Gameplay Ability System Documentation on how to create Attribute Sets to hold your character stats

  2. Making Sense of Gameplay Effect Durations

    Instant vs Has Duration vs Infinite

  3. Gameplay Effect Components in UE5: Setup, Duration, and Stacking Explained

    The built-in Gameplay Effect Components, plus how duration and stacking work.

  4. Crafting Dynamic Poison & Antidote Mechanics with Unreal Engine 5.3 Modular Gameplay Effects

    Create the definitive poison swamp that every souls-like needs!

  5. MMCs and Executions in GAS: Count the Outputs, Not the Inputs

    If only one number changes you want an MMC, no matter how complex the formula. Only a hit that writes many attributes needs an execution.

Gameplay Abilities and Ability Tasks

  1. Learning about Ability Instancing Policy in GAS

    So many instancing types!

  2. Unreal GAS Ability Tasks: PlayMontageAndWait, WaitDelay and 8 More

    Don't wait a Delay to Play your Montages, use Gameplay Ability Tasks

  3. GiveAbilityAndActivateOnce: One-Shot Abilities Without the Cleanup

    Grant an ability, activate it once, and let GAS remove the spec by itself.

  4. Using Gameplay Tags to store Game State

    Storing state in Gameplay Tags makes it easier to store state and create interesting gameplay

Building combat on top of GAS

  1. Building Souls-Style Input Buffering on Top of GAS

    A buffered press is simply a struct, a gate tag and one drain function that an anim notify state calls.

  2. Dodge i-Frames with GAS: Anim Notify Windows and Perfect Dodges

    The dodge ability grants no invulnerability at all. A notify on the montage does it, and you get perfect dodges almost for free.

All Gameplay Ability System posts

Building Souls-Style Input Buffering on Top of GAS

Building Souls-Style Input Buffering on Top of GAS

A buffered press is simply a struct, a gate tag and one drain function that an anim notify state calls.
MMCs and Executions in GAS: Count the Outputs, Not the Inputs

MMCs and Executions in GAS: Count the Outputs, Not the Inputs

If only one number changes you want an MMC, no matter how complex the formula. Only a hit that writes many attributes needs an execution.
Dodge i-Frames with GAS: Anim Notify Windows and Perfect Dodges

Dodge i-Frames with GAS: Anim Notify Windows and Perfect Dodges

The dodge ability grants no invulnerability at all. A notify on the montage does it, and you get perfect dodges almost for free.
Introduction to GAS: The Six Pieces of Unreal's Gameplay Ability System

Introduction to GAS: The Six Pieces of Unreal's Gameplay Ability System

The six pieces of GAS, how one attack flows through them, and three rules that prevent most GAS bugs.
GiveAbilityAndActivateOnce: One-Shot Abilities Without the Cleanup

GiveAbilityAndActivateOnce: One-Shot Abilities Without the Cleanup

Grant an ability, activate it once, and let GAS remove the spec by itself.
Gameplay Effect Components in UE5: Setup, Duration, and Stacking Explained

Gameplay Effect Components in UE5: Setup, Duration, and Stacking Explained

The built-in Gameplay Effect Components, plus how duration and stacking work.
Unreal GAS Ability Tasks: PlayMontageAndWait, WaitDelay and 8 More

Unreal GAS Ability Tasks: PlayMontageAndWait, WaitDelay and 8 More

Don't wait a Delay to Play your Montages, use Gameplay Ability Tasks
Learning about Ability Instancing Policy in GAS

Learning about Ability Instancing Policy in GAS

So many instancing types!
Making Sense of Gameplay Effect Durations

Making Sense of Gameplay Effect Durations

Instant vs Has Duration vs Infinite
How to create Attribute Sets using Unreal Gameplay Ability System

How to create Attribute Sets using Unreal Gameplay Ability System

Gameplay Ability System Documentation on how to create Attribute Sets to hold your character stats