Controlling the physics thread

I want to make a game with a replay feature. To make the game completely deterministic, I need to recreate everything exactly in the replay. That means, that when I want to use physics in my game, I need to somehow call the physics thread manually. It also means that there mustn’t be any random elements in the physics algorithms (I’m not sure if there are).

Can someone tell me how to control the unity physics in the way I described? Or do I need to write my own solution?

1 Answer

1

You can’t do anything to directly control the physics engine. For a replay feature, the best solution would be to record the positions of all of the objects at regular intervals, then interpolate between them during the replay. A google search will show that people have already created tools for this purpose

Weird that this question is closed just because answered -- so community doesn't want better or alternative answers? At any rate, the problem with this answer is that it means you are mixing physics and animations on playback (assuming you want to replay some objects while having others in scene be live/non-replay objects moved by physics). Unity doesn't give you a good way to do this, so having a physics based save + replay might be better in some cases.