4 ms·
I believe it's because there are 2 conflicting goals: 1. Authoritative server 2. Client accuracy By 'client accuracy' I mean that was happens on the client ac
by Gunax 5y ago
I believe it's because there are 2 conflicting goals:
1. Authoritative server
2. Client accuracy
By 'client accuracy' I mean that was happens on the client actually occured. Ie. If you shoot a player, he actually got shot.
The conundrum is that these goals conflict. They are like Heisenberg uncertainty: you can have position or momentum, but not both. You can have server-side authority, or you can have client side accuracy, or somewhere in the middle.
Just as an example, most shooters have the goal that 'if you shot him on your screen, it was a hit', even if according to server side knowledge the recipient of the shot had already moved. Otherwise when you're shooting you would have to guess where the player is going to be when you're bullet packets reach the server.
So instead, we let the client decide what a hit was. Hopefully the server has some sanity checking.
I shoot at time t, server receives the info at t+s, reporting that I shot at some trajectory at time t.
But the client can erroneously edit history. What if the client sends t-0.1s instead of t? There is no check the server can do to prevent this... I appear like a client which has 150ms of latency even though I really only have 50.