ID:2458081
 
(See the best response by Nadrew.)
In short: Some games, like Source Engine games and many RTS titles, have the ability to record rounds into a "replay" that can later be played back by the client.
Since this isn't a video recording, but rather a sort of log of events/states, this gives the ability to replay the round from any player's perspective, fast-forward, and other useful things.

I was wondering how feasible this would be to implement into a BYOND game. I think it would be amazingly useful for making videos, debugging, and administration uses.

For a long time I considered it impossible, but something got me thinking. Due to wifi problems I occasionally I may lag out heavily or disconnect for 10ish seconds. And sometimes, when I regain connection, I notice that rather than "jump" to the current state of the game, I see a fast-forwarded replay of the 10ish seconds that I missed. Kind of as if my client was "catching up" to the server rather than skip ahead.
Could this mean that BYOND already uses some sort of "replay buffer" internally as part of its netcode?
Let me know if I'm anywhere near close. Ideas appreciated as well, thanks in advance.
Best response
What you're seeing is your client reacting to delayed server updates as it gets them.

If you want to handle this yourself you'd need to keep track of a list of everything that's been done on the server and your replay would be based on that, using some kind of dummy objects or something like that.

Keeping a list of everything that happens isn't really a big deal, accurately replaying said list and showing the results smoothly would probably be the bigger trial.
I think I get what you mean. Make a log every time an event happens in the server, then cobble together some program that ad-hoc visualizes this mountainheap of raw data.
That would give us a god-like perfect reconstruction, and sounds theoretically already possible, but an utter utter nightmare.

Going back to the delayed server updates, though...
Imagine we used a hacked client that saved to disk a timestamped copy of every server update it received, from connection to disconnection. Then we opened a dummy server that just resends those saved updates in order without doing any calculations itself.
That should give us a rudimentary replay of the round through the hacked client's eyes, right? Sure we wouldn't have any info of things that our client didn't see with its own eyes (which sounds a lot like what Source Engine replays work like, thinking about it), but that would still be amazingly useful and could be smoothly visualized with a regular client. Right?