Make it glitch

One of the biggest sources of disagreement would have to be when the clients pawn collides with moving objects.

The autonomous proxy is always trying to place its self further forward in time than the updates to its position that it receives from the server. It’s not “actually” at the predicted position yet, so any collisions it calculates there could easily be erroneous.

Not a problem when colliding with a wall. The wall will be in the same position when the server thinks the client’s pawn has reached it. If the pawn collides with a moving object however it is almost guaranteed cause disagreement.

Reproducing these errors in the project is pretty simple, but takes a little timing / alt tabbing skill if you’re doing on your own. Just line up the cars on right angles on a collision course, get the server rolling, and then try to collide into it with the client. Adding back some prediction to the simulated proxy makes timing easier too.

Here’s my two examples of disagreements that could occur. Image all cars are rolling forward.
Client vs Server Collision 1
Here the client thinks it’s further forward, close enough to run into the server car. It predicts it will collide. However based on where it actually is, the server will be out of the way by the time it gets there. The client will think it stopped, but on the next update from the server it’ll find it’s self sailing past.

The next example shows how the opposite could happen; the client momentarily thinks it will sail past but gets abruptly blocked in the next server update.
Client vs Server Collision 2

2 Likes

Privacy & Terms