Jumping to a specific time in a replay
-
I've installed the mod called "pause replays at time" but cannot see how to use it? Could someone give me an ELI5 please?
-
@valki said in Jumping to a specific time in a replay:
Replays store information like chess moves - the only way to get the state of the board back is to play all moves
Can't you like move the figures back to their spots? Like rewinding the video tape?
I mean, if there is a list of moves, and each move is described by numbers under time stamps, why can't you just go to that exact move that you want by choosing an appropriate time moment in that replay?
Or is it impossible to just extract those numbers from a desirable time stamp in that replay?
Again, we are talking about a replay, the match that is complete.
-
@fiercelv said in Jumping to a specific time in a replay:
@valki said in Jumping to a specific time in a replay:
Replays store information like chess moves - the only way to get the state of the board back is to play all moves
Can't you like move the figures back to their spots? Like rewinding the video tape?
I mean, if there is a list of moves, and each move is described by numbers under time stamps, why can't you just go to that exact move that you want by choosing an appropriate time moment in that replay?
Or is it impossible to just extract those numbers from a desirable time stamp in that replay?
Again, we are talking about a replay, the match that is complete.
No because the game's simulation isn't made to go backwards and instead of storing player input you'd have to store literally everything that happened and replays would be huge (not to mention the additional resource usage during the game to record all that).
-
@redx said in Jumping to a specific time in a replay:
@fiercelv said in Jumping to a specific time in a replay:
@valki said in Jumping to a specific time in a replay:
Replays store information like chess moves - the only way to get the state of the board back is to play all moves
Can't you like move the figures back to their spots? Like rewinding the video tape?
I mean, if there is a list of moves, and each move is described by numbers under time stamps, why can't you just go to that exact move that you want by choosing an appropriate time moment in that replay?
Or is it impossible to just extract those numbers from a desirable time stamp in that replay?
Again, we are talking about a replay, the match that is complete.
No because the game's simulation isn't made to go backwards and instead of storing player input you'd have to store literally everything that happened and replays would be huge (not to mention the additional resource usage during the game to record all that).
How huge we are talking?
I ask this because in theory there is a solution to the Desynchronization.
And in order to achieve that solution, there must be a way to go back in time in game.
Again, this is only a theory.
Keep in mind that I am not a programmer, but the solution I have in mind looks something like this:
IF the replays were storing everything, and it was easily possible to navigate inside a replay like in a video file, it could be possible to achieve what follows.
Now I do imagine the replays are being recorded in real time, this is the key moment that allows the theoretical solution to work.
After a game is desynched, and all players are still present, and connection between them is reestablished, the game automatically takes them just seconds before the actual desync, and continues after that.
Again, this is only in theory.
-
Imagine this: The replay stream now contains every single user command, so basicaly every user input (click, shortcut), that is not just ui related. That takes a few kilobytes. Assume 6 players with 100 action per minute, that would be 10 actions per second to save. For a 1 hour game that would be 36.000 actions saved.
Now imagine to store the gamestate at a single point in time:
- every building with position, damage, rally point order queue, build queue
- every wreck with it's position and remaining reclaim
- every unit with it's position, rotation, speed, damage, firing cycle, veterancy and control queue
- every projectile with it's position, rotation, speed, damage
- every tree, every decal, every terrain change on the map
- every players identified radar blip
You are probably exceeding the 36.000 information pieces already for a single state of the game.
Now we are talking of a single point in time. Now imagine every tick things are changing, so you need to save the delta to go backward or forward in time. That makes a few thousand, maybe even tens of thousands information pieces per tick! We have multiple ticks per second!This would create replay sizes probably >100mb instead of 50kb-500kb.
-
Take the size of a save file (easily 20mb+, especially late game) and then imagine saving every minute. Replay files would be gigantic and we would not have the infrastructure to share them like we do now. Let alone when AIs are in the picture; a save game can easily be more than a 100mb.
-
@FierceLV what you are describing is basically what planetary annihilation does https://www.forrestthewoods.com/blog/tech_of_planetary_annihilation_chrono_cam/
But this whole discussion is hypothetical. We can't change such a significant portion of how the engine works -
Thank you for the reply.
-
@brutus5000 Though tbf, you would only need to store the changes between the different savestate, right? Don't have to re-record the status and position of every tree with every game-tick, only the ones that were changed from the previous state.
-
But the states changes with every tick. And every unit in game can cause multiple changes to the state.