Storms on Cloud Nine #18:
Propagation
by Scott Holliday
September 5, 2003
Over the last few weeks, I've seen a bunch of references to
computer-generated content. Some of these were here at Skotos, but
even more were from outside concerning other games. Apparently, this
is a hot topic, even outside the RPG genre. The idea that designers
can get the computer to do all the level design for you opens up the
possibilities for huge, practically infinite worlds.
Thinking back, I realize that randomly generated content is not a new
idea at all. At a cursory glance, it may appear that most early
computer-games were static. I'm thinking of the old Atari system that
I started out on. It is true, many games were static. For example,
each level in "Space Invaders" was exactly the same (just faster and
more aggressive). If you were good, you could even time when the
little flying saucer was going to fly out. On the other hand, other
games had the appearance of randomness. In Asteroids, you knew how
many rocks were coming, but you didn't know where. In Pitfall, there
was a huge wilderness to trek across. I know the Atari had a method
for random generation, because it also had card games. However, my
guess is that most of the games instead used simple formulas to
generate content. For instance, in Pitfall, as far as I remember, if
you always took the same path, you would always encounter the same
content. Might be wrong here... it's been a long time... anybody
remember for sure?
At about the same time, if you look outside the genre of computer
games, table-tops were experimenting with randomly generated
content. As an example, the 1st edition D&D Dungeon Master's Guide
(published 1979) included a whole appendix section for randomly
generating dungeons and wildernesses. Of course, since you aren't
limited by the imaginative capabilities of a computer, these were only
intended to give the Game Master a basis for inspiration. It was
expected that the Game Master would fill in the details. Regardless,
I've seen it used on more than one occasion as a substitute for
creativity. And it worked surprisingly well! In fact, at one point,
the DM used the system to randomly generate content on the fly. This
arrangement had an odd beauty to it - because not even the DM knew
what was around the corner.
Going back further, perhaps the earliest example for computers would
be the "Wumpus" game (original 1972). Although the first versions were
just you and the Wumpus, the game quickly evolved to include complex
mazes, poisonous gas, bats, spider-webs and a whole host of other
things to cause you problems. Admittedly, Atari also started in 1972,
but the 2600 didn't hit until 1977. Regardless, we're talking about
things when I was pretty young myself...
Skipping ahead a bit, in 1980, Rogue came out for Unix
computers. In no time, you had ports for every system. Not long
afterwards, variants started appearing - Hack, Moria, Angband. It's
still going strong - although most of the players have moved over to
graphical interfaces. In fact, it would be pretty easy to argue that
modern games such as Diablo2 were extended variants of the Rogue
family. One of the reasons Rogue was so popular (and spawned so many
children) is due to its generation of random content. Each level would
be randomly generated by the computer, complete with rooms, connecting
tunnels, traps, and of course monsters. At the time, this was pretty
novel. In the initial Rogue game, each level would fit on your
screen. I'm guessing it was Moria that opened it up by allowing the
screen to scroll. At one point, I even saw a system that generated
levels so big that you could never reach the edge - probably by
generating more content whenever you got close.
Humm... well, this column seems to have turned into a walk down
history lane. I'm sure I've missed a lot of important steps along the
path - but history has been jumping ahead. I guess I should get to the
point.
From the profusion of randomly generated content, one might assume it
is standard operating procedure. This is both true and false. Take a
look at which games use randomly generated content and which games
don't. Dungeoneering: yes. Exploring the wilderness: yes. Puzzles:
no. Rogue-like games can easily be equated to shuffling and placing
map tiles with dungeon formations. Other styles of game are starting
to use the same idea, for instance platformers. Although the content
is pre-generated to be the same for every user, a computer can quickly
construct huge levels (or huge numbers of levels) based on certain
rules (how far and high a character can jump). But a human generally
has to go back through to write in any puzzles or story elements.
Why? As I noted earlier in
SoC9#7, computers don't have the imagination to make
good puzzles. This is often where someone playing interrogator can
break a Turing test. Asking a computer to create an interesting puzzle
is very similar to asking it to tell a story, make up a joke, or
create a riddle. Of course, it's not impossible, but the time spent
programming a computer to do it could be better spent doing it
yourself. And the result is likely to be substandard, probably a
repetition of other puzzles with slight variations. Now try to program
a computer to make puzzles that also fit the theme of the game you are
writing. Add that the puzzle shouldn't be too tough, but still
challenging. Lastly, add in the requirement that the puzzle should be
fun for the user. Frankly, it'd probably be easier to program it to do
an interpretive dance. Humans are imaginative and creative by
nature. Replacing humans for this sort of task is equivalent to
replicating the human mind. You'd be better off starting from the
other end and trying to build a true AI.
So where does that leave us? My suggestion is to take another
look at the Rogue engine. When it generates a maze, it does so by
mixing and matching smaller elements. Rooms fit on the map. Tunnels
connect rooms. Monsters, traps, and treasure are placed randomly
within the structure. Computers are great at this. The bottom line is
breaking the process down to simple repetitive decisions. You can even
add further consequences quite easily. For instance, if it had been
determined that a wilderness room has a tree, then it might have
fruit. Maybe there will be birds present. If there are birds, there is
a chance that they will be "Piranha Birds." If so, there are likely
skeletons left in nearby rooms. And so on...
Approaching the question of puzzles, the best attack is probably
breaking the problem down to the smallest part the computer can still
understand. For instance, in the Rogue-engine example, if you made a
list of riddles (with answers), the computer could then randomly place
them and decide on rewards. This will work, and will likely pass the
"Rock Test" quite easily. Making it sensible is another question. For
example, something that always made me laugh about Diablo2 was when I
killed a swarm of tiny flying insects and they dropped a suit of
plate-mail as treasure. How did they carry that? Randomization is
great, but you also have to make sure the computer knows all the rules
- and has some common sense to boot.