Mastodon Icon GitHub Icon LinkedIn Icon RSS Icon

Procedural Generation in the Post No Man's Sky Era

Header image for Procedural Generation in the Post No Man's Sky Era

I think the time is ready to talk about Procedural Contents Generation (PCG) in the post No Man’s Sky era. I’m talking about “era” for a good reason: No Man’s Sky huge failure will definitely mark an era in the history of PCG, and not for a good reason. Players’ perception on PCG has been severely hurt by how badly NMS delivered its contents. Probably, this will be the end of PCG as a marketing buzz-word.

But perhaps, this will be for the best. Without the hype around PCG we can start reconsidering PCG for what it really is. However, we need to be sure to do not make the same mistakes again.

What we did wrong

Us, as a community of developers and PCG researcher, we did (or we allowed) several mistakes. Before NMS, PCG was very overused marketing term. “In this game you can explore a gazillion different levels!”, “you can visit thousands millions of new world”. We all heard those phrases in the advertising material of every PCG-powered games.

This is what I said in more innocent times.

For people like me, deeply invested in PCG for passion and research, it is clear the real meaning of those phrases. But for the average player they build totally unrealistic expectations. When I read that a game offers 1000000 different worlds, I know that this means “10 variations for 6 different parameters, most of which are similar to each other or partly broken”. However, for the average player, this means exactly 1000000 different worlds! It is not surprising that the player’s expectations are never met!

The “Stool Threshold”

The problem here is about the meaning of the world “different”. Even if, technically, 10 variations for 6 parameters are technically different from each other they are not “different” in the human brain. Without entering in the realm of heavy math and philosophy, we can simply say that two things are “Real Different” from each other if and only if their difference is greater than the stool threshold.

But what is this Stool Threshold? I will try to explain it with an example. Imagine you have an algorithm to procedurally generate different four-legged furniture. In this algorithm we can randomize three parameters, the two sizes of the rectangular plane and the length of the four legs. As you can imagine, we can generate a lot of tables, however, if the legs are tall enough and the plane is small enough, we stop having a table and we have a stool instead. Well, the Stool Threshold is exactly the blurry line that separates the stools from the tables.

The subtle difference between a table and a stool.
Figure 1. The subtle difference between a table and a stool.

As you can see, this is not a formal definition. But it can give us the idea of what “noticeably different” means. It is not based only on how the table/stool looks like, but this should take into account also its purpose (that is, we use a table in a completely different way than a stool). So, even if we technically have thousands of different furniture, in the end, we are offering to the players just a bunch of similar tables and stools. That’s exactly why people get hyped and bored by PCG-centered games: you promise thousands when you are offering just 2.

The Future

Now that this bubble exploded, probably people will be more aware of this issue and PCG will stop to be proposed as the core mechanic of a game. Hopefully, this means that we (developers and researchers) can start again focusing on what PCG is and what are its limits and future instead of hyping ourselves and the others. To do that, we need to stop committing the same mistakes over and over again. Therefore, here it is a small list of rules we should try to follow from now on.

  1. Stop using PCG to replace actual game-play! PCG is the palette, it is not the real painting. If the game-play is based exclusively on watching PCG at work, you are in a very dangerous place.
  2. Use the “Stool Threshold”. When you check your PCG elements, use the “stool threshold” not the plain cold combinatorial value. How many Really Different dungeons can your game generates? How many Really Different weapons? And I mean “meaningfully different” from each other. And if you do not get exciting numbers, do not worry! Have you ever seen a Diablo player saying “I play Diablo because it has thousands of different weapons!” No! Because we use PCG to support the game-play, not the other way around. If instead, you think that this is not good enough… well. Then probably you have to add game-play elements because you are dangerously near the point 1.
  3. Finally, aim to the meaningful, not to the different. PCG is not always based on generating billions of different things. Instead of generating vibrant worlds that then will be static for the whole duration of the game-play experience, use PCG to follow the player during the game, providing dynamism and changing the world in such a way the player can feel an emotive attachment. An example I love is how in Dwarf Fortress the dwarfs can use earlier events lived by the player to craft artifacts, and books. A jar inscribed with the events in which your beloved dwarf almost killed all your expedition is much much more interesting than a stunning but completely random and abstract jar.


I hope this can give the PCG community some insight on the mistakes and misconception developers have when we they talk about PCG. One day there will be technical solutions to Real Different PCG worlds. But until then, we should watch out how we talk about PCG.

comments powered by Disqus