An algorithm is a sequence of deterministic steps that results in something useful being done. So PCG algorithm is one that either generates a large amount of content for a small investment of input data, or one that adds structure to random noise. So here you will find the recipies of PCG. They are categorized here by what they generate (map vs sequence generation) and also by the mindset behind their use (see Ontogenetic vs Teleological for further discussion).

## Concepts

These are some high level concepts that you may find useful or intriguing as a part of writing code for procedural content.

- Adaptive Difficulty
- Algorithmic Difficulty
- Automatic Game Design
- Comparisons Of Algorithms
- Constructive
- Design Of Level Content
- Dynamic Systems
- Dynamic World Generation
- Generate And Test
- Generative Art
- Hash Function
- Identify System
- Infinite Games
- Instancing Of In-Game Entities
- Magic Crayon
- Map Generation
- Ontogenetic
- Permadeath
- Procedural Generation
- Procedural Puzzles And Plot Generation
- Randomness
- Runtime Random Level Generation
- Sandbox
- Search Based Procedural Content Generation
- Sequence Generation
- Teleological
- User Mediated Content
- World Building

## Map Generation

A map requires values over a 2d or 3d grid. It forms the space that a player occupies and interacts with.

- Artificial Life
- Caves
- Cellular Automata
- City Generation
- Cubic Sphere
- Diamond-Square Algorithm
- Drunkard Walk
- Dungeon Generation
- Dynamic Weather
- Fire Propagation
- Fluid Dynamics
- Forests
- Fractal
- Fractal River Basins
- Fractional Brownian motion
- Genetic Algorithm
- Height Maps
- Iterated Function System
- L-System
- Mazes
- MegaTexture
- Midpoint Displacement Algorithm
- Perlin Noise
- Plant Generation
- Procedural Sky
- Procedural Spooling
- Procedural Texture
- Rapidly-exploring random tree
- Reaction-Diffusion System
- Simplex Noise
- Texture Synthesis
- Universe Generation
- Voronoi Diagram
- Whittaker Diagram
- Worley Noise

## Sequence Generation

Sometimes a group of things with a linear order to them is needed, whether notes in a song, letters in text, or numbers as parameters to other algorithms.

- Artificial Life
- Automatic Game Design
- Blum Blum Shub
- Cellular Automata
- Dynamic Weather
- Fractal
- Fractional Brownian motion
- Genetic Algorithm
- Linear Congruential Generator
- Mad Libs
- Markov Chain
- Mersenne Twister
- Natural Language Processing
- Procedural Animation
- Pseudorandom Number Generator
- Random Number Generation
- Random Seed
- Random Walk
- Reaction-Diffusion System
- Shuffling
- Wave Propagation

## Ontogenetic

Ontogenetic algorithms attempt to duplicate the end result of a physical process without emulating the intermediate steps. In this sense, they are an ad hoc algorithm instead of a simulation. Contrast this with teleological. See teleological vs ontogenetic for further discussion.

## Teleological

Teleological algorithms attempt to simulate the physical processes which result in the desired procedural output. Teleological algorithms are inevitably an approximation, but can produce emergent or unusual results. Contrast this with ontogenetic. See teleological vs ontogenetic for further discussion.

## Comparisons of Algorithms

There are often trade offs in time and space between different algorithms, as well as the applicability of the resulting output.

## Uncategorized

Either these algorithms are hard to categorize, or nobody has placed the correct _concepts, comparison, _sequence_generation, _map_generation, ontogenetic, teleological or _hide_from_code_page tags.