It’s been a long few weeks.
Since we first announced High Frontier, we’ve been releasing new versions about once a week. After version 0.05 was released on July 24th, we expected version 0.06 to come out around the end of July. All we had to do was implement rotational dynamics, so we could have realistic spinning (or tumbling) of your colonies in space.This has turned into a much deeper rabbit hole than we had ever expected. We started by studying videos (like this one) of real spinning objects in microgravity, so we knew what we the result should look like. We quickly discovered that Unity’s built-in physics engine does not correctly reproduce the rotation of certain bodies. So we ended up writing our own physics code for that.
Then we hammered out all the formulas for moments of inertia, including several not found in the standard tables, such as cylinders with flattened or inverted endcaps. We knew we’d have to do that, and it wasn’t a big deal (but thanks are due to Adam Glesser for helping us work through the math).
But only then did we realize the true power of the dark side of physics… energy loss. In an ideal system with no energy loss, any cylinder will spin indefinitely around its central axis. The instability we studied and reproduced before only happens when you have three different moments of inertia, and attempt to spin around the middle one (this is known as the Dzhanibekov effect). But all the spinning objects in High Frontier have rotational symmetry, and so two moments of inertia are exactly the same. The Dzhanibekov effect doesn’t come into play (at least, not yet).
What makes something like a cylinder unstable in real life is energy loss. Energy is always lost in a real system — parts flex, fluids slosh or compress, things not nailed down roll around. This drives the system towards its lowest-energy state, which means rotating around the axis with the largest moment of inertia. That’s a fancy way of saying, stuff likes to rotate so as much of the mass is as far away from the spin axis as possible.
So, we scratched our head over how to simulate that (because of course this too is something standard game physics engines don’t bother to model). We finally got it.
So! There are still a few i’s to dot and t’s to cross, but we’ve got just about all the pieces we need now. So, we expect to release 0.06 very soon…
In about a week.