-
Notifications
You must be signed in to change notification settings - Fork 0
Map and Biomes
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])
- DLA cave carving — Diffusion-Limited Aggregation carves walkable space until ~35% of the map is open.
- Voronoi biomes — biome seeds scatter; each tile takes its nearest seed's biome (with smoothing passes).
-
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.
Fog of war (PT1-T08, both modes): the map starts unexplored. Moving reveals a 6-tile radius around you, and revealed ground stays revealed for the rest of the run. Unexplored cells render dark on the main view — with a soft gradient edge that eases into the explored area rather than a hard line — and the corner minimap only paints terrain you've actually walked near, so the map fills in as you explore. Tracked client-side per run; single-player and online behave identically.
Biome definitions (name · rarity · size). Biomes are purely visual regions — they color the world + minimap and name your current area, but do not modify movement speed (per-biome speed multipliers were removed 2026-06-09; movement is the same speed everywhere). Biome assignment is seeded + deterministic.
The 12 built-in biomes below are the baseline. Biomes (and the floor tiles within them) can also be AI-generated as data the same way as monsters and items — an inspiration agent gives a 2-4 word region/ground concept, a designer turns it into a biome (name + minimap tint) or a tile (name + base colour the renderer textures). Generated biomes augment this baseline and generated tiles join the world generator's tile pool; the server's pool is delivered to every client so the seeded map stays identical across them.
| Biome | Rarity | Size |
|---|---|---|
| Forest | 30 | 80 |
| Plains | 40 | 60 |
| Desert | 40 | 60 |
| Tundra | 50 | 80 |
| Volcano | 70 | 60 |
| Swamp | 40 | 60 |
| Metal | 70 | 60 |
| Stone | 30 | 60 |
| Mushroom | 70 | 40 |
| Astral | 90 | 40 |
| Water | 90 | 80 |
| Crystal | 60 | 50 |
Tamer's Quest — game-logic wiki. This GitHub Wiki is the canonical, code-mirrored spec (it superseded the in-app public/wiki.html, now archived, on 2026-06-11). Pair with docs/IMPLEMENTATION_PLAN.md and docs/REQUIREMENTS.md in the repo.
Tamer's Quest Game Logic Wiki
- Home
- Onboarding and Title
- Multiplayer and Networking
- Movement and Sprint
- Monsters Stats and Elements
- Combat and Taming
- Spirit Chains
- Progression
- Map and Biomes
- Extraction Round
- Rendering and HUD
- Open Questions
Legend
[CURRENT] implemented
[PLANNED] vision
[OPEN] undecided