It’s hard to word that in a title. I don’t know if there is a term for it. This is what I mean:
If Player A connects to the server with 20ms latency and Player B connects with 220ms latency, and they’re playing a reasonably fast paced game where Player A will be favored by pure server-side hit detection and Player B will be favored by pure client-side hit detection.
When Player B barely dodges Player A’s attack on his screen, the server may well see the attack hitting and Player B will take damage he believes he avoided.
As my game centers around avoidance, I would like some priority for the client avoiding an attack. Lets say Player B saw the attack miss and the server saw it hit, I would like the server to consider what Player B’s client saw to an extent. A way to measure this would be to say if Player B’s got 220ms latency, I will only consider 150ms of your latency, and between the 150ms of your latency and what I saw, the attack either still hit or did not hit.
I am aware this could be prone to cheating on some level and am just looking for concepts to maximize the player-base with less servers to raise the player count, because a small multiplayer competitive game without a huge player-base has already died before it lived.
I do not have an answer to your question (I too would like to figure out some kind of “hybrid” system or something like that if it’s even possible) but generally speaking you can never really have a “fair” competitive gameplay if we are talking about a 200ms latency difference.
This is where multiple servers come into play… you simply wouldn’t want to play in a server where you have that much latency… this is the only “proper” solution.
But how is the server going to consider what the client saw? if the server is going to have to wait an extra ~200 ms to receive the client data in order to determine if the attack was a miss or not then that would slow things down for everyone.
So one way or the other you would have to cripple the low-latency players.
But hopefully someone has an answer to both of ours. I’m aware it probably isn’t possible but I’m hoping someone will say something along the lines of ‘you can try this instead…’
Valve published an article back in the days how they solved in HL2.
If I remember correctly…
keep snapshots of previous player positions
when player “220ms” shoots at player “20ms” it trackbacks serverside player “20ms” position to where it was ~(100-200ms) ago
player “20ms” will now experience a hit even though he was behind the corner already (This behaviour could be modified to your liking)
There was also something like player “220ms” sends target position to the server along the shoot request and the server compares positions and timestamps… (clients may cheat and fakelag all the time)
Unfortunatly I cannot google it behind the great firewall since vpn is way to slow during daytime…