Why vehicles, projectiles and physics props jitter in UE5 multiplayer (and how to fix it)
You test your multiplayer build, the characters move smoothly, and then a car drives past and stutters. A grenade skips across the screen. A crate someone kicked jumps half a metre sideways. Testers report "lag" although ping is fine. This is one of the most common UE5 multiplayer complaints, and it has a specific cause.
Characters get special treatment. Everything else doesn't.
UCharacterMovementComponent predicts movement on the owning client and smooths it on every other client. That code is mature, and it is why Characters look fine even on a mediocre connection.
Every other moving actor – vehicles that are not Characters, projectiles, physics props, doors, platforms, AI pawns without a movement component – goes through plain movement replication: the server sends a new position, the client applies it. When a packet is lost or arrives late, the actor sits still and then jumps to the next position it hears about. On a connection with a few percent of packet loss, that is a visible teleport.
Step 1: reproduce it reliably
You can't fix what you only see on a tester's Wi-Fi. In the editor, open Editor Preferences → Level Editor → Play → Multiplayer Options, enable Network Emulation and pick a bad profile (or set packet loss and latency yourself). Play with two clients. Now the jitter happens on your machine, every time.
Also watch bandwidth while you're there: stat net in the console gives a quick view, and Unreal Insights with the networking trace channel shows which actors and properties cost the most.
Step 2: check update rates
Each replicated actor has Net Update Frequency and Min Net Update Frequency (Replication section in the Details panel). A fast vehicle replicated a few times per second will always look choppy, whatever else you do. Raise the frequency for fast, important actors and lower it for things that barely move. That alone often fixes "it looks laggy" for the most visible actors – at the cost of bandwidth.
Step 3: stop sending precision you don't need
Under Replication → Replicated Movement you can set the quantization level for location, velocity and rotation. Most props don't need sub-centimetre positions, and a crate that moved one centimetre still costs a full position update. Lower precision for things the player won't notice, keep it for things they will. Bandwidth is server bills, and on dedicated servers server bills are monthly.
Step 4: smooth on the client
This is the part that actually removes the teleport. Instead of snapping to each new server position, the client should play updates back through a small buffer and interpolate between them, so a missing packet becomes a brief slowdown instead of a jump.
- Projectiles:
UProjectileMovementComponentcan interpolate a visual component on clients (look for Interp Movement andSetInterpolatedComponent). Keep collision on the root, interpolate the mesh. - Physics props: recent UE5 versions expose a Physics Replication Mode for simulated actors. Test the predictive interpolation option on your own scenes before shipping – results depend on how your physics is set up.
- Vehicles and custom pawns: separate the replicated transform from the rendered one. Replicate the authoritative state, and let the visible mesh move towards it with interpolation sized to the measured jitter, not a fixed constant.
Step 5: decide who gets the bandwidth
Stock replication treats all relevant actors roughly the same way. What the player is looking at matters more than a prop behind a wall. Priorities (Net Priority), relevancy distances and dormancy for actors that rarely change all help spend the budget where it shows.
What not to do
- Don't try to replace Character movement with your own system to fix vehicles. CMC is not the problem here.
- Don't "fix" jitter with a huge interpolation delay. Everything will be smooth and half a second behind.
- Don't tune on a perfect LAN. Always test with emulated packet loss.
Summary
Characters look fine because CharacterMovementComponent predicts and smooths them. Everything else needs the same treatment from you: reproduce with network emulation, raise update rates where it matters, cut precision where it doesn't, interpolate on the client and spend bandwidth on what the player can see.
Disclosure: I build and sell this plugin.