Crate terrain_forge

Crate terrain_forge 

Source
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()));

§Semantic Extraction

Extract semantic information from any generated map:

use terrain_forge::{algorithms, SemanticExtractor, Grid, Rng};

// 1. Generate map using any method
let mut grid = Grid::new(80, 60);
algorithms::get("cellular").unwrap().generate(&mut grid, 12345);

// 2. Extract semantic information
let extractor = SemanticExtractor::for_caves();
let mut rng = Rng::new(12345);
let semantic = extractor.extract(&grid, &mut rng);

// Works with any grid source - pipelines, external tools, etc.

§Algorithms

14 generation algorithms available via algorithms::get:

  • bsp - Binary Space Partitioning for structured rooms
  • cellular - Cellular automata for organic caves
  • drunkard - Random walk for winding corridors
  • maze - Perfect maze generation
  • rooms - Simple rectangular rooms
  • voronoi - Voronoi-based regions
  • dla - Diffusion-limited aggregation
  • wfc - Wave Function Collapse
  • percolation - Connected cluster generation
  • diamond_square - Heightmap terrain
  • fractal - Fractal noise terrain
  • agent - Multi-agent carving
  • glass_seam - Region connector
  • room_accretion - Brogue-style organic dungeons

§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§

ConnectivityGraph
Region connectivity information
Grid
2D grid of cells
Marker
A spawn marker for entity placement
Masks
Spatial masks for gameplay logic
Region
A distinct region within the generated map
Rng
Seeded RNG wrapper for deterministic generation
SemanticConfig
Configuration for semantic layer generation
SemanticExtractor
Standalone semantic extractor that analyzes any grid
SemanticLayers
Complete semantic information for a generated map
VisualizationConfig
Visualization configuration

Enums§

Tile
Basic tile type for dungeon/terrain generation

Traits§

Algorithm
Trait for procedural generation algorithms
Cell
Trait for grid cells

Functions§

extract_semantics
Convenience function for quick semantic extraction
extract_semantics_default
Extract semantics with default configuration
generate_with_semanticDeprecated
Generate a map with semantic layers using the new extraction approach
visualize_connectivity_graph
Visualize connectivity graph as text
visualize_masks
Visualize spatial masks
visualize_region_ids
Create region ID visualization (useful for debugging)
visualize_regions
Visualize regions overlaid on the grid
visualize_semantic_layers
Create comprehensive semantic visualization