Why vehicles, projectiles and physics props jitter in UE5 multiplayer (and how to fix it)

2026-11-04 · Tomasz Linke, Adrenaline Games

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.

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

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.

AdrenalineNet — replaces this replication layer for non-Character actors: deltas from the last acknowledged state, a per-tick bandwidth budget and client-side smoothing, without changing your gameplay code (UE 5.8, C++ source). See it here →
Disclosure: I build and sell this plugin.

New plugins and UE5 fixes, once a month

One e-mail a month at most: new releases, updates and practical Unreal Engine articles. No spam, one-click unsubscribe.