Documenting the dark corners of the Unity Engine.
Unity uses the PhysX engine for physics1), and because of this, Unity physics provides Limited Determinism.
If a game executes the exact same set of physics API calls using the exact same frame timing, the engine will be perfectly deterministic, globally.
Recreating the Physics World2) will allow you to replay the exact same behavior a second time.
There are no guarantees for determinism without recreating the physics world or restarting the game session. However, under the same forces and collider setup, most systems in PhysX are deterministic within a game session. This could be called “Local Determinism”: determinism that is local to a single area of the game or set of rigidbodies. For example, you can drop multiple balls and they will usually follow the exact same path of bounces.
Some systems that are known to break local determinism: