[This article was originally printed on February 14, 2011 here.]
Manually creating gaming worlds -- everything from the background to characters, from objects to the sounds they make – takes time. What if there was a process that can take the painstaking manual labor out of programming, while allowing programmers to etch their creative marks in effective code? That’s the basic tenant of procedural content generation (PCG). It’s been around for over thirty years in gaming development.
Rogue, which began development around 1980, had the computer itself generate adventures. Every time a player descended stairs, a random new level would be generated. This procedure of generating dungeons later became known as a new genre: rougelike. Many commercially popular games have used PCG. Diablo maps were a product of PCG. The Diablo and World of Warcraft series drop random loot, which is also PCG. Spore’s music is even from PCG. In short, everything about a game can be done with PCG.
These design tricks offer a wide range of benefits to developers by reducing the programming burden in games beyond programming cost. A single person becomes capable of creating games that now require teams to create. Players can input their unique data, and the game can output something that adapts to the players. Computers can be programmed to have preset or randomized parameters for tweaking and confining the experience.
Dejobaan has opted for PCG to create largely the world of Kick It. Ichiro of the Lambe speaks candidly on the subject:
Tell me about the benefits of making a music game that has some degree of PCG.
We can use huge piles of math to create visuals, whereas normally an individual would have to go in and place everything by hand. That’s really fascinating, and it's a lot of fun besides. The downside is that sometimes it’s easier to "paint" something than to hunt down or suss out a mathematical expression that represents it.
What’s the amount of PCG in Kick It?
Everything in a level is based on some kind of algorithm. If we want to create a level that looks like a city, we think about it from that standpoint.
For example, we built a simple sprawling city, starting with a basic "building" block. Our algorithm takes that and creates buildings in a line next to it, occasionally turning 90 degrees to build branches. Every now and then, it picks another starting point and begins anew. Here's a screenshot.
Hihat SFX and arrow alignment for points, all done with PCG!
What kind of music gamer personality type will like Kick It?
We really want to tie the level into the music, thrilling folks who want a synaesthetic effect between audio and visuals. If there is going to be a point in the song with a cymbal crash, we want something that looks like a cymbal crash. Likewise, with furious bass lines and the like, we want the gameplay and aesthetics to "look heavy."
How exactly does the Genome City work? If someone doesn't ask to replay the level, even with the same genome settings, will they get a different experience?
Levels are deterministic. With the same MP3 file and the same settings, you'll the same level. It's finicky, so if you use a different file of the same song (differing bitrate, etc.), you'll get a slightly different experience.
What about enemies is PCG?
The individual enemy models were created from a graph-based system that one of our interns (Elliot Borenstein) created over the summer. These are not strictly PCG, but the paths the enemies take are procedurally or semi-randomly, such as spiraling or corkscrewing.
TITAN TEST! How many things can you shoot at before you start twitching?
What of the anatomy of a song file is dissected when it's inputted for the level creation?
We listen to the beats per minute (BPM), break it down to beat detection, and can key event off of that at any given time. You can also break the signal down into its component frequencies. Essentially, you see how high or low pitched a song sounds over time via spectral analysis. (Check out this blog post for more on that topic.)
Why should a gamer or developer care to read this?
The interesting thing about PCG as Kick It aims it is that you can feed a song into the game and create a level that hasn’t existed before. This is not a man-made level; you're going to get something that is unique, that is different and essentially created by you and your musical choice.
Sources: Pcg.wikidot.com, Pcgames.fdg2010.org
Check out the previous Dev Diary entry here.