Gamedev Framework (gf)  0.9.0
A C++14 framework for 2D games
Procedural content generation

Table of Contents

Gamedev Framework (gf) provides some useful tools for procedural generation. Here is a quick overview.

See also
Procedural Content Generation Wiki

Noise

A coherent noise is a pseudo-random function. It can be used to create textures, or maps. The most well-known type of noise is probably Perlin noise. Noise functions, in general, can be the basic bricks for procedural generation.

Noises classification:

See also
What is coherent noise? - libnoise

List of noises

Basic noise:

Name 2D 3D
Value noise gf::ValueNoise2D
Gradient noise gf::GradientNoise2D gf::GradientNoise3D
Better Gradient noise gf::BetterGradientNoise2D
Simplex noise gf::SimplexNoise2D
OpenSimplex noise gf::OpenSimplexNoise2D gf::OpenSimplexNoise3D
Worley noise gf::WorleyNoise2D
Wavelet noise gf::WaveletNoise3D

Noise adapters:

Name 2D 3D
Fractal noise (fBm) gf::FractalNoise2D gf::FractalNoise3D
Multifractal gf::Multifractal2D
Hybrid Multifractal gf::HybridMultifractal2D
Ridged Multifractal gf::RidgedMultifractal2D
Hetero terrain gf::HeteroTerrain2D

The famous Perlin noise is just the combinaison of a fractal noise and a gradient noise but has its own classes: gf::PerlinNoise2D and gf::PerlinNoise3D.

Gallery

Value noise:

value_noise.png

Gradient noise:

gradient_noise.png

Simplex noise:

simplex_noise.png

OpenSimplex noise:

opensimplex_noise.png

Perlin noise:

perlin_noise.png

Algorithms and structures

Heightmap

Midpoint displacement

Midpoint displacement is a method for generating a heightmap, in 1D or 2D.

Diamond square

Diamond square is an improvment of midpoint displacement.