The recent experimentation with procedural content in games has been epitomized by Spore. In Spore, even the music is a procedure. By using procedural content, the goal is to reduce development time and/or file sizes for game resources such as art, music, terrain, and models. In its simplest form, instead of designing a single work of art, a programmer creates a function that can create a wide variety of art based on small seed values. Instead of hand-crafting an involved map for a level, the designer tries different seed values until a map looks good, then concentrates on the highlights. Instead of storing a large texture file in the game directory, the game can create the texture from the much smaller seed value only when it’s needed. Everyone is a winner.
Of course, procedural content has its flaws. Code that can generate acceptable art requires a partnership between programmers and artists beyond what is required for normal assets. Space saved on the disk may be balanced by longer load times to get into the game. And, foremost, procedural systems can be a slippery slope from assisting design to replacing it. When a system can design usable resources, even entire levels, from a seed value, it is only one extra step to suggest that making that seed value random will result in unlimited replay value, as new levels in the game are essentially unlimited.
Games like Diablo do this well, padding scripted encounters with randomized dungeon levels, but even in those games the experience can become sour: the player grows to feel that the level is a meaningless chore of playing through random data. Done poorly, random procedural generation can actively detract from the game experience: either the available possibilities are strictly curtailed or areas can be randomly unplayable due to unusual placement of assets.
At Icarus, we’re currently using procedural generation for elements that add atmosphere to the world but don’t justify a huge time and file size overhead, such as trees and other plants.
-Stephen Cheney, Virtual Worlds Team