Expand description
§TerrainForge
A modular procedural generation engine for terrain, dungeons, and maps.
§Quick Start
use terrain_forge::{Grid, Tile, algorithms};
let mut grid = Grid::new(80, 60);
let algo = algorithms::get("bsp").unwrap();
algo.generate(&mut grid, 12345);
println!("Generated {} floor tiles", grid.count(|t| t.is_floor()));§Algorithms
13 generation algorithms available via algorithms::get:
bsp- Binary Space Partitioning for structured roomscellular- Cellular automata for organic cavesdrunkard- Random walk for winding corridorsmaze- Perfect maze generationrooms- Simple rectangular roomsvoronoi- Voronoi-based regionsdla- Diffusion-limited aggregationwfc- Wave Function Collapsepercolation- Connected cluster generationdiamond_square- Heightmap terrainfractal- Fractal noise terrainagent- Multi-agent carvingglass_seam- Region connector
§Composition
Chain algorithms with compose::Pipeline or layer with compose::LayeredGenerator:
use terrain_forge::{Grid, Tile, Algorithm, algorithms};
use terrain_forge::compose::Pipeline;
let mut grid = Grid::new(80, 60);
let pipeline = Pipeline::new()
.add(algorithms::get("rooms").unwrap())
.add(algorithms::get("cellular").unwrap());
pipeline.generate(&mut grid, 12345);§Effects
Post-process with effects: morphology, connectivity, filters, transforms.
§Noise
noise module provides Perlin, Simplex, Value, Worley with FBM and modifiers.
Modules§
- algorithms
- Procedural generation algorithms
- compose
- Composition system for chaining and layering algorithms
- constraints
- Constraint validation
- effects
- Effects and transforms for post-processing generated maps
- noise
- Noise generation module with composable generators and modifiers
Structs§
Enums§
- Tile
- Basic tile type for dungeon/terrain generation