| Ok what happens in scenario Player A fires at B at time 0 Player B moves at time 0, causing A to miss Due to lag, player A receives B movement at time 3 So player A fired at a still target, and hit. Player B moved, and dodged. Rollback would apply to player A. Does the hit register or no? If player A receives the rollback, and now witnesses B dodge, but the hit registers anyways, then I don’t see how there can be a server validity check — from the perspective of the server, the state of the game in which A landed the hit never existed My understanding of AAA fps games is they show the hit animation as a prediction, but it’s still up to the server whether the hit registers. Eg, if I lag in overwatch and everyone stands still, nothing I shoot lands (except by accident). When my inputs finally reach the server, reconciled and replayed on my machine, it turns out I was shooting at a wall. |
> If player A receives the rollback, and now witnesses B dodge
Why would they witness the dodge? They would likely see the VFX of the hit and then the target move slightly faster than they should for a frame.
> from the perspective of the server, the state of the game in which A landed the hit never existed
You can validate that player positions and visibility raycasts and such that you're verifying plausibility. You say "the state never happened on the server" but what does that even mean? You're not replicating look rotation with enough fidelity to know that and its not the job of the server to simulate "what actually happened." The point is to make a fun game so its fine to reward the player.