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.

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