procedural content generation
DESCRIPTION
Procedural Content Generation. James Grisetti. Overview. Introduction Brief History of Procedural Generation Basic Generators Contemporary Generators Future Work Example Applications. Introduction. What is Procedural Content Generation? - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/1.jpg)
Procedural Content Generation
James Grisetti
![Page 2: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/2.jpg)
Overview
• Introduction• Brief History of Procedural Generation• Basic Generators• Contemporary Generators• Future Work• Example Applications
![Page 3: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/3.jpg)
Introduction
What is Procedural Content Generation?
• Generic term for the usage of algorithms to generate content rather than manual creation of content.
• “Content” refers to media content such as in movies, games, pictures, simulation, etc.
![Page 4: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/4.jpg)
Introduction
Why Use Procedural Generation?
• Reduce production time by focusing on mechanics, rather than simulation artifacts
• Maintain consistent design style across multiple artifact designs, while allowing for controlled variation
![Page 5: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/5.jpg)
Overview
• Introduction• Brief History of Procedural Generation• Basic Generators• Contemporary Generators• Future Work• Example Applications
![Page 6: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/6.jpg)
(Very) Brief History
• Procedural Content Generation has existed to some extent for as long as the Computer Science field
• Simple generators have been used in Monte Carlo simulation
• Used in computer games as early as 1982• First notable use of procedural animation was in the
Lord of the Rings trilogy• Widespread use in video games and simulation
![Page 7: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/7.jpg)
Overview
• Introduction• Brief History of Procedural Generation• Basic Generators• Contemporary Generators• Future Work• Example Applications
![Page 8: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/8.jpg)
Basic GeneratorsLinear Congruential Generator
• In the form of XN+1 = aXN + c (mod m)• Programmer controls output through values of
a, c, m, and X0 (seed value)• Implemented in the C language through rand()
and srand()• May be expanded to higher order polynomial
![Page 9: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/9.jpg)
Basic GeneratorsLinear Feedback Shift Registers
• Based on a “shift register” with bits shifted in to the left and shifted out to the right
• Programmer controls output through setting the “polynomial” and initial state
• Slightly higher quality than LCGs
![Page 10: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/10.jpg)
Basic GeneratorsLinear Feedback Shift Register Varieties
Fibonacci• Bit shifted in is based on
several bits of current state
Galois• Several bits are modified
based on bit shifting out
![Page 11: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/11.jpg)
Overview
• Introduction• Brief History of Procedural Generation• Basic Generators• Contemporary Generators• Future Work• Example Applications
![Page 12: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/12.jpg)
Contemporary GeneratorsPerlin Noise
• Mathematical interpolation of floating point numbers
• Creates fractional Brownian Motion• Used to make CGI textures look more realistic
![Page 13: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/13.jpg)
Contemporary GeneratorsL-Systems
• Lindenmayer systems• Defined as a 3-tuple
V, the alphabet of the system (variables and constants)ω, initial string of the system (axiom, start, or initiator)P, set of production rules (one for each variable in V)
![Page 14: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/14.jpg)
Contemporary GeneratorsL-Systems Continued
• At each iteration, each variable in the current string is replaced with its corresponding production to produce the next string
• State is the string after a given number of iterations• The state is usually used to direct a “turtle graphic”• One of the most commonly used PCGs
![Page 15: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/15.jpg)
Contemporary GeneratorsL-Systems Continued
ExampleV = {A,B}ω = AP = {A→AB,
B →A}
Iteration• A• AB• ABA• ABAAB• ABAABABA
![Page 16: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/16.jpg)
Contemporary GeneratorsL-Systems Demonstration 1
V = {F,+,-}F means “draw forward”‘+’ and ‘-’ are used to change angle
ω = F--F--F--P = {F→F+F--F+F}
![Page 17: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/17.jpg)
Contemporary GeneratorsL-Systems Demonstration 2
V = {X,F,[,],+,-}F means “draw forward”‘[‘ and ‘]’ are used to save and restore position‘+’ and ‘-’ are used to change angleX has no meaning outside of the L-System
ω = XP = { X → F-[[X]+X]+F[+FX]-X,
F → FF }
![Page 18: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/18.jpg)
Contemporary GeneratorsExpert Systems
• Departure from previous approaches• Use statistical methods to determine world
shape and item placement• First notably used in Procedural Content
Generation in Valve’s Left4Dead
![Page 19: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/19.jpg)
Overview
• Introduction• Brief History of Procedural Generation• Basic Generators• Contemporary Generators• Future Work• Example Applications
![Page 20: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/20.jpg)
Future Work
• Most contemporary PCGs are involved in generating terrain artifacts (landscape)
• Some use in animations, textures, and lighting
The next generation of Procedural Content Generation will be involved in creating entire maps
![Page 21: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/21.jpg)
Future Work
Going to the extreme:Programming programs that program programs
In a paper published this year, Mahlmann, Togelius, Yannakakis at the IT University of Denmark suggest the use of Procedural Content Generation for entire games, including rule sets, unit hierarchies, game maps, etc.
![Page 22: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/22.jpg)
Future Work
Another paper by Dimovska, Jarnfelt, Selvig, Yannakakis from the same university explores the use of procedural techniques to aid in physical rehabilitation using the Wii platform
![Page 23: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/23.jpg)
Example ApplicationsMinecraft
• Terrain is generated procedurally• “Mobs” are placed procedurally
![Page 24: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/24.jpg)
Example ApplicationsCityEngine
• Middleware intended for simulation and use in motion pictures
• Requires map data for input• Creates road layouts, building shapes, and
textures based on user parameters
![Page 25: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/25.jpg)
Example ApplicationsSubversion
• Independently developed game• Goal is for the entire world to be procedurally
generated
![Page 26: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/26.jpg)
Example Applications.kkrieger
• Created circa 2004 for the then state-of-the-art hardware
• Uses PCG techniques to create maps, play music, and place items and enemies all at runtime
• Executable is 97,280 bytes
![Page 27: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/27.jpg)
ReferencesKnowledge• The omniscient www.wikipedia.org• Mahlmann, et al. “Towards Procedural Strategy Game Generation: Evolving
Complementary Unit Types” (link)• Dimovska, et al. “Towards Procedural Level Generation for Rehabilitation” (
link)• Müller and Parish. “Procedural Modeling of Cities” SIGGRAPH 2001 (link)
Example Applications:• http://www.theprodukkt.com/kkrieger• http://www.introversion.co.uk/subversion• http://www.procedural.com• http://www.minecraft.net
![Page 28: Procedural Content Generation](https://reader036.vdocument.in/reader036/viewer/2022062316/56816767550346895ddc4cd0/html5/thumbnails/28.jpg)
"Anyone who considers arithmetical methods of producing random digits is, of course, in a state
of sin."
-- John von Neumann