Today I’ve experimented with having our physics simulation run with a fixed delta-time instead of going in lockstep with the framerate.
In this video we see Box2D running in 300 steps/s and in 20 steps/s respectivly. When debug-rendering the physics shapes the lower rate or 20 steps/s becomes more evident. The actual gameobject components has their position and rotation interpolated to still get smooth rendering at whatever frame rate the rest of the gamesystems are running in.
Decoupling the physics timestep from the global game timestep lets us be more flexible in using actual frame duration timestep in the rest of the engine, which should work well for most cases that are otherwise hard to cater for using a global fixed timestep (variable refreshrate monitors, phone battery saving modes, missing desktop drivers etc.).
Next up is of course 3D physics, as well as figuring out how collision notification should work with messages if we for example take multiple physics step within a single frame.