Skip to content

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:

StateOwnerReplication path
Character transform and velocityCharacterMovementComponentUnreal movement replication
Movement attributesAbilitySystemComponent / AttributeSetGAS attribute replication
Movement state tagsGameplayEffectsGAS 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.

Motion - Advanced First Person Character Controller