Appearance
Networking model
Motion uses Unreal Engine networking and GAS replication to keep movement state authoritative while allowing responsive local controls.
Prerequisites
This explanation assumes basic familiarity with Unreal Engine's gameplay framework and replication model. If GAS is new to you, read Learning GAS first.
Core model
Motion follows the normal server-client model:
- the server owns authoritative gameplay state
- the owning client predicts local input for responsiveness
- GAS replicates attributes, tags, and active GameplayEffects
- visual-only camera and sound feedback stays local
PlayerState and ASC ownership
Motion 2.0 Preview 3 does not require a Motion-specific PlayerState class. Your PlayerState should implement IAbilitySystemInterface and expose the ASC used by Motion components.
The PlayerState ownership pattern is still useful because it keeps the ASC stable across possession and respawn:
Motion components discover the ASC through standard Unreal interfaces and fallback lookup paths. If an expected attribute is missing, the feature that needs it degrades while other components continue to run.
Replicated state
Motion relies on three replication channels:
| State | Owner | Replication path |
|---|---|---|
| Character transform and velocity | CharacterMovementComponent | Unreal movement replication |
| Movement attributes | AbilitySystemComponent / AttributeSet | GAS attribute replication |
| Movement state tags | GameplayEffects | GAS tag and effect replication |
Camera curves, movement sounds, UI state, and first-person presentation are local feedback. They should not be replicated as authoritative gameplay state.
Client prediction
For immediate input response, the owning client can apply local prediction before server confirmation. Server-authoritative GameplayEffects then confirm or correct the state.
Loose tags are useful only for short-lived local prediction. Replicated state should be granted by GameplayEffects.
Movement components
Sprint
Sprint uses server validation for authoritative state and local prediction for responsive controls. Stamina should be checked against the replicated GAS attribute, and sprint tags should be granted by GameplayEffects.
Crouch
Crouch wraps Unreal's native crouch path. The CharacterMovementComponent handles capsule replication and prediction, while Motion coordinates tags, speed effects, and camera height events.
Jump
Jump combines server validation with local feedback. Motion tracks its own jump count for coyote time, buffering, and multi-jump features, while the server remains authoritative for accepted jumps.
Design rules
- Apply authoritative GameplayEffects on the server.
- Use PlayerState ASC ownership or an equivalent stable ASC source.
- Keep camera, sound, and first-person presentation local.
- Use Motion helpers for ASC and tag lookup instead of duplicating discovery logic.
- Treat loose tags as prediction hints, not replicated truth.
Next steps
Move from the model to concrete testing and lookup pages.