714 lines
32 KiB
Markdown
714 lines
32 KiB
Markdown
|
|
# Theriapolis — Procedural World Generation
|
|||
|
|
### Technical Design Document (High Level)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Executive Summary
|
|||
|
|
|
|||
|
|
The continent of Veldara is procedurally generated each playthrough while preserving
|
|||
|
|
the narrative spine of the main quest. The player experiences the same story in a
|
|||
|
|
different world every time — settlements shift, roads reroute, dungeons relocate, and
|
|||
|
|
the spaces between fixed narrative anchors are always fresh.
|
|||
|
|
|
|||
|
|
The core principle: **Geography is authored. Topology is generated.**
|
|||
|
|
|
|||
|
|
Meaning: the continental layout (temperate east, plains center, mountains west, tundra
|
|||
|
|
north, subtropical south) is fixed as a macro-template. But the specific shape of
|
|||
|
|
coastlines, the exact placement of mountain passes, the course of rivers, and the
|
|||
|
|
location of every settlement, road, and point of interest within those macro-regions
|
|||
|
|
is procedurally determined per seed.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## LAYER 0: THE CONTINENTAL TEMPLATE
|
|||
|
|
|
|||
|
|
### What Is Fixed (Every Playthrough)
|
|||
|
|
|
|||
|
|
The continental template is a hand-authored **macro-biome map** — a low-resolution grid
|
|||
|
|
(approximately 32×32 cells, each cell representing a large region) that defines the
|
|||
|
|
broad strokes:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
NORTH
|
|||
|
|
┌──────────────────────────────────┐
|
|||
|
|
│ TUNDRA / BOREAL FOREST │
|
|||
|
|
│ (Polar Ursid, Wolverine-folk) │
|
|||
|
|
├──────────────────────────────────┤
|
|||
|
|
│ TEMPERATE │ NORTHERN │
|
|||
|
|
│ FOREST │ PLAINS │
|
|||
|
|
│ (Mixed Clade) │ (Canid-heavy) │
|
|||
|
|
├────────────────┼─────────────────┤
|
|||
|
|
│ EASTERN │ CENTRAL │ WESTERN
|
|||
|
|
│ INDUSTRIAL │ GRASSLANDS │ MOUNTAINS
|
|||
|
|
│ BELT │ (Bovid/Cervid) │ (Mixed)
|
|||
|
|
│ (Multi-Clade) │ │
|
|||
|
|
├────────────────┼─────────────────┤
|
|||
|
|
│ SOUTHEASTERN │ SUBTROPICAL │
|
|||
|
|
│ COAST │ LOWLANDS │
|
|||
|
|
│ (Trade ports) │ "The Tangles" │
|
|||
|
|
│ │ (Hybrid/fringe)│
|
|||
|
|
└──────────────────────────────────┘
|
|||
|
|
SOUTH
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Each macro-cell carries:
|
|||
|
|
- **Biome type** (tundra, boreal, temperate deciduous, grassland, mountain, subtropical,
|
|||
|
|
coastal, wetland)
|
|||
|
|
- **Dominant Clade affinity** (which Clades historically settled here, influencing
|
|||
|
|
population ratios and architecture)
|
|||
|
|
- **Development level** (industrial, agricultural, frontier, wilderness, urban)
|
|||
|
|
- **Covenant enforcement strength** (strong, moderate, weak, nominal)
|
|||
|
|
|
|||
|
|
These macro-cells are NOT randomized. They are the authored skeleton that ensures
|
|||
|
|
narrative coherence. The main quest expects certain regions to exist in certain
|
|||
|
|
relative positions.
|
|||
|
|
|
|||
|
|
### What Is Generated (Per Seed)
|
|||
|
|
|
|||
|
|
Everything inside and between those macro-cells:
|
|||
|
|
- Coastline shape, island placement, bay/peninsula formation
|
|||
|
|
- Mountain range contours, pass locations, elevation profiles
|
|||
|
|
- River systems (source to sea, branching, confluence points)
|
|||
|
|
- Forest density and treeline boundaries
|
|||
|
|
- Micro-biome variation within macro-cells (a grassland cell might contain
|
|||
|
|
river-bottom woodlands, rocky outcrops, seasonal wetlands)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## LAYER 1: TERRAIN GENERATION
|
|||
|
|
|
|||
|
|
### Method: Constrained Multi-Octave Noise
|
|||
|
|
|
|||
|
|
Standard Perlin/Simplex noise terrain generation, but constrained by the macro-template.
|
|||
|
|
|
|||
|
|
**Step 1 — Elevation Map**
|
|||
|
|
|
|||
|
|
Generate a base elevation heightmap using multi-octave Simplex noise. Then apply the
|
|||
|
|
macro-template as a **constraint mask**:
|
|||
|
|
|
|||
|
|
- Cells tagged MOUNTAIN: elevation floor set high (0.7–1.0 range). Noise adds variation
|
|||
|
|
within that range (peaks, valleys, ridgelines) but cannot drop below the floor.
|
|||
|
|
- Cells tagged GRASSLAND: elevation ceiling set low (0.1–0.3). Gently rolling terrain.
|
|||
|
|
Noise adds subtle hills but cannot spike.
|
|||
|
|
- Cells tagged COASTAL: elevation forced to approach sea level (0.0) at the continent
|
|||
|
|
edge. Noise shapes the specific coastline contour.
|
|||
|
|
- Cells tagged TUNDRA: elevation moderate, flatness enforced with low noise amplitude.
|
|||
|
|
- Transition zones between macro-cells use gradient blending over 2–3 cell widths to
|
|||
|
|
prevent hard biome edges.
|
|||
|
|
|
|||
|
|
**Step 2 — Moisture Map**
|
|||
|
|
|
|||
|
|
Second noise layer, independent frequency. Combined with elevation to derive biome
|
|||
|
|
detail:
|
|||
|
|
|
|||
|
|
- High elevation + low moisture = alpine desert, rocky peaks
|
|||
|
|
- High elevation + high moisture = alpine meadow, glacier
|
|||
|
|
- Low elevation + high moisture = swamp, wetland, river floodplain
|
|||
|
|
- Low elevation + low moisture = dry grassland, scrubland
|
|||
|
|
- Moderate elevation + moderate moisture = temperate forest (the default)
|
|||
|
|
|
|||
|
|
The moisture map is also constrained: cells tagged SUBTROPICAL get a moisture floor.
|
|||
|
|
Cells tagged TUNDRA get a moisture ceiling (frozen, not wet).
|
|||
|
|
|
|||
|
|
**Step 3 — Temperature Map**
|
|||
|
|
|
|||
|
|
Derived primarily from latitude (north = cold, south = warm) with elevation modifier
|
|||
|
|
(higher = colder). This is mostly deterministic from the other two maps, with minor
|
|||
|
|
noise for local variation (cold pockets in valleys, warm microclimates on south-facing
|
|||
|
|
slopes).
|
|||
|
|
|
|||
|
|
**Step 4 — Erosion Simulation (Optional, Performance Budget Permitting)**
|
|||
|
|
|
|||
|
|
Hydraulic erosion pass over the heightmap to create natural-looking river valleys,
|
|||
|
|
canyon cuts, and sediment plains. This step transforms geometric noise terrain into
|
|||
|
|
terrain that looks like water has been flowing over it for millennia. Expensive but
|
|||
|
|
dramatically improves visual quality.
|
|||
|
|
|
|||
|
|
If performance is a concern, skip this and use the river placement algorithm in
|
|||
|
|
Layer 2 instead (cheaper, less realistic, still functional).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Biome Resolution
|
|||
|
|
|
|||
|
|
After the three maps are generated, each terrain cell (higher resolution now —
|
|||
|
|
think 512×512 or 1024×1024 for the full continent) is assigned a **micro-biome**
|
|||
|
|
based on its elevation/moisture/temperature values:
|
|||
|
|
|
|||
|
|
| Biome | Elevation | Moisture | Temperature |
|
|||
|
|
|-------|-----------|----------|-------------|
|
|||
|
|
| Tundra | Low–Med | Low | Cold |
|
|||
|
|
| Boreal Forest | Low–Med | Med | Cold |
|
|||
|
|
| Temperate Deciduous | Low–Med | Med–High | Moderate |
|
|||
|
|
| Temperate Grassland | Low | Low–Med | Moderate |
|
|||
|
|
| Mountain (alpine) | High | Varies | Cold |
|
|||
|
|
| Mountain (forested) | Med–High | Med–High | Moderate |
|
|||
|
|
| Subtropical Forest | Low–Med | High | Warm |
|
|||
|
|
| Wetland/Swamp | Very Low | Very High | Warm |
|
|||
|
|
| Coastal | Sea Level | High | Varies |
|
|||
|
|
| River Valley | Low (carved) | High | Varies |
|
|||
|
|
| Scrubland | Low–Med | Low | Warm–Moderate |
|
|||
|
|
| Desert (cold) | Med | Very Low | Cold |
|
|||
|
|
|
|||
|
|
Each biome carries associated data: traversal cost, encounter tables, resource
|
|||
|
|
availability, visual tileset, ambient sound profile, and **ambient scent profile**
|
|||
|
|
(this is Theriapolis — the world smells different in a boreal forest than a swamp,
|
|||
|
|
and PCs with scent abilities should experience that).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## LAYER 2: HYDROLOGY — RIVERS, LAKES, COASTLINE
|
|||
|
|
|
|||
|
|
### Rivers
|
|||
|
|
|
|||
|
|
Rivers are the skeleton of civilization. They determine where settlements form, where
|
|||
|
|
trade flows, and where borders harden.
|
|||
|
|
|
|||
|
|
**Generation Method: Drainage Simulation**
|
|||
|
|
|
|||
|
|
1. Identify the highest points on the elevation map (mountain peaks, ridgelines).
|
|||
|
|
2. Simulate water flow downhill from multiple source points using gradient descent.
|
|||
|
|
3. Water accumulates: streams merge into rivers based on flow volume thresholds.
|
|||
|
|
4. Rivers carve into the elevation map slightly (lowering terrain along their path)
|
|||
|
|
to create natural valleys.
|
|||
|
|
5. Rivers terminate at the ocean (coastline), a lake basin (local elevation minimum),
|
|||
|
|
or a swamp/wetland (flat, high-moisture area).
|
|||
|
|
|
|||
|
|
**Constraints:**
|
|||
|
|
- At least one major river must cross each of the following macro-regions: Eastern
|
|||
|
|
Industrial Belt, Central Grasslands, Subtropical Lowlands. The quest expects river
|
|||
|
|
crossings and river-based settlements.
|
|||
|
|
- Millhaven (Act I starting town) is always on a river. The generation guarantees a
|
|||
|
|
river within the Eastern Temperate Forest macro-cell.
|
|||
|
|
|
|||
|
|
**River Classification:**
|
|||
|
|
- Stream (narrow, wadeable): traversal cost low, no ferry needed
|
|||
|
|
- River (moderate, bridgeable): settlements form at crossing points, bridges are
|
|||
|
|
infrastructure
|
|||
|
|
- Major River (wide, requires ferry or bridge): trade arteries, political borders,
|
|||
|
|
major settlement anchors
|
|||
|
|
|
|||
|
|
### Lakes
|
|||
|
|
|
|||
|
|
Lakes form at local elevation minimums where river drainage collects. Size varies
|
|||
|
|
by drainage basin. At least one large lake exists per playthrough (visual landmark,
|
|||
|
|
potential quest location). Lakes in tundra regions freeze seasonally.
|
|||
|
|
|
|||
|
|
### Coastline
|
|||
|
|
|
|||
|
|
The continent's edge is generated by the elevation map meeting sea level. Noise
|
|||
|
|
amplitude at coastal cells determines complexity: smooth beaches, rocky cliffs,
|
|||
|
|
fjord-like inlets (north), mangrove swamp (south), bay harbors (east/southeast).
|
|||
|
|
|
|||
|
|
At least 3 natural harbor sites are guaranteed (the economy needs ports). Harbor
|
|||
|
|
sites are identified algorithmically: sheltered bays where depth drops off near
|
|||
|
|
shore. Trade cities always generate at harbors.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## LAYER 3: SETTLEMENT PLACEMENT
|
|||
|
|
|
|||
|
|
### The Rules
|
|||
|
|
|
|||
|
|
Settlements don't appear randomly. They form where biology, geography, and economics
|
|||
|
|
demand them. The placement algorithm encodes this.
|
|||
|
|
|
|||
|
|
**Step 1 — Identify Settlement Seed Points**
|
|||
|
|
|
|||
|
|
Score every terrain cell for **habitability**:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
habitability = (water_proximity × 3.0)
|
|||
|
|
+ (flatness × 2.0)
|
|||
|
|
+ (fertility × 2.0)
|
|||
|
|
+ (trade_route_potential × 1.5)
|
|||
|
|
+ (resource_proximity × 1.0)
|
|||
|
|
- (elevation_extreme × 2.0)
|
|||
|
|
- (hazard_proximity × 1.5)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Where:
|
|||
|
|
- `water_proximity`: distance to nearest river or lake (closer = higher)
|
|||
|
|
- `flatness`: inverse of local elevation variance (flatter = higher)
|
|||
|
|
- `fertility`: derived from moisture + temperature (good growing conditions)
|
|||
|
|
- `trade_route_potential`: centrality score — how many other high-habitability
|
|||
|
|
cells are reachable without crossing mountains or deep water
|
|||
|
|
- `resource_proximity`: distance to mineable mountains, fishable coast, timber forests
|
|||
|
|
- `elevation_extreme`: penalty for very high or very low (swamp) elevation
|
|||
|
|
- `hazard_proximity`: penalty for proximity to wilderness zones with high encounter rates
|
|||
|
|
|
|||
|
|
**Step 2 — Place Settlements by Tier**
|
|||
|
|
|
|||
|
|
Starting from the highest-scored cells, place settlements with minimum-distance
|
|||
|
|
constraints (settlements can't be too close together — they compete for resources).
|
|||
|
|
|
|||
|
|
**Tier 1: Capital City (1)**
|
|||
|
|
- Placed in the highest-scoring cell in the Eastern Industrial Belt macro-region or
|
|||
|
|
at the intersection of the two highest-scoring macro-regions.
|
|||
|
|
- This is Sanctum Fidelis (Act III). Its position shifts per seed but is always a
|
|||
|
|
major, central, accessible city.
|
|||
|
|
- Population: 1.5M–2.5M (scaled for narrative, not simulated)
|
|||
|
|
- Must be on or adjacent to a major river AND a rail line (rail is generated later
|
|||
|
|
to connect to the capital, not the other way around).
|
|||
|
|
|
|||
|
|
**Tier 2: Major Cities (4–6)**
|
|||
|
|
- Placed in the next highest-scoring cells, one per macro-region minimum.
|
|||
|
|
- These include: Thornfield (Eastern Industrial), Fort Dustwall (Central Plains),
|
|||
|
|
Heartstone (Western Mountains), plus 1–3 additional cities for economy/exploration.
|
|||
|
|
- Population: 30K–200K
|
|||
|
|
- Must be on a river or coast.
|
|||
|
|
|
|||
|
|
**Tier 3: Towns (15–25)**
|
|||
|
|
- Mid-scoring cells. Regional hubs, market towns, garrison posts.
|
|||
|
|
- Population: 2K–30K
|
|||
|
|
- Must be within 2 days' travel of a Tier 2 city OR on a major trade route.
|
|||
|
|
- This tier includes Millhaven (Act I). Millhaven is always in the Eastern
|
|||
|
|
Temperate Forest, always on a river, always at least 1 day from the nearest
|
|||
|
|
Tier 2 city. It's small, rural, and accessible.
|
|||
|
|
|
|||
|
|
**Tier 4: Villages & Outposts (40–80)**
|
|||
|
|
- Lower-scoring cells. Farming communities, mining camps, border outposts, waystations.
|
|||
|
|
- Population: 50–2K
|
|||
|
|
- Minimum distance from Tier 3+ settlements, but otherwise distributed by habitability
|
|||
|
|
score.
|
|||
|
|
|
|||
|
|
**Tier 5: Points of Interest (100–200)**
|
|||
|
|
- Ruins, caves, abandoned mines, hermit dwellings, Imperium-era structures, wild shrines.
|
|||
|
|
- Placed in LOW habitability cells (the interesting stuff is in the places people don't
|
|||
|
|
live). Mountain caves, deep forest, swamp islands, tundra ruins.
|
|||
|
|
- Each PoI is tagged with: type (dungeon, ruin, landmark, resource node, secret),
|
|||
|
|
level range, and loot table tier.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Settlement Attributes — Generated Per Settlement
|
|||
|
|
|
|||
|
|
Each placed settlement receives procedurally generated attributes:
|
|||
|
|
|
|||
|
|
**Demographics:**
|
|||
|
|
- Clade population ratio (weighted by macro-region affinity, with noise for variety).
|
|||
|
|
A Central Grasslands town is 60% Bovid/Cervid ± 15%. An Eastern Industrial town
|
|||
|
|
is more evenly mixed ± 10%. The Tangles skews toward hybrids and fringe populations.
|
|||
|
|
- Hybrid population percentage (0.5%–5% in most places, 10%–30% in The Tangles
|
|||
|
|
and progressive urban centers).
|
|||
|
|
|
|||
|
|
**Economy:**
|
|||
|
|
- Primary industry: farming, mining, manufacturing, trade, military, fishing (derived
|
|||
|
|
from terrain resources within the settlement's radius).
|
|||
|
|
- Wealth level: poor, modest, comfortable, wealthy (derived from trade_route_potential
|
|||
|
|
and resource_proximity).
|
|||
|
|
- Market tier: determines what equipment is available for purchase. Tier 4 villages
|
|||
|
|
have basic goods. Tier 1 capital has everything.
|
|||
|
|
|
|||
|
|
**Governance:**
|
|||
|
|
- Government type: council, mayor, military commandant, clan elder, corporate, anarchic
|
|||
|
|
(weighted by Clade demographics and development level).
|
|||
|
|
- Covenant enforcement: strong, moderate, weak, absent (derived from macro-region +
|
|||
|
|
government type + distance from capital).
|
|||
|
|
|
|||
|
|
**Culture:**
|
|||
|
|
- Dominant cultural flavor: traditional Canid (hierarchical, pack-structured),
|
|||
|
|
traditional Cervid (communal, cautious), industrial cosmopolitan (mixed, progressive),
|
|||
|
|
frontier independent (libertarian, suspicious), hybrid underground (coded, communal).
|
|||
|
|
- Festival calendar: each settlement has 1–3 local festivals tied to Clade traditions
|
|||
|
|
and seasons. These are flavor events that provide bonuses, shopping opportunities,
|
|||
|
|
and ambient worldbuilding.
|
|||
|
|
|
|||
|
|
**Architecture:**
|
|||
|
|
- Size-dominant architecture: whose body the buildings are built for. A Bovid-majority
|
|||
|
|
town has wide doors, reinforced furniture, low counters. A Mustelid quarter has narrow
|
|||
|
|
corridors and ladder-access upper floors. Multi-Clade cities have adaptive zones.
|
|||
|
|
- This affects gameplay: a Large PC in a Mustelid-scaled building has disadvantage
|
|||
|
|
on DEX checks. A Small PC in an Ursid district can't reach standard counters
|
|||
|
|
without accommodation.
|
|||
|
|
|
|||
|
|
**Scent Profile:**
|
|||
|
|
- Each settlement has a generated ambient scent: industrial (coal, metal, chemical),
|
|||
|
|
agricultural (grain, livestock, earth), maritime (salt, fish, tar), forest (pine,
|
|||
|
|
decay, woodsmoke), urban dense (bodies, food, perfume, sewage).
|
|||
|
|
- PCs with scent abilities experience this on arrival — atmospheric worldbuilding
|
|||
|
|
delivered through a sense most games ignore.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## LAYER 4: INFRASTRUCTURE — ROADS, RAIL, TRADE
|
|||
|
|
|
|||
|
|
### Road Network
|
|||
|
|
|
|||
|
|
**Generation Method: Minimum Spanning Tree + Noise**
|
|||
|
|
|
|||
|
|
1. All Tier 1–3 settlements become nodes in a graph.
|
|||
|
|
2. Edge weights = terrain traversal cost between settlements (mountains expensive,
|
|||
|
|
plains cheap, rivers require bridge infrastructure).
|
|||
|
|
3. Generate a Minimum Spanning Tree to ensure all settlements are connected.
|
|||
|
|
4. Add 20–40% additional edges (shortcuts, alternate routes) weighted toward
|
|||
|
|
high-trade-potential connections.
|
|||
|
|
5. Route each edge through the terrain using A* pathfinding (cheapest traversable path),
|
|||
|
|
creating actual road paths that follow valleys, cross rivers at narrow points, and
|
|||
|
|
wind through mountain passes.
|
|||
|
|
|
|||
|
|
**Road Types:**
|
|||
|
|
- Footpath: connects Tier 4–5 locations. Narrow, unpaved. No wagon access.
|
|||
|
|
- Dirt road: connects Tier 3–4 locations. Single-width, seasonal mud.
|
|||
|
|
- Post road: connects Tier 2–3 locations. Maintained, way-stations every day's travel.
|
|||
|
|
- Highway: connects Tier 1–2 locations. Paved (cobble or macadam), wide, patrolled.
|
|||
|
|
|
|||
|
|
### Rail Network
|
|||
|
|
|
|||
|
|
Rail technology exists in the Late Reconciliation Era. The rail network is sparser
|
|||
|
|
than the road network — it represents major capital investment.
|
|||
|
|
|
|||
|
|
1. Capital (Tier 1) is the rail hub.
|
|||
|
|
2. Rail lines extend to each Tier 2 city via the lowest-cost terrain route.
|
|||
|
|
3. One additional rail line connects the easternmost port to the westernmost
|
|||
|
|
Tier 2 city (the transcontinental line — essential for Act IV's journey).
|
|||
|
|
4. Rail does NOT extend to Tier 3 or lower settlements. Getting off the rail
|
|||
|
|
means switching to road, horse, or foot.
|
|||
|
|
|
|||
|
|
**Rail stations** generate at each rail-connected settlement. Stations are travel
|
|||
|
|
hubs: shops, inns, information boards, and pickpocket encounters.
|
|||
|
|
|
|||
|
|
### Trade Routes
|
|||
|
|
|
|||
|
|
Trade routes overlay the road/rail network with economic flow:
|
|||
|
|
|
|||
|
|
1. Each settlement produces goods based on its economy (grain from agricultural,
|
|||
|
|
ore from mining, manufactured goods from industrial, fish from coastal).
|
|||
|
|
2. Each settlement demands goods it can't produce locally.
|
|||
|
|
3. Trade routes are generated by matching supply to demand along the transport
|
|||
|
|
network, weighted by distance and transport cost.
|
|||
|
|
4. Active trade routes generate: merchant caravans (mobile shops, encounter
|
|||
|
|
opportunities), bandit activity (proportional to route wealth), and economic
|
|||
|
|
modifiers (settlements on busy routes are wealthier).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## LAYER 5: ENCOUNTER AND CONTENT DISTRIBUTION
|
|||
|
|
|
|||
|
|
### Overworld Encounters
|
|||
|
|
|
|||
|
|
The space between settlements is not empty. Encounters are distributed using a
|
|||
|
|
**density map** layered over the terrain:
|
|||
|
|
|
|||
|
|
**Density Factors:**
|
|||
|
|
- Distance from settlement: closer = safer (lower encounter rate), farther = wilder
|
|||
|
|
- Terrain type: deep forest, mountain, and swamp have higher base encounter rates
|
|||
|
|
- Road proximity: on-road encounters are social/economic (merchants, patrols, travelers);
|
|||
|
|
off-road encounters are environmental/hostile
|
|||
|
|
- Macro-region hostility level: frontier and poorly-governed regions have higher rates
|
|||
|
|
|
|||
|
|
**Encounter Types:**
|
|||
|
|
|
|||
|
|
| Type | Examples | Frequency |
|
|||
|
|
|------|----------|-----------|
|
|||
|
|
| Wildlife | Non-sentient predators, herd animals, dangerous fauna | Common (wilderness) |
|
|||
|
|
| Traveler | Merchants, pilgrims, other adventurers, refugees | Common (roads) |
|
|||
|
|
| Hostile | Bandits, Clade-nationalist paramilitaries, Maw agents (post Act I) | Moderate |
|
|||
|
|
| Environmental | Weather events, terrain hazards, river crossings, cave-ins | Moderate |
|
|||
|
|
| Social | Stranded NPC, roadside dispute, broken-down wagon, lost kit | Common (roads) |
|
|||
|
|
| Scent Event | Unusual scent trail, predator territorial markers, fear-scent on the wind | Uncommon (flavor) |
|
|||
|
|
| Rare Discovery | Hidden ruin entrance, Imperium artifact, wild Howl-stone, injured hybrid | Rare |
|
|||
|
|
|
|||
|
|
**Encounter Scaling:**
|
|||
|
|
Encounters are level-scaled to the PC's current level ± 2. Wilderness encounters in
|
|||
|
|
high-danger zones can exceed this by +3 (the world doesn't care what level you are —
|
|||
|
|
wander into the deep tundra at level 3 and face consequences).
|
|||
|
|
|
|||
|
|
### Procedural Dungeons / Points of Interest
|
|||
|
|
|
|||
|
|
Tier 5 PoIs (the 100–200 scattered locations) are generated using modular room templates:
|
|||
|
|
|
|||
|
|
**Dungeon Types:**
|
|||
|
|
- Imperium Ruin: stone corridors, coliseum-adjacent architecture, old traps, undead
|
|||
|
|
or feral non-sentient occupants. Loot: Imperium-era artifacts, historical documents.
|
|||
|
|
- Abandoned Mine: tunnels, cave-ins, mineral deposits, possible Mustelid or Ursid
|
|||
|
|
former inhabitants. Loot: ores, gems, mining equipment, occasionally alchemical
|
|||
|
|
reagents.
|
|||
|
|
- Cult Den: Clade-nationalist hideout, rawfang cult lair, or black-market lab.
|
|||
|
|
Sentient hostiles. Loot: intelligence, contraband, pheromone compounds.
|
|||
|
|
- Natural Cave: wildlife dens, geological features, underground rivers. Loot:
|
|||
|
|
natural resources, rare herbs, fossils.
|
|||
|
|
- Overgrown Settlement: abandoned village reclaimed by wilderness. Environmental
|
|||
|
|
storytelling — why did they leave? Loot: domestic goods, letters, cultural artifacts.
|
|||
|
|
|
|||
|
|
**Modular Room Templates:**
|
|||
|
|
Each dungeon type has 30–50 pre-designed room templates (authored, not generated) that
|
|||
|
|
are assembled procedurally:
|
|||
|
|
|
|||
|
|
1. Select dungeon type based on PoI's terrain and macro-region.
|
|||
|
|
2. Determine dungeon size based on level range (small: 3–5 rooms, medium: 6–10,
|
|||
|
|
large: 11–20).
|
|||
|
|
3. Select entry room template.
|
|||
|
|
4. Connect rooms using a graph — linear for simple dungeons, branching for complex.
|
|||
|
|
Dead-ends contain loot or lore. Branches reconnect for loop options.
|
|||
|
|
5. Populate rooms from encounter tables appropriate to dungeon type and level.
|
|||
|
|
6. Place loot using tier-weighted random tables.
|
|||
|
|
7. Assign one room as "narrative room" — contains environmental storytelling (letters,
|
|||
|
|
journals, scent-traces, bodies arranged to tell a story) that enriches worldbuilding
|
|||
|
|
even without connecting to the main quest.
|
|||
|
|
|
|||
|
|
**Clade-Responsive Design:**
|
|||
|
|
Dungeon architecture reflects who built it. Mustelid tunnels are tight (Large PCs
|
|||
|
|
squeeze). Ursid ruins are vast (Small PCs feel exposed). Cervid-built spaces have
|
|||
|
|
high ceilings and wide corridors. Bovid structures are reinforced, heavy, low. This
|
|||
|
|
isn't decoration — it affects traversal mechanics and forces PCs to engage with the
|
|||
|
|
body-diversity premise of the world.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## LAYER 6: NARRATIVE ANCHOR SYSTEM
|
|||
|
|
|
|||
|
|
### The Problem
|
|||
|
|
|
|||
|
|
The main quest (The Reckoning of Mouths) has fixed story beats that expect specific
|
|||
|
|
locations: Millhaven, Thornfield, Fort Dustwall, The Tangles, Sanctum Fidelis,
|
|||
|
|
Heartstone. But the world is procedurally generated. How do we guarantee the story
|
|||
|
|
works while the map changes?
|
|||
|
|
|
|||
|
|
### The Solution: Narrative Anchors
|
|||
|
|
|
|||
|
|
**Narrative Anchors** are abstract requirements that the settlement placement system
|
|||
|
|
must satisfy. They are NOT fixed coordinates — they are constraints.
|
|||
|
|
|
|||
|
|
| Anchor | Requirements | Assigned To |
|
|||
|
|
|--------|-------------|-------------|
|
|||
|
|
| MILLHAVEN | Tier 3 town. Eastern Temperate Forest. On a river. 1–2 day travel from nearest Tier 2. Rural, agricultural, multi-Clade but Canid-leaning. | Act I start |
|
|||
|
|
| THORNFIELD | Tier 2 city. Eastern Industrial Belt. On a river or rail line. Industrial economy. Dense population. Mustelid-heavy workforce. | Act II (Name 1) |
|
|||
|
|
| FORT_DUSTWALL | Tier 2–3 settlement. Central Grasslands, near border of a Clade-majority zone. Military. On a road, not necessarily rail. Bovid/Cervid region. | Act II (Name 2) |
|
|||
|
|
| THE_TANGLES | Macro-region (not a single settlement). Subtropical Lowlands. Low Covenant enforcement. Contains 2–4 Tier 4 settlements + Thornback Hollow (Tier 4, hybrid community). | Act II (Name 3) |
|
|||
|
|
| SANCTUM_FIDELIS | Tier 1 capital. Central-eastern continent. Major river + rail hub. Maximum multi-Clade diversity. Contains: Fang & Claw Hall, Scent Market district, Hybrid Quarter (The Splits). | Act III |
|
|||
|
|
| HEARTSTONE | Tier 2 city. Western Mountains. High elevation. Ancient architecture. Not on rail (must be reached by road for final leg). Neutral ground. | Act V |
|
|||
|
|
|
|||
|
|
**Placement Priority:**
|
|||
|
|
Narrative Anchors are placed FIRST, before general settlement distribution. The
|
|||
|
|
algorithm:
|
|||
|
|
|
|||
|
|
1. Identify all terrain cells matching each Anchor's requirements.
|
|||
|
|
2. Score matching cells by how well they satisfy requirements.
|
|||
|
|
3. Place Anchors at highest-scoring cells, with minimum-distance constraints between
|
|||
|
|
Anchors (they can't cluster — the story needs continental span).
|
|||
|
|
4. Generate remaining settlements around the Anchors, treating Anchor settlements as
|
|||
|
|
pre-placed nodes in the settlement graph.
|
|||
|
|
|
|||
|
|
**Internal Content:**
|
|||
|
|
Each Anchor settlement has hand-authored internal content (quest-relevant NPCs, specific
|
|||
|
|
buildings, story-critical locations) that generates inside the settlement regardless
|
|||
|
|
of the procedural exterior. The slaughterhouse in Sanctum Fidelis exists every playthrough
|
|||
|
|
— but its address in the city changes. The observatory above Heartstone exists every
|
|||
|
|
playthrough — but which peak it sits on depends on the mountain generation.
|
|||
|
|
|
|||
|
|
Think of it as: **the rooms are authored, but the building's floor plan is generated.**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Quest Path Generation
|
|||
|
|
|
|||
|
|
The main quest requires travel between Anchors. The path the PC takes is generated by
|
|||
|
|
the road/rail network:
|
|||
|
|
|
|||
|
|
1. Act I → Act II: Millhaven to Thornfield (road + possible rail).
|
|||
|
|
2. Act II (open order): Thornfield ↔ Fort Dustwall ↔ The Tangles. Three-hub travel.
|
|||
|
|
Road and rail connections vary per seed. Some playthroughs, Fort Dustwall is a
|
|||
|
|
short rail trip from Thornfield. Others, it's a 4-day overland trek. This variance
|
|||
|
|
is a feature — different playthroughs feel different in pacing and encounter exposure.
|
|||
|
|
3. Act III: Any Hub → Sanctum Fidelis. Rail is likely available for at least part of
|
|||
|
|
this journey.
|
|||
|
|
4. Act IV: Sanctum Fidelis → Heartstone. Cross-continent. This is always a long journey
|
|||
|
|
because Heartstone is in the western mountains and rail doesn't reach it. The "Long
|
|||
|
|
Road West" is long by design — the procedural system guarantees this by placing
|
|||
|
|
Heartstone beyond rail terminus.
|
|||
|
|
5. Act V: Already at Heartstone.
|
|||
|
|
|
|||
|
|
**Travel Events:**
|
|||
|
|
The content the PC encounters between Anchors is procedurally populated from the
|
|||
|
|
encounter system (Layer 5). Each journey segment generates: road encounters, off-road
|
|||
|
|
discoveries, settlement stops (for resupply, side quests, rest), and terrain challenges
|
|||
|
|
(river crossings, mountain passes, weather events).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## LAYER 7: FACTION TERRITORY
|
|||
|
|
|
|||
|
|
### Dynamic Faction Presence
|
|||
|
|
|
|||
|
|
Three factions (Inheritors, Thorn Council, Covenant Enforcers) have procedurally
|
|||
|
|
generated territorial influence:
|
|||
|
|
|
|||
|
|
**Faction Influence Map:**
|
|||
|
|
Each faction has a set of seed points (placed at appropriate settlements and PoIs)
|
|||
|
|
that radiate influence outward, decaying with distance. Influence maps overlay the
|
|||
|
|
world map, creating zones of control:
|
|||
|
|
|
|||
|
|
- **Covenant Enforcers:** Strongest near the capital, Tier 1–2 cities, and military
|
|||
|
|
outposts. Decays toward frontier regions.
|
|||
|
|
- **Inheritors:** Strongest in predator-Clade-majority zones, rural regions, border
|
|||
|
|
territories. Anti-correlated with Covenant enforcement (strong where law is weak).
|
|||
|
|
- **Thorn Council:** Strongest in prey-Clade-majority zones and progressive urban
|
|||
|
|
centers (paradoxically — they recruit from the educated and frightened). Moderate
|
|||
|
|
presence in The Tangles.
|
|||
|
|
|
|||
|
|
**Gameplay Effect:**
|
|||
|
|
- In Enforcer zones: law is present, crimes are investigated, Covenant violations
|
|||
|
|
are prosecuted. Hostile encounters are rarer. Authority can be leveraged.
|
|||
|
|
- In Inheritor zones: predator-Clade NPCs are more aggressive, prey-Clade NPCs are
|
|||
|
|
more fearful, black-market goods are available, Clade-nationalist propaganda is visible.
|
|||
|
|
- In Thorn Council zones: prey-Clade NPCs are organized and suspicious of predators,
|
|||
|
|
hybrid NPCs face extra scrutiny, separatist rhetoric is mainstream.
|
|||
|
|
- In unclaimed zones (frontier, wilderness): no faction dominates. Encounters are
|
|||
|
|
more random, law is self-made, and the PC's Clade identity matters more for
|
|||
|
|
individual interactions.
|
|||
|
|
|
|||
|
|
**Dynamic Shift:**
|
|||
|
|
Faction influence changes based on story progress. After Act II's Fort Dustwall events,
|
|||
|
|
Inheritor influence expands in the central plains (emboldened by the incident). After
|
|||
|
|
Act III's slaughterhouse raid, Enforcer presence tightens in the capital (crackdown).
|
|||
|
|
After Act IV choices, influence maps shift to reflect political outcomes. This gives
|
|||
|
|
the procedural world a sense of responding to the narrative.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## LAYER 8: WEATHER AND SEASONAL SYSTEMS
|
|||
|
|
|
|||
|
|
### Seasonal Cycle
|
|||
|
|
|
|||
|
|
The game spans approximately 3–4 months of in-world time (autumn through early winter).
|
|||
|
|
Seasons affect:
|
|||
|
|
|
|||
|
|
- **Temperature:** northern regions grow colder, travel becomes harder, tundra becomes
|
|||
|
|
impassable by late game. Southern regions remain mild. Clade-specific effects
|
|||
|
|
(Polar Ursid advantage, lion-folk heat lethargy becomes irrelevant in cold).
|
|||
|
|
- **Daylight:** northern regions lose daylight hours, affecting visibility and encounter
|
|||
|
|
types (nocturnal predators more active). Southern regions maintain longer days.
|
|||
|
|
- **Precipitation:** autumn rains swell rivers (crossing difficulty increases), mountain
|
|||
|
|
passes accumulate snow (Act IV's westward journey gets harder as the story progresses —
|
|||
|
|
built-in narrative pressure).
|
|||
|
|
- **Shedding cycles:** relevant for thick-coated species. Narrative flavor, minor
|
|||
|
|
mechanical effects (Stealth disadvantage from shed fur trails if not groomed).
|
|||
|
|
- **Antler shed:** Cervid characters experience the 2-month shed window during the
|
|||
|
|
game timeline. Mechanical impact per species rules.
|
|||
|
|
|
|||
|
|
### Weather Generation
|
|||
|
|
|
|||
|
|
Daily weather generated per region using Markov chains seeded by season and biome:
|
|||
|
|
|
|||
|
|
| Biome | Autumn Weather Probabilities |
|
|||
|
|
|-------|------------------------------|
|
|||
|
|
| Temperate Forest | Clear 30%, Overcast 30%, Rain 25%, Storm 10%, Fog 5% |
|
|||
|
|
| Grassland | Clear 40%, Windy 25%, Overcast 20%, Rain 10%, Storm 5% |
|
|||
|
|
| Mountain | Clear 20%, Overcast 20%, Rain 15%, Snow 25%, Storm 15%, Fog 5% |
|
|||
|
|
| Subtropical | Clear 25%, Humid 25%, Rain 30%, Storm 15%, Fog 5% |
|
|||
|
|
| Tundra | Clear 15%, Overcast 20%, Snow 35%, Blizzard 20%, Fog 10% |
|
|||
|
|
|
|||
|
|
Weather affects: visibility, travel speed, encounter rates, scent range (rain
|
|||
|
|
suppresses scent, dry cold amplifies it), and combat conditions (mud, wind, snow).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## LAYER 9: SEED SYSTEM AND REPRODUCIBILITY
|
|||
|
|
|
|||
|
|
### World Seed
|
|||
|
|
|
|||
|
|
A single integer seed generates the entire world deterministically. Same seed = same
|
|||
|
|
world, every time. This allows:
|
|||
|
|
|
|||
|
|
- Sharing seeds between players ("Try seed 47291 — the mountain pass in Act IV is brutal")
|
|||
|
|
- Speedrun consistency (fixed seed category)
|
|||
|
|
- Bug reproduction
|
|||
|
|
- "Daily challenge" seeds
|
|||
|
|
|
|||
|
|
### Seed → Generation Pipeline
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
SEED
|
|||
|
|
│
|
|||
|
|
├─ Terrain Gen (elevation, moisture, temperature)
|
|||
|
|
│ └─ Uses seed directly for noise generation
|
|||
|
|
│
|
|||
|
|
├─ Hydrology (rivers, lakes, coastline)
|
|||
|
|
│ └─ Derived from terrain + seed offset for drainage sources
|
|||
|
|
│
|
|||
|
|
├─ Settlement Placement
|
|||
|
|
│ └─ Narrative Anchors first (deterministic from terrain)
|
|||
|
|
│ └─ General settlements (seed-based selection from scored candidates)
|
|||
|
|
│
|
|||
|
|
├─ Infrastructure (roads, rail, trade)
|
|||
|
|
│ └─ Derived from settlement graph + terrain costs
|
|||
|
|
│
|
|||
|
|
├─ Encounter Distribution
|
|||
|
|
│ └─ Seed-based density + level scaling
|
|||
|
|
│
|
|||
|
|
├─ Dungeon Generation
|
|||
|
|
│ └─ Seed offset per PoI for room selection and population
|
|||
|
|
│
|
|||
|
|
├─ Faction Influence
|
|||
|
|
│ └─ Derived from settlement demographics + seed-based variation
|
|||
|
|
│
|
|||
|
|
└─ Weather
|
|||
|
|
└─ Seed-based Markov chains per region per day
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Performance Budget
|
|||
|
|
|
|||
|
|
World generation should complete in under 60 seconds on target hardware. Heaviest
|
|||
|
|
operations: terrain generation (noise computation), erosion simulation (if included),
|
|||
|
|
and road pathfinding (A* over large graph). All are parallelizable.
|
|||
|
|
|
|||
|
|
**Streaming:** The full continent does not need to be fully detailed at boot. Generate
|
|||
|
|
at low resolution first (macro-regions, Tier 1–2 settlements, rail network), then
|
|||
|
|
detail regions as the player approaches them (Tier 3–5 settlements, encounter
|
|||
|
|
placement, dungeon generation). This amortizes the cost across play sessions.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## SUMMARY: WHAT CHANGES VS. WHAT STAYS
|
|||
|
|
|
|||
|
|
### Always the Same (Authored)
|
|||
|
|
- Continental macro-biome layout (east/west/north/south character)
|
|||
|
|
- Narrative Anchor requirements (Millhaven is always rural eastern forest, etc.)
|
|||
|
|
- Main quest structure (5 acts, same story beats)
|
|||
|
|
- Quest-critical NPC roster and their roles
|
|||
|
|
- Internal content of Anchor settlements (quest buildings, NPCs, events)
|
|||
|
|
- Clade-to-biome affinity rules
|
|||
|
|
- Room templates for dungeons
|
|||
|
|
|
|||
|
|
### Always Different (Procedural)
|
|||
|
|
- Exact coastline, mountain contours, river courses
|
|||
|
|
- Specific placement of all settlements (including Anchors — they move within their
|
|||
|
|
allowed macro-region)
|
|||
|
|
- Road and rail network topology
|
|||
|
|
- Distance and travel time between quest locations
|
|||
|
|
- Overworld encounter content between Anchors
|
|||
|
|
- Dungeon layouts (assembled from templates)
|
|||
|
|
- Settlement demographics (within weighted ranges)
|
|||
|
|
- Weather sequences
|
|||
|
|
- Faction influence boundaries
|
|||
|
|
- Trade route patterns and economic modifiers
|
|||
|
|
- Points of Interest placement and content
|
|||
|
|
|
|||
|
|
### The Player Experience
|
|||
|
|
|
|||
|
|
First playthrough: "I traveled two days by rail from Thornfield to reach the capital,
|
|||
|
|
crossing a river valley full of Cervid farmland."
|
|||
|
|
|
|||
|
|
Second playthrough: "The rail didn't connect Thornfield to the capital this time —
|
|||
|
|
I had to ride overland through a mountain pass I'd never seen before, and got ambushed
|
|||
|
|
by Inheritor scouts in a snowstorm."
|
|||
|
|
|
|||
|
|
Same story. Different world. That's the goal.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*Document Version 1.0 — Theriapolis Procedural World Generation Design*
|
|||
|
|
*Compiled by ENI for LO*
|