An Inside Look at the System Behind No Man's Sky, Minecraft, Elite: Dangerous, and more!
What do Minecraft, Elite: Dangerous, No Man's Sky, Diablo I and II, and many other games have in common?
A phrase often heard in the gaming and computer world, but not often very well explained or elaborated on; procedural generation.
You can find loads of games on consoles and PC alike that claim to use this in their game, but what is it? For a lot of us, it feels like procedural generation is a claim made by developers to say that your gaming experience will be different throughout your gameplay, and somehow, magically, the content, loot, or levels of the game consistently change.
What is procedural generation?
There are two simple explanations I found online researching this, that I found quite enjoyable and simple. The first is that, rather than the developers of a game manually inputting content, they do it algorithmically, meaning they don't physically code in every little piece of the game's environment, loot, content, etc.. The second explanation ties into the first to explain it more plainly; essentially the game developers, rather than coding themselves what could take years or more to creat such an elaborate wealth of content, they create an AI to do it for them. (Source)
Essentially, the programmers create an algorithm, give it a set list of commands to obey in order for the creations to fall in line with the desired outcome, and then let it run wild, producing huge amounts of whatever the developers want, be it environments, different types of loot in an RPG, or even audible sound effects.
Why do developers use procedural generation?
There are a number of reasons it's used, probably more than I could name, seeing as I'm not a programmer myself, but I'll give you the core reasons:
Saves Time
Creating an algorithm to write a huge amount of programming for you that follows specific rules and behaviors is much less time-consuming than writing it all manually. To give an example of this, the recently released PC game No Man's Sky offers over 18 quintillion planets (that's 18,000,000,000,000,000,000+, in case you were wondering) for players to explore and fight on. No Man's Sky relies heavily on the procedural generation of planets, moons, and star systems, because if you wanted to create that amount of content by hand, you'd probably need several hundred or several thousand developers, all working several life-times over. And that notion is pretty preposterous, considering the ending product wouldn't fit on a modern-day hard-drive, even if you could pull it off.
Increases Replayability
For any game relying on procedural generation for its maps, dungeons, loot, etc., typically the intent behind it is to create a game in which players can have a new experience every time they play, thus creating replayability. Were they not to use procedural generation, players would have significantly less to experience in the game. For example, players in the game Minecraft can choose to generate an entirely new world every time they play, complete with its own biomes, environmental structures, and randomly generated villages. Games using randomly generated content in this way ensure that players will have undoubtedly different experiences each time they play, if they choose to.
Conserves Space
Relying on procedural generation also can help reduce the game's file size, since for games like No Man's Sky you don't need or want to download the entire 18+ quintillion planet universe onto your hard drive. I'm not quite sure how much data space you'd need for something like that, but I'd assume it's probably close to the equivalent of every hard drive on planet Earth, or more. In other words, your beloved PC or console only holds the information for planets you've actually discovered and been to, rather than the entire universe at once.
What can you create with procedural generation?
A simple answer, would be pretty much anything. You can create game environments and loot as mentioned above, or even images, videos, and sound files. Something really unexpected and cool I found is Aurea Metamorphosis which is a script on a website that uses procedural generation to constantly create unique flowers (how cool is that?). If you click the link attached to the name, you can see for yourself (and try not to be hypnotized, it's pretty mesmerizing). I'll link some pictures below of flowers the site has create for me, just to satisfy any possible curiosity:
That explains a lot actually! I always kinda thought there must be some other way they populate big open world titles! great stuff!
Thanks, I'm glad you found it educational! I had always kind of wondered myself, and I felt a bit bored today, so I was like "hey why not learn something new?" lol. :)
Those are the best days, a day when something feels achieved! :O)
I feel the same way! I love productive days!
Brilliant way to solve the huge world rendering and gameplay :)
It is! It also makes for some unique and fun gaming experiences. :) Thanks for your input!