Detailing the Universe

Detailing the Universe

 

Hello, fellow space explorers!

What an exciting week in development it has been! Our journey took us deep into the heart of our procedural Solar System generator, where we’ve been tweaking, adjusting, and implementing new features. Let’s jump right in and take a look at what we’ve been up to.

A System, a Star, and its Orbiters

The focus was all about the generation of our solar systems and their celestial bodies. As you know by now (If you missed our deep dive into realistic solar system generation or how asteroids and wrecks enhance exploration, check them out!), we’ve been working with a procedural approach that starts by generating the star at the core of the system. From there, we determine the number of planets that will orbit this star, including intricate details such as whether these planets are habitable, how many moons they might have, and their position within the solar system.

We’ve introduced a new dynamic to this process: space stations! Now, there’s a chance that instead of moons, a planet might have a space station in its orbit. To add an extra layer of intrigue, these stations can be of many different types, and some are specific to a set of conditions (cough… Gas Giants…cough). How cool is that?

Starstruck: Naming the Celestial Bodies

In an effort to breathe more life into our universe, we implemented a new feature that generates unique names for our stars and planets. We’ve created a system that randomly selects a name and a suffix from two separate (very) large lists.

Sometimes, the roll of the virtual dice determines that the planets in the system should be named after their star, adding a lovely touch of cohesion and reality to our systems. To make things even more interesting, we have Roman numerals and unique descriptors on offer, making each system’s naming truly unique. The universe just got a whole lot more personal!

Under the Hood: Static Dictionaries and Text Parsing

We’ve spent a good deal of time working behind the scenes too, particularly with static classes and dictionaries. One of our goals was to ensure that our dictionaries are only initialized once during runtime, improving efficiency and reducing the risk of bugs.