Hey thanks for playing and all the positive feedback!
> How are the spawns of the rings determined? Are the colored rings mostly random?
There are two components to consider: time and position. Let's start with time.
While the game is running there is a timer for each category of ring. So, a pink ring timer, yellow ring timer, etc. They are all set to different intervals. When those intervals end, a number of different rings will spawn accordingly. Rings associated with lower point values are generated more generously, and conversely rings associated with higher point values are more rare. Additionally, the same applies to time values - so lower points -> faster spawn, higher points - > slower spawn. I don't remember the exact numbers but the black rings only spawn once every 5 minutes, and there's exactly one of them per-spawn.
Now for the position component.
What's going on is a silly illusion. We give the appearance of the player falling through space. But the reality is we're actually locking the player's y position to 0 and animating all of the objects past the player. Elements of the level are generated procedurally. In particular, I believe all objects with exception of the planet (rings, asteroids, etc) are instanced in a 500x500x500 cube in front of the player. The tunnel chunks are little more tightly constrained, something like 100x100x100, idr offhand.
Hopefully that answers your questions. Thank you again for playing, and feel free to follow for more creations. This month's OGAM theme is jurassic, and I intend to build a dino-centric 3d platformer.