05 Procedural Generation¶
Document Type: Design Document Last Updated: 2026-08-26 Vault destination:
06_Outpost
Summary¶
All outpost structures are procedurally generated from a seed at the time the player selects their outpost type and level. The seed determines everything — surface layout, building shapes and positions, storey arenas, underground corridor routes, power core location, salvageable object placement, alien nest locations, and hazard placement. Once generated, an outpost's seed is fixed. Players interact with the same outpost across all sessions until it is cleared or abandoned.
Secondary purpose: This system also serves as a practical development sandbox for learning seed-based procedural world generation, with learnings feeding directly into a separate project.
Seed System¶
Seed Assignment¶
- Each outpost is assigned a seed at generation time
- Seed is stored with the player's outpost save data
- The same seed always produces the same outpost — deterministic
- Player can choose outpost type and level; the seed is generated from those inputs plus a random component
What the Seed Determines¶
| Element | Seeded |
|---|---|
| Surface layout and shape | Yes |
| Number and placement of buildings | Yes |
| Building shapes (footprint, height, storey count) | Yes |
| Underground corridor routes | Yes |
| Power core location | Yes |
| Salvage resource scatter (surface) | Yes |
| Storey arena layout (walls, platforms, chokepoints) | Yes |
| Salvageable environmental objects per storey | Yes |
| Alien nest locations | Yes |
| Passive hazard positions | Yes |
| Wave composition per storey | Yes |
| Storey completion trigger location | Yes |
Outpost Surface¶
The surface is the top-level view of the outpost — an open platform in space. Generation produces:
- A bounded irregular platform shape (not a perfect rectangle — edges, gaps, jutting sections)
- Building footprints placed across the surface with traversal paths between them
- One-time salvage resource nodes scattered in open areas — broken crates, abandoned equipment, debris
- Entry points to the underground at key locations between buildings
- Visual identity markers consistent with outpost type (raw resource outposts look different from component outposts)
Surface traversal: Genesis moves between buildings and underground entries on the surface. No enemies spawn on the surface after initial outpost generation (surface may have light hazards on first visit only).
Underground Layer¶
The underground is a network of corridors connecting all buildings and the power core location.
Generation Rules¶
- Corridors follow the surface building positions — underground mirrors surface layout loosely
- At least one viable route exists between every building and the power core
- Some corridors are direct, some are indirect with branches
- Dead ends exist and contain salvage or environmental detail
- Corridor width varies — some sections are tight chokepoints, others are open chambers
Underground Contents (Seeded)¶
- Enemy positions (one-time clear — no respawn after cleared)
- Transmission line route options (player chooses which route to lay cable along)
- Relay station anchor points — fixed positions where Genesis can install relays
- Environmental hazards blocking some routes until cleared or bypassed
- Salvage caches in chambers and dead ends
Power Core Location¶
The power core is placed in a chamber somewhere in the underground network. Placement rules: - Never immediately adjacent to an entry point — requires some exploration to find - Accessible from multiple corridor routes (never in a dead end) - Chamber size scales with outpost level — higher level cores have larger, more complex approach chambers - The core chamber has environmental storytelling elements — evidence of what the outpost was and what happened to it
Buildings¶
Building Footprint Generation¶
Each building has a procedurally generated footprint on the surface. Rules: - Footprints are irregular blocky shapes — consistent with Auto Warz voxel-like aesthetic - No two buildings in an outpost are identical - Footprint size loosely corresponds to storey count — larger buildings have more floors - One building per outpost is designated the power building — its footprint contains no resource output, only power infrastructure
Storey Count¶
Storey count per building is seeded within a range: - Raw resource outposts: fewer storeys, wider floors - Component/module outposts: more storeys, narrower floors (vertical complexity increases with abstraction level) - Power building: fixed storey count per outpost level (TBD)
Basement Power Floor¶
Every building has a basement level that is not a TD arena. Generation produces: - Step-down transformer anchor point (player installs transformer here) - Distribution panel positions - Cable routing channels within the basement - Connection point to the underground transmission line
Storey Arena Generation¶
Each storey is a self-contained TD arena. The seed determines:
Layout Elements¶
- Platform shape — irregular, with natural chokepoints and open areas
- Wall segments — partial walls that create cover and routing options for enemies and Genesis
- Elevation changes — some storeys have split levels (enemies must path up ramps or around drops)
- Tower placement zones — valid positions where towers can be placed (not every tile is valid)
- Power routing channels — positions where power conduits can be installed
Salvageable Objects¶
Procedurally placed pre-existing infrastructure that Genesis can repair and integrate: - Old turrets (repair to add to defence without building from scratch) - Damaged relay nodes (repair to extend power grid) - Broken distribution panels (repair to increase storey power budget without full rebuild) - Derelict generators (repair for supplemental local power — less efficient than core transmission)
Alien Nests¶
Some storeys have alien nests seeded into them. Nests: - Placed in corners or recessed areas of the storey - Define the territorial zone for aliens on that storey - Clearing a nest permanently reduces alien presence on that storey - Nest presence is visible to Genesis on storey entry — no hidden surprises
Passive Hazard Positions¶
Hazards are placed in positions that meaningfully constrain tower placement and Genesis movement: - Never placed to completely block all paths (always at least one safe route exists) - Clustered near structurally interesting areas (near power nodes, near nest areas) - Intensity scales with storey number and outpost level
Completion Trigger Location¶
The storey completion trigger (node to activate, zone to hold, etc.) is placed: - At the far end of the storey from the entry point — Genesis must push through - In a position that is defensible but not trivially easy to camp - Consistent with the storey's layout — the trigger feels like it belongs there
Wave Composition (Seeded per Storey)¶
Each storey has a seeded wave composition profile: - Ratio of drones to aliens in waves - Spawn rate (how quickly enemies arrive) - Wave escalation pattern (steady, bursts, slow build) - Whether a storey has a special event wave (higher concentration of one type)
Hazards are environmental and not part of waves — they are always present once the storey is entered.
Procedural Generation for the Other Project¶
This system is intentionally designed as a learning context for seed-based world generation. Key techniques being developed here that transfer directly:
- Seeded random number generators for deterministic output
- Constraint-based placement (ensuring valid paths always exist)
- Layered generation (surface → underground → buildings → storeys — each layer informs the next)
- Seed storage and reproduction (same seed always produces same world)
- Balancing randomness with playability constraints
Learnings and implementation notes from Outpost generation should be documented in 02_Technical Documents as they are developed, tagged for cross-project reference.
Cross-References¶
- Power core integration →
06_Outpost/02_Power Systems.md - Enemy placement and behaviour →
06_Outpost/03_Enemy Design.md - Surface salvage resources →
06_Outpost/04_Progression & Rewards.md
Open items for this document are tracked in docs/open-items.md, area outpost.
Revision History¶
| Version | Date | Notes |
|---|---|---|
| 0.1 | 2026-03-09 | Initial draft from design session |