Simple replicated physics jittering

Here’s a test project, if you have the time for it:

W/S: Increase and decrease speed
Mouse: Mouse look around, so it’s easier to read the values

Video showing the difference with default settings vs tweaking velocity coefficient to 0 (disabling the catchup logic)

Of course the jittering and/or rubberbanding is not apparent to the camera because the camera is rigidly attached to the moving pawn, but it would be visible from “another viewpoint”.

Also, some more food for thought on this statement. I don’t think this should be like that (could be in how UE is solving this, but it shouldn’t).

If we eliminate lag, different tick rates, etc. (which in this case, running on a local computer editor, we are) and you execute the same simulation scaled by delta time, then you should get the exact same results. Again, we are not introducing anything external like the player crashing into another one, or a wall, etc.

What you are saying would be true if you JUST sync the position, and the client needs to slowly interpolate to the next server update position. In order to solve that, you instead sync position AND velocity, and allow the client to run the same simulation, essentially predicting what the next server update will be.

The corrections would only trigger when something happens in the server simulation that the client couldn’t predict, like input from another player, a collision, an impulse changing the velocity, etc.

But for this simple case, I would expect the result to be closer to the second part of the video (coefficient set to 0), but with both positions matching (unless the position not matching has something to do with the frame the debug lines are rendered).

re-run your test without the client changing anything on the sim (setting velocity etc).

Turn on network emulation

I did, the only difference is that time it takes for it to start moving, what am I looking for?

Does the client ever catch up to the server? It shouldn’t.

Hello @xamado I don’t know if you have found a solution for this, however In my case I found out that if the mesh I’m trying to replicate is under anything in the hierarchy of the root component it will make it JITTER LIKE CRAZY. So just move it to be directly under your root component and the replication of physics should work like a charm. If anything, I hope this might help someone else like me.

Thank you!