Skip to content

Map and Biomes

Dominik Burger edited this page Jun 7, 2026 · 6 revisions

Map and Biomes [CURRENT]

Map Generation

Three-stage pipeline, ported from the original Java game. Each stage feeds the next, all driven by one seed:

flowchart LR
    S([seed]) --> A[1 · DLA cave carving<br/>carve until ~35% open]
    A --> B[2 · Voronoi biomes<br/>nearest-seed + smoothing]
    B --> C[3 · Tile placement<br/>best color-match × 4 rotations]
    C --> M([identical map<br/>server + every client])
Loading
  1. DLA cave carving — Diffusion-Limited Aggregation carves walkable space until ~35% of the map is open.
  2. Voronoi biomes — biome seeds scatter; each tile takes its nearest seed's biome (with smoothing passes).
  3. Tile placement — for each walkable cell, score candidate tiles from that biome by matching color profiles to neighbors, trying 4 rotations (ROT_MAP), and place the best match.
Parameter Value
Map size 400 × 400 tiles
Walkable target 35%
Tile size / overlap / effective 128 / 48 / 80 px
Monster density 0.5% of walkable tiles
Spawned monster levels Lv. 1–5

Seed-deterministic (P0-T2 done): generation takes a seed and a seeded RNG, so the same seed reproduces an identical map on server and every client — verified by a determinism test. The online view draws culled, biome-colored tiles and a corner minimap; main-view camera zoom is a remaining polish item.

Biomes

Biome definitions (name · rarity · size · speed). Speed is the movement multiplier applied to anyone standing in that biome (server-authoritative online, local in SP) — open ground is brisk, wet/rough terrain drags. Deterministic. The multiplier is bilinearly smoothed across biome boundaries (PT1-T22), so your speed eases over ~one tile when crossing rather than snapping at the edge. Stacks with sprint.

Biome Rarity Size Speed
Forest 30 80 0.92×
Plains 40 60 1.15×
Desert 40 60 0.90×
Tundra 50 80 0.88×
Volcano 70 60 0.85×
Swamp 40 60 0.72×
Metal 70 60 1.00×
Stone 30 60 1.00×
Mushroom 70 40 0.90×
Astral 90 40 1.10×
Water 90 80 0.70×
Crystal 60 50 1.05×

Clone this wiki locally