As video games become larger and more expansive, the effort to create content increases as well. New levels for your platformer, new lands to explore, new planets to land on - all need to be created.
To offer variety while also reducing design time, software developers often turn to Procedural Generation. For those unfamiliar, Procedural Generation (ProcGen from here on out) typically starts with a random seed number and uses an algorithm to generate the desired content. Different random seeds result in different content.
For example, the levels in Spelunky are generated randomly.
The algorithms to generate this content can get very sophisticated. You can imagine that just placing blocks randomly on the screen won't create a navigable level. You want to make it so there is a solution, be able to control the difficulty, and also make it seem not that generic. It can be tricky to have all this come together well. Spelunky does a particularly good job at it, which is one reason for its rapturous reception and longevity.
If you're interested, there are several guides explaining the nuts and bolts of the algorithm Spelunky uses for level generation. Here's a good one that walks you through the process.
Another computer game that uses ProcGen is No Man's Sky, which contains 18 quintillion possible planets, all procedurally generated. Each planet's terrain, life forms, and more, are all generated algorithmically from a single seed number.
The idea of a seed number is one of the powerful features of ProcGen. It takes advantage of the fact that computers typically generate pseudorandom numbers, not true random numbers. You start with a seed number, and there is an algorithm that generates a "random" sequence from that. The sequence is (mostly) indistinguishable from a true random sequence - but if you start with the same seed again you will get the same sequence.
So in No Man's Sky, if we have the same seed number we will generate the planet. The entire planet is defined, in essence, by that seed.
In the case of No Man's Sky the seed is a 64-bit number - a sequence of 64 ones and zeroes. There are 2-raised-to-the-64th power possible 64 bit numbers, which is - wait for it - 18 quintillion.
In this case ProcGen allows for an unimaginably vast galaxy of worlds, while ensuring that if several players visit the same world they will see the same things.
ProcGen in Tabletop Games
How can ProcGen be implemented in board games? They don't have the benefit of computers, so how can the game systems implement it?
To create guideposts, here are some positive attributes of ProcGen that as designers we may want to capture:
Variability - each play is different
Emergent gameplay - new behavior and challenges arise
Reproducibility - you can try the same challenge I did
Let's start by shuffling a deck of cards. The humble shuffle is a form of ProcGen. Even just a standard deck creates an astonishingly large number of possible combinations and starting positions. It creates emergent gameplay through distributions - Bridge and Poker both remain popular due to the many situations that can be created through the random distributions, situations that were not necessarily anticipated by the designers.
In general, combinatorics as a design technique should not be underestimated. I am working on a design now, and it’s based around controlling a character with a special ability. We designed 36 characters, which gives a lot of variety, but it still felt like it would seem repetitive after a few plays, seeing the same characters multiple times.
One option was to simply design more characters. However, that has the double whammy of both increasing component count (and cost), as well as increasing work for me.
Instead, the lazy designer in me came up with another option: Instead of controlling one character, you control a team of two, and they can both use their special abilities at will. There are now over 1,000 pairings with the same component count - and with minimal extra work required on my part. And frankly the game is a lot more fun because of this mechanic.
I'm not the first to do this of course - many games have. Quirks has you combine three pieces of animals (front, middle rear) to create fun and interesting creatures. You get way more variety than if you just had a stack of Creature cards.
The design trick is making the combinations distinct enough to give the players different challenges. Fighting Giant Spiders in the Sewer needs to feel different than fighting them in the Volcano. Otherwise, you actually have less variety in your game.
An alternative to using shuffled cards is demonstrated in the game Starfall. In this 4x game from the 70's, as stars are discovered you roll on a series of tables to determine the characteristics, and then record the findings on a log sheet.
These tables give the designer a lot of control. You can chain tables, so that certain rolls send you to subtables, and those send you to other subtables, and so on. They are also incredibly compact. The tables shown above just occupy a single cardstock sheet. If you were going to do this as decks of cards, it would require many, many more components. You'd also lose some control over the 'blanks' and result probability distribution.
The downside, of course, is that charts like these are incredibly intimidating for many players and doing a series of die rolls can be tedious (although also exciting, depending on how they are handled. B-17 Queen of the Skies is a great example of making charts work).
These shuffle systems do fall down on the Reproducibility metric. Is there a way to allow multiple games to share the same variable setup?
One way to handle this is to reduce the number of parameters to something manageable. In Dominion, for example, you select a set of 10 types of cards that are used in the game. The number of combinations are vast, but it is easy to let another group know the setup you started with.
Similar, Friedman Friese's ambitious 504 allows you to combine blocks of rules, with 504 possible combinations. You select three out of nine rules modules to include. It is then easy to tell your friends to try out '516' or '873', for example. That number is analogous to a 'seed' for the game.
Duplicate Bridge solved the reproducibility issue through a game component of a sort. In a Duplicate tournament, each team plays through the same deal of cards. Creating multiple decks that have the same precise shuffle would be tedious and error prone at best. Instead, each shuffle is preserved in a 'board':
Each player's hand is inserted into corresponding slot when the cards are dealt for the first time. During the hand, players place their cards in front of them, not in the center. Tricks taken are indicated by the orientation of the card in front of the player. This way at the end of the hand it is easy for each player to gather up their cards and return them to the container, ready to be given to another table and have the exact same shuffle be played again.
Algorithms
While random selection has some of the feel of ProcGen, it doesn't really capture the 'Procedural' part of the phrase. Spelunky, as mentioned, doesn't just put random blocks anywhere. There is some consideration in what makes a level that is fun to play.
Some games do modify shuffles somewhat. Many games will have shuffles divided into piles, and then key cards are inserted at random, but relatively-controlled places in the deck. Airlines, Pandemic, and The Expanse all do this.
Storybook games, like Tales of the Arabian Nights, Forgotten Waters, and Sleeping Gods, can have an if-then algorithmic flavor. Players are asked to make choices, or test against certain stats, to decide how the game progresses. This makes the narrative reflect player options.
However, the paragraphs themselves do not usually combine in random fashion. The sequence is defined.
Jumping back to computers for a second, there is fascinating research being done on procedural narrative generation - specifically crafting a story in response to player actions. Here's a talk given on this topic at GDC a few years ago, and an interview with Rogelio Cardon-Rivera we did on Ludology.
Some tabletop designers have been leaning on technology to handle the algorithmic generation. Keyforge has procedurally generated decks, and in Discover: Lands Unknown a computer determined which components would be placed in each box. In both cases, every deck or game was unique. So while these are ProcGen, they are the exact opposite of reproducible. Although it complicates the manufacturing process, this technology is incredibly intriguing for creating bespoke experiences.
The best attempt at an in-game algorithmic ProcGen system that I am aware of is in Source of the Nile. In the game, players are European explorers that mount expeditions to map out Africa and bring discoveries back home. While the presentation and subject matter are problematic, the ProcGen elements are ingenious.
At the start of the game, most of the board is blank, and you map out the terrain by drawing on it in crayon or dry erase marker.
When you attempt to enter a new hex, you roll a die to check on the terrain. In the picture above you will see a hex with numbers around it (lower left). If the hex adjacent to the hex you are exploring has already been explored, the new hex is the same terrain as that hex. If it is blank, you roll a die on a separate terrain chart to see what it is.
For example. note where the red token is in the lower portion of the map. If you are exploring this hex, on a roll of 3 it will be mountains, and on a 4 or 5 it will be Veldt (the green 'V' symbol). If it's 1, 2, or 6, that points to a blank hex, and you would randomly determine the terrain type.
It would have been easy to just roll a die and have that be terrain the hex, and not worry about what is in adjacent hexes. But this system has a number of big advantages.
It creates blocks of similar terrain, while still allowing for change. It also means that you can explore certain hexes with a reasonable expectation of what they might be. It makes exploration feel more forgiving than just a completely random generator.
Once you determine the terrain, there are similar systems to see if there are rivers in the hex, and other features. Many of these are also dependent on adjacent hexes, or other features in the hex. This gives exploration an organic feel that has not been matched in similar titles.
Conclusion
Hopefully this survey of different ways ProcGen has been implemented has given you some thoughts for your own designs. If you know of other examples, please drop me a line or comment below!
Great article, Geoff! I'm loving the relaunch of GameTek, I had totally missed the original newsletter series.
It was a wonderful surprise to see Prof. Rogelio pop up in this! I'm taking a class on the psychology of games from him this semester. Can't wait to check out the ProcNarrative talk and listen to that ludology episode.