Deep Dive Into Procedural Planets

Habitable Planet
Habitable Planet

As the commander in XO, you’re responsible for making sure your fleet has enough resources. You’ll need fuel, oxygen, water, and food – and if you want to make repairs or build anything new, you need raw materials too. Part of the game is this never-ending hunt for resources.

While there are space stations, cargo ships, depots and caches that you can get resources from, by far the biggest source of what you’ll need to survive are the planets themselves. Each planet is different; they’re not just window dressing. The planets you choose to visit play a huge role in resupply and resource management.

We wanted the art style of the planets to match the vector look of the spaceships. Early on, we fell in love with planets that were formed purely from hexagonal shapes, but really struggled with getting our hexagonal planets to render at a decent frame rate. A reasonable polygon count might be in the tens of thousands – our first hexagonal clocked in at millions of polygons! So while they looked cool, they brought our computers to a virtual halt.

Rocky Planet
Rocky Planet

The game design required us to create lots of different worlds; from barren, rocky wastelands to earth-like worlds and ringed gas giants. And of course they had to look great – as realistic as possible given our self-imposed limitations with the vector style we’ve chosen.

We looked at the amount of time it was going to take to have artists craft all of the different planets we wanted and it just didn’t make sense. So we decided to create the planets procedurally.

Many elements in XO are procedurally generated, meaning things like the star systems and planets are automatically created by the computer according to mathematically-defined rules. The universe is vast; and procedural generation allows us to give the player the chance to see a lot of that variety and keep each star system unique and interesting. There’s enough variation that no two planets will ever be alike. Visually you’ll see a wide range of colors, different shaped continents, and unique cloud layers on every planet you visit.

Gas Giant
Gas Giant

Dominic Mandy, one of the two developers working on XO, was given the enormous task of making the planets render fast, look beautiful and realistic, and be flexible enough for all of the planet types in the game. After weeks of trial and error, and weeks more of polish, we’re really pleased with the result.

And that result is grounded in astronomy, because we believe science is paramount in a sci-fi game. I’ve always been drawn to hard sci-fi and physical science. As a kid, one of my favorite places to go was the Griffith Observatory. We had a little telescope when I was a child and I can still remember how magical it was to be looking at the surface of the moon, to see the faint rings of Saturn. My father even took me to night classes at the local community college when I was in elementary school. I ate it up. So when NASA launched the Kepler in 2009, I couldn’t wait to see what we’d learn. At the time I’m writing this, there have been over 1,000 exoplanets in more than 400 star systems found – not to mention the thousands of unconfirmed possible candidates. A few may even be habitable! We’re starting to get an idea of what the universe is actually like, and the possibilities of what’s out there is fascinating.

Molten Planet
Molten Planet

After thinking about the Kepler results I thought “why not use this data as the basis for the star systems in XO?” So I collected data on possible climates, sizes, and resources on the exoplanets we’ve already discovered and used that as the basis for the procedural modeling we are doing. Granted, what we know today could be wrong, but we’re working hard to create an experience that feels realistic while staying fun…

For example, we’re placing stars on average 4.2 light years apart, just like they are our local corner of the galaxy. We’ve grouped the different types of planets that we believe exist (not just from our solar system, but from the hundreds that Kepler has discovered). There are many ways to classify planets, but I found Dwarf, Earth sized, Super Earth, Neptune-sized and Jupiter-sized Gas Giants fit the game design goals.

In XO, as in the real universe, a planet’s temperature is determined by how hot their sun is and how far away it orbits. So you might see an Earth-like planet that’s frozen if it’s too far from the sun, or molten if it’s too close. If the planet is too small, it won’t be able to hold an atmosphere and be a rocky Mars-like world.

Frozen Planet
Frozen Planet

We’re still working on how the planets will visually communicate which resources are available. And we’re still trying to find the right balance between providing information to the player while keeping the game visually beautiful.

We don’t have the right solution at the moment. We attempted to use specific hues for each resource, and played with using the level of color saturation to indicate purity. We found that this made the planets look boring. And anyway, Jupiter, Saturn and Neptune are all gas giants made mostly of hydrogen yet they all look radically different. So we threw that idea out.

Right now we’re still tweaking and playing with the procedural planets. We’d really like to hear your feedback on how they look, or any other comments you have for us.  As always, sign up for our mailing list so you don’t miss the big announcements, and follow up on Twitter for the latest updates!

– Brian Jamison
@jmpdrv