Appearance
How to verify Motion multiplayer
Use this guide when Motion works locally and multiplayer verification is necessary. This procedure verifies replicated movement, Gameplay Ability System (GAS) state, and client prediction.
Necessary setup
- Make sure that the active GameMode uses a PlayerState that owns or exposes an Ability System Component (ASC).
IAbilitySystemInterfaceis the preferred method. Motion can also find an ASC component directly. - Make sure that the ASC replicates. Initialize it with the PlayerState or character as owner and the character as avatar.
- Make sure that Motion components find the ASC at runtime.
- Use GameplayEffects for replicated state tags. Treat loose tags as predicted or locally derived state, never replicated truth.
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 more realistic networking behavior is necessary.
- Select Play.
- Move, sprint, crouch, and jump on each client.
Simulate network conditions
Use console commands to add 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 the multiplayer behavior occurs:
bash
showdebug abilitysystem
stat net
p.NetShowCorrections 1
log LogMotionAbilitySystem VerboseIf tags or attributes do not synchronize, make sure that the server applies the applicable GameplayEffects.
Use the GAS overlay while you move a client. Make sure that tags, effects, and attributes are visible during the multiplayer run.
Symptoms
| Symptom | Check |
|---|---|
| Movement does not sync | The ASC is replicated and initialized, 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 |
| A later jump stays held after a very short tap | Make sure that the jump release gets to the server |
| Camera effects appear on remote clients | Camera effects are gated to locally controlled characters |
| Rubber-banding | Server validation tolerance and movement correction settings |