Infinity and Procedural Generation
I was asked on Twitter if I thought that procedural generation sometimes gets a little too obsessed with infinite play space. (He points out that architects are trained to be aware that they can only construct one building.) To which my answer is: yes. Most definitely yes.
Infinity is frequently brought up whenever anyone discusses procedural generation, sometimes to the point that it seems to be the definition. Infinity is bound up in ideas about replayability, open-worlds, and our expectations for what procedural generation can do. But I think that’s a misconception.
Infinity is seductive. Procedural generation is one of the few ways that we can build a practical infinite thing, and many developers have chased that white rabbit. Whether it’s out of a desire for replayability or a search for the transcendent, infinity is something that lures us deeper down the rabbit hole.
Infinity is deceptive. You can use procedural generation to create an infinite amount of content, but the player or the viewer will eventually find the patterns in your generator, After that, their minds collapse your infinite content into a symbol, letting them mentally abstract it away while they go look for other patterns. You can’t get infinite replayability just by generating new content, because replayability is about continued learning.
Infinity is trivial. Worse than an obvious pattern, sometimes the player won’t be able to perceive any patterns at all, and it’ll all be just so much chaotic white noise. The player’s mind dismisses noise quickly, especially if it doesn’t have any bearing on their interactivity. It’s really easy to hook up a noise generator to an output and watch it go, but the amount of effort you put in is unfortunately a reflection of what you’re likely to get out of it.
So I think that deliberately recognizing that, as Chris Welch said, “any one player will only ever see 6 of these” will help you, as a creator of a procedural generator, to focus your efforts on making those six results the most interesting and unique six results that a player will see.
Constraints are one of the most practical artistic principles that I know, and that applies to procedural generation as well. Deliberately defining boundaries to your output introduces order. The big difference between procedural content and human-authored content is that a human creator can afford to chose only the unique results that have meaning and larger associations. But on another level, all procedural generators are authored. You, as the creator of the generator, can tailor the output or push it to extremes.
NaNoGenMo has a goal of producing 50,000 word novels, which it borrows from NaNoWriMo. But the purpose it serves is very different. I thought, at first, that the word count didn’t matter that much, since it’s trivially easy to write 50,000 “meows”, or to run a generator for an indefinite period.
But the uniqueness of NaNoGenMo is precisely that we’re trying to write full-length novels. And to do that, you need to find a way to write make 50,000 interesting words. A subtle but critical difference. It’s why I’m excited by the results of the long-form plot generation experiments from this last November.
Which is not to say that infinity is useless. As I said before, the whole point of Borges “Library of Babel” is to contemplate infinity, and a generator that is deliberately invoking infinity is one of the few ways I know to create a feeling of transcendence and eternal possibility.
Infinity within another, constrained system is also useful. Most of the major Usenet roguelikes only generate a limited number of levels per game. This promotes tactical play. But some, like ADOM and Dungeon Crawl, also include an optional infinite dungeon. In both cases, the infinite dungeon offers possibilities (because you can encounter a wide variety of things that you might not otherwise come across) but also risks. It’s hard to retreat from them, so it’s easy to get in over your head, and thus exploring the infinite depths is balanced with a push-your-luck mechanism. Instead of a hard limit on infinity, or a loose limit of the player’s boredom, they instead use the soft limit of the character’s resources and abilities.
Tomorrow I’ll talk about a procedural generation project that was created to make a single, unchanging output, and how it was crucial to the success of something that you’ve probably heard of.