- Procedural content generation (PCG) is the process to create content with zero or limited human intervention. PCG is done algorithmically. It does not necessarily mean NPC behaviors or game mechanics, but content, which includes levels, maps, terrains, dungeons, puzzles, quests, rules, characters, parameters, and rewards.
- PCG is necessary. Developers don't have the time or money to generate all content, especially in this age with high development costs. Players burn through content way faster than developers can design and implement them.
- Elder Scrolls: Skyrim is a huge success, partly due to some of its PCG nature. It pushes its budget just a bit more.
- Games with PCG include Elite which is a huge game that fits in Commodore 64's memory, Rogue, Diablo, Dwarf Fortress, Far Cry 2, Speed Tree, Civilization IV, and Borderlands.
- However, PCG sucks. It's unreliable, uncontrollable, lacks macrostructure, can produce boring and generic results, is poor with animations, and can't represent style.
- The future of PCG is search, the need to check generated results. Populate with multiple generations and pick the best choices. This is an evolutionary computation. Keep a population of candidates, remove the bad based on a fitness algorithm, and keep repeating until the remaining candidates are good enough.
- Evolutionary computation allows exploration of larger design space and better control. Most importantly, it avoids catastrophic failure where fitness equals zero.
- Julian developed a PCG system that created Starcraft maps. For the fitness functions, he looked for terrains that would create interesting game events such as choke points, paths from one station to another, enough resources in each area, and blockages. However, the generated maps were poorly received by playtesters because Julian believed that asymmetrical maps were more interesting, but hardcore Starcraft players would only play in symmetrical maps.
- When representing a dungeon, you can create a PCG function based on a grid. Getting more abstract, you can simply create the system based on position and direction of walls. Getting yet more abstract, you can generate based on patterns of walls and floor. Even more abstract, you can define just the number of rooms and doors.
- Cameron Brown's Ludi and Yavaloth are procedurally generated board games, not that its in-game mechanics are procedurally generated but the game design was all generated by a computer. The title Yavaloth itself was also procedurally generated.
- Julian created Infinite Super Mario Bros, a PCG take on Super Mario World. The levels were procedurally generated and during playtesting, testers were asked to rate the levels based on fun, frustration, and anxiety. Using this data, the system created better levels in an exhaustive search for optimal parameters.
- Galactic Arms Race is a PCG game where weapons would constantly evolve based on the collective player-base.
- Infinite Tower Defense is a PCG tower defense game where enemies learn player patterns and develop new tactics. Meanwhile, the player gets PCG weapons based on their most commonly used weapons.
Question and Answer
- Improviso is a puppet theater game about acting. It is a multiplayer game which pairs players anonymously online to dramatize a story together. Meanwhile, an AI system collects data from thousands of players and once trained, it can autonomously play the role of one of the characters in the play.
- Can you represent the game rules as a vector such that it simulates a new player who doesn't know how to play and then builds levels that fits the simulated player? For example, in the original Super Mario Bros., the levels slowly teach the player new mechanics as he progresses through. This can be computationally expensive.
- The most memorable PCG stories are the failures. Nobody remembers the successes.
- Can the game "yes, and" the player? For example, the game builds itself around what the player is expecting to do. The game sends a slow walking enemy towards the player, expecting the player to jump. Whatever the player presses to jump, that becomes the jump button for the rest of the game.
- Julian developed a game where you drive around a car in a field of colored blocks. The player can set up specific causes and consequences. For example, whenever the car hits a red block, create two green blocks. While the player is setting up these rules, the game itself is trying to figure out what the goal of the game is and it builds additional rules to reinforce that. In this way, it is yes-anding the player, but it became clear that things get really chaotic very fast. Yes-anding only works when both sides are in agreement with each other.