Appearance
GAS Quick Reference
A condensed reference for the Gameplay Ability System concepts used by Motion. For in-depth explanations, see the full GAS primer.
The 5 Core Concepts
ASC
The AbilitySystemComponent manages GAS state. In Motion, it commonly lives on PlayerState and is discovered through IAbilitySystemInterface.
Attributes
Attributes are numeric values such as speed and stamina. Motion commonly uses WalkSpeed, Stamina, MaxStamina, and JumpVelocity.
Effects
GameplayEffects change attributes and grant tags. Motion uses them for sprint speed boosts, stamina drain, stamina regeneration, and movement state.
Tags
GameplayTags are hierarchical state labels. Motion uses tags such as Motion.State.Sprinting and Motion.State.Crouching.
Abilities
Abilities are input-triggered actions in GAS. Motion's movement is component-driven, but it still uses GAS state for replication and coordination.
Quick Setup Checklist
text
1. PlayerState implements IAbilitySystemInterface
2. PlayerState owns AbilitySystemComponent
3. PlayerState owns AttributeSet, or Motion discovers attributes by name
4. GameMode uses your PlayerState class
5. Motion components auto-discover ASCMotion Gameplay Tags
State Tags
Motion.State.WantsToSprint: sprint input intent.Motion.State.Sprinting: active sprinting state.Motion.State.WantsToCrouch: crouch input intent.Motion.State.Crouching: active crouching state.Motion.State.WantsToJump: jump input intent.Motion.State.Jumping: in air from jump.Motion.State.HoldingItem: character is holding a first-person item.Motion.State.StaminaDepleted: sprint stamina is exhausted.Motion.State.StaminaRegenBlocked: stamina regeneration is on cooldown.Motion.State.Walking: character has movement velocity.Motion.State.MovementHalted: character movement is completely halted.Motion.State.StaminaRegenerating: stamina is actively regenerating.
Ability Tags
Motion.Ability.CanJump: character can perform jump actions.Motion.Ability.CanCrouch: character can perform crouch actions.Motion.Ability.CanSprint: character can perform sprint actions.
Camera Tags
Motion.Camera.BreathingActive: camera breathing effect is active.Motion.Camera.DisableShake: camera shake effects are temporarily disabled.
Attribute Tags
Attribute.Movement.WalkSpeed: walk speed.Attribute.Movement.SprintSpeed: sprint speed modifier.Attribute.Movement.JumpVelocity: jump velocity.Attribute.Stamina.Current: current stamina.Attribute.Stamina.Max: maximum stamina.Attribute.Stamina.RegenRate: stamina regeneration rate.
SetByCaller Magnitude Tags
SetByCaller.Magnitude.WalkSpeed: walk speed modification.SetByCaller.Magnitude.CrouchSpeed: crouch speed modification.SetByCaller.Magnitude.SprintSpeed: sprint speed modification.SetByCaller.Magnitude.JumpVelocity: jump velocity modification.SetByCaller.Magnitude.StaminaCost: stamina cost amount.SetByCaller.Magnitude.StaminaDrain: stamina drain rate.SetByCaller.Magnitude.StaminaRegen: stamina regeneration rate.
Motion Gameplay Effects
Movement Effects
GE_Motion_SprintSpeed: infinite effect that adds sprint walk speed.GE_Motion_CrouchSpeed: infinite effect that applies crouch walk speed reduction.
Stamina Effects
GE_Motion_SprintStaminaDrain: infinite effect that drains stamina while sprinting.GE_Motion_SprintStaminaRegen: infinite effect that regenerates stamina when not sprinting.GE_Motion_SprintStaminaRegenDelay: duration effect that blocks regeneration after exhaustion.
Tag Effects
GE_Motion_WantsToSprint: grantsMotion.State.WantsToSprint.GE_Motion_Sprinting: grantsMotion.State.Sprinting.GE_Motion_WantsToCrouch: grantsMotion.State.WantsToCrouch.GE_Motion_Crouching: grantsMotion.State.Crouching.GE_Motion_WantsToJump: grantsMotion.State.WantsToJump.GE_Motion_Jumping: grantsMotion.State.Jumping.
Motion Attributes
WalkSpeed: default600; current effective walking speed. WithMotionWalkComponent, the base value is initialized from the assigned walk profile'sBaseWalkSpeed.Stamina: default5.0; current stamina.MaxStamina: default5.0; maximum stamina.StaminaDrainRate: default1.0; drain per second.StaminaRegenRate: default1.0; regeneration per second.JumpVelocity: default420; base jump velocity.
Effect Duration Types
- Instant: permanent change, such as damage.
- Duration: temporary change with a timer, such as a 10-second speed buff.
- Infinite: active until manually removed, such as sprint speed while sprinting.
Common Patterns
Checking Tags in Blueprint
text
Has Gameplay Tag (Actor, Tag) -> BooleanChecking Tags in C++
cpp
UMotionAbilitySystemHelper::ActorHasGameplayTag(Actor, Tag)Applying Effects
Apply effects on the server.
cpp
FGameplayEffectContextHandle Context = ASC->MakeEffectContext();
FGameplayEffectSpecHandle Spec = ASC->MakeOutgoingSpec(EffectClass, 1.0f, Context);
ASC->ApplyGameplayEffectSpecToSelf(*Spec.Data.Get());Removing Effects
cpp
ASC->RemoveActiveGameplayEffect(EffectHandle);Debugging Commands
console
showdebug abilitysystem
log LogAbilitySystem Verbose
log LogGameplayTags Verbose
log LogMotionAbilitySystem VerboseCommon Issues
- Tags are not replicating: use a GameplayEffect to grant tags instead of relying only on loose tags.
- Attributes are not syncing: apply effects on the server with
HasAuthority(). - ASC is not found: implement
IAbilitySystemInterfaceon the PlayerState or another discoverable owner. - Effects do not apply: make sure the expected AttributeSet exists on the ASC.
Next steps
Use the reference as a lookup, then move to the deeper conceptual or implementation pages.