I’ve long been an advocate for thinking carefully about rotational dynamics in space colony design. For any given object, some spin directions may be inherently unstable, as you can see in this video. In the spacecraft industry, there is a well-known rule of thumb that the desired spin axis must have a moment of inertia at least 1.2 times that of any other axis. However, this rule was largely unknown in the space habitat community, resulting in a lot of designs that wouldn’t work in real life. (This is the insight that led to co-authorship of the Kalpana One paper; the original design had to be substantially revised for stability.)
Now it’s time to apply those same insights to the High Frontier game. A grossly unstable design should wobble, and end up tumbling end-over-end, just as it would in real life. However, when we tried to simulate this using the built-in physics engine in Unity, we ran into trouble. No matter what we did, we couldn’t get a rotating object to tumble. We can knock it off its original axis, sure, but as soon as we stop poking it, it just spins happily around whatever its new axis happens to be.
This led to diving more deeply into the physics, as well as asking for help on Physics StackExchange and the Unity forum. We got a bit of help from the former, and chirping crickets at the latter, but ultimately we ended up writing our own physics code from first principles. We know that angular momentum, in the absence of external forces, is constant. Angular velocity (which is how the object is actually turning) is not constant, because it derives from the current inertia tensor, in world coordinates rather than object coordinates…
OK, that’s getting into gory details that most of you have no reason to care about. To summarize: it appears that the Unity physics engine (which seems to be just wrapping the standard Nvidia Physx library) does not properly simulate rotational dynamics. But our custom code seems to. Check out the demonstration in the video below.
All this has put us behind schedule a bit for version 0.06; we need to incorporate this new physics code into the game itself, and figure out how we’re going to deal with multi-part colonies with rotational bearings. But we’ll get there soon… so it would be a good idea to start thinking about rotational stability now!