Appearance
Learning GAS
Motion uses the Gameplay Ability System (GAS) for movement state, attributes, GameplayEffects, and multiplayer replication. This page explains the concepts Motion relies on and how they fit together.
Why Motion uses GAS
GAS gives Motion a standard Unreal way to represent state and attribute changes:
- GameplayTags describe states such as sprinting, crouching, jumping, and stamina depletion.
- Attributes store values such as walk speed, jump velocity, stamina, and stamina regeneration rate.
- GameplayEffects modify attributes and grant or block tags.
- The AbilitySystemComponent replicates relevant state between server and clients.
The core pieces
AbilitySystemComponent
The ASC manages active effects, owned tags, attributes, and replication. Motion discovers the ASC through IAbilitySystemInterface, commonly on the PlayerState.
Attributes
Attributes are numeric values. Motion expects attributes such as WalkSpeed, JumpVelocity, Stamina, and MaxStamina when the related feature needs them.
Attributes have a base value and a current value. GameplayEffects modify the current value, and Motion can sync relevant attributes back to CharacterMovementComponent properties.
GameplayEffects
GameplayEffects are the authoritative way to change replicated Motion state. A sprint effect can add to WalkSpeed and grant Motion.State.Sprinting; a stamina drain effect can periodically reduce Stamina.
GameplayTags
GameplayTags describe state in a way that other systems can query. Motion uses tags for movement state, input intent, camera state, attributes, and SetByCaller magnitudes.
Parent tags allow broader checks. For example, a system can query a specific Motion.State.Sprinting tag or reason about the wider Motion.State family.
How Motion uses GAS
Motion uses components for movement behavior and GAS for state and attributes:
This approach keeps Motion compatible with regular Unreal character classes while still using GAS replication for networked projects.
Initialization flow
Why this matters
The GAS model lets Motion avoid a required character base class. Your project can keep its own character, PlayerState, and AttributeSet as long as Motion can discover the ASC and the attributes that a feature needs.
It also keeps server authority clear: clients can predict local feel, but replicated GameplayEffects and attributes come from the authoritative ASC.
Next steps
Continue with the GAS page that matches what you are trying to do.