What does it mean to make procedural content generation a part of your game? We can think of lots of games that use procedural content generation as a game mechanic of some kind, but as someone put it at AIIDE this year, we rarely see PCG used in as fundamental a way as physics is used in Angry Birds, for instance. Procedural content generation as a mechanic - what might that look like? This time on The Saturday Paper we look at a game that offers an answer to that question, and the research that went into it.
We're reading PCG-Based Game Design: Creating Endless Web [pdf] by Gillian Smith, Alexei Othenin-Girard, Jim Whitehead and Noah Wardrip-Fruin. The paper describes the development of Endless Web, a platforming game about exploring dreams and nightmares, which lets the player interact and affect a procedural system as part of the core gameplay. You can find more about the game online on its website, including some video trailers (the game itself is hopefully being released very soon). Endless Web is a huge project and I won't even try to condense the whole thing here. Instead, we'll focus on a few neat ideas and try to give you a flavour of what you might be able to find in the papers if you're interested.
Before we go on, let me dust off my games reviewer skills and give you a quick overview of Endless Web as a game. The player takes control of an Eidolon, a small creature who inhabits dreams, and is tasked with rescuing six dreamers who are trapped in nightmares. The game plays like a very traditional platformer: there are blocks to jump on, gaps to jump over, enemies that patrol and some special objects like launch pads or 'stomper' enemies that try to crush the player from above. The main game levels are procedurally generated (with the exceptions being six special nightmare levels, one for each dreamer, which are hand-designed). The twist comes in how the player explores the game world. Each nightmare level can only be reached by exploring the procedural generator's space of levels, and changing the intensity of certain level features. To use an example from the paper:
"...the dreamer having a nightmare about creepy crawlies is trapped at the intersection of the fears of losing control (tier 1), stress (tier 1), and conflict (tier 2)."
The player can change tiers by interacting with special objects that are thematically appropriate. So in order to change the Conflict tier in the game, the player can defeat a special enemy type, which opens a portal with two exits, one which leads to increased Conflict (and thus, more enemies) and another which reduces conflict (for an opposite effect). This means that the player's objective in a standard, non-nightmare level is to identify a change they want to effect on the procedural level generator, and find a means of doing so, altering the levels generated as a direct result of their choices.
That's a pretty unique proposal. As the paper points out, while some games have used procedural generation as a mechanic (such as Inside A Star-Filled Sky) the emphasis has never been on player control of the generation. It's a really curious proposal.
Endless Web depends on Launchpad, a previous research effort by many of the same authors as this paper. Launchpad was originally conceived for rhythm-based level generation, where the pacing of a game would be abstractly defined, and then a level would be generated to fit the pacing structure. The idea here is that the designer can describe the flow of a level, or the feel of playing it, without nailing down what the level physically looks like. The exact level design is left up to a generator. You can read more about Launchpad in this paper here, although I might visit it in a future Saturday Paper, as I like the idea of indirect generation.
Launchpad was extended for Endless Web to include some additional parameters such as an understanding of difficulty in level design. This gives the game many parameters to alter which in turn can be connected to the special objects in the game levels, such as the special enemy type which lets the player raise or lower conflict levels. These changed parameters are expressed as frequencies for the associated components in the level generator - so lowering conflict lowers the frequency of enemies in the next batch of potential levels.
One of the key issues that comes up in the evaluation of Endless Web is how you communicate to the player that something is going on - and perhaps as importantly, that something clever is going on. You never see Endless Web actually generate its levels, so instead the team tried to ensure that the player can detect the effects of their changes between each level. This meant cutting out parameters that were hard to see changes in, and maximising the effects of the ones that remained - the frequency of enemies, for example, is a good indicator to the player that something has changed, while the length of the average jump might be harder for them to spot.
It's a funny thing to consider in some ways, since we're often all too keen to hide procedural content generation away. But as with any game mechanic, the idea behind Endless Web's use of PCG is that the player feels in control, and aware of what each decision means. There's another, related problem here which is that if you're reading this as a game designer, then the chances are you like designing specific experiences for people. With a game that uses PCG as a core concept, what you're really doing is designing a space of possibilities that the player can move about within. This requires some careful thinking, as the paper points out - are there parts of the procedural design space you don't want the player exploring? How predictable do you want your generation to be, or do you want there to be surprises in store from time to time? When PCG is a proper mechanic rather than a blind tool, it requires a different way of thinking.
I opened talking about procedural generation in games, and how we often talk about games which use PCG but we don't often see it as a core mechanic. One of my favourite games ever is Spelunky. Each time you start a new game, it tells you: "The dungeon walls are shifting!" as it generates a fresh set of worlds for you to play through. What I'd love is more games to let the player shift those dungeon walls, and to interact with the game on a whole other level. Remember back when we talked about procedural generators having their own style? Endless Web challenges us to embrace these interesting features of content generation, and to treat PCG not just as a fire-and-forget tool, but as a new system that the player can interact with and have fun with, in the same way Angry Birds lets us play with physics.
Now we just need a few brave game designers up to the task! You've got two months left until Ludum Dare - get brainstorming...
Where To Find More
Gillian Smith is now Assistant Professor at Northeastern University (where this year's AIIDE was held). Alexei has since graduated from UCSC, while Jim and Noah continue doing their sterling work there. Gillian spoke about Endless Web, and related issues in procedural content generation and game design, very excitedly at AIIDE, and I'd recommend her as a first point of contact for discussions about this work. You can find her on Twitter here.
Unity Stealth Analysis Tool now on GitHub!
Last time on The Saturday Paper we took a look at a tool for analysing stealth game levels in Unity. The team have released an early build of their tool on GitHub, so if you're eager to check it out (documentation is coming soon, so I'm told!) then go take a look! It's pretty exciting stuff.