Skip to content

How to test Motion multiplayer

Use this guide when Motion works locally and you need to verify replicated movement, GAS state, and client prediction.

Check the required setup

  1. Confirm the active GameMode uses a PlayerState that implements IAbilitySystemInterface.
  2. Confirm that PlayerState owns or exposes an AbilitySystemComponent.
  3. Confirm Motion components can resolve the ASC at runtime.
  4. Use GameplayEffects for replicated state tags. Use loose tags only for local prediction.

Run a local multiplayer PIE session

  1. In the Unreal Editor Play menu, set Number of Players to 2 or more.
  2. Set Net Mode to Play as Client.
  3. Disable single-process PIE when you need closer-to-real networking behavior.
  4. Press Play.
  5. Move, sprint, crouch, and jump on each client.

Simulate network conditions

Use console commands to introduce latency or packet loss:

bash
NetEmulation.PktLag=100
NetEmulation.PktLoss=2
NetEmulation.PktDup=1

You can also enable Network Emulation in Unreal Editor Preferences.

Inspect replication

Use these commands while testing:

bash
showdebug net
showdebug abilitysystem
stat net
p.NetShowCorrections 1
log LogMotionCore Verbose

If tags or attributes do not sync, verify that the relevant GameplayEffects are applied on the server.

Common symptoms

SymptomCheck
Movement does not syncPlayerState implements IAbilitySystemInterface and actor replication is enabled
Tags do not replicateState is granted by GameplayEffect, not only loose tags
Sprint or crouch flickersServer validation and prediction cleanup agree
Camera effects appear on remote clientsCamera effects are gated to locally controlled characters
Rubber-bandingServer validation tolerance and movement correction settings

Motion - Advanced First Person Character Controller