Planetary Survey & Site Discovery¶
Founding a colony on a planet is not automatic. A planet's landscape is explored by expedition, and where you settle determines your colony's grid shape, usable slot count, energy baseline, resource access, habitability, and hazard load. Surveying and choosing where to settle is the mandatory first act of founding — and on a freshly-formed or unclaimed world it is a contested race: ownership attaches at the moment of settle, and the first to settle claims the world.
📐 Design-only. The whole survey/site-discovery system is specified here and gated on ADR-0091. No production code exists yet. The grid-shape and citadel-cap consequences live in
citadels.mdand../../SYSTEMS/citadel-grid.md.
Discovery is the mandatory first act¶
Founding a colony requires running the discovery loop: you run a ground expedition, receive a landscape result, and settle on it. There is no zero-effort default colony — the missing exploration beat is now required, not opt-in. To keep "mandatory" from ever hard-blocking a player, the hard-pity floor (below) guarantees the loop can always eventually reach a successful result, and the magnitude is bounded.
📐 Design-only
[P]. Settling requires at least one successful ground expedition result on this planet — an orbital scan triages but cannot settle — so discovery is genuinely mandatory rather than a skippable scan (M36).
Onboarding accommodation¶
A player's first colony runs through the same loop, but comped (colony #1 only, M35), so a newcomer is taught rather than walled:
- The comped first expedition returns a guaranteed-GOOD result (M38): ≥12 slots, decent ceiling, sev-0 hazards, native energy present, ≥1 T1–T2 deposit — structurally good, not faucet-multiplying.
- Expedition cost is waived and the risk roll is forced to SUCCESS for the comped step.
- 2–3 free demo expeditions at zero stakes (M39) teach the re-roll/compare mechanic before the real founding commitment.
- The starter planet's contestable window is suppressed (M40) — it is a sovereign reserved planet
(
reserved_for_player_id), non-snipeable, so a brand-new player cannot be claimed out. - A scripted Survey Officer guides the onboarding loop in v1 (M43 ⚑; ARIA-voiced only post-v1 behind AI-safety sign-off).
- ~5-min TTFC target (M44) + an optional one-click assisted-settle (offered-never-auto; still runs a real expedition, honoring R1).
📐 Design-only. After onboarding completes (the first self-founded colony), the loop runs at full cost, risk, and contestability. The comp teaches the loop before it bites.
The discovery loop¶
arrive → orbital scan → ground expedition(s) → compare → SETTLE (= claim) → Grid Manager
The at-launch expedition model¶
Each expedition generates its result at launch — there are no pre-stored candidate sites and no concept of "the same site" across two runs. Every expedition is a fresh roll. The planet's profile (type, size, characteristic hazard, terrain) weights what the roll is likely to return (M12): a VOLCANIC planet skews toward COMPACT/IRREGULAR shapes and Geothermal energy; a TERRAN planet skews toward SPRAWLING and balanced traits.
The loop is re-roll-until-satisfied: launch → result → ACCEPT (settle on this result's grid) or re-roll (launch another expedition; costs another round of turns + credits). Casuals take the first or second result; min-maxers keep rolling for the best. Only the SETTLED result persists as the colony's grid. Expedition results before settlement are ephemeral — they are not banked long-term per planet per player.
Two-tier information economy¶
📐 Design-only
[P].
| Tier | Cost | Returns |
|---|---|---|
| Orbital Scan | free, instant, repeatable | presents the planet as a rendered continent with candidate spot markers (dots) for the player to select where to dispatch an expedition. Spot markers carry cosmetic/suggestive differentiators — these are presentational only and do not tie to any underlying data. The expedition result is an RNG roll at launch regardless of which spot is chosen. Orbital scan provides the UI dispatch point, not real site data. |
| Ground Expedition | turns + credits [P]; optional short EXPEDITION_DELAY_MINUTES (default 10, env-tunable, not a hard gate) |
a landscape result at-launch: shape, slots, energy, resources, native-life risk, hazards on SUCCESS; banded/uncertain information on PARTIAL; nothing on FAILURE. |
Turns are the primary scarcity lever; the optional real-time delay is decoupled flavor texture. No survey-kit consumable in v1 (M49) — expeditions cost turns + credits only.
Risk and pity¶
📐 Design-only
[P]. The outcome roll is weighted by the planet'sradiation_level, temperature extremes, and the NEW additivenative_lifecolumn (M54 — does not exist in the live codebase today; additive column to add). Hostile worlds are genuinely costlier to explore.
- Outcomes: SUCCESS / PARTIAL / FAILURE. Benign baseline 85 / 12 / 3
[P]; hazard and native-life shift mass toward PARTIAL then FAILURE. - SUCCESS → a complete decision-grade landscape result.
- PARTIAL → banded/uncertain information on grid potential, hazards; deep-only fields undetected.
- FAILURE → turns and credits spent (M19); no usable intel returned. The area was not successfully explored. Nothing is stored.
- Hard pity (M20): K consecutive FAILED expeditions → forced SUCCESS (K = 4–5
[P], ground-tier only, general-population). Anti-lockout; the forced SUCCESS yields only the decision-grade result with no bonus reward. - Native-life encounter (gated by the new
native_lifecolumn): at minimum surfaces indigenous life as a special; at most shifts the outcome to PARTIAL/FAILURE.
Cost, concurrency, and re-rolling¶
📐 Design-only
[P].
- Expeditions launch from a ship in orbit in the planet's sector.
- Per-player global concurrency cap: 3 expeditions in flight
[P](across all planets). - Re-rolling means launching another expedition after receiving a result you do not want to accept. Each re-roll costs the same base expedition price — there is no escalating cost, because there is no "same site" to repeatedly scout. The cost is the competitive stake.
- Onboarding is comped (see above): the first colony's expedition cost is waived.
Three-tier no-dead-end floor (M37): 1. Soft: credits refunded on FAILURE. 2. Hard pity: K consecutive FAILUREs → forced SUCCESS (M20). 3. Rescue charge: stranded-detection one-time emergency comp for new players.
The Expedition Result (Site Intel)¶
📐 Design-only. Delivered as an ephemeral landscape result when the expedition resolves — shown via an
expedition_completeevent (a notification, not a presence requirement; an offline player sees results on next login). Expedition results before settlement are not banked long-term.
| # | Field | Detail |
|---|---|---|
| 1 | Location identity | region name, coords, terrain/landscape type |
| 2 | Grid potential | shape class + usable slot count (exact on SUCCESS, banded on PARTIAL) + starting slots on settle; cell layout stays fogged until placed |
| 3 | Citadel energy source | type + magnitude |
| 4 | Natural resources | site-local deposits + the production multipliers they confer (captured only by the matching economy building on the deposit plot) |
| 5 | Defensibility | terrain modifiers — informational-only in v1 (see defense.md) |
| 6 | Hazards | site-specific ongoing risks |
| 7 | Special features | the wonder tier (deep-intel / rare) — deferred to the post-combat phase |
| 8 | Suitability summary | at-a-glance role tags for fast comparison |
The site-trait system¶
A result's intel is a roll of traits drawn against a point budget (benefits spend, drawbacks refund), each resolving onto a mechanic the game already has. The planet profile weights the roll distribution.
Categories — v1 vs. deferred¶
📐 Design-only.
| Cat | Trait | v1? | Hook |
|---|---|---|---|
| A | Grid Form & Capacity | v1 | shape class × multiplier band → usable slots (see citadels.md) |
| B | Energy Sources | v1 (4 common) | native power supply, a flat early-only baseline (outgrown by a built-out colony's draw; NOT a late-game scaling source — M6) |
| C | Resource Deposits | v1 | per-plot terrain_bonus, capped at the existing 0.30 ceiling (no new faucet — M47); deposit depletion ships v1 |
| F | Habitability & Life-support | v1 | modifies habitability_score (→ max_population, growth) + seeded plot axes |
| G | Hazards & Drawbacks | v1 | one-time clear cost / chronic upkeep tax / stochastic event — the primary live drawback |
| D | Logistics soft-modifiers | deferred | architecture present, content withheld until the combat seam |
| E | Defensibility-as-live-axis | deferred | informational-only until the combat math (T2) ships |
| H | Legendary Wonders | deferred | ≤1/site; held until post-combat; region-rationed when shipped |
Energy sources (v1)¶
📐 Design-only
[P]. Native supply is a flat early-game baseline — eases the early power burden but is outgrown by a built-out colony's draw. ABUNDANT capped flat (M6). Typically ≤1 source per result.
| Source | Mechanic | Native baseline (T1/T2/T3/T4) | Affinity |
|---|---|---|---|
| Geothermal Vents | flat + POWER_PLANT bonus on volcanic/highland | 40 / 120 / 300 / 600 | volcanic, mountainous |
| Tidal Flux | scales with hydro axis | 40 / 110 / 260 / 480 | oceanic |
| Solar Flats | high cap, day/night variance | 50 / 130 / 300 / 560 | desert, barren |
| Wind Corridors | moderate, terrain/season | 30 / 90 / 200 / 380 | ice, arctic, highland |
The rare/legendary sources (Fusion Seam, Aurora Node, Cryo-Thermal, Leyline) ship with the deferred wonder tier.
Magnitude, rarity, and the trait budget¶
📐 Design-only
[P].
| Tier | production_mult add | plot swing | native power | hazard | habitability |
|---|---|---|---|---|---|
| T1 | ±0.05–0.10 | ±1 | ~40 | sev-1 clear-only | ±3–5 |
| T2 | ±0.15–0.20 | ±2–3 | ~120 | sev-2 clear/chronic | ±6–10 |
| T3 | ±0.25–0.30 (capped at the live 0.30) | ±4–6 | ~300 | sev-3 chronic | ±12–18 |
| T4 | 0.30 (no exceed) | large | ~600 | sev-3 chronic/stochastic | ±20+ |
Rarity weights: Common ~62% (T1–T2), Uncommon ~28% (T2–T3), Rare ~10% (T3). Legendary/wonders not rolled in v1.
Every result rolls a trait budget in points — benefits spend, drawbacks refund. Variance is bounded both ways: worst-case stays playable (the floor guarantee), best-case is structural, not faucet-multiplying, so no result is game-winning on economy alone.
Per-planet-type envelope¶
📐 Design-only
[P]. The planet type sets the trait envelope and shape distribution; each expedition rolls within that envelope. On mono-output worlds (VOLCANIC/BARREN), the roll cannot change what you produce — only slots/shape/energy/hazard/habitability.
| Type | Shape weights | Favored energy | Favored deposits | Hazards | Habitability |
|---|---|---|---|---|---|
| VOLCANIC | COMPACT 55 / IRREGULAR 35 / TERRACED 10 | Geothermal | sulfur/fuel, rare-earth — never organics | Magma Surge, Seismic | low |
| OCEANIC | LINEAR 50 / IRREGULAR 35 / COMPACT 15 | Tidal | Hydrocarbon Sea, Delta | Flood, Storm | mid–high |
| DESERT | SPRAWLING 60 / LINEAR 30 / COMPACT 10 | Solar, Wind | Silicate (equip), Deep Ore | Diurnal Swing, Dust Storm | low–mid |
| MOUNTAINOUS | TERRACED 55 / COMPACT 35 / LINEAR 10 | Geothermal, Wind | Rare-Earth (equip), Ore | Seismic, Avalanche | mid; top defensibility (informational) |
| BARREN | IRREGULAR 55 / COMPACT 35 / LINEAR 10 | Solar | Metallic — only equip/fuel | Radiation, Micrometeor | ~0 |
| ICE / ARCTIC | COMPACT 50 / TERRACED 30 / LINEAR 20 | Wind | Ice-Volatiles (fuel) | Permafrost, Blizzard | low–mid |
| JUNGLE / TROPICAL | SPRAWLING 50 / IRREGULAR 40 / TERRACED 10 | Solar | Bio-Luminous, Mycelial | Megafauna (high), Flood | high |
| TERRAN (hub) | SPRAWLING 70 / TERRACED 30 | balanced | balanced | minimal | max — capital hub |
| GAS_GIANT | uncolonizable, no expeditions | — | — | — | — |
| ARTIFICIAL | ENGINEERED 100 | — | engineered | structural decay | engineered |
Compare and settle¶
📐 Design-only.
When you have a successful expedition result you are happy with, the Survey Ledger shows the result alongside any other recent expedition results still available for comparison (before settlement, ephemeral results can be compared across your recent runs). Columns cover usable slots, shape class, energy, sprawl tax, hazard, habitability, production, and (informational only) defensibility.
SETTLE is the commit act and the ownership-claim transaction:
- Consumes the colonization requirements — settling is colonization (the pioneer/founding grant,
or the genesis grant — see
colonization.md). - Claims the world — on a contestable planet, the first valid SETTLE claims ownership and ends the contest (see Contested settle, below).
- Requires a successful ground expedition result on this planet held by your account (M36) — orbital scan alone cannot settle.
- Materializes the citadel grid from the expedition result's rolled landscape, seeded fully
server-side by
structures.py(single writer). - Places L1, reveals the initial tranche; the remainder reveal atomically per upgrade completion
(see
citadels.md). - Marks the planet COLONIZED / Outpost. Other expedition results from other runs are discarded.
- Irreversible — paired with buyable pre-commit certainty (re-rolling until satisfied), the floor guarantee, and an honest guaranteed-max-citadel-level display (C_practical, the achievable floor) so it is weight without gotcha. Abandon-the-whole-planet is the only exit.
After settlement, LAND works and the survey UI yields to the existing Grid Manager.
Contested settle (the claim race)¶
📐 Design-only
[P]. On any contestable world (freshly-formed or existing-unclaimed — M28 RETROACTIVE), ownership attaches at settle, not at formation or genesis-deploy. Until the first valid settle, the planet is in a contestable window: eligible players may run expeditions and race to settle. Onboarding starter planets are exempt (their window is suppressed).
| Rule | v1 behaviour (MAX-RULINGS canonical) |
|---|---|
| Who attaches ownership | the player who commits the first valid SETTLE (atomic CAS) |
| Eligibility | ADR-0056 real-player gates (anti-sybil) + ADR-0088 rep-tier / distance / ≤25%-region budget. No payment gate (M24/M27 CANON) |
| Retroactive scope | existing unclaimed worlds also become contestable (M28 CANON); CAS resolver replaces first-come /claim; additive migration (galaxy is empty pre-launch — no player communications required) |
| Genesis-deployer priority | a deployer gets a settle-only head-start (rivals may still run expeditions during priority): 3h default / 24h for paid subscribers (M23 REVISED CANON, narrow firewall exception) |
| Contest visibility | set by the deployer at genesis-deploy via registration tier (M26b CANON): Clandestine = HIDDEN from formation (rivals must purchase the paid black-market registry-lookup per ADR-0084 to find and contest); Registered/Chartered = visible + free-to-contest immediately from deploy |
| Resolution | atomic first-valid-settle (CAS) — decided by intel speed + turn/credit readiness; no combat interdiction in v1 |
| Loser relief | ZERO (M25 CANON) — the expedition cost is the competitive stake; losing the race is a genuine loss |
| Claim granularity | first settle claims the whole planet; per-site multi-tenancy is deferred |
| Contestable window | planet stays UNSETTLED (fully contestable) indefinitely until the first valid settle (M22 RESOLVED); no LAPSED_DORMANT state, no decay timer; a world unsettled for >24h may receive a cosmetic "dormant" UI label with no state-machine effect |
📐 Design-only. The advanced genesis tier (see
../galaxy/genesis-devices.md) under the at-launch model: advanced-genesis tiers buy a probabilistically better outcome scaling by tier — better planet location (more likely in the habitable zone), larger size, better expedition rolls (weighted toward high-slot/high-habitability outcomes), more resources, higher habitability. Higher tier = higher probability across all these axes; no outcome is guaranteed. The old "free survey of all N sites" framing is MOOT (GAP-2 resolved in ADR-0091).
Exploit guards¶
📐 Design-only
[P].
- Re-rolling is the intended mechanic — every expedition is a fresh roll by design. The anti-exploit is M19 (FAILURE = no intel, costs turns and credits), making blind grinding net-negative.
- Hard pity (M20) limits consecutive failures to K attempts; the forced SUCCESS yields no bonus reward, so the floor cannot be farmed for intel.
- Expeditions grant no standalone reward — no RP/XP/medals/loot; the reward is the information. Remove the CRT +50 RP survey grant (the expedition-as-reward-farming anti-pattern).
- Settle-griefing (a rival cheaply settling purely to deny) is bounded by the ADR-0056/ADR-0088 eligibility gates + the deployer priority window (M23). A spite-settler becomes the real owner (full cost + registration, irreversible, counts against their ≤25% region cap).
- Zero loser relief (M25) means there is no relief-farming vector.
- No relief between ADR-0056 linked accounts (Amendment A to ADR-0056).
Source map¶
| Topic | Path |
|---|---|
| At-launch expedition result + grid bake | services/gameserver/src/services/structures.py |
| Expedition lifecycle | services/gameserver/src/models/ (expeditions — additive table) |
| Contestable window + claim state | services/gameserver/src/models/planet.py (contestable-window / claim-state columns — additive) |
| Expedition/scan/settle/claim endpoints | services/gameserver/src/api/routes/ (orbital-scan, dispatch-expedition, expedition-status, settle-site) |
| Deep-intel tech node | services/gameserver/src/services/tech_tree.py (t.exploration.survey.2 — NEW; do NOT reuse survey.1) |
| Planet-type traits for risk weighting | services/gameserver/src/models/planet.py (radiation_level, temperature, NEW native_life column — M54 additive) |
| ADR-0056 anti-sybil eligibility surface | services/gameserver/src/services/multi_account_detection.py (Amendment A — additive) |
Status: 📐 Design-only — gated on ADR-0091. All numbers flagged
[P]are provisional and not yet ratified.