So I have been spending some time learning about the basic concepts of online multiplayer programming. One that I have been recently thinking about is "lag compensation". I think this process goes by several different names, so I will explain what I mean so we are all on the same page. What I am referring to is the process of "rewinding" the server state to an earlier time to see if a bullet connected, a ball was hit, etc., taking into account what the player was actually seeing when they pressed the button considering things like "lerp" time, etc.
My understanding is that this began as a solution to the problem of many headshots or other pixel-perfect collision detections missing due to latency and delay on entity movements for each client. So my question is, when do you need to actually do this type of lag compensation? Is it a requirement for almost all games to feel like they are playing correctly? Are games that don't specifically require pixel-perfect collisions such as Diablo III or World of Warcraft performing a step such as this? If a game like Zelda: A Link to the Past on the Super Nintendo had online multiplayer, would you imagine it would need to have lag compensation? It doesn't feel to me like 50 - 200ms would have a major impact on a game such as that in most circumstances, but I am not sure if I am missing something.
Thank you!