Chrono time rewinding
By Ward Dehairs, June 1, 2017
I managed to do it!
Along with the features shown in the video, the mechanic allows perfect saving and loading, continues to work from one level to another and is efficient enough in both memory and processing power to work for the final product.
The rewind mechanics works by saving and loading frames extremely quickly and efficiently. The way it is built, it does force a few annoying restrictions on the rest of the game. For example, I will not be able to spawn or delete scene objects on the fly. Everything that has to rewind must be in a level from the beginning. So that means pretty much everything apart from very small special effects and sounds. Also, the density and accuracy of the frames will have to fall off as they're shifted further into the past to save on memory over the entire run of the game. On top of that, I still had to implement frame interpolation to make the rewinding smoother, especially without having to save each and every frame. Still, these problems are manageable and all in all I was very happy with the results so far.
Getting there of course come with a long list of bugs. Here is one of the highlights, an animation bug caused by loading a blank frame.
I got back to polishing everything a few months later, around the time I was meddling with a PhD.
The biggest lacking feature was frame interpolation.
The most difficult part of that was interpolating animation states and particle systems, since these are quite complicated in Unity, but I got it all to work eventually
With the interpolation working nice and smoothly, all that remained was improving the GUI. Now evertyhing is interactable and motion trough the timline is always silky smooth. Here is an example from the game's tutorial, now with sound for the first time: