For my online multiplayer project, alongside client-side prediction for actions such as aiming and reloading, I'm using server-side rewind as part of my lag compensation strategy
. For those unfamiliar with the concept, server-side rewind allows players/server to roll back the state of the game to a previous point in time.
This can be useful in a number of scenarios, such as when a player experiences network lag or when there is a bug in the game that needs to be fixed. Essentially, it prevents a player who is lagging not getting a shot fired registered and the recipient of that shot getting away with it.
I have used a double linked list and a while loop to store the data created by the hit boxes I applied to that character mesh and the advantage of this is the data isn't stored for a long time, essentially removing the tail after a stated period of time. The video below shows this with the help of debug boxes.
One of the benefits I've found of using server-side rewind is that it allows for a more seamless gaming experience. By rolling back the state of the game, players can continue playing without experiencing the negative effects of lag or bugs. It will also allow me to fix issues more quickly, as I can easily reproduce the problem by rewinding the game to the point where the issue occurred.