Procedural generation

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Procedural generation is a widely used term in the production of media; it refers to content generated algorithmically rather than manually. Often, this means creating content on the fly rather than prior to distribution. This is often related to computer graphics applications and video game level design.

Overview[edit]

The term procedural refers to the process that computes a particular function. Fractals, an example of procedural generation,[1] dramatically express this concept, around which a whole body of mathematics—fractal geometry—has evolved. Commonplace procedural content includes textures and meshes. Sound is often procedurally generated as well and has applications in both speech synthesis as well as music. It has been used to create compositions in various genres of electronic music by artists such as Brian Eno who popularized the term "generative music".[2]

While software developers have applied procedural generation techniques for years, few products have employed this approach extensively. Procedurally generated elements have appeared in earlier video games: The Elder Scrolls II: Daggerfall takes place on a mostly procedurally generated world, giving a world roughly twice the actual size of the British Isles. Soldier of Fortune from Raven Software uses simple routines to detail enemy models, while its sequel featured a randomly-generated level mode. Avalanche Studios employed procedural generation to create a large and varied group of tropical islands in great detail for Just Cause. See also "No Man's Sky," a game being developed by games studio Hello Games which is all based upon Procedurally generated elements.

The modern demoscene uses procedural generation to package a great deal of audiovisual content into relatively small programs. Farbrausch is a team famous for such achievements, although many similar techniques were already implemented by The Black Lotus in the 1990s.

In recent years, there has been an increasing interest in procedural content generation within the academic game research community, especially among researchers interested in applying artificial intelligence methods to the problems of PCG. New methods and applications are presented annually in conferences such as the IEEE Conference on Computational Intelligence and Games and Artificial Intelligence and Interactive Digital Entertainment. In particular, progress has been made in using evolutionary computation and related techniques to generate content such as levels and game rules, an approach called search-based procedural content generation (see [Search-based procedural content generation: a taxonomy and survey [1]] for more information). In addition, the Experience-driven Procedural Content Generation framework couples player experience models and search for the generation of personalised content for the player.

Contemporary application[edit]

Video games[edit]

RoboBlitz used procedurally generated textures in order to reduce the file size of the game

The earliest computer games were severely limited by memory constraints. This forced content, such as maps, to be generated algorithmically on the fly: there simply wasn't enough space to store a large amount of pre-made levels and artwork. Pseudorandom number generators were often used with predefined seed values in order to create very large game worlds that appeared premade. For example, The Sentinel supposedly had 10,000 different levels stored in only 48 and 64 kilobytes. An extreme case was Elite, which was originally planned to contain a total of 248 (approximately 282 trillion) galaxies with 256 solar systems each. The publisher, however, was afraid that such a gigantic universe would cause disbelief in players, and eight of these galaxies were chosen for the final version.[3] Other notable early examples include the 1985 game Rescue on Fractalus that used fractals to procedurally create in real time the craggy mountains of an alien planet and River Raid, the 1982 Activision game that used a pseudorandom number sequence generated by a linear feedback shift register in order to generate a scrolling maze of obstacles.

Today, most games include thousands of times as much data in terms of memory as algorithmic mechanics. For example, all of the buildings in the large game worlds of the Grand Theft Auto games have been individually designed and placed by artists. In a typical modern video game, game content such as textures and character and environment models are created by artists beforehand, then rendered in the game engine. As the technical capabilities of computers and video game consoles increases, the amount of work required by artists also greatly increases. First, gaming PCs, previous-generation game consoles like the Xbox 360 and PlayStation 3, and current-generation game consoles such as the Wii U, PlayStation 4, and Xbox One are capable of rendering scenes containing many very detailed objects with high-resolution textures in high-definition. This means that artists must invest a great deal more time in creating a single character, vehicle, building, or texture, since players will tend to expect ever-increasingly detailed environments.

Furthermore, the number of unique objects displayed in a video game is increasing. In addition to highly detailed models, players expect a variety of models that appear substantially different from one another. In older games, a single character or object model might have been used over and over again throughout a game. With the increased visual fidelity of modern games, however, it is very jarring (and threatens the suspension of disbelief) to see many copies of a single object, while the real world contains far more variety. Again, artists would be required to complete exponentially more work in order to create many different varieties of a particular object. The need to hire larger art staffs is one of the reasons for the rapid increase in game development costs.

Some initial approaches to procedural synthesis attempted to solve these problems by shifting the burden of content generation from the artists to programmers who can create code which automatically generates different meshes according to input parameters. Although sometimes this still happens, what has been recognized is that applying a purely procedural model is often hard at best, requiring huge amounts of time to evolve into a functional, usable and realistic-looking method. Instead of writing a procedure that completely builds content procedurally, it has been proven to be much cheaper and more effective to rely on artist created content for some details. For example, SpeedTree is middleware used to generate a large variety of trees procedurally, yet its leaf textures can be fetched from regular files, often representing digitally acquired real foliage. Other effective methods to generate hybrid content are to procedurally merge different pre-made assets or to procedurally apply some distortions to them.

Supposing, however, a single algorithm can be envisioned to generate a realistic-looking tree, the algorithm could be called to generate random trees, thus filling a whole forest at runtime, instead of storing all the vertices required by the various models. This would save storage media space and reduce the burden on artists, while providing a similar level of immersion to the player. The same method would require far more processing power. Since CPUs are constantly increasing in speed, however, the latter is becoming less of a hurdle.

A different problem is that it is not easy to develop a good algorithm for a single tree, let alone for a variety of species (compare sumac, birch, maple). An additional caveat is that assembling a realistic-looking forest could not be done by simply assembling trees because in the real world there are interactions between the various trees which can dramatically change their appearance and distribution.

In 2004, a PC first-person shooter called .kkrieger was released that made heavy use of procedural synthesis: while quite short and very simple, the advanced video effects were packed into just 96 Kilobytes. In contrast, many modern games have to be released on DVDs, often exceeding 2 gigabytes in size, more than 20,000 times larger. Naked Sky's RoboBlitz used procedural generation to maximize content in a less than 50MB downloadable file for Xbox Live Arcade. Will Wright's Spore also makes use of procedural synthesis.

In 2008, Valve Software released Left 4 Dead, a first-person shooter based on the Source engine that utilized procedural generation as a major game mechanic. The game featured a built-in artificial intelligence structure, dubbed the "Director," which analyzed player statistics and game states on the fly to provide dynamic experiences on each and every playthrough. Based on different player variables, such as remaining health, ammo, and number of players, the A.I. Director could potentially create or remove enemies and items so that any given match maintained an exciting and breakneck pace. Left 4 Dead 2, released in November 2009, expanded on this concept, introducing even more advanced mechanics to the A.I. Director, such as the ability to generate new paths for players to follow according to their individual statuses.

One indie game that makes extensive use of procedural generation is Minecraft. In the game the initial state of the world is mostly random (with guidelines in order to generate Earth-like terrain), and new areas are generated whenever the player moves towards the edges of the world. This has the benefit that every time a new game is made, the world is completely different and will need a different method to be successful, adding replay value.

Another indie game that relies heavily on procedural generation is Dwarf Fortress. Before the player starts a game a whole fantasy world is generated, complete with its terrain, history, notable characters, and monsters.

Film[edit]

As in video games, procedural generation is often used in film to rapidly create visually interesting and accurate spaces. This comes in a wide variety of applications.

One application is known as an "imperfect factory," where artists can rapidly generate a large number of similar objects. This accounts for the fact that, in real life, no two objects are ever exactly alike. For instance, an artist could model a product for a grocery store shelf, and then create an imperfect factory that would generate a large number of similar objects to populate the shelf.

Noise is extremely important to procedural workflow in film, the most prolific of which is Perlin noise. Noise refers to an algorithm that generates a patterned sequence of pseudorandom numbers.

Software examples[edit]

Middleware[edit]

  • Acropora, a procedural 3D modeling software utilizing voxels to create organic objects and terrain.
  • Art of Illusion, an open source and free 3D modeler, has an internal node-based procedural texture editor.
  • CityEngine, a procedural 3D modeling software, specialized in city modeling.
  • Filter Forge, an Adobe Photoshop plugin for designing procedural textures using node-based editing.
  • Grome, popular terrain and outdoor scenes modeler for games and simulation software.
  • Houdini, a procedural 3D animation package. A free version of the software is available.
  • Softimage, a 3D computer graphics application that allows node-based procedural creation and deformation of geometry.
  • SpeedTree, a middleware product for procedurally generating trees.
  • Terragen, a landscape generation software. Terragen 2 permits procedural generation of an entire world.
  • World Machine, a powerful node-based procedurally generated terrain software with a plugin system to write new, complex nodes. Exports to Terragen, among other formats, for rendering, as well as having internal texture generation tools.

Games with procedural levels[edit]

Arcade games[edit]

  • The Sentinel (1986) - Used procedural generation to create 10,000 unique levels.
  • Darwinia (2005) - Has procedural landscapes that allowed for greatly reduced game development time.[citation needed]

Space simulations with procedural worlds and universes[edit]

Racing games[edit]

  • Fuel (2009) - Generates an open world through procedural techniques[6]
  • Gran Turismo 5 (2010) - Features randomly generated rally stages
  • GRID 2 (2013) - Features a system dubbed "LiveRoutes" that dynamically changes the track by changing the corner layout on a given circuit lap-by-lap.

Role-playing games[edit]

  • Cube World - Often compared to Minecraft for procedurally generated voxel worlds explored by players, containing randomly generated dungeons, including underground caverns and over-world castles, as well as separate biomes such as grasslands, snowlands, deserts, and oceans.[7]
  • Captive (1990) - Generates (theoretically up to 65,535) game levels procedurally[8]
  • Virtual Hydlide (1995)
  • Shin Megami Tensei: Persona 3 (2006) - Features procedurally generated dungeons.
  • The Elder Scrolls II: Daggerfall (1996)
  • Diablo (1998) and Diablo II (2000) - Both use procedural generation for level design. [9]
  • Torchlight - A Diablo clone differing mostly by art style and feel.
  • DynGen Hunter - A mobile RPG with a procedurally generated, persistent world
  • Dwarf Fortress - Procedurally generates a large game world, including civilization structures, a large world history, interactive geography including erosion and magma flows, ecosystems which react with each other and the game world. The process of initially generating the world can take up to half an hour even on a modern PC, and is then stored in text files reaching over 100MB to be reloaded whenever the game is played.
  • Dark Cloud and Dark Cloud 2 - Both generate game levels procedurally.
  • Hellgate: London (2007)
  • The Disgaea series of games use procedural level generation for the "Item World".
  • Realm of the Mad God
  • Path of Exile
  • Nearly all roguelikes use this technique.

Strategy games[edit]

  • Majesty:The Fantasy Kingdom Sim (2000) - Uses procedural generation for all levels and scenarios.
  • Seven Kingdoms (1997) - Uses procedural generation for levels.[citation needed]
  • Xconq, an open source strategy game and game engine.
  • Frozen Synapse - Levels in single player are mostly randomly generated, with bits and pieces that are constant in every generation. Multiplayer maps are randomly generated. Skirmish maps are randomly generated, and allow the player to change the algorithm used.
  • Atom Zombie Smasher - Levels are generated randomly.
  • Freeciv - Uses pre-game procedural generation for maps.

Third-person shooters[edit]

Sandbox games[edit]

  • Subversion (currently suspended) - Uses procedural generation to create cities on a given terrain.
  • Minecraft - The game world is procedurally generated as the player explores it, with the full size possible stretching out to be nearly eight times the surface area of the Earth before running into technical limits.[10]
  • Sir, You Are Being Hunted - As of August 22nd 2013, the game currently has three biomes: rural, mountain, and fens.
  • Starbound - The game's procedural generation will allow players to explore over four hundred quadrillion unique planets, as well as find procedurally generated weapons and armor.[11]
  • Terraria - Worlds are procedurally generated, so that each world is different from another one.

Almost entirely procedural games[edit]

Games with miscellaneous procedural effects[edit]

  • ToeJam & Earl (1991) - The random levels were procedurally generated.
  • The Elder Scrolls III: Morrowind (2002) - Water effects are generated on the fly with procedural animation by the technique demonstrated in NVIDIA's "Water Interaction" demo.[12]
  • RoboBlitz (2006) for XBox360 live arcade and PC
  • Spore (2008)
  • Left 4 Dead (2008) - Certain events, item locations, and number of enemies are procedurally generated according to player statistics.
  • Left 4 Dead 2 (2009) - Certain areas of maps are randomly generated and weather effects are dynamically altered based on current situation.
  • Borderlands (2009) - The weapons, items and some levels are procedurally generated based on individual players' current level.
  • Galactic Arms Race (2010) - Evolves unique particle system weapons based on past player choices using a custom version of the NEAT evolutionary algorithm.[13][14]
  • Terraria (2011) - Terraria procedurally generates a 2D landscape for the player to explore.
  • Black Mesa (2012) - A common use of procedural generation in video games is to make a few basic character models, then run them through procedural generation software to make diverse character models, thus enabling every character to have his, her, or its own model without the development team having to expend too many resources. An example of a game that does this is the Half-Life 1 total conversion modification Black Mesa, which has a built-in "Face Creation System" exclusively for that purpose.

See also[edit]

References[edit]

  1. ^ "How does one get started with procedural generation?". stack overflow. 
  2. ^ Brian Eno (June 8, 1996). "A talk delivered in San Francisco, June 8, 1996". inmotion magazine. Retrieved 2008-11-07. 
  3. ^ Francis Spufford (October 18, 2003). "Masters of their universe". Guardian. 
  4. ^ Ian Bell's Text Elite Page
  5. ^ The Frontier Galaxy
  6. ^ Jim Rossignol (February 24, 2009). "Interview: Codies on FUEL". rockpapershotgun.com. Retrieved 2010-03-06. 
  7. ^ Hernandez, Patricia (July 18, 2013). "I Can't Stop Playing Cube World". Kotaku. Retrieved July 19, 2013
  8. ^ http://captive.atari.org/Technical/MapGen/Introduction.php
  9. ^ http://diablo.gamepedia.com/Procedural_Generation
  10. ^ http://notch.tumblr.com/post/458869117/how-saving-and-loading-will-work-once-infinite-is-in
  11. ^ http://community.playstarbound.com/index.php?threads/a-little-perspective-on-the-size-of-starbound.27178/#post-1063769
  12. ^ "NVIDIA Water Interaction Demo". NVIDIA. 2003. Retrieved 2007-10-08. 
  13. ^ "Galactic Arms Race : Evolving the Shooter", Game Developer Magazine, April 2010.
  14. ^ "Experimental Video Game Evolves Its Own Content". 

External links[edit]