I don't think people really want a "reverse time" feature. They want to go back and re-watch the same forward event as much as they like.
This means it should be MUCH EASIER than trying to bend the laws of physics and computational computer science.
I propose a feature that simply takes
Snapshots in time and space. A stateful representation of this snapshot doesn't need to a very large file... as it is merely a text file (XML?) of all objects and their properties (position, velocity, etc).
The "rewind" feature merely reloads the snapshot. And no need for the complex physics of running a simulation in reverse time (not even by reversing spin and velocity).
In practice, this can be much better than manually saving simulations, as this feature can a few options configurable by the user:
- auto-snapshot ever X units of time
- keep X snapshots and auto-delete previous
This allows users to auto-pause on collision and then load a snapshot to re-watch.