Procedural generation
Overview
The term procedural refers to the process that computes a particular function. Fractals are geometric patterns which can often be generated procedurally. Commonplace procedural content includes textures and meshes. Sound is often also procedurally generated, 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".[1]
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 modern demoscene uses procedural generation to package a great deal of audiovisual content into relatively small programs.
New methods and applications are presented annually in conferences such as the
Particularly in the application of procedural generation with video games, which are intended to be highly replayable, there are concerns that procedural systems can generate infinite numbers of worlds to explore, but without sufficient human guidance and rules to guide these. The result has been called "procedural oatmeal", a term coined by writer Kate Compton, in that while it is possible to mathematically generate thousands of bowls of oatmeal with procedural generation, they will be perceived to be the same by the user, and lack the notion of perceived uniqueness that a procedural system should aim for.[3]
Contemporary application
Tabletop role-playing games
Using procedural generation in games had origins in the tabletop role playing game (RPG) venue.
Many online tools for Dungeon Masters now use procedural generation to varying degrees.[citation needed]
Video games
Early history
Prior to graphically oriented video games, roguelike games, a genre directly inspired by Dungeons & Dragons adopted for solitaire play, heavily utilized procedural generation to randomly produce dungeons, in the same manner that tabletop systems had done. Such early games include Beneath Apple Manor (1978) and the genre's namesake, Rogue (1980). The procedural generation system in roguelikes would create dungeons in ASCII- or regular tile-based systems and define rooms, hallways, monsters, and treasure to challenge the player. Roguelikes, and games based on the roguelike concepts, allow the development of complex gameplay without having to spend excessive time in creating a game's world.[7]
1978's Maze Craze for the Atari VCS used an algorithm to generate a random, top-down maze for each game.[8]
Some games used
Modern use
Though modern computer games do not have the same memory and hardware restrictions that earlier games had, the use of procedural generation is frequently employed to create randomized games, maps, levels, characters, or other facets that are unique on each playthrough.[11][12]
In 2004, a PC first-person shooter called .kkrieger was released by a German demo group. It is entirely contained in a 96 kilobyte executable for Microsoft Windows that generates hundreds of megabytes of 3D and texture data when run. According to one of the programmers, "it was a complete failure as far as the game side was concerned (mostly because no one involved really deeply cared about that aspect)."[13]
Naked Sky's RoboBlitz used procedural generation to maximize content in a less than 50 MB downloadable file for Xbox Live Arcade. Will Wright's Spore also makes use of procedural synthesis.
Procedural generation is often used in
Many open world or survival games procedurally create a game world from a random seed or one provided by the player, so that each playthrough is different. These generation systems create numerous pixel- or voxel-based biomes with distribution of resources, objects, and creatures. The player frequently has the ability to adjust some of the generation parameters, such as specifying the amount of water coverage in a world. Examples of such games include Dwarf Fortress and Minecraft.
Procedural generation is also used in space exploration and trading games.
Other applications
As in video games, procedural generation is often used in film to create visually interesting and accurate spaces rapidly. This comes in a wide variety of applications.
One application is known as an imperfect factory, where artists can rapidly generate many 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 to generate many similar objects to populate the shelf.
MASSIVE is a high-end computer animation and artificial intelligence software package used for generating crowd-related visual effects for film and television. It was developed to create fighting armies of hundreds of thousands of soldiers for Peter Jackson's The Lord of the Rings films automatically.[18]
Coherent noise can be extremely important to procedural workflow in film. Simplex noise is often faster with fewer artifacts, though an older function called Perlin noise may be used as well. Coherent noise, in this case, refers to a function that generates smooth pseudo-randomness in n dimensions.
See also
- Cellular automata
- Computational creativity
- Fractal landscape
- Fractional Brownian motion
- Generative art
- Generative artificial intelligence
- L-systems
- Linear congruential generator
- List of games using procedural generation
- Media synthesis (AI)
- Noise, Perlin noise, Simplex noise
- Procedural animation
- Procedural modeling
- Procedural texture
- Random map
- Roguelike
- Scenery generator
References
- ^ Brian Eno (June 8, 1996). "A talk delivered in San Francisco, June 8, 1996". inmotion magazine. Retrieved 2008-11-07.
- ^ "Artificial Intelligence and Interactive Digital Entertainment". AIIDE.org. Retrieved 12 June 2016.
- Gamasutra. Retrieved October 7, 2019.
- ^ Brown, Joseph Alexander; Scirea, Marco (2018). "Procedural Generation for Tabletop Games: User Driven Approaches with Restrictions on Computational Resources". SEDA 2018: Proceedings of 6th International Conference in Software Engineering for Defence Applications. International Conference in Software Engineering for Defence Applications. Rome, Italy. pp. 44–54.
- ^ ""A Chat with Ken St Andre Part 1"". YouTube.com. Retrieved 6 November 2021.
- ^ Smith, Gillian (2015). An Analog History of Procedural Content Generation (PDF). Foundations of Digital Games 2015. Pacific Grove, California. Retrieved October 7, 2019.
- ^ Hatfield, Tom (2013-01-29). "Rise Of The Roguelikes: A Genre Evolves". GameSpy. Retrieved 2013-04-24.
- ^ "Maze Craze". Atari Mania.
- ^ Hiranand, Ravi (2015-06-18). "18 quintillion planets: The video game that imagines an entire galaxy | CNN Business". CNN. Retrieved 2022-12-13.
- ^ Francis Spufford (October 18, 2003). "Masters of their universe". Guardian.
- Gamasutra. Retrieved January 1, 2016.
- ^ Baker, Chris (9 August 2016). "'No Man's Sky': How Games Are Building Themselves". Rolling Stone. Retrieved 9 August 2016.
- ^ Giesen, Fabian (April 8, 2012). "Metaprogramming for madmen". The ryg blog.
- Wall Street Journal. Retrieved April 21, 2016.
- ^ Khatchadourian, Raffi (18 May 2015). "World without end : creating a full-scale digital cosmos". Annals of Games. The New Yorker. Vol. 91, no. 13. pp. 48–57. Retrieved 5 August 2015.
- Fast Company. Retrieved 9 August 2015.
- ^ Sam White (2016-08-10). "No Man's Sky: How the biggest game ever made almost never happened". gamesradar. Retrieved 2022-05-07.
- ^ "About Massive". Massive Software. Retrieved 12 June 2016.
Further reading
- Ebert, David S.; Musgrave, F. Kenton; Peachey, Darwyn; Perlin, Ken; Worley, Steve (2002). Texturing and Modeling: A Procedural Approach (3rd ed.). Morgan Kaufmann. ISBN 978-1-558-60848-1.
- Shaker, Noor; Togelius, Julian; Nelson, Mark J. (2016). Procedural Content Generation in Games: A Textbook and an Overview of Current Research. Springer. ISBN 978-3-319-42714-0.
- The Future Of Content – Will Wright keynote on Spore & procedural generation at the Game Developers Conference 2005