Entropy said:Honestly, are there cases where 32-bit floats would cause unnatural behaviour in a games setting?
Entropy
Not entirely certain...but I do know that the most noticeable problem with using 32-bit floats would be with collision detection and deflections.
Even if the path is parabolic, all trajectories in-game are generally iterative, since you need the object's position every frame. It is also almost always possible to center mathematical errors about zero that are resultant from the iterative method (iterative methods are only 100% accurate if the time step is zero...but since it has to be nonzero for realistic calculations, there will usually be errors....). I'm not certain it is possible to center precision errors about zero. I'm reasonly sure that such errors are always additive, meaning that if you do 100 iterations, you'll get twice the error of 50 iterations. Centered errors drop off much more quickly, and I'm pretty sure that they go up with the square root of the number of iterations. Thus, 100 iterations will have twice the error of 25 iterations with centered errors.
As a side note, it would be really nice if 3D hardware started working to center the errors about zero (errors both add and subtract, with equal probability).
Of course, since I haven't actually done game engine design, I can't be absolutely certain whether or not 32-bit is enough. I'm just going by my experience with rather simple physics simulations I've done in classes so far. One thing I am pretty sure of, though, is that the higher your framerate, the higher-precision physics calculations you'd better be using.