Appearance
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
- Confirm the active GameMode uses a PlayerState that implements
IAbilitySystemInterface. - Confirm that PlayerState owns or exposes an
AbilitySystemComponent. - Confirm Motion components can resolve the ASC at runtime.
- Use GameplayEffects for replicated state tags. Use loose tags only for local prediction.
Run a local multiplayer PIE session
- In the Unreal Editor Play menu, set
Number of Playersto2or more. - Set
Net ModetoPlay as Client. - Disable single-process PIE when you need closer-to-real networking behavior.
- Press Play.
- 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=1You 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 VerboseIf tags or attributes do not sync, verify that the relevant GameplayEffects are applied on the server.
Common symptoms
| Symptom | Check |
|---|---|
| Movement does not sync | PlayerState implements IAbilitySystemInterface and actor replication is enabled |
| Tags do not replicate | State is granted by GameplayEffect, not only loose tags |
| Sprint or crouch flickers | Server validation and prediction cleanup agree |
| Camera effects appear on remote clients | Camera effects are gated to locally controlled characters |
| Rubber-banding | Server validation tolerance and movement correction settings |