Why are computer/game physics engines often non-deterministic?
<p>Developing with various game physics engines over the years, I've noticed that on the same machine I observe widely different results in physics simulations between runs. Most recently, the <strong>Unity</strong> engine does this, even though physics are calculated at set intervals of time (<code>FixedUpdate</code>) -- as far as I can determine it should be completely independent of frame-rate.</p>

<p>I've asked this question on game forums before, and was told it was due to chaotic motion: see double pendulum. But, even the double pendulum is deterministic if the starting conditions are exactly controlled, right? On the same machine, shouldn't floating point math behave the same way?</p>

<p>I understand that there are problems with floating point math accuracy, but I understand those problems (as outlined <a href="https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems" rel="noreferrer">here</a>) to not be problems on the <em>same hardware</em> -- isn't floating point inaccuracy still deterministic? What am I missing?</p>

<p><strong>tl;dr</strong>: If running a simulation on the same machine, using the same floating point math(?), shouldn't the simulation be deterministic?</p>

<p>Thank you very much for your time.</p>