PIE with Network Simulation shows other players jittery on server

I’ve been testing networking in PIE and have network simulation enabled with the worst settings.

I play with 3 players and listen server mode, so 2 other windows open for clients and the PIE window is the server.

The clients see each other move, animate, and perform actions smoothly.

The main window which is the server shows those clients as jittering. I see their movement jitter, some other animations jitter. It’s really surprising because I’d expect the opposite where clients see each other jitter while server is buttery smooth. Is this some kind of PIE issue with network simulation?

I haven’t had a chance to test on a real multiplayer setup where I have 3 computers set up separately, and have just been relying on network simulation so far to test multiplayer.

some jitter on the listen server window under heavy net simulation is expected, since that window renders the remote clients as simulated proxies whose updates arrive late and lossy. the trick is telling normal amounts apart from a real problem.

diagnose first:

run p.NetShowCorrections 1 on the server. frequent yellow correction boxes mean the server keeps disagreeing with the owning client about position, which reads as jitter, and that points at move handling rather than rendering.

check stat net on both sides. at the extreme presets a few percent of transforms simply never arrive on time, and no tuning removes stutter at those settings. retest at something realistic like 100ms and 1 percent loss, that is what players actually experience.

if it is still bad at realistic settings, the usual levers:

NetUpdateFrequency and MinNetUpdateFrequency on the character and its movement component. the defaults are rarely sustained in PIE, where the server also carries editor overhead.

server tick starvation: the PIE listen server runs inside the editor process. check NetServerMaxTickRate is not throttling it, and cap the editor framerate with t.MaxFPS so the server tick stays predictable. a starved server interpolates proxies badly.

if your movement is custom rather than the CharacterMovementComponent, you have to build proxy smoothing yourself, a repnotify transform buffer with interpolation, because CMC’s smoothing only helps clients viewing each other, not the server viewing remote pawns.

if it looks fine at realistic settings and only breaks under the extreme presets, that is fine to ship, those presets exist to stress test, not to tune against.

It’s a fairly standard unreal project, heavily based on Lyra.

I’m wondering if it’s a quirk of the editor and not how things would actually work.
The clients see each other smoothly but everything is delayed like I’d expect.

The server sees the clients with delayed actions, but they also snap around as they move, and their animations aren’t smooth. If this is just how Unreal works and there’s nothing I can do, then I guess that’s that?

To me this seems odd since that’d mean the person hosting would have a bad experience by seeing players with bad connections jittering around while everyone else seems to have a smooth game, even if there’s delay.

OK, I think I have an understanding now.

Listen servers apparently only update characters as they receive packets? Which is a little odd since their velocity overall still seems correct, they just update positions at weird times. But they jump to the correct new position as if they were moving smoothly all along.

To me this is odd since I thought servers just receive inputs and things still have velocity and acceleration.

This also explains animations. Animations update along with movement updates to keep things like root motion in sync. That’s why I see character animation jitter.

@illYay Are you using Chaos Mover? I am having ex same issue, but only on chaos mover (mover epic examples) it does not occurs (on my side) with non-physics mover.

Unfortunately for the chaos mover I could not find solution ATM.

This can happen with PIE network simulation, especially when using a listen server and aggressive packet loss/latency settings. The server is still simulating the clients locally, but the simulated network conditions can affect the replicated movement updates it receives from those client instances.

I wouldn’t assume that the server should always look perfectly smooth in this setup. PIE runs multiple instances in the same process/machine, so its behavior isn’t necessarily representative of three separate machines.

I’d test the same build with separate client machines when possible. Also try reducing the network simulation settings step by step and check whether the jitter changes. If the issue disappears on a real LAN/WAN setup, it’s likely related to the PIE/network simulation environment rather than your replication code.