Overview
Cartography Engine is a procedural terrain generation system that produces realistic-looking continental maps. It combines Voronoi tessellation with hydraulic erosion simulation to create natural-looking coastlines, mountain ranges, and river systems.
The core algorithm runs in Rust, compiled to WebAssembly for browser-based rendering. A TypeScript wrapper handles the Canvas API rendering pipeline.
Technical Architecture
Generation Pipeline
The map generation follows a multi-stage pipeline:
- Seed Generation — Poisson disk sampling for Voronoi cell centers
- Plate Tectonics — Simulated tectonic plates with drift vectors
- Elevation Mapping — Perlin noise + plate boundary elevation
- Hydraulic Erosion — Water flow simulation over 10,000 iterations
- Biome Assignment — Temperature/moisture-based Whittaker classification
- River Tracing — Downhill flow accumulation algorithm
Core Algorithm
rust
pub fn generate_terrain(config: &TerrainConfig) -> TerrainMap {
let voronoi = VoronoiDiagram::from_poisson_disk(
config.width,
config.height,
config.cell_density,
);
let plates = TectonicPlates::generate(
&voronoi,
config.num_plates,
);
let mut elevation = ElevationMap::from_plates(&plates, &voronoi);
elevation.apply_perlin_noise(config.noise_octaves);
let erosion = HydraulicErosion::new(config.erosion_iterations);
erosion.apply(&mut elevation);
TerrainMap::new(voronoi, elevation)
}开发动机
地图生成一直是程序化内容生成中最迷人的领域之一。从 Dwarf Fortress 到 Minecraft,程序化地形塑造了无数玩家的探索体验。
这个项目的目标是创建一个足够灵活的引擎,能够生成从小岛到大陆尺度的地形,同时保持视觉上的自然感。
Performance
| Metric | Value |
|---|---|
| 1024x1024 map generation | ~2.3s |
| Erosion (10k iterations) | ~1.8s |
| WASM bundle size | 142 KB (gzipped) |
| Browser rendering (Canvas) | 60fps |
Future Plans
- GPU-accelerated erosion via WebGPU compute shaders
- Real-time parameter adjustment with live preview
- Export to heightmap formats (PNG, RAW)
- Climate simulation for seasonal biome variation