Are physics settings different in builds vs the editor?

I have a replay system that records and replays user input. The input is recorded in FIXEDUPDATE and is passed through the replay system before use (so that the value used live is always the value that was recorded).

This creates completely deterministic replays. I can run the game in the editor, trigger the replay, and the exact same thing will happen every time. There is only one moving object in the scene.

However, when I generate a PC build of the game, the replay does not reproduce the same outcome - but it DOES always produce the SAME wrong outcome - still deterministic, just not the same as in the editor.

Are there any physics settings I should be looking for that might change when a game is built?


EDIT: Having realised that script execution order might be a factor, I changed all the fixedupdate functions in my object’s components to ‘ForceFixedUpdate()’ and called them in a fixed order from a single component on the vehicle.

This did prove script execution order can cause problems, because the old replays no longer work properly.

However, replays generated in the editor (which work perfectly when replayed in the editor) STILL don’t produce the same outcome in a build.

What else could I be missing?

Be aware that Physics in Unity are not deterministic, and different platforms will likely produce subtle differences that are noticeable in cases like yours. Editor and builds may be considered different platforms in this case.

I also have replays in my project. In order to replay exact sequences in all platforms I record not only the user input, but also the position and rotation of the rigidbody in each FixedUpdate. When playing the replay I make the Rigidbody kinematic and apply both the user input (so additional scripts keep reacting as expected) and the pose via MovePosition and MoveRotation.