AbilitySystemGlobals¶
UAbilitySystemGlobals is the singleton that holds global GAS configuration and provides factory methods for project-specific customization. As of UE 5.5, most configuration has moved to UGameplayAbilitiesDeveloperSettings (accessible via Project Settings > Gameplay Abilities Settings), but UAbilitySystemGlobals remains the place to override runtime behavior.
For concepts, see Project Setup.
InitGlobalData¶
InitGlobalData() must be called once before any GAS usage. It is called automatically by IGameplayAbilitiesModule::Get().GetAbilitySystemGlobals() on first access.
What it does (in order):
- Calls
InitGlobalTags()— resolves configured tag names intoFGameplayTaginstances - Calls
InitTargetDataScriptStructCache()— builds the net serialization cache - Loads the Global Curve Table (if configured)
- Loads the Global Attribute MetaData Table (if configured)
- Calls
InitAttributeDefaults()— loads attribute default curve tables and creates theFAttributeSetInitter - Creates the
UGameplayCueManagersingleton
Legacy requirement removed
In UE 4.x you had to manually call UAbilitySystemGlobals::Get().InitGlobalData() from an AssetManager subclass. Since UE 5.0+, the module calls this automatically. You no longer need to do this yourself.
UGameplayAbilitiesDeveloperSettings¶
As of UE 5.5, this UDeveloperSettings class is the preferred way to configure GAS. It writes to the same config section (/Script/GameplayAbilities.AbilitySystemGlobals) for backwards compatibility.
Access in Editor: Project Settings > Gameplay Abilities Settings.
Access in Code: GetDefault<UGameplayAbilitiesDeveloperSettings>().
Gameplay Settings¶
| Property | Type | Default | Description |
|---|---|---|---|
AbilitySystemGlobalsClassName |
FSoftClassPath |
UAbilitySystemGlobals |
The class to instantiate as the globals singleton. Override for project-specific subclassing. |
bUseDebugTargetFromHud |
bool |
false |
Use the HUD's debug target for ShowDebug AbilitySystem instead of the ASC's own debug target |
PredictTargetGameplayEffects |
bool |
true |
Allow clients to predict GE application on non-local targets |
ReplicateActivationOwnedTags |
bool |
true |
Replicate tags granted by ability activations. Disable only for legacy compatibility. |
GlobalCurveTableName |
FSoftObjectPath |
None | Global curve table for FScalableFloat default lookups |
Attribute Settings¶
| Property | Type | Default | Description |
|---|---|---|---|
GlobalAttributeSetDefaultsTableNames |
TArray<FSoftObjectPath> |
Empty | Curve tables used to initialize attributes to default values, keyed by Name/Level |
GlobalAttributeMetaDataTableName |
FSoftObjectPath |
None | DataTable defining attribute metadata (min/max values, stacking rules). Currently unused by engine. |
Gameplay Cue Settings¶
| Property | Type | Default | Description |
|---|---|---|---|
GlobalGameplayCueManagerClass |
FSoftClassPath |
UGameplayCueManager |
Class to use for the cue manager singleton |
GlobalGameplayCueManagerName |
FSoftObjectPath |
None | Optional: reference to a specific Blueprint instance of your cue manager class |
GameplayCueNotifyPaths |
TArray<FString> |
Empty | Content paths to scan for GameplayCueNotify assets. These are the "always loaded" set. |
Gameplay Effect Settings¶
| Property | Type | Default | Description |
|---|---|---|---|
bAllowGameplayModEvaluationChannels |
bool |
false |
Enable evaluation channels for modifier aggregation |
DefaultGameplayModEvaluationChannel |
EGameplayModEvaluationChannel |
Channel0 |
Default channel when channels are enabled |
GameplayModEvaluationChannelAliases[10] |
FName[10] |
Empty | Named aliases for each channel. Only channels with aliases are valid (except Channel0). |
Activation Failure Tags¶
These tags are sent as events when ability activation fails, allowing UI/feedback systems to react.
| Property | Tag Sent When... |
|---|---|
ActivateFailCanActivateAbilityTag |
CanActivateAbility() returns false |
ActivateFailCooldownTag |
Ability is on cooldown |
ActivateFailCostTag |
Ability cannot pay its cost |
ActivateFailTagsBlockedTag |
Ability is blocked by current tags |
ActivateFailTagsMissingTag |
Required tags are missing |
ActivateFailNetworkingTag |
Net execution policy prevents activation |
Advanced¶
| Property | Type | Default | Description |
|---|---|---|---|
MinimalReplicationTagCountBits |
int32 |
5 |
Bits used for tag count in FMinimalReplicationTagCountMap::NetSerialize |
GameplayTagResponseTableName |
FSoftObjectPath |
None | Asset reference to a UGameplayTagReponseTable for automatic tag-based responses |
UGameplayAbilitiesEditorDeveloperSettings¶
Editor-only settings backed by CVars (per-user, not committed to source control).
| Property | CVar | Default | Description |
|---|---|---|---|
bIgnoreCooldowns |
AbilitySystem.IgnoreCooldowns |
false |
Skip cooldown checks during development |
bIgnoreCosts |
AbilitySystem.IgnoreCosts |
false |
Skip cost checks during development |
AbilitySystemGlobalScaler |
AbilitySystem.GlobalAbilityScale |
1.0 |
Global rate/duration scaler for ability tasks |
DebugDrawMaxDistance |
AbilitySystem.DebugDrawMaxDistance |
2048.0 |
Max distance for debug draw visualizations |
Subclassing UAbilitySystemGlobals¶
Override the globals class for project-specific behavior. Set your subclass in Project Settings > Gameplay Abilities Settings > Ability System Globals Class.
Common Overrides¶
| Virtual Method | Purpose |
|---|---|
AllocAbilityActorInfo() |
Return a project-specific FGameplayAbilityActorInfo subclass with additional cached data |
AllocGameplayEffectContext() |
Return a project-specific FGameplayEffectContext subclass with additional fields (e.g., critical hit flag) |
GlobalPreGameplayEffectSpecApply() |
Global hook before any GE spec is applied — use for logging, analytics, or global modifiers |
GetGameplayCueManager() |
Return a custom UGameplayCueManager subclass |
GetGameplayCueNotifyPaths() |
Customize which content paths are scanned for gameplay cue notifies |
InitGlobalTags() |
Extend global tag initialization |
Example: Custom Effect Context¶
// MyAbilitySystemGlobals.h
UCLASS()
class UMyAbilitySystemGlobals : public UAbilitySystemGlobals
{
GENERATED_BODY()
public:
virtual FGameplayEffectContext* AllocGameplayEffectContext() const override;
};
// MyAbilitySystemGlobals.cpp
FGameplayEffectContext* UMyAbilitySystemGlobals::AllocGameplayEffectContext() const
{
return new FMyGameplayEffectContext();
}
Key Static Methods¶
| Method | Description |
|---|---|
Get() |
Returns the singleton instance, creating it if necessary |
GetAbilitySystemComponentFromActor() |
Finds an ASC on an actor — checks IAbilitySystemInterface first, then falls back to component search |
DeriveGameplayCueTagFromAssetName() |
Generates a GameplayCue.* tag from an asset's name |
NonShipping_ApplyGlobalAbilityScaler_Rate() |
Applies the global ability scale CVar to a rate value (dev builds only) |
NonShipping_ApplyGlobalAbilityScaler_Duration() |
Applies the global ability scale CVar to a duration value (dev builds only) |