Do you know how many planets were in the original UQM? No, seriously… do you? If you did, you probably read the hint book from back in the day. But anyone who played could tell you: there were a lot. We accomplished that via procedural generation. While the starmap was laid out by hand, the many planets in the many solar systems were created based on a random seed. Most modern agricultural laws block importing random seeds, but we’re in space now. No one can stop us! Take that, Argentina.
In addition to placing the planets, one of the key uses for procedural generation was in creating the planet artwork. We’re excited to be working with some amazing artists on UQM2, but we don’t think they’d be excited if we asked them to paint 10,000* different planets.
*This is not the actual number of planets in UQM2. Unless it is, but we actually don’t know it yet. That would be pretty funny if I guessed it right.
One of our artists, Damon Czanik, dug up a tool which provided a proof-of-concept for procedural generation of planets. We think we could fit these into the UQM2 universe artistically and technically, and we even found some seeds that made worlds that felt like UQM planet types. You can even go play with the tool, picking from some predefined UQM planet type seeds we like, or just trying your own seeds!
While it was a pretty good proof of concept, we knew there was more work to extend it.
Planting the Seed(s)
Here’s what this tool shows so far:
- It already generates planet surfaces with pretty diverse looks, but it doesn’t make gas giants.
- Each seed always produces the same result, but it isn’t controlled in any way by something like a planet type or other parameterized knobs from our game universe (e.g. atmosphere, temperature, etc.).
- It generates textures which can be used as flat surfaces.
- It generates textures of different sizes, which might be able to support mip-mapping, but otherwise doesn’t have a notion of level-of-detail for that purpose.
- It does not support optional, physical features like craters or rings.
UQM2 Goals
Using this tool as a starting point, we wanted to set some goals for how it could work in UQM2:
- It should be able to generate many varieties of the UQM2 planet types, like the ones we know from UQM such as Emerald Worlds, Treasure Worlds, Gas Giants.
- Each planet should be different, but exactly reproducible and recognizable by type.
- Optional physical features can be present, like impact craters, storms on gas giants, and planetary rings.
- Ideally, we can unwrap the orbital planet into a flat surface to use as a planetside experience.
- Ideally, we could also use the planet being generated in interplanetary and melee views, with level-of-detail techniques to make it look acceptable when rendered at a smaller size.
UQM Planet Types
We have some modern, hand-painted concepts of UQM planet types courtesy of Damon that showcase the kinds of things we’d like to procedurally generate.
Discover Strange New Worlds
While creating hundreds of thousands of different planets is clearly doable, we know it can be better. The team often refers to planets as characters, where you get an evocative experience from meeting someone new, someone familiar that you like (or dread), or want to learn more about them. More than just interesting art, UQM planet types are emotional set-pieces for players to relate to.
One of our big questions is how we can get lots of our unique, fantastically or scientifically inspired planets that have their distinct, UQM character. This is where you come in!
The team has started with this general approach. Do you:
- Have experience working with procedural generation or shaders and want to contribute to solving some of our UQM2 goals?
- Want to make the experience of using this toy more fun in a web browser?
- Know absolutely nothing technical but just want to show off cool-looking planets you were able to make?
If you answered yes to any of those questions, please check out the running tool, our GitHub repo, and join us in Discord if you have ideas! If you have an even better idea than what we’re starting with, we want to know that too.
In the past, we’ve opened up our tools with distributions of Simple and our Melee prototype. They’re essential building blocks of UQM2, but they’ve been released as a way of sharing our output. The planet tool is a big step forward since we’re sharing some of our graphical techniques and able to support community input! Our goal is to collaborate on this, improve it together, and share it with everyone as part of UQM2 and beyond.