The Beauty of Procedural Generation

I’ve been working hard on enemy AI / ship combat over the past few weeks. Getting closer to a playable build that I can release out into the world comfortably. But I’ve also been trying, in my spare moments, to finish up creating all of the necessary planets and asteriods for the game. As usual, it’s a bigger job than I could have anticipated!

Wanted to share something interesting with you today. I’ve been creating a planet with lots of sharp features lately, and I was honestly pretty disappointed with how it looked ingame. The features looked great up close, but out in space or in the upper atmosphere, as the landscape regenerated at a lower resolution they just turned into ill-formed blobs. I wasn’t satisfied with how they looked, I knew I would catch flack for how ugly it was, and I was pretty sure that fixing it would require reworking the planet generator, which I would have to delay until after release at the earliest- I hate days like this!

Then I remembered- this landscape is procedural! I can generate it at any detail level I want! A few tweaks later, and look at the kind of detail that just magically appears, in this before and after:



I hope that’s as clear to you as it is to me, but if not- look at the shadows right under the player’s ship. The terrain is much more detailed, and it looks even better in motion. The planet with the sharp features I’m working on (which I’m saving from showing until release) went from looking crappy and blobby to looking ultra-sharp!

This probably isn’t a general solution- it’s brute-force, uses more memory, will slow down the generation process, etc. But the great thing about procedural generation, the thing I nearly forgot today, is that it can be as detailed as you need it to be. However powerful or wimpy your computer is, the right setting is just a slider away. It means Rodina will be able to run on more computers, and that it will look better on computers that can handle it, and I don’t have to do a thing! I love days like this!