Scrolling back to a position late toward the game requires the JS runtime to re-evaluate the entire game from the beginning until that time, which can take several seconds.
In order to speed things up, the game should create a snapshot of the current game state at every minute and use that as a starting point when the timestamp changes so it never needs to evaluate more than 60 seconds worth of events at a time.
Scrolling back to a position late toward the game requires the JS runtime to re-evaluate the entire game from the beginning until that time, which can take several seconds.
In order to speed things up, the game should create a snapshot of the current game state at every minute and use that as a starting point when the timestamp changes so it never needs to evaluate more than 60 seconds worth of events at a time.