Gameplay Effects Deep Dive¶
Gameplay Effects (GEs) are the workhorse of GAS. They are the data-driven bundles that actually do things to actors: heal them, burn them, speed them up, slow them down, grant them abilities, make them immune to crowd control. If Gameplay Abilities are the verbs, Gameplay Effects are the nouns — the tangible changes applied to an actor's state.
This section goes deep. If you are looking for a high-level overview, start with the Core Concepts: Gameplay Effects Overview first, then come back here.
The Three Duration Types (Quick Recap)¶
Every Gameplay Effect has a Duration Policy that determines its lifetime:
| Duration Policy | What It Does | Lives In Active GE Container? |
|---|---|---|
| Instant | Executes once, permanently changes base attribute values, then disappears | No |
| Has Duration | Lives on the target for a set amount of time, modifying attributes while active | Yes |
| Infinite | Lives on the target forever (until explicitly removed) | Yes |
Duration and Infinite effects are added to the Active Gameplay Effects Container. Instant effects are executed — they modify the base value of an attribute and are gone. This distinction matters a lot, and we cover it thoroughly in Duration and Lifecycle.
Decision Tree: Where Should I Go?¶
Not sure which page answers your question? Start here.
"I want to..."
- ...understand how GEs are created, live, and die — Duration and Lifecycle
- ...add or multiply an attribute by some value — Modifiers
- ...figure out how a modifier gets its number — Magnitude Calculations
- ...write a complex formula that touches multiple attributes — Execution Calculations
- ...make a buff that stacks up to 5 times — Stacking
- ...grant abilities, apply tags, or block other effects — GE Components
- ...control when effects can apply based on tags — Tags and Requirements
- ...make my character immune to fire damage — Immunity
- ...implement cooldowns or resource costs for abilities — Cooldowns and Costs
- ...pass a damage number from code into an effect — SetByCaller
- ...create or modify effects at runtime in C++ — Dynamic Effects
Suggested Reading Order¶
If you are working through this for the first time, this order builds concepts progressively:
- Duration and Lifecycle — the foundation
- Modifiers — how attributes get changed
- Magnitude Calculations — where the numbers come from
- SetByCaller — the most common way to pass data into effects
- Execution Calculations — the power tool for complex formulas
- Stacking — what happens when the same effect is applied twice
- GE Components — the modular architecture (5.3+)
- Tags and Requirements — conditional application and ongoing requirements
- Immunity — blocking effects
- Cooldowns and Costs — the ability economy
- Dynamic Effects — runtime creation and modification
Already comfortable with GAS?
If you have shipped a project with GAS before and just need to look something up, jump straight to whatever page interests you. Each page is designed to stand on its own.
Key Source Files¶
For engine spelunkers, the relevant headers live under Engine/Plugins/Runtime/GameplayAbilities/Source/GameplayAbilities/Public/:
| File | What It Contains |
|---|---|
GameplayEffect.h |
UGameplayEffect, FGameplayEffectSpec, FActiveGameplayEffect, modifier structs, stacking enums |
GameplayEffectTypes.h |
EGameplayModOp, evaluation channels, FGameplayEffectContext |
GameplayEffectComponent.h |
UGameplayEffectComponent base class |
GameplayEffectComponents/*.h |
All 11 built-in component types |
GameplayEffectExecutionCalculation.h |
UGameplayEffectExecutionCalculation and its parameter/output structs |
GameplayModMagnitudeCalculation.h |
UGameplayModMagnitudeCalculation base class |