Files
TheriapolisV3/theriapolis-rpg-procgen.md
T
Christopher Wiebe b451f83174 Initial commit: Theriapolis baseline at port/godot branch point
Captures the pre-Godot-port state of the codebase. This is the rollback
anchor for the Godot port (M0 of theriapolis-rpg-implementation-plan-godot-port.md).
All Phase 0 through Phase 6.5 work is included; Phase 7 is in flight.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-30 20:40:51 -07:00

32 KiB
Raw Blame History

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.71.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.10.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 23 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 LowMed Low Cold
Boreal Forest LowMed Med Cold
Temperate Deciduous LowMed MedHigh Moderate
Temperate Grassland Low LowMed Moderate
Mountain (alpine) High Varies Cold
Mountain (forested) MedHigh MedHigh Moderate
Subtropical Forest LowMed High Warm
Wetland/Swamp Very Low Very High Warm
Coastal Sea Level High Varies
River Valley Low (carved) High Varies
Scrubland LowMed Low WarmModerate
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.5M2.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 (46)

  • 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 13 additional cities for economy/exploration.
  • Population: 30K200K
  • Must be on a river or coast.

Tier 3: Towns (1525)

  • Mid-scoring cells. Regional hubs, market towns, garrison posts.
  • Population: 2K30K
  • 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 (4080)

  • Lower-scoring cells. Farming communities, mining camps, border outposts, waystations.
  • Population: 502K
  • Minimum distance from Tier 3+ settlements, but otherwise distributed by habitability score.

Tier 5: Points of Interest (100200)

  • 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 13 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 13 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 2040% 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 45 locations. Narrow, unpaved. No wagon access.
  • Dirt road: connects Tier 34 locations. Single-width, seasonal mud.
  • Post road: connects Tier 23 locations. Maintained, way-stations every day's travel.
  • Highway: connects Tier 12 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 100200 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 3050 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: 35 rooms, medium: 610, large: 1120).
  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. 12 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 23 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 24 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 12 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 34 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 12 settlements, rail network), then detail regions as the player approaches them (Tier 35 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