TL;DR

An overview of what Procedural generation is not and common misconceptions.

It Isn’t What It Ain’t Not

So we’ve covered what procedural generation is, but what is it not? Procedural generation is one of those phrases that has been around long enough for most gamers to have heard of it… and to misunderstand what it is. I’m just going to cover a few myths about procedural generation here – I expect to keep coming back to edit this post as I bump into more misconceptions.

Procedural Generation Is Random Generation

No! Well, sort of. Random generation implies unpredictability; you ask for some content and you get some random thing back which looks a little like what you asked for. Computers are naturally deterministic and procedural generation is just about running an algorithm to get some content, so it must be deterministic. Procedural content can be completely predictable and can just be about storing things in a more efficient form (don’t send them an entire tree, just send the parameters to feed into a generator to create that exact tree).

Procedural generation can be random if you want it to be. The input parameters to the generator can be randomised and then using those random parameters you go off and generate some content. This is what, for example, Minecraft does with world generation. The entire world generator is totally deterministic and the only randomness in the entire world comes from the seed you can input when you create the level.

Procedural Generation Is All About Replacing Artists

If you were paying attention to the last myth then this one ought to be obvious. If you’re not supplying random parameters to the procedural generation then where are you getting them from? I guess you’re going to need a human to carefully hand tweak the parameters of the generator to achieve the right look (and we could call this person an artist).

In many cases procedural generation is about helping artists do a better job. Why force an artist to hand make a building façade by pasting the same window in 5 times for each of the 10 floors when a procedural generator could just be told Generate a 5×10 façade using this window? If you can free up artists from the drudgery of making art by giving them better tools then it’s only natural they can make better content.

An interesting point to make is that I think this may explain why procedural generation has never yet become mainstream. One year people might talk about a really cool procedural tech to generate cities, the next year artists are using a tool which makes building cities easier and the quality of content goes up (as people expect). By the time procedural generation gets into use it’s just a useful artist tool and not procedural generation any more!

Procedural Generation Is Done On The Client

Again, this one ought to be pretty obvious. It’s fairly rare for games to come with an artist supplied in the box to tweak the values on the client computer while the game is being played. Naturally, this means that if the generator is being hand tweaked then it must be run as part of the production process of the game.

Procedural generation is quite regularly used in major games as part of the content creation pipeline. Games like the Elder Scrolls series, Eve Online and Just Cause have all had their (massive) maps generated by a computer before humans dived in to tweak the world and apply some interesting features.

Procedural Generation Is Hard Work

That all depends on your definition of hard work doesn’t it? Personally I find spending a week or two writing an algorithm and then being supplied with trillions of bits of content easier than spending a week or two hand modelling 10 bits of content. A general rule of thumb that I have is that if I have to do a bit of extra work to make my future life 12 orders of magnitude easier it’s probably worth it ;)

Procedural generation is basically the gift that keeps on giving. If you’re making a small, very focused game, which requires carefully designed things then maybe procedural generation isn’t so useful. For example, using random level generation like X-Com to generate puzzles for portal would probably be completely disastrous. N.b. I totally want to see a portal procedural level generator – that would be awesome if it worked.

Procedural Generation Is For [Levels/Textures/Meshes/Sounds/Music/Stuff] Only And Cannot Be Used For [Levels/Textures/Meshes/Sounds/Music/Stuff]

Procedural generation has been used for Levels, textures, Meshes, Sounds, Music and Other Stuff.

I’m pretty sure Procedural Generation can be applied to almost any area of content generation. Whatever it is that artists are doing there is some drudgery that could be automated for them.

How Does This Apply To Heist?

One of the big features of Heist is procedurally generated cities. Now that we know that procedural generation can be very heavily human directed (an artist tool) or totally automated (pure random generation) where does Heist lie on the scale? Heist lies closer to the human directed end of the scale than you might expect.

Cities are generated with human written scripts which individually “describe” a small feature of the city. Of course, the description can use (seeded) randomness to add a little variation – for example a skyscraper could be generated with anything between 10 and 1000 floors. The important bit is that the skyscraper script would mark a load of areas as floors in a skyscraper and then the system would go and find some scripts which describe a skyscraper floor – the procedural generator doesn’t generate new content, it just pieces together descriptions of little bits of content written by humans to create a large and unique piece of content.