From 4098e40c8c032c975155af1d2d62ab4417fd9a98 Mon Sep 17 00:00:00 2001 From: Malte Langkabel Date: Fri, 3 Jul 2026 09:44:53 +0200 Subject: [PATCH] Sync progression_design.md with implemented action items Prune completed action items 1-4 and 8 (scrap-from-threat, schematic upgrade and ship level removal, balancing tool cleanup, unlock prerequisites), renumber the remaining three, and update stale cross-references: cite REQ-LOCK-PREREQ and unlock_requires, reflect that REQ-THREAT-SCRAP is now the 1/scrap_per_threat constant, and drop the obsolete level-up wording from the artifact rule. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01DyCu8vwChKMbLJQ3xosYEN --- docs/progression_design.md | 60 ++++++++++++-------------------------- 1 file changed, 18 insertions(+), 42 deletions(-) diff --git a/docs/progression_design.md b/docs/progression_design.md index e528996..518aa02 100644 --- a/docs/progression_design.md +++ b/docs/progression_design.md @@ -153,7 +153,7 @@ supporting different fleet doctrines feel structurally different to build. - **All time scaling lives in the threat rate** — waves get bigger, ships of a given schematic never get individually stronger. There is no ship level dimension: stat formulas are plain values, and per-ship level - scaling (`ship_level_formula`) does not exist (see Action items). Push + scaling does not exist. Push scaling on enemy defence stations is the separate, player-triggered difficulty axis and keeps its level formulas. @@ -169,9 +169,10 @@ supporting different fleet doctrines feel structurally different to build. its materials need can be unlocked alongside it. - **Schematics can require other schematics.** Beyond the station-level gate, a schematic (ship, module, or assembler recipe) may list - prerequisite schematics that must already be unlocked before it enters - the drop pool — e.g. the medium laser requires the small laser; a - future Mk2 requires its base version. Station level gates the earliest + prerequisite schematics (`unlock_requires`, REQ-LOCK-PREREQ) that must + already be unlocked before it enters the drop pool — e.g. the medium + laser requires the small laser; a future Mk2 requires its base version. + Station level gates the earliest *when*; prerequisites gate the *order*, keeping drop offers coherent with what the player already owns. - **No duplicate drops.** Ship and module schematics leave the drop pool @@ -184,8 +185,8 @@ supporting different fleet doctrines feel structurally different to build. tasks), never as free level-ups. - **Artifacts trade power for progress.** Artifact options compete with schematic picks in the same choice dialog; the artifact chance must be - tuned so that taking one is a real decision (giving up a level-up or - unlock), not automatic in either direction. + tuned so that taking one is a real decision (giving up an unlock), not + automatic in either direction. ## Scrap & reprocessing economy @@ -206,8 +207,8 @@ supporting different fleet doctrines feel structurally different to build. the exception: they keep authored `scrap_drop_formula`s, because pushing rewards are tuned independently of ship production costs. - Consequence: the threat value of scrap is the constant - `1 / scrap_per_threat`. The min-`scrap_drop` schematic derivation - (REQ-THREAT-SCRAP) and its potential circularity disappear. + `1 / scrap_per_threat` (REQ-THREAT-SCRAP). The former min-`scrap_drop` + schematic derivation and its potential circularity are gone. - **Rule:** the late-game input's income rate meaningfully gates capital production — unlocking a capital hull must not mean spamming it; the input trickles in slowly enough that every capital ship is a noticeable @@ -272,47 +273,22 @@ Constraints that every recipe must respect, independent of tuning: ## Action items — changes beyond this document Agreed changes that require edits to `requirements.md`, the code, and the -configs: +configs. Completed items are removed from this list (their outcomes live +in `requirements.md` and the git history). Still open: -1. **Derive ship scrap from threat.** Add `scrap_per_threat` to - `world.toml`; remove `[ship.loot].scrap_drop` from `ships.toml`; update - REQ-RES-SCRAP-DROP; replace REQ-THREAT-SCRAP with the constant - `1 / scrap_per_threat`. Station `scrap_drop_formula`s stay. -2. **Remove schematic upgrades.** Owned ship/module schematics leave the - drop pool (REQ-DEF-SCHEMATIC-DROP); drop the new-unlock/level-up - annotation from the choice dialog; remove `player_production_level` - from `ships.toml`, `modules.toml`, and the code paths that increment - and evaluate it (REQ-BLD-SHIPYARD, REQ-MOD-CONFIG). -3. **Remove ship levels entirely.** Delete `ship_level_formula` - (REQ-WAV-SHIP-LEVEL); replace all stat formulas in `ships.toml` and - `modules.toml` with plain values (REQ-SHP-STATS, REQ-MOD-CONFIG, - REQ-MOD-STAT-CALC evaluation rules). Enemy defence stations keep their - station-level formulas — push scaling is unaffected. -4. **Balancing tool follow-up.** Remove the per-ship-entry `level` from - `balancing.toml` and the `L` display format (REQ-BAL-TEAM, - REQ-BAL-CONFIG-GAME, REQ-BAL-UI-WIDGET, REQ-BAL-UI-INSPECT-WINDOW); - station entries keep their level. Ship stats panels no longer evaluate - at a level (REQ-MOD-UI-STATS-PANEL, REQ-UI-SHIP-STATS-PANEL). -5. **Fill unfillable schematic slots with artifacts.** With duplicates +1. **Fill unfillable schematic slots with artifacts.** With duplicates removed, the schematic drop pool can run dry — previously unreachable. Decision: every slot in the choice dialog that cannot be filled with a schematic because the eligible pool is exhausted is filled with an artifact option instead (in addition to any artifact option granted by the regular artifact roll). A push therefore always awards a full dialog. Update REQ-DEF-SCHEMATIC-DROP. -6. **Confirm wave scaling carries alone.** With per-ship level scaling - gone, `threat_rate_formula` is the only time-scaling axis; verify the - current `world.toml` values still produce the intended difficulty - curve (the config reportedly already runs with a flat ship level, so - this is likely a review, not a retune). -7. **Gate shortcut-recipe drops on their inputs.** Extend the assembler +2. **Confirm wave scaling carries alone.** With per-ship level scaling + removed, `threat_rate_formula` is the only time-scaling axis; verify + the current `world.toml` values still produce the intended difficulty + curve (likely a review, not a retune, since the config already ran + with a flat ship level before the removal). +3. **Gate shortcut-recipe drops on their inputs.** Extend the assembler recipe schematic pool eligibility in REQ-DEF-SCHEMATIC-DROP: in addition to the existing station-level and output-item checks, all of the recipe's input item types must be implicitly unlocked as well. -8. **Schematic prerequisites.** Add an optional prerequisite list to - ship, module, and assembler recipe schematic entries (e.g. - `unlock_requires = ["laser_cannon_s"]`): a schematic enters the drop - pool only when every listed schematic is already unlocked, in addition - to the station-level check. Update REQ-DEF-SCHEMATIC-DROP and - REQ-LOCK-EXPLICIT. This is also the mechanism the future Mk2 design - builds on (`*_mk2` requires the base schematic).