This semester I am taking a class based around the design of game engines, and in that class we recently had a brainstorming session for a game. One of the biggest talking points of that discussion was whether or not we should design the game to use procedurally generated elements, or design everything manually. Inspired by this conversation, today I have decided to talk about procedural generation in games. What is it, why is it used, and what are some of the costs and benefits associated with this style of game design.
Talkin Bout My Generation
For those of you who are unfamiliar with the concept of procedural generation, the general idea is actually quite simple. Most games are built either mostly or entirely by hand, with artists and developers designing every character, location and enemy. However, some games choose a different path. Instead of crafting every element of the game by hand, they create an algorithm that will automatically generate the world of the game. This process is known as procedural generation.
Procedural generation in games has been around for a very long time, first appearing in the late 1970s. Probably the first game to use this method to random generate levels is the game Beneath Apple Manor, which was developed for the Apple II computer in 1978. This game also has the distinction of being the first RPG to be developed for a personal computing device, and I don’t believe that these two facts are unrelated.
This game was able to feature several levels featuring 5 or 10 different rooms each, and it was able to achieve this while running on a device with only 16KB of memory. At a time when most games relied on repeating a handful of pre-made levels, Beneath Apple Manor was able to achieve an unprecedented amount of variety. The key to its success was it’s procedural generation system, which allowed it to produce endless levels while keeping a relatively small file size.
However, although Beneath Apple Manor may have been the first to use this type of procedural world generation, it wasn’t really popularized until the release of the game Rogue on Unix systems in 1980. The release of Rogue kicked off a craze of procedurally generated titles throughout the 1980’s, which was spurred on by the technical limitations of the time. As these technical limitations became less severe, however, procedural generation began to lose popularity in favor of hand-crafted levels.
Recently, however, this style of game development has seen a bit of a resurgence. A new genre of games, called “roguelike-like”, has arisen in the last decade and begun to apply elements of procedural generation to games that don’t fit the traditional mold of Rogue and its many successors. At the same time, other games are taking advantage of procedural generation to produce games of unparalleled size and scale. Modern games that use procedurally generated elements include Minecraft, Terraria, No Man’s Sky, Binding of Isaac, and ARK.
Throughout the years, the popularity of procedural generation of environments has risen and fallen. Although computer storage space is now thousands of times better than it was in the early 1980’s, there are still plenty of reasons to use procedural generation instead of more traditional world-building. Some of the most common reasons for this are:
- Budget and Time constraints
- Building massive game worlds
- Increasing variety and replayability
Let’s quickly go through each of these reasons.
- Budget and Time Constraints
While AAA titles may have tens of millions of dollars to spend lavishly detailing every corner of their massive open worlds, most games simply do not have that same level of resources. This reason is why procedural generation has gotten particularly popular among the indie game development community – it allows solo developers and small teams to create enough content for their games within a smaller budget or time-frame.
This is actually the primary reason why my class and I decided that our game would most likely contain procedurally generated levels – besides having a working budget of basically $0, we also had very little time. There are only a handful of students in this course, and all of us are extremely busy with classes and jobs. Not only that, but we only have 1 semester to work on it, which means that if we had to design all of the environments by hand it would probably end up being a very small game indeed.
- Building Massive Game Worlds
Pop Quiz – what is the largest open world in the history of gaming? If you said The Witcher 3, that is actually not the case. While Witcher does have a massive map spanning over 50 square miles, this pales in comparison to the size of some procedurally generated worlds. While players marveled at the size of the world in Elder Scrolls: Skyrim when it was first released, the size of Skyrim actually pales in comparison to a game in it’s own series that was released 15 years prior – Elder Scrolls: Daggerfall.
Daggerfall’s game world is an astounding 62,000 square miles, which makes it almost as large as the island of Great Britain. Skyrim, on the other hand, is a measly 16 square miles – less than 0.1% of the size. And even Daggerfall cannot compete with the largest game worlds out there. Minecraft’s world may not be truly endless, but it is much larger than the planet earth, and No Man’s Sky’s nearly infinite universe is several times as large as that. If you want to generate truly massive worlds for your players to explore, procedural generation is definitely the way to go.
- Increasing Variety and Replayability
It’s no accident that one of the game mechanics that is most commonly associated with procedural generation is permanent death. While most games allow players to save their progress in case they die, games with permadeath as a mechanic force the player to start the game over from the beginning every time they die. Because of this, these games often use procedurally generated content to ensure that every time the player starts over they are having a unique experience.
However, even games without permanent death as a mechanic can take advantage of this feature. Games that are highly focused on exploration can also benefit greatly from the additional variety created by procedurally generated worlds. After all, if you have already fully explored a world you may not feel drawn to explore it again, but if it changes every time this can help keep the game from feeling stale.
Although procedural design can do a lot of good for certain games, it is not always the right choice. Generating procedural worlds has a number of common issues, the biggest of which is that it can lead to unoriginal or repetitive feeling gameplay. This issue has been raised for a number of different games that used algorithms to generate their worlds.
This is one of the biggest problems that plagued the Elder Scrolls: Daggerfall – even though it had a massive world full of thousands of towns and hundreds of thousands of inhabitants, it was missing that personal touch that would make every location feel unique. Instead, the towns and villagers tended to feel very similar to one another.
It is for this reason that the series moved away from the procedural generation approach and started crafting all of their worlds by hand. While it resulted in significantly smaller worlds – less than 1% the size of Daggerfall – the worlds felt more fleshed out and memorable.
More recently, similar criticism has been leveled against No Man’s Sky. While it boasts the ability to produce literally quadrillions of unique planets in it’s massive universe, most players felt that the planets all ended up feeling very similar to one another, and the actual gameplay became repetitive.
This type of trap is easy to fall into even with other forms of random generation. For example, I recently played through Fallout 4 for the first time, and spent a long time doing quests for the Minutemen. At first I really enjoyed traveling across the Commonwealth and convincing new settlements to join the cause, until I realized that I was going to the same places I had already been.
The game had a system in place to constantly keep pumping out new quests for me, but they were really just the same quests I had already done in slightly different configurations. This ended up turning one of my favorite parts of the game into my least favorite – I would have been far more satisfied if the amount of quests had been finite, but each one was unique.
All in all, procedural generation is an extremely powerful and useful tool for game development, but it can also be easily abused. In the right game, which can truly benefit from the variety granted by these types of systems, procedural generation is an invaluable asset. In the wrong game, however, it can be used as a crutch to simply generate content without regards to quality.
Until Next Time
That is all I have for this week! I hope you enjoyed this article about procedural generation in games! If you did, be sure to check out the rest of the blog and subscribe on Facebook, Twitter, or here on WordPress so you will always know when I post a new article. If you didn't, let me know what I can do better in the comments down below. See you next week!