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
| Concept | What It Is | Motion's Use |
|---|---|---|
| ASC | AbilitySystemComponent - manages everything | Lives on PlayerState, discovered via IAbilitySystemInterface |
| Attributes | Numeric values (speed, stamina) | WalkSpeed, Stamina, MaxStamina, JumpVelocity |
| Effects | Change attributes & grant tags | Sprint speed boost, stamina drain/regen |
| Tags | Hierarchical state labels | Motion.State.Sprinting, Motion.State.Crouching |
| Abilities | Actions triggered by input | Motion uses components, not traditional abilities |
Quick Setup Checklist
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's Gameplay Tags
State Tags
| Tag | Component | Purpose |
|---|---|---|
Motion.State.WantsToSprint | Sprint | Input intent |
Motion.State.Sprinting | Sprint | Active sprinting |
Motion.State.WantsToCrouch | Crouch | Input intent |
Motion.State.Crouching | Crouch | Active crouching |
Motion.State.WantsToJump | Jump | Input intent |
Motion.State.Jumping | Jump | In air from jump |
Motion.State.StaminaDepleted | Sprint | Exhausted |
Motion.State.StaminaRegenBlocked | Sprint | Regen on cooldown |
Motion.State.Walking | Walk | Has velocity > 0 |
Motion.State.MovementHalted | - | Movement completely halted |
Motion.State.StaminaRegenerating | Sprint | Actively regenerating |
Ability Tags
| Tag | Purpose |
|---|---|
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
| Tag | Purpose |
|---|---|
Motion.Camera.BreathingActive | Camera breathing effect is active |
Motion.Camera.DisableShake | Camera shake effects temporarily disabled |
Attribute Tags
| Tag | Attribute |
|---|---|
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 regen rate |
SetByCaller Magnitude Tags (Advanced)
| Tag | Purpose |
|---|---|
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 regen rate |
Motion's Gameplay Effects
Movement Effects
| Effect | Type | Purpose |
|---|---|---|
GE_Motion_SprintSpeed | Infinite | +300 walk speed |
GE_Motion_CrouchSpeed | Infinite | -200 walk speed |
Stamina Effects
| Effect | Type | Purpose |
|---|---|---|
GE_Motion_SprintStaminaDrain | Infinite | Drain while sprinting |
GE_Motion_SprintStaminaRegen | Infinite | Regenerate when not sprinting |
GE_Motion_SprintStaminaRegenDelay | Duration | Block regen after exhaustion |
Tag Effects
| Effect | Grants Tag |
|---|---|
GE_Motion_WantsToSprint | Motion.State.WantsToSprint |
GE_Motion_Sprinting | Motion.State.Sprinting |
GE_Motion_WantsToCrouch | Motion.State.WantsToCrouch |
GE_Motion_Crouching | Motion.State.Crouching |
GE_Motion_WantsToJump | Motion.State.WantsToJump |
GE_Motion_Jumping | Motion.State.Jumping |
Motion's Attributes
| Attribute | Default | Description |
|---|---|---|
| WalkSpeed | 600 | Base walking speed |
| Stamina | 5.0 | Current stamina |
| MaxStamina | 5.0 | Maximum stamina |
| StaminaDrainRate | 1.0 | Drain per second |
| StaminaRegenRate | 1.0 | Regen per second |
| JumpVelocity | 420 | Base jump velocity |
Effect Duration Types
| Type | Behavior | Example |
|---|---|---|
| Instant | Permanent change | Damage |
| Duration | Temporary with timer | 10s speed buff |
| Infinite | Until manually removed | Sprint speed while sprinting |
Common Patterns
Checking Tags (Blueprint)
Has Gameplay Tag (Actor, Tag) -> BooleanChecking Tags (C++)
cpp
UMotionAbilitySystemHelper::ActorHasGameplayTag(Actor, Tag)Applying Effects (Server Only)
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
bash
# View GAS state
showdebug abilitysystem
# Log GAS activity
log LogAbilitySystem Verbose
log LogGameplayTags Verbose
log LogMotionAbilitySystem VerboseCommon Issues
| Problem | Likely Cause | Solution |
|---|---|---|
| Tags not replicating | Using loose tags instead of effects | Use GameplayEffect to grant tags |
| Attributes not syncing | Effect not applied on server | Apply effects only with HasAuthority() |
| ASC not found | PlayerState missing interface | Implement IAbilitySystemInterface |
| Effect not applying | Missing AttributeSet | Add AttributeSet to ASC |
See Also
- Full GAS Primer - Complete explanations
- Architecture - How Motion integrates with GAS
- Networking - GAS replication in Motion