From ff60b129cd722af28d66a872cf9e797e3ef95f3e Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 22:32:09 -0400 Subject: [PATCH 01/91] chore: add docs/game-design for vision and mechanics notes --- docs/game-design/README.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/game-design/README.md diff --git a/docs/game-design/README.md b/docs/game-design/README.md new file mode 100644 index 0000000..3884719 --- /dev/null +++ b/docs/game-design/README.md @@ -0,0 +1,5 @@ +# Game design (vision) + +Non-implementation notes: skills, professions, zones, mechanics, items, abilities, and other design artifacts before they are tied to concrete systems or tickets. + +Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). From a8dd1b22cd5a6dfa9e3d9881306a036c2d3f5240 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 22:33:39 -0400 Subject: [PATCH 02/91] chore: add game-design overview as master index --- docs/game-design/README.md | 2 ++ docs/game-design/overview.md | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 docs/game-design/overview.md diff --git a/docs/game-design/README.md b/docs/game-design/README.md index 3884719..36254e2 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -1,5 +1,7 @@ # Game design (vision) +**Master index:** [`overview.md`](overview.md) — summary, artifact table, and links to related docs. + Non-implementation notes: skills, professions, zones, mechanics, items, abilities, and other design artifacts before they are tied to concrete systems or tickets. Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md new file mode 100644 index 0000000..4d98b29 --- /dev/null +++ b/docs/game-design/overview.md @@ -0,0 +1,32 @@ +# Game design overview + +This folder holds **vision-level** design: what we want players to feel, do, and discover before we lock schemas, APIs, or content pipelines. Use it for brainstorming and alignment; when something is ready to drive implementation, it should gain a path in [`docs/decomposition/`](../decomposition/README.md) or [`docs/plans/`](../plans/). + +## Summary + +Neon Sprawl’s design work here starts from **concrete visions** of mechanics, items, abilities, skills, professions, zones, and related systems. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. + +## Artifact index + +| Document | Focus | Notes | +|----------|--------|--------| +| *(add rows as files land)* | | | + +### Planned topics (stubs) + +Link new files here when they exist; remove or rewrite this subsection once the table is populated. + +- **Skills** — progression feel, caps, synergies, failure modes. +- **Professions** — identity, fantasy, how they differ from pure skill bundles. +- **Zones** — tone, danger, travel, faction or economic role. +- **Mechanics** — loops, constraints, what the server vs. client must honor. +- **Items** — categories, rarity philosophy, crafting vs. drops. +- **Abilities** — inputs, timing, combo with items and skills. + +## Related repo docs + +| Area | Location | +|------|----------| +| Module / epic breakdown | [`docs/decomposition/`](../decomposition/README.md) | +| Implementation plans | [`docs/plans/`](../plans/) | +| Architecture | [`docs/architecture/`](../architecture/tech_stack.md) | From afe6eed53c83a157a7c569230e62f918ae61c2ae Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 22:35:58 -0400 Subject: [PATCH 03/91] chore: expand game-design overview planned topic stubs --- docs/game-design/overview.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 4d98b29..41c1aad 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -4,7 +4,7 @@ This folder holds **vision-level** design: what we want players to feel, do, and ## Summary -Neon Sprawl’s design work here starts from **concrete visions** of mechanics, items, abilities, skills, professions, zones, and related systems. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. +Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. ## Artifact index @@ -18,10 +18,22 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Skills** — progression feel, caps, synergies, failure modes. - **Professions** — identity, fantasy, how they differ from pure skill bundles. -- **Zones** — tone, danger, travel, faction or economic role. +- **Zones** — tone, danger, faction or economic role of a place. +- **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. - **Items** — categories, rarity philosophy, crafting vs. drops. - **Abilities** — inputs, timing, combo with items and skills. +- **Gathering & resources** — nodes, competition, exhaustion, what “open world” contesting feels like. +- **Crafting & recipes** — depth vs. breadth, failure, specialization; pairs with items but is its own loop. +- **Economy** — currency velocity, sinks, trade vs. self-sufficiency, how wealth shows up in play. +- **Factions & reputation** — who remembers you, grudges, access gates, story pressure. +- **Combat pillars** — PvE vs. PvP stance, readability, time-to-kill, what “fair” means here. +- **Death, loss & recovery** — stakes on failure, recovery paths, anti-grief boundaries. +- **Risk & security bands** — safe pockets vs. wild space; where optional PvP and theft sit (aligns with security-tier thinking). +- **Social play** — squad scale, corps, trust, betrayal affordances, async cooperation. +- **Encounters & enemy roles** — archetypes, what a fight teaches, variety without noise. +- **Onboarding** — first session hook, clarity vs. mystery, how much systems the new player sees. +- **Tone & narrative** — how lore shows up (quests, environment, UI), voice of the world. ## Related repo docs From 55c4396da7dca6012572cc0a24e8ec73cf7c7b92 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 22:40:46 -0400 Subject: [PATCH 04/91] chore: fold professions into skills stub in game-design overview --- docs/game-design/overview.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 41c1aad..9050eb5 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -16,8 +16,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression Link new files here when they exist; remove or rewrite this subsection once the table is populated. -- **Skills** — progression feel, caps, synergies, failure modes. -- **Professions** — identity, fantasy, how they differ from pure skill bundles. +- **Skills** — the core classless progression: training, caps, synergies, failure modes, skill families in UI/content. *Professions* are optional only if they mean something skills do not (e.g. diegetic titles, faction job routing, starter focus)—otherwise fold “what you are” into the skill graph and reputation, not a separate system. - **Zones** — tone, danger, faction or economic role of a place. - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. From e929f60e8a881c023538abbd331aef7a87165898 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 22:44:10 -0400 Subject: [PATCH 05/91] chore: add game-design skills vision doc --- docs/game-design/overview.md | 3 +- docs/game-design/skills.md | 80 ++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 docs/game-design/skills.md diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 9050eb5..dc6fc47 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -10,13 +10,14 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | Document | Focus | Notes | |----------|--------|--------| +| [skills.md](skills.md) | Classless skills, XP, caps, mastery, gates | First vision artifact | | *(add rows as files land)* | | | ### Planned topics (stubs) Link new files here when they exist; remove or rewrite this subsection once the table is populated. -- **Skills** — the core classless progression: training, caps, synergies, failure modes, skill families in UI/content. *Professions* are optional only if they mean something skills do not (e.g. diegetic titles, faction job routing, starter focus)—otherwise fold “what you are” into the skill graph and reputation, not a separate system. +- **Skills** — [skills.md](skills.md): classless progression, training, caps, mastery, gates. *Professions* stay folded into skill graph + reputation unless a future doc defines a non-skill meaning. - **Zones** — tone, danger, faction or economic role of a place. - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md new file mode 100644 index 0000000..36d8385 --- /dev/null +++ b/docs/game-design/skills.md @@ -0,0 +1,80 @@ +# Skills (classless progression) + +Vision-level design for how characters grow without classes or chosen professions. Implementation hooks live in [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4). + +## Design pillar + +- **Any character can train any skill** over time. There is no character-creation lock that forbids a path. +- **Identity is the skill graph**, plus reputation and gear—not a label picked at the start. Optional diegetic titles (NPC reactions, faction jobs) are flavor or routing, not a second progression system (see [overview](overview.md)). +- **Long-term progression should avoid dead-end grinds**: a skill might be slow or costly, but not “mistaken” in the sense of irreversible failure to participate. + +## What counts as a skill + +A **skill** is a persistent, leveled capability that improves through **doing the thing** in the world (gathering, crafting steps, combat with a weapon class, etc.). Abstract “read a book → +XP” can exist later as a *supplement*, not the default fantasy—primary gains should be visible in play. + +Skills are **data-defined** (stable IDs, categories, prerequisites) so content and balance can evolve without redefining the pillar. + +## Categories (families) + +Categories group skills for **UI, tooling, and content** (e.g. *Combat*, *Gathering*, *Craft*, *Social*, *Movement*). They are not classes: they do not restrict what you can raise, only how players browse and how designers tag balance. + +**Open:** initial category list and whether some skills sit in multiple tags. + +## XP and leveling + +- **Server-authoritative** awards (who leveled is not client-decidable). +- **Structured grants**: skill id, amount, source (gather node, recipe, hit/kill, quest payout, etc.) so telemetry and tuning stay honest. +- **Curves are data-driven** per skill or policy; expect iteration on time-to-first meaningful level vs. long tail. + +### Failure and risk + +- **Default bias:** failed attempts can still teach—small XP on failure is acceptable where it reduces feel-bad and matches “practice” fantasy; **no XP** on failure is acceptable where exploits (spam fail) would dominate. Per-activity policy is fine. +- **AFK / automation resistance:** XP sources should tie to validated actions, not passive timers, unless explicitly designed (rest, training dummies with caps, etc.). + +### Runaway mitigation + +- Watch for **one faucet** leveling a skill far ahead of others. Prefer **diminishing returns**, **context modifiers** (harder content pays more), or **soft caps** before hard caps—not a single global solution until live data exists. + +**Open:** whether global daily/weekly XP bands exist for launch, or only per-skill tuning. + +## Prerequisites and gates + +Some skills or tiers may require **UnlockRequirement**-style gates: discovered recipe, faction standing, mentor NPC, item consumed, etc. Gates should **expand the game**, not replicate classes (“only smiths get this” without diegetic reason). + +**Open:** ratio of “open from level 1” vs. “gated by world discovery.” + +## Caps + +- Prefer **soft caps** (slowing gains) over **hard caps** (cannot raise further) unless a hard cap protects PvP or economy integrity. +- If a **maximum skill level** exists per skill, it should be understandable (“master tier”) and leave room for horizontal options (other skills, mastery, gear). + +**Open:** global character-wide cap on “total levels” vs. uncapped breadth with per-skill curves only. + +## Mastery and perks (build expression) + +Raw levels answer **breadth and baseline power**. **Mastery tracks** (later: E2.M3) answer **how** you specialize within a skill: branches, perk unlocks, optional tradeoffs. Perks should **differentiate** without **locking out** the rest of the skill tree for other players—other builds, other branches. + +**Open:** how respec works (cost, time, partial). + +## Pacing and live balance + +Long-term: **pacing policies** and **catch-up** rules (E2.M4) adjust velocity by cohort or season without invalidating skill IDs. Design should assume **tuning will move**; avoid promises like “always 40 hours to max” in player-facing text. + +## Player-facing readability + +- Clear **sources of XP** in feedback (what action moved the bar). +- Skill sheet shows **level, next threshold, and category**; mastery UI can layer on when that system ships. + +## Decisions log + +| Topic | Direction | Status | +|-------|-----------|--------| +| Classless vs. professions | Skills + rep; no separate profession system | Agreed ([overview](overview.md)) | +| Primary XP fantasy | Do the activity | Proposed | +| Failure XP | Per-activity; watch exploits | Open | +| Caps | Prefer soft; hard only if needed | Proposed | +| Mastery | Perks for identity, not class locks | Aligned with E2.M3 | + +## Next artifacts + +When you draft them, link from [overview.md](overview.md): **Abilities** (skill gates, scaling), **Items** (requirements, crafted vs. dropped). From 08673b6e594d423160ed07e587e7003e5c0d5553 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:00:46 -0400 Subject: [PATCH 06/91] chore: document hybrid combat gigs + classless non-combat skills --- docs/game-design/overview.md | 4 +- docs/game-design/skills.md | 97 ++++++++++++++++++------------------ 2 files changed, 50 insertions(+), 51 deletions(-) diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index dc6fc47..cdf1b5b 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -10,14 +10,14 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | Document | Focus | Notes | |----------|--------|--------| -| [skills.md](skills.md) | Classless skills, XP, caps, mastery, gates | First vision artifact | +| [skills.md](skills.md) | Hybrid: combat gigs + classless non-combat skills | First vision artifact | | *(add rows as files land)* | | | ### Planned topics (stubs) Link new files here when they exist; remove or rewrite this subsection once the table is populated. -- **Skills** — [skills.md](skills.md): classless progression, training, caps, mastery, gates. *Professions* stay folded into skill graph + reputation unless a future doc defines a non-skill meaning. +- **Skills & combat gigs** — [skills.md](skills.md): gig-style **combat roles** for grouping; **classless skilling** for gather/craft/etc. *Professions* stay folded into non-combat skills + rep unless a future doc defines a non-skill meaning. - **Zones** — tone, danger, faction or economic role of a place. - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 36d8385..a33eb37 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,80 +1,79 @@ -# Skills (classless progression) +# Skills & combat gigs (hybrid progression) -Vision-level design for how characters grow without classes or chosen professions. Implementation hooks live in [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4). +Vision-level design for how characters grow. **Combat** leans **gig-style** (swap roles for grouping clarity). **Non-combat** stays **classless skilling** (gathering, crafting, and similar loops). [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4) still describes the **skill/XP machinery**; a **combat job layer** may sit beside or above it in data—decomposition should be revisited when this split hardens. -## Design pillar +## Why hybrid -- **Any character can train any skill** over time. There is no character-creation lock that forbids a path. -- **Identity is the skill graph**, plus reputation and gear—not a label picked at the start. Optional diegetic titles (NPC reactions, faction jobs) are flavor or routing, not a second progression system (see [overview](overview.md)). -- **Long-term progression should avoid dead-end grinds**: a skill might be slow or costly, but not “mistaken” in the sense of irreversible failure to participate. +- **Gig-style combat** gives parties a readable answer to “what are you on this run?” without forcing alts. It matches **contracts, loadouts, and corporate muscle** as fantasy. +- **RuneScape-style non-combat** keeps the **economy and crafting** surface wide: anyone can work the world’s jobs over time, and “street doc” can mean high medic craft + rep, not only a combat button pick. -## What counts as a skill +## Combat gigs (roles) -A **skill** is a persistent, leveled capability that improves through **doing the thing** in the world (gathering, crafting steps, combat with a weapon class, etc.). Abstract “read a book → +XP” can exist later as a *supplement*, not the default fantasy—primary gains should be visible in play. +**Gig** (job / role—final name TBD) is the **combat identity** you bring to a fight: ability access, baseline tuning band, and party expectations (tank, support, control, damage, etc.). Gigs are **swapped** under rules TBD—not necessarily mid-fight. -Skills are **data-defined** (stable IDs, categories, prerequisites) so content and balance can evolve without redefining the pillar. +- **Swap constraints** (out of combat only, hub-only, cooldown, consumable, story gate) are a major feel knob: permissive = FF flexibility; strict = sharper commitment per outing. +- **Progression per gig:** separate level/track vs. shared “combat rank” with gig-specific unlocks—**open**; separate tracks support “I main tank but leveled medic for backup” at the cost of more balancing. +- **Mastery/perks** can attach to **gigs** (combat expression) while **non-combat skills** use the same *idea* for craft depth (E2.M3-style), or stay separate—**open**. -## Categories (families) +## Non-combat skills (classless) -Categories group skills for **UI, tooling, and content** (e.g. *Combat*, *Gathering*, *Craft*, *Social*, *Movement*). They are not classes: they do not restrict what you can raise, only how players browse and how designers tag balance. +Everything **outside combat role resolution**—gathering, refining, crafting lines, hacking that isn’t the combat gig, etc.—uses **classless skills**: -**Open:** initial category list and whether some skills sit in multiple tags. +- **Any character can train any non-combat skill** over time (subject to world gates: discovery, rep, licenses—those expand content, they are not “you picked the wrong class”). +- **Identity** for “what you do in the economy” is the **non-combat skill graph + reputation + gear**, not the combat gig you wore last night. +- **Long-term:** avoid dead-end grinds; slow or expensive is fine, “wrong choice forever” is not. -## XP and leveling +### What counts as a non-combat skill -- **Server-authoritative** awards (who leveled is not client-decidable). -- **Structured grants**: skill id, amount, source (gather node, recipe, hit/kill, quest payout, etc.) so telemetry and tuning stay honest. -- **Curves are data-driven** per skill or policy; expect iteration on time-to-first meaningful level vs. long tail. +A **skill** here is a persistent, leveled capability improved primarily by **doing the activity** (chop, refine, assemble, etc.). Supplementary sources (books, training) stay optional. Skills stay **data-defined** (stable IDs, categories, prerequisites). -### Failure and risk +### Categories (families) -- **Default bias:** failed attempts can still teach—small XP on failure is acceptable where it reduces feel-bad and matches “practice” fantasy; **no XP** on failure is acceptable where exploits (spam fail) would dominate. Per-activity policy is fine. -- **AFK / automation resistance:** XP sources should tie to validated actions, not passive timers, unless explicitly designed (rest, training dummies with caps, etc.). +Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech*, *Social*). They are **not** combat gigs and do not replace them. -### Runaway mitigation +### XP, failure, caps, pacing (non-combat) -- Watch for **one faucet** leveling a skill far ahead of others. Prefer **diminishing returns**, **context modifiers** (harder content pays more), or **soft caps** before hard caps—not a single global solution until live data exists. +Same principles as before, scoped to **non-combat** awards: -**Open:** whether global daily/weekly XP bands exist for launch, or only per-skill tuning. +- **Server-authoritative** grants with structured sources (node, recipe, mission payout, …). +- **Failure XP** per activity where it helps fun and not exploits. +- **Runaway mitigation** via diminishing returns, context, soft caps. +- **Gates** (recipes, rep, licenses) should **add** paths, not fake classes. +- **Pacing/catch-up** (E2.M4) applies across non-combat skills; combat gigs may use the same engine or a parallel one—**open**. -## Prerequisites and gates +## Seams (where the two halves meet) -Some skills or tiers may require **UnlockRequirement**-style gates: discovered recipe, faction standing, mentor NPC, item consumed, etc. Gates should **expand the game**, not replicate classes (“only smiths get this” without diegetic reason). +These need crisp answers so players and designers do not argue from different assumptions: -**Open:** ratio of “open from level 1” vs. “gated by world discovery.” - -## Caps - -- Prefer **soft caps** (slowing gains) over **hard caps** (cannot raise further) unless a hard cap protects PvP or economy integrity. -- If a **maximum skill level** exists per skill, it should be understandable (“master tier”) and leave room for horizontal options (other skills, mastery, gear). - -**Open:** global character-wide cap on “total levels” vs. uncapped breadth with per-skill curves only. - -## Mastery and perks (build expression) - -Raw levels answer **breadth and baseline power**. **Mastery tracks** (later: E2.M3) answer **how** you specialize within a skill: branches, perk unlocks, optional tradeoffs. Perks should **differentiate** without **locking out** the rest of the skill tree for other players—other builds, other branches. - -**Open:** how respec works (cost, time, partial). - -## Pacing and live balance - -Long-term: **pacing policies** and **catch-up** rules (E2.M4) adjust velocity by cohort or season without invalidating skill IDs. Design should assume **tuning will move**; avoid promises like “always 40 hours to max” in player-facing text. +| Topic | Question | +|--------|----------| +| **Gear** | Can any gig use any weapon, or do gigs restrict weapon classes? | +| **Crafted combat gear** | Gated by non-combat skill, by gig level, or both? | +| **Consumables** | Usually shared; gig might gate *deployment* (e.g. only medic gig applies this stim at full power). | +| **Rep / story** | Almost always **character-wide**; gigs change how you *express* it in combat. | +| **Alts** | Hybrid should reduce alt pressure; if gig swap is too free, maining “everything” becomes the new problem—tune swap cost or ramp. | ## Player-facing readability -- Clear **sources of XP** in feedback (what action moved the bar). -- Skill sheet shows **level, next threshold, and category**; mastery UI can layer on when that system ships. +- **Combat:** UI shows **active gig**, gig level/track, and combat abilities for that gig. +- **Non-combat:** skill list, XP sources, categories—as today. +- Avoid two different words meaning the same thing (“job” for both gig and trade skill) unless intentional in fiction. ## Decisions log | Topic | Direction | Status | |-------|-----------|--------| -| Classless vs. professions | Skills + rep; no separate profession system | Agreed ([overview](overview.md)) | -| Primary XP fantasy | Do the activity | Proposed | +| Combat vs. non-combat | **Gigs** for combat roles; **classless skills** for gather/craft/etc. | Proposed | +| Classless vs. professions (economy) | No separate profession system; economy identity from skills + rep | Agreed ([overview](overview.md)) | +| Primary non-combat XP | Do the activity | Proposed | | Failure XP | Per-activity; watch exploits | Open | -| Caps | Prefer soft; hard only if needed | Proposed | -| Mastery | Perks for identity, not class locks | Aligned with E2.M3 | +| Non-combat caps | Prefer soft; hard only if economy/PvP needs | Proposed | +| Gig swap rules | — | Open | +| Shared vs. per-gig combat progression | — | Open | +| Epic 2 doc split | Align modules when gig data model is chosen | TBD | ## Next artifacts -When you draft them, link from [overview.md](overview.md): **Abilities** (skill gates, scaling), **Items** (requirements, crafted vs. dropped). +- **Combat gigs** — deeper pass: roster size, swap UX, party finder tags, PvP implications ([overview](overview.md)). +- **Abilities** — which abilities are **gig-locked** vs. **item-locked** vs. **skill-gated** (non-combat). +- **Items** — requirements that reference gig level vs. craft skill. From bb23b155a6f43f954e3c069462e53addb17db036 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:06:10 -0400 Subject: [PATCH 07/91] chore: lock game-design vocabulary (gig vs skill) --- docs/game-design/README.md | 2 +- docs/game-design/overview.md | 8 ++-- docs/game-design/skills.md | 78 ++++++++++++++++++++---------------- 3 files changed, 49 insertions(+), 39 deletions(-) diff --git a/docs/game-design/README.md b/docs/game-design/README.md index 36254e2..5b9086f 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -2,6 +2,6 @@ **Master index:** [`overview.md`](overview.md) — summary, artifact table, and links to related docs. -Non-implementation notes: skills, professions, zones, mechanics, items, abilities, and other design artifacts before they are tied to concrete systems or tickets. +Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), zones, mechanics, items, abilities, and other design artifacts before they are tied to concrete systems or tickets. Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index cdf1b5b..60edbea 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,23 +6,25 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. +**Vocabulary ([skills.md](skills.md)):** **gig** = combat role; **skill** = non-combat trained capability only. + ## Artifact index | Document | Focus | Notes | |----------|--------|--------| -| [skills.md](skills.md) | Hybrid: combat gigs + classless non-combat skills | First vision artifact | +| [skills.md](skills.md) | Gigs (combat) + skills (non-combat); hybrid progression | First vision artifact | | *(add rows as files land)* | | | ### Planned topics (stubs) Link new files here when they exist; remove or rewrite this subsection once the table is populated. -- **Skills & combat gigs** — [skills.md](skills.md): gig-style **combat roles** for grouping; **classless skilling** for gather/craft/etc. *Professions* stay folded into non-combat skills + rep unless a future doc defines a non-skill meaning. +- **Gigs & skills** — [skills.md](skills.md): **gigs** for combat; **skills** (classless) for gather/craft/etc. *Professions* stay folded into **skills** + rep unless a future doc defines something separate. - **Zones** — tone, danger, faction or economic role of a place. - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. - **Items** — categories, rarity philosophy, crafting vs. drops. -- **Abilities** — inputs, timing, combo with items and skills. +- **Abilities** — inputs, timing; combo with items; **gig** vs **skill** gates (see [skills.md](skills.md) vocabulary). - **Gathering & resources** — nodes, competition, exhaustion, what “open world” contesting feels like. - **Crafting & recipes** — depth vs. breadth, failure, specialization; pairs with items but is its own loop. - **Economy** — currency velocity, sinks, trade vs. self-sufficiency, how wealth shows up in play. diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index a33eb37..c9630fb 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,79 +1,87 @@ -# Skills & combat gigs (hybrid progression) +# Gigs & skills (hybrid progression) -Vision-level design for how characters grow. **Combat** leans **gig-style** (swap roles for grouping clarity). **Non-combat** stays **classless skilling** (gathering, crafting, and similar loops). [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4) still describes the **skill/XP machinery**; a **combat job layer** may sit beside or above it in data—decomposition should be revisited when this split hardens. +Vision-level design for how characters grow. **Combat** uses **gigs** (swap roles for grouping clarity). **Non-combat** uses **skills** (gathering, crafting, and similar loops). [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4) still describes **skill** XP machinery; a **gig** progression layer may sit beside or above it in data—decomposition should be revisited when this split hardens. + +## Vocabulary + +From here on in game-design docs: + +| Term | Means | +|------|--------| +| **Gig** | The **combat role** (combat “class”): what you bring to a fight—kit, tuning band, party expectations. Not used for crafting or gathering. | +| **Skill** | A **non-combat** trained capability only (gather, craft, etc.). Never used to mean the combat gig. | + +Fiction and UI may still say *job*, *contract*, or *loadout* in dialogue; design vocabulary stays **gig** / **skill** to avoid ambiguity. ## Why hybrid -- **Gig-style combat** gives parties a readable answer to “what are you on this run?” without forcing alts. It matches **contracts, loadouts, and corporate muscle** as fantasy. -- **RuneScape-style non-combat** keeps the **economy and crafting** surface wide: anyone can work the world’s jobs over time, and “street doc” can mean high medic craft + rep, not only a combat button pick. +- **Gigs** give parties a readable answer to “what are you on this run?” without forcing alts. They match **contracts, loadouts, and corporate muscle** as fantasy. +- **Skills** keep the **economy and crafting** surface wide: anyone can work those capabilities over time, and “street doc” can mean high medic **craft skill** + rep, not only an active gig. -## Combat gigs (roles) +## Gigs (combat) -**Gig** (job / role—final name TBD) is the **combat identity** you bring to a fight: ability access, baseline tuning band, and party expectations (tank, support, control, damage, etc.). Gigs are **swapped** under rules TBD—not necessarily mid-fight. +A **gig** is the **combat identity** you bring to a fight: ability access, baseline tuning band, and party expectations (tank, support, control, damage, etc.). Gigs are **swapped** under rules TBD—not necessarily mid-fight. -- **Swap constraints** (out of combat only, hub-only, cooldown, consumable, story gate) are a major feel knob: permissive = FF flexibility; strict = sharper commitment per outing. +- **Swap constraints** (out of combat only, hub-only, cooldown, consumable, story gate) are a major feel knob: permissive = high flexibility; strict = sharper commitment per outing. - **Progression per gig:** separate level/track vs. shared “combat rank” with gig-specific unlocks—**open**; separate tracks support “I main tank but leveled medic for backup” at the cost of more balancing. -- **Mastery/perks** can attach to **gigs** (combat expression) while **non-combat skills** use the same *idea* for craft depth (E2.M3-style), or stay separate—**open**. +- **Mastery/perks** can attach to **gigs** (combat expression) while **skills** use the same *idea* for craft depth (E2.M3-style), or stay separate—**open**. -## Non-combat skills (classless) +## Skills (non-combat, classless) -Everything **outside combat role resolution**—gathering, refining, crafting lines, hacking that isn’t the combat gig, etc.—uses **classless skills**: +Everything **outside combat role resolution**—gathering, refining, crafting lines, non-combat tech, etc.—uses **skills**: -- **Any character can train any non-combat skill** over time (subject to world gates: discovery, rep, licenses—those expand content, they are not “you picked the wrong class”). -- **Identity** for “what you do in the economy” is the **non-combat skill graph + reputation + gear**, not the combat gig you wore last night. +- **Any character can train any skill** over time (subject to world gates: discovery, rep, licenses—those expand content, they are not “you picked the wrong gig”). +- **Identity** for “what you do in the economy” is the **skill graph + reputation + gear**, not the gig you ran last night. - **Long-term:** avoid dead-end grinds; slow or expensive is fine, “wrong choice forever” is not. -### What counts as a non-combat skill +### What counts as a skill -A **skill** here is a persistent, leveled capability improved primarily by **doing the activity** (chop, refine, assemble, etc.). Supplementary sources (books, training) stay optional. Skills stay **data-defined** (stable IDs, categories, prerequisites). +A **skill** is a persistent, leveled capability improved primarily by **doing the activity** (chop, refine, assemble, etc.). Supplementary sources (books, training) stay optional. Skills stay **data-defined** (stable IDs, categories, prerequisites). ### Categories (families) -Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech*, *Social*). They are **not** combat gigs and do not replace them. +Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech*, *Social*). They are **not** gigs and do not replace them. -### XP, failure, caps, pacing (non-combat) - -Same principles as before, scoped to **non-combat** awards: +### XP, failure, caps, pacing (skills) - **Server-authoritative** grants with structured sources (node, recipe, mission payout, …). - **Failure XP** per activity where it helps fun and not exploits. - **Runaway mitigation** via diminishing returns, context, soft caps. -- **Gates** (recipes, rep, licenses) should **add** paths, not fake classes. -- **Pacing/catch-up** (E2.M4) applies across non-combat skills; combat gigs may use the same engine or a parallel one—**open**. +- **Gates** (recipes, rep, licenses) should **add** paths, not fake gigs. +- **Pacing/catch-up** (E2.M4) applies across **skills**; **gigs** may use the same engine or a parallel one—**open**. -## Seams (where the two halves meet) - -These need crisp answers so players and designers do not argue from different assumptions: +## Seams (gigs ↔ skills) | Topic | Question | |--------|----------| | **Gear** | Can any gig use any weapon, or do gigs restrict weapon classes? | -| **Crafted combat gear** | Gated by non-combat skill, by gig level, or both? | -| **Consumables** | Usually shared; gig might gate *deployment* (e.g. only medic gig applies this stim at full power). | +| **Crafted combat gear** | Gated by **skill**, by **gig** level, or both? | +| **Consumables** | Usually shared; a gig might gate *deployment* (e.g. only medic gig applies this stim at full power). | | **Rep / story** | Almost always **character-wide**; gigs change how you *express* it in combat. | -| **Alts** | Hybrid should reduce alt pressure; if gig swap is too free, maining “everything” becomes the new problem—tune swap cost or ramp. | +| **Alts** | Hybrid should reduce alt pressure; if gig swap is too free, maining every gig becomes the new problem—tune swap cost or ramp. | ## Player-facing readability - **Combat:** UI shows **active gig**, gig level/track, and combat abilities for that gig. -- **Non-combat:** skill list, XP sources, categories—as today. -- Avoid two different words meaning the same thing (“job” for both gig and trade skill) unless intentional in fiction. +- **Non-combat:** **skill** list, XP sources, categories. +- Use **gig** / **skill** consistently in specs and tools; flavor text can vary. ## Decisions log | Topic | Direction | Status | |-------|-----------|--------| -| Combat vs. non-combat | **Gigs** for combat roles; **classless skills** for gather/craft/etc. | Proposed | -| Classless vs. professions (economy) | No separate profession system; economy identity from skills + rep | Agreed ([overview](overview.md)) | -| Primary non-combat XP | Do the activity | Proposed | +| Vocabulary | **Gig** = combat role; **skill** = non-combat only | Agreed | +| Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Proposed | +| Professions (economy) | No separate profession system; economy identity from **skills** + rep | Agreed ([overview](overview.md)) | +| Primary skill XP | Do the activity | Proposed | | Failure XP | Per-activity; watch exploits | Open | -| Non-combat caps | Prefer soft; hard only if economy/PvP needs | Proposed | +| Skill caps | Prefer soft; hard only if economy/PvP needs | Proposed | | Gig swap rules | — | Open | | Shared vs. per-gig combat progression | — | Open | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | ## Next artifacts -- **Combat gigs** — deeper pass: roster size, swap UX, party finder tags, PvP implications ([overview](overview.md)). -- **Abilities** — which abilities are **gig-locked** vs. **item-locked** vs. **skill-gated** (non-combat). -- **Items** — requirements that reference gig level vs. craft skill. +- **Gigs** — roster size, swap UX, party finder tags, PvP ([overview](overview.md)). +- **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. +- **Items** — requirements: **gig** level vs. **skill** level. From 36533a5f98b861c6e8d102e9f175a99e27e3e403 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:07:58 -0400 Subject: [PATCH 08/91] =?UTF-8?q?chore:=20seam=20decision=20=E2=80=94=20co?= =?UTF-8?q?mbat=20gear=20is=20gig-restricted?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/game-design/skills.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index c9630fb..37889b9 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -52,17 +52,17 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech ## Seams (gigs ↔ skills) -| Topic | Question | -|--------|----------| -| **Gear** | Can any gig use any weapon, or do gigs restrict weapon classes? | -| **Crafted combat gear** | Gated by **skill**, by **gig** level, or both? | -| **Consumables** | Usually shared; a gig might gate *deployment* (e.g. only medic gig applies this stim at full power). | +| Topic | Direction | +|--------|-----------| +| **Combat gear** | **Gig-restricted.** Weapons, armor, and other combat-loadout pieces declare which **gig(s)** may equip or fully activate them. A gig swap implies a **combat loadout change** (how automatic vs. manual is tied to [gig swap rules](#gigs-combat)—TBD). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. | +| **Crafting combat gear** | **Open.** Who can *build* it: **skill** thresholds (e.g. gunsmith), **gig** level, rep, discovery—often **skill + recipe**, with the item still **equip-locked by gig** as above. | +| **Consumables** | Usually shared inventory; **combat effect** may still be gig-gated (e.g. only medic gig gets full potency from a stim). | | **Rep / story** | Almost always **character-wide**; gigs change how you *express* it in combat. | | **Alts** | Hybrid should reduce alt pressure; if gig swap is too free, maining every gig becomes the new problem—tune swap cost or ramp. | ## Player-facing readability -- **Combat:** UI shows **active gig**, gig level/track, and combat abilities for that gig. +- **Combat:** UI shows **active gig**, gig level/track, combat abilities, and **combat gear** the gig can use (mismatched gear disabled or greyed). - **Non-combat:** **skill** list, XP sources, categories. - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. @@ -71,6 +71,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Topic | Direction | Status | |-------|-----------|--------| | Vocabulary | **Gig** = combat role; **skill** = non-combat only | Agreed | +| Combat gear | **Gig-restricted** equip/activation; non-combat tools **skill**-gated | Agreed | | Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Proposed | | Professions (economy) | No separate profession system; economy identity from **skills** + rep | Agreed ([overview](overview.md)) | | Primary skill XP | Do the activity | Proposed | From a855551a6b9f484f793597fb105497f5b84c78ef Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:10:49 -0400 Subject: [PATCH 09/91] chore: combat gear crafting has no gig dependency --- docs/game-design/skills.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 37889b9..d5c4f37 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -55,7 +55,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Topic | Direction | |--------|-----------| | **Combat gear** | **Gig-restricted.** Weapons, armor, and other combat-loadout pieces declare which **gig(s)** may equip or fully activate them. A gig swap implies a **combat loadout change** (how automatic vs. manual is tied to [gig swap rules](#gigs-combat)—TBD). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. | -| **Crafting combat gear** | **Open.** Who can *build* it: **skill** thresholds (e.g. gunsmith), **gig** level, rep, discovery—often **skill + recipe**, with the item still **equip-locked by gig** as above. | +| **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. gunsmith), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | | **Consumables** | Usually shared inventory; **combat effect** may still be gig-gated (e.g. only medic gig gets full potency from a stim). | | **Rep / story** | Almost always **character-wide**; gigs change how you *express* it in combat. | | **Alts** | Hybrid should reduce alt pressure; if gig swap is too free, maining every gig becomes the new problem—tune swap cost or ramp. | @@ -63,7 +63,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech ## Player-facing readability - **Combat:** UI shows **active gig**, gig level/track, combat abilities, and **combat gear** the gig can use (mismatched gear disabled or greyed). -- **Non-combat:** **skill** list, XP sources, categories. +- **Non-combat / crafting:** **skill** list, XP sources, categories; crafting combat gear does **not** hide recipes behind gigs—only **skill**/recipe gates (optional UI hint if the product is unequippable for your current gig). - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. ## Decisions log @@ -72,6 +72,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech |-------|-----------|--------| | Vocabulary | **Gig** = combat role; **skill** = non-combat only | Agreed | | Combat gear | **Gig-restricted** equip/activation; non-combat tools **skill**-gated | Agreed | +| Crafting combat gear | **Skill**/recipe/rep (etc.) only—**not** gig or gig level; craft-for-others OK | Agreed | | Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Proposed | | Professions (economy) | No separate profession system; economy identity from **skills** + rep | Agreed ([overview](overview.md)) | | Primary skill XP | Do the activity | Proposed | @@ -85,4 +86,4 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech - **Gigs** — roster size, swap UX, party finder tags, PvP ([overview](overview.md)). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. -- **Items** — requirements: **gig** level vs. **skill** level. +- **Items** — **equip:** gig rules; **craft:** **skills** (and recipe/rep), never gig level. From 3d3de5b85e5280f8e2ec3b82d0cadf5ebda95604 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:12:26 -0400 Subject: [PATCH 10/91] chore: agree consumables baseline + gig amplification seam --- docs/game-design/skills.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index d5c4f37..d303681 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -56,13 +56,13 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech |--------|-----------| | **Combat gear** | **Gig-restricted.** Weapons, armor, and other combat-loadout pieces declare which **gig(s)** may equip or fully activate them. A gig swap implies a **combat loadout change** (how automatic vs. manual is tied to [gig swap rules](#gigs-combat)—TBD). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. | | **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. gunsmith), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | -| **Consumables** | Usually shared inventory; **combat effect** may still be gig-gated (e.g. only medic gig gets full potency from a stim). | +| **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Potency can scale with gig:** e.g. a **medic** (or medic-adjacent gig) gets **bonus healing / duration / cleanse** from the same med consumable that others use at a **baseline**. Other consumables may have **no** gig hook, or hooks for other gigs—data-driven per item. | | **Rep / story** | Almost always **character-wide**; gigs change how you *express* it in combat. | | **Alts** | Hybrid should reduce alt pressure; if gig swap is too free, maining every gig becomes the new problem—tune swap cost or ramp. | ## Player-facing readability -- **Combat:** UI shows **active gig**, gig level/track, combat abilities, and **combat gear** the gig can use (mismatched gear disabled or greyed). +- **Combat:** UI shows **active gig**, gig level/track, combat abilities, and **combat gear** the gig can use (mismatched gear disabled or greyed). Consumable tooltips can show **baseline vs. boosted** values when the active gig gets an amplification. - **Non-combat / crafting:** **skill** list, XP sources, categories; crafting combat gear does **not** hide recipes behind gigs—only **skill**/recipe gates (optional UI hint if the product is unequippable for your current gig). - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. @@ -73,6 +73,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Vocabulary | **Gig** = combat role; **skill** = non-combat only | Agreed | | Combat gear | **Gig-restricted** equip/activation; non-combat tools **skill**-gated | Agreed | | Crafting combat gear | **Skill**/recipe/rep (etc.) only—**not** gig or gig level; craft-for-others OK | Agreed | +| Consumables | Baseline for all; **gig can amplify** (e.g. medic + healing consumable) | Agreed | | Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Proposed | | Professions (economy) | No separate profession system; economy identity from **skills** + rep | Agreed ([overview](overview.md)) | | Primary skill XP | Do the activity | Proposed | From db452e9c564f7b72c73f1f5369cc7515dda58706 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:13:48 -0400 Subject: [PATCH 11/91] chore: rep character-wide, gig-scoped storylines and main quests --- docs/game-design/overview.md | 2 +- docs/game-design/skills.md | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 60edbea..94a6a7a 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -28,7 +28,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Gathering & resources** — nodes, competition, exhaustion, what “open world” contesting feels like. - **Crafting & recipes** — depth vs. breadth, failure, specialization; pairs with items but is its own loop. - **Economy** — currency velocity, sinks, trade vs. self-sufficiency, how wealth shows up in play. -- **Factions & reputation** — who remembers you, grudges, access gates, story pressure. +- **Factions & reputation** — who remembers you, grudges, access gates; **gig** story arcs are scoped in [skills.md](skills.md) seams. - **Combat pillars** — PvE vs. PvP stance, readability, time-to-kill, what “fair” means here. - **Death, loss & recovery** — stakes on failure, recovery paths, anti-grief boundaries. - **Risk & security bands** — safe pockets vs. wild space; where optional PvP and theft sit (aligns with security-tier thinking). diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index d303681..985c026 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -57,13 +57,14 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | **Combat gear** | **Gig-restricted.** Weapons, armor, and other combat-loadout pieces declare which **gig(s)** may equip or fully activate them. A gig swap implies a **combat loadout change** (how automatic vs. manual is tied to [gig swap rules](#gigs-combat)—TBD). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. | | **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. gunsmith), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | | **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Potency can scale with gig:** e.g. a **medic** (or medic-adjacent gig) gets **bonus healing / duration / cleanse** from the same med consumable that others use at a **baseline**. Other consumables may have **no** gig hook, or hooks for other gigs—data-driven per item. | -| **Rep / story** | Almost always **character-wide**; gigs change how you *express* it in combat. | +| **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | | **Alts** | Hybrid should reduce alt pressure; if gig swap is too free, maining every gig becomes the new problem—tune swap cost or ramp. | ## Player-facing readability - **Combat:** UI shows **active gig**, gig level/track, combat abilities, and **combat gear** the gig can use (mismatched gear disabled or greyed). Consumable tooltips can show **baseline vs. boosted** values when the active gig gets an amplification. - **Non-combat / crafting:** **skill** list, XP sources, categories; crafting combat gear does **not** hide recipes behind gigs—only **skill**/recipe gates (optional UI hint if the product is unequippable for your current gig). +- **Story:** journal or quest UI can separate **character / faction** threads from **gig** threads so players see which arc belongs to which gig. - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. ## Decisions log @@ -74,6 +75,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Combat gear | **Gig-restricted** equip/activation; non-combat tools **skill**-gated | Agreed | | Crafting combat gear | **Skill**/recipe/rep (etc.) only—**not** gig or gig level; craft-for-others OK | Agreed | | Consumables | Baseline for all; **gig can amplify** (e.g. medic + healing consumable) | Agreed | +| Rep / story | Character-wide **rep**; **gig**-scoped **storylines** and **main quests** (per-gig progress on one avatar) | Agreed | | Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Proposed | | Professions (economy) | No separate profession system; economy identity from **skills** + rep | Agreed ([overview](overview.md)) | | Primary skill XP | Do the activity | Proposed | From f41426cdeed778bec1096610cc77b915fb4ab280 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:16:35 -0400 Subject: [PATCH 12/91] chore: multi-gig mastery OK; time-gated by slow gig leveling --- docs/game-design/skills.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 985c026..717ab12 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -58,7 +58,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. gunsmith), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | | **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Potency can scale with gig:** e.g. a **medic** (or medic-adjacent gig) gets **bonus healing / duration / cleanse** from the same med consumable that others use at a **baseline**. Other consumables may have **no** gig hook, or hooks for other gigs—data-driven per item. | | **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | -| **Alts** | Hybrid should reduce alt pressure; if gig swap is too free, maining every gig becomes the new problem—tune swap cost or ramp. | +| **Alts / multi-gig mastery** | One avatar still reduces **alt** pressure for economy and story. **Maining every gig** is **not** a design problem for now: **gig leveling is intentionally slow**, so fully progressing (or “maxing”) every gig is a **long-term time investment**, not something handed out quickly. Players who put in that time **may** legitimately be strong in every gig on one character. **Revisit** only if pacing, live balance, or PvP show harm. | ## Player-facing readability @@ -76,6 +76,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Crafting combat gear | **Skill**/recipe/rep (etc.) only—**not** gig or gig level; craft-for-others OK | Agreed | | Consumables | Baseline for all; **gig can amplify** (e.g. medic + healing consumable) | Agreed | | Rep / story | Character-wide **rep**; **gig**-scoped **storylines** and **main quests** (per-gig progress on one avatar) | Agreed | +| Multi-gig mastery | **OK for now**; slow gig leveling makes “all gigs” a **time** goal, not a loophole | Agreed (revisit if balance/PvP needs) | | Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Proposed | | Professions (economy) | No separate profession system; economy identity from **skills** + rep | Agreed ([overview](overview.md)) | | Primary skill XP | Do the activity | Proposed | From e815b4273406130acf43833986ee6a57b2cf74cd Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:18:13 -0400 Subject: [PATCH 13/91] chore: document optional FFXI-style sub-gig slot --- docs/game-design/skills.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 717ab12..1dc210a 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -10,6 +10,7 @@ From here on in game-design docs: |------|--------| | **Gig** | The **combat role** (combat “class”): what you bring to a fight—kit, tuning band, party expectations. Not used for crafting or gathering. | | **Skill** | A **non-combat** trained capability only (gather, craft, etc.). Never used to mean the combat gig. | +| **Sub-gig** | *(If we ship it.)* A **secondary gig** paired with your **main gig** on one loadout. Used for **limited** cross-gig ability access—see [Sub-gigs](#sub-gigs-optional-ffxi-style) below—not for crafting or replacing the main gig’s identity in combat. | Fiction and UI may still say *job*, *contract*, or *loadout* in dialogue; design vocabulary stays **gig** / **skill** to avoid ambiguity. @@ -26,6 +27,14 @@ A **gig** is the **combat identity** you bring to a fight: ability access, basel - **Progression per gig:** separate level/track vs. shared “combat rank” with gig-specific unlocks—**open**; separate tracks support “I main tank but leveled medic for backup” at the cost of more balancing. - **Mastery/perks** can attach to **gigs** (combat expression) while **skills** use the same *idea* for craft depth (E2.M3-style), or stay separate—**open**. +### Sub-gigs (optional, FFXI-style) + +We may add a **sub-gig** slot so one loadout mixes two gigs without full dual-main power. + +- **Reference pattern (FFXI-style):** at **main gig** level **X**, the **sub-gig** contributes abilities (and any sub-gated systems) only as if that gig were **⌊X / 2⌋**—exact floor/rounding and whether “level” means character combat rank vs. per-gig progress is **TBD**. +- **Intent:** hybrid builds and party coverage (e.g. main damage + sub support tools) without letting a sub match a fully leveled second gig. +- **Still open:** sub-gig **swap** rules, **gear** (likely still **main-gig–restricted** for combat gear; sub only feeds **abilities**), **consumable** amplification (main vs. sub), **PvP** ceilings, and UI (two gig strips on HUD). + ## Skills (non-combat, classless) Everything **outside combat role resolution**—gathering, refining, crafting lines, non-combat tech, etc.—uses **skills**: @@ -83,11 +92,12 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Failure XP | Per-activity; watch exploits | Open | | Skill caps | Prefer soft; hard only if economy/PvP needs | Proposed | | Gig swap rules | — | Open | +| Sub-gig | Optional **FFXI-style** slot: sub abilities up to **~½ main gig level** (formula TBD) | Open | | Shared vs. per-gig combat progression | — | Open | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | ## Next artifacts -- **Gigs** — roster size, swap UX, party finder tags, PvP ([overview](overview.md)). +- **Gigs** — roster size, main vs. **sub-gig** UX, swap rules, party finder tags, PvP ([overview](overview.md)). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. - **Items** — **equip:** gig rules; **craft:** **skills** (and recipe/rep), never gig level. From 0f90f9500e185e62eb2f607828e9ebf15eac376a Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:23:32 -0400 Subject: [PATCH 14/91] chore: agree sub-gig; drop combinatorial emphasis --- docs/game-design/skills.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 1dc210a..a99af29 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -10,7 +10,7 @@ From here on in game-design docs: |------|--------| | **Gig** | The **combat role** (combat “class”): what you bring to a fight—kit, tuning band, party expectations. Not used for crafting or gathering. | | **Skill** | A **non-combat** trained capability only (gather, craft, etc.). Never used to mean the combat gig. | -| **Sub-gig** | *(If we ship it.)* A **secondary gig** paired with your **main gig** on one loadout. Used for **limited** cross-gig ability access—see [Sub-gigs](#sub-gigs-optional-ffxi-style) below—not for crafting or replacing the main gig’s identity in combat. | +| **Sub-gig** | A **secondary gig** paired with your **main gig** on one loadout. Used for **limited** cross-gig ability access—see [Sub-gigs](#sub-gigs-ffxi-style) below—not for crafting or replacing the main gig’s identity in combat. | Fiction and UI may still say *job*, *contract*, or *loadout* in dialogue; design vocabulary stays **gig** / **skill** to avoid ambiguity. @@ -27,9 +27,9 @@ A **gig** is the **combat identity** you bring to a fight: ability access, basel - **Progression per gig:** separate level/track vs. shared “combat rank” with gig-specific unlocks—**open**; separate tracks support “I main tank but leveled medic for backup” at the cost of more balancing. - **Mastery/perks** can attach to **gigs** (combat expression) while **skills** use the same *idea* for craft depth (E2.M3-style), or stay separate—**open**. -### Sub-gigs (optional, FFXI-style) +### Sub-gigs (FFXI-style) -We may add a **sub-gig** slot so one loadout mixes two gigs without full dual-main power. +**Agreed:** each loadout has a **sub-gig** slot so one character mixes two gigs without full dual-main power. That opens a **large space of creative builds** as the gig roster grows—no need to enumerate counts; the point is **breadth of choice**. - **Reference pattern (FFXI-style):** at **main gig** level **X**, the **sub-gig** contributes abilities (and any sub-gated systems) only as if that gig were **⌊X / 2⌋**—exact floor/rounding and whether “level” means character combat rank vs. per-gig progress is **TBD**. - **Intent:** hybrid builds and party coverage (e.g. main damage + sub support tools) without letting a sub match a fully leveled second gig. @@ -71,7 +71,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech ## Player-facing readability -- **Combat:** UI shows **active gig**, gig level/track, combat abilities, and **combat gear** the gig can use (mismatched gear disabled or greyed). Consumable tooltips can show **baseline vs. boosted** values when the active gig gets an amplification. +- **Combat:** UI shows **main gig**, **sub-gig**, levels/tracks, combat abilities, and **combat gear** the main gig can use (mismatched gear disabled or greyed). Consumable tooltips can show **baseline vs. boosted** values when the active gig gets an amplification. - **Non-combat / crafting:** **skill** list, XP sources, categories; crafting combat gear does **not** hide recipes behind gigs—only **skill**/recipe gates (optional UI hint if the product is unequippable for your current gig). - **Story:** journal or quest UI can separate **character / faction** threads from **gig** threads so players see which arc belongs to which gig. - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. @@ -92,7 +92,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Failure XP | Per-activity; watch exploits | Open | | Skill caps | Prefer soft; hard only if economy/PvP needs | Proposed | | Gig swap rules | — | Open | -| Sub-gig | Optional **FFXI-style** slot: sub abilities up to **~½ main gig level** (formula TBD) | Open | +| Sub-gig | **FFXI-style** slot **agreed**; sub abilities up to **~½ main gig level** (formula TBD); wide build space | Agreed | | Shared vs. per-gig combat progression | — | Open | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | From 0766bbcc9be78e5155abb45d8ccb429917f7e4a2 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:24:59 -0400 Subject: [PATCH 15/91] chore: mark combat vs non-combat split agreed in decisions log --- docs/game-design/skills.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index a99af29..b82a93d 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -86,7 +86,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Consumables | Baseline for all; **gig can amplify** (e.g. medic + healing consumable) | Agreed | | Rep / story | Character-wide **rep**; **gig**-scoped **storylines** and **main quests** (per-gig progress on one avatar) | Agreed | | Multi-gig mastery | **OK for now**; slow gig leveling makes “all gigs” a **time** goal, not a loophole | Agreed (revisit if balance/PvP needs) | -| Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Proposed | +| Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Agreed | | Professions (economy) | No separate profession system; economy identity from **skills** + rep | Agreed ([overview](overview.md)) | | Primary skill XP | Do the activity | Proposed | | Failure XP | Per-activity; watch exploits | Open | From d30ee1c291f4e19cc473a308a3c15818226a0911 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:25:51 -0400 Subject: [PATCH 16/91] chore: agree primary skill XP from doing the activity --- docs/game-design/skills.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index b82a93d..adecf56 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -88,7 +88,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Multi-gig mastery | **OK for now**; slow gig leveling makes “all gigs” a **time** goal, not a loophole | Agreed (revisit if balance/PvP needs) | | Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Agreed | | Professions (economy) | No separate profession system; economy identity from **skills** + rep | Agreed ([overview](overview.md)) | -| Primary skill XP | Do the activity | Proposed | +| Primary skill XP | Do the activity | Agreed | | Failure XP | Per-activity; watch exploits | Open | | Skill caps | Prefer soft; hard only if economy/PvP needs | Proposed | | Gig swap rules | — | Open | From 72526ebc11370f9d4fc37503aa08ebeb815a13c9 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:27:15 -0400 Subject: [PATCH 17/91] chore: clarify failure XP is per-skill, open; not death penalty --- docs/game-design/skills.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index adecf56..2d4afe8 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -54,7 +54,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech ### XP, failure, caps, pacing (skills) - **Server-authoritative** grants with structured sources (node, recipe, mission payout, …). -- **Failure XP** per activity where it helps fun and not exploits. +- **Failure XP** (XP on a **failed attempt** at a skill action—e.g. burnt recipe—not **death penalty**): **per skill / per mechanic**; **open** globally, will depend on how each activity is built and what exploit surface it has. - **Runaway mitigation** via diminishing returns, context, soft caps. - **Gates** (recipes, rep, licenses) should **add** paths, not fake gigs. - **Pacing/catch-up** (E2.M4) applies across **skills**; **gigs** may use the same engine or a parallel one—**open**. @@ -89,7 +89,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Agreed | | Professions (economy) | No separate profession system; economy identity from **skills** + rep | Agreed ([overview](overview.md)) | | Primary skill XP | Do the activity | Agreed | -| Failure XP | Per-activity; watch exploits | Open | +| Failure XP | **Open**; decided **per skill / activity** once mechanics exist (not the same as death penalty) | Open | | Skill caps | Prefer soft; hard only if economy/PvP needs | Proposed | | Gig swap rules | — | Open | | Sub-gig | **FFXI-style** slot **agreed**; sub abilities up to **~½ main gig level** (formula TBD); wide build space | Agreed | From 975acf267baed01c56ca01437a7fd885f6c55007 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:29:13 -0400 Subject: [PATCH 18/91] chore: agree soft skill caps with escalating XP per level --- docs/game-design/skills.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 2d4afe8..e533453 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -55,7 +55,8 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech - **Server-authoritative** grants with structured sources (node, recipe, mission payout, …). - **Failure XP** (XP on a **failed attempt** at a skill action—e.g. burnt recipe—not **death penalty**): **per skill / per mechanic**; **open** globally, will depend on how each activity is built and what exploit surface it has. -- **Runaway mitigation** via diminishing returns, context, soft caps. +- **Caps:** **Soft** only—no hard “max level” by default. **Each level needs more XP than the last** (threshold tables or formula; **data-driven** per skill or policy). +- **Runaway mitigation** beyond the curve: diminishing returns, context modifiers, or other knobs if telemetry demands. - **Gates** (recipes, rep, licenses) should **add** paths, not fake gigs. - **Pacing/catch-up** (E2.M4) applies across **skills**; **gigs** may use the same engine or a parallel one—**open**. @@ -90,7 +91,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Professions (economy) | No separate profession system; economy identity from **skills** + rep | Agreed ([overview](overview.md)) | | Primary skill XP | Do the activity | Agreed | | Failure XP | **Open**; decided **per skill / activity** once mechanics exist (not the same as death penalty) | Open | -| Skill caps | Prefer soft; hard only if economy/PvP needs | Proposed | +| Skill caps | **Soft**; **progressively more XP** per level (data-driven curves) | Agreed | | Gig swap rules | — | Open | | Sub-gig | **FFXI-style** slot **agreed**; sub abilities up to **~½ main gig level** (formula TBD); wide build space | Agreed | | Shared vs. per-gig combat progression | — | Open | From 6114dc613cdfcdfd8641926b7c1a8964ee5c3e91 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:30:06 -0400 Subject: [PATCH 19/91] chore: agree hub-only gig swap (no on-the-fly) --- docs/game-design/skills.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index e533453..9022924 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -21,9 +21,9 @@ Fiction and UI may still say *job*, *contract*, or *loadout* in dialogue; design ## Gigs (combat) -A **gig** is the **combat identity** you bring to a fight: ability access, baseline tuning band, and party expectations (tank, support, control, damage, etc.). Gigs are **swapped** under rules TBD—not necessarily mid-fight. +A **gig** is the **combat identity** you bring to a fight: ability access, baseline tuning band, and party expectations (tank, support, control, damage, etc.). -- **Swap constraints** (out of combat only, hub-only, cooldown, consumable, story gate) are a major feel knob: permissive = high flexibility; strict = sharper commitment per outing. +- **Swap rules (agreed):** **No on-the-fly swap.** Changing **main gig**, **sub-gig**, or both happens only at a **safe hub**—a **city**, **home base**, or other **designated swap location** (world/data-defined). Not in the field, not mid-combat. **Open:** exact site list, fees, faction gates, or cooldowns at the hub. - **Progression per gig:** separate level/track vs. shared “combat rank” with gig-specific unlocks—**open**; separate tracks support “I main tank but leveled medic for backup” at the cost of more balancing. - **Mastery/perks** can attach to **gigs** (combat expression) while **skills** use the same *idea* for craft depth (E2.M3-style), or stay separate—**open**. @@ -33,7 +33,7 @@ A **gig** is the **combat identity** you bring to a fight: ability access, basel - **Reference pattern (FFXI-style):** at **main gig** level **X**, the **sub-gig** contributes abilities (and any sub-gated systems) only as if that gig were **⌊X / 2⌋**—exact floor/rounding and whether “level” means character combat rank vs. per-gig progress is **TBD**. - **Intent:** hybrid builds and party coverage (e.g. main damage + sub support tools) without letting a sub match a fully leveled second gig. -- **Still open:** sub-gig **swap** rules, **gear** (likely still **main-gig–restricted** for combat gear; sub only feeds **abilities**), **consumable** amplification (main vs. sub), **PvP** ceilings, and UI (two gig strips on HUD). +- **Still open:** **gear** (likely still **main-gig–restricted** for combat gear; sub only feeds **abilities**), **consumable** amplification (main vs. sub), **PvP** ceilings, and UI (two gig strips on HUD). **Sub-gig** choice changes use the same **hub-only** rules as main gig swap. ## Skills (non-combat, classless) @@ -64,7 +64,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Topic | Direction | |--------|-----------| -| **Combat gear** | **Gig-restricted.** Weapons, armor, and other combat-loadout pieces declare which **gig(s)** may equip or fully activate them. A gig swap implies a **combat loadout change** (how automatic vs. manual is tied to [gig swap rules](#gigs-combat)—TBD). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. | +| **Combat gear** | **Gig-restricted.** Weapons, armor, and other combat-loadout pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](#gigs-combat), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. | | **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. gunsmith), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | | **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Potency can scale with gig:** e.g. a **medic** (or medic-adjacent gig) gets **bonus healing / duration / cleanse** from the same med consumable that others use at a **baseline**. Other consumables may have **no** gig hook, or hooks for other gigs—data-driven per item. | | **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | @@ -92,13 +92,13 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Primary skill XP | Do the activity | Agreed | | Failure XP | **Open**; decided **per skill / activity** once mechanics exist (not the same as death penalty) | Open | | Skill caps | **Soft**; **progressively more XP** per level (data-driven curves) | Agreed | -| Gig swap rules | — | Open | +| Gig swap rules | **Hub-only** (city / home base / designated site)—**not** in the field or mid-fight | Agreed | | Sub-gig | **FFXI-style** slot **agreed**; sub abilities up to **~½ main gig level** (formula TBD); wide build space | Agreed | | Shared vs. per-gig combat progression | — | Open | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | ## Next artifacts -- **Gigs** — roster size, main vs. **sub-gig** UX, swap rules, party finder tags, PvP ([overview](overview.md)). +- **Gigs** — roster size, main vs. **sub-gig** UX, **hub** definitions & swap UX, party finder tags, PvP ([overview](overview.md)). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. - **Items** — **equip:** gig rules; **craft:** **skills** (and recipe/rep), never gig level. From 8d5974fb746cb4ec8be50bf6df4ab55de6edfcee Mon Sep 17 00:00:00 2001 From: VinPropane Date: Tue, 31 Mar 2026 23:31:15 -0400 Subject: [PATCH 20/91] chore: agree per-gig combat progression --- docs/game-design/skills.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 9022924..2a56c69 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,6 +1,6 @@ # Gigs & skills (hybrid progression) -Vision-level design for how characters grow. **Combat** uses **gigs** (swap roles for grouping clarity). **Non-combat** uses **skills** (gathering, crafting, and similar loops). [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4) still describes **skill** XP machinery; a **gig** progression layer may sit beside or above it in data—decomposition should be revisited when this split hardens. +Vision-level design for how characters grow. **Combat** uses **gigs** (swap roles for grouping clarity); **each gig levels on its own track** (**per-gig** progression). **Non-combat** uses **skills** (gathering, crafting, and similar loops). [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4) still describes **skill** XP machinery; **gig** XP/levels are **per gig**—decomposition should be revisited when this split hardens. ## Vocabulary @@ -24,14 +24,14 @@ Fiction and UI may still say *job*, *contract*, or *loadout* in dialogue; design A **gig** is the **combat identity** you bring to a fight: ability access, baseline tuning band, and party expectations (tank, support, control, damage, etc.). - **Swap rules (agreed):** **No on-the-fly swap.** Changing **main gig**, **sub-gig**, or both happens only at a **safe hub**—a **city**, **home base**, or other **designated swap location** (world/data-defined). Not in the field, not mid-combat. **Open:** exact site list, fees, faction gates, or cooldowns at the hub. -- **Progression per gig:** separate level/track vs. shared “combat rank” with gig-specific unlocks—**open**; separate tracks support “I main tank but leveled medic for backup” at the cost of more balancing. +- **Combat progression (agreed):** **Per gig.** Each gig has its **own level/XP track** (and later mastery/perks on that gig). There is **no** shared single “combat rank” that advances all gigs at once. **Open:** when gig XP is awarded (e.g. only while main, sub, or both). - **Mastery/perks** can attach to **gigs** (combat expression) while **skills** use the same *idea* for craft depth (E2.M3-style), or stay separate—**open**. ### Sub-gigs (FFXI-style) **Agreed:** each loadout has a **sub-gig** slot so one character mixes two gigs without full dual-main power. That opens a **large space of creative builds** as the gig roster grows—no need to enumerate counts; the point is **breadth of choice**. -- **Reference pattern (FFXI-style):** at **main gig** level **X**, the **sub-gig** contributes abilities (and any sub-gated systems) only as if that gig were **⌊X / 2⌋**—exact floor/rounding and whether “level” means character combat rank vs. per-gig progress is **TBD**. +- **Reference pattern (FFXI-style):** at **main gig** per-gig level **X**, the **sub-gig** contributes abilities (and any sub-gated systems) only up to an **effective sub level** of **⌊X / 2⌋** (and not above the **sub-gig’s own trained level**—**open** how `min`/`floor` interacts). Exact floor/rounding **TBD**. - **Intent:** hybrid builds and party coverage (e.g. main damage + sub support tools) without letting a sub match a fully leveled second gig. - **Still open:** **gear** (likely still **main-gig–restricted** for combat gear; sub only feeds **abilities**), **consumable** amplification (main vs. sub), **PvP** ceilings, and UI (two gig strips on HUD). **Sub-gig** choice changes use the same **hub-only** rules as main gig swap. @@ -58,7 +58,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech - **Caps:** **Soft** only—no hard “max level” by default. **Each level needs more XP than the last** (threshold tables or formula; **data-driven** per skill or policy). - **Runaway mitigation** beyond the curve: diminishing returns, context modifiers, or other knobs if telemetry demands. - **Gates** (recipes, rep, licenses) should **add** paths, not fake gigs. -- **Pacing/catch-up** (E2.M4) applies across **skills**; **gigs** may use the same engine or a parallel one—**open**. +- **Pacing/catch-up** (E2.M4) applies across **skills**; **gig** pacing is **per-gig** (same or parallel engine—**open**). ## Seams (gigs ↔ skills) @@ -94,7 +94,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Skill caps | **Soft**; **progressively more XP** per level (data-driven curves) | Agreed | | Gig swap rules | **Hub-only** (city / home base / designated site)—**not** in the field or mid-fight | Agreed | | Sub-gig | **FFXI-style** slot **agreed**; sub abilities up to **~½ main gig level** (formula TBD); wide build space | Agreed | -| Shared vs. per-gig combat progression | — | Open | +| Combat progression | **Per gig**—separate level/XP (and mastery) per gig; no shared combat rank | Agreed | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | ## Next artifacts From a6eb441330496a52b2645cc895e505ff0d93b355 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:07:15 -0400 Subject: [PATCH 21/91] chore: refine combat progression mechanics for clarity and balance --- .vscode/launch.json | 26 ++++++++++++++++++++++++++ .vscode/tasks.json | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..8fb719f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,26 @@ +{ + "version": "0.2.0", + "configurations": [ + { + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md + "name": ".NET Core Launch (console)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/server/NeonSprawl.Server.Tests/bin/Debug/net10.0/NeonSprawl.Server.Tests.dll", + "args": [], + "cwd": "${workspaceFolder}/server/NeonSprawl.Server.Tests", + // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console + "console": "internalConsole", + "stopAtEntry": false + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..d640a6d --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,41 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/NeonSprawl.sln", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/NeonSprawl.sln", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary;ForceNoAlign" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "--project", + "${workspaceFolder}/NeonSprawl.sln" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file From 8b97835189921a4c5b96d0562661f9af33550a21 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:09:36 -0400 Subject: [PATCH 22/91] chore: add game-design gigs.md artifact; link from overview and skills --- docs/game-design/gigs.md | 106 +++++++++++++++++++++++++++++++++++ docs/game-design/overview.md | 9 +-- docs/game-design/skills.md | 18 +----- 3 files changed, 114 insertions(+), 19 deletions(-) create mode 100644 docs/game-design/gigs.md diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md new file mode 100644 index 0000000..601950b --- /dev/null +++ b/docs/game-design/gigs.md @@ -0,0 +1,106 @@ +# Gigs (combat roles) + +Vision-level design for **combat identity**: what you bring to a fight, how you progress, and how you swap roles. Vocabulary (**gig**, **sub-gig**) and the **gigs ↔ skills** seams (gear, crafting, consumables, rep) stay in [skills.md](skills.md); this doc is the **gig** artifact proper. + +**Implementation anchors:** [Epic 5 — PvE combat](../decomposition/epics/epic_05_pve_combat.md); gig XP/progression will need alignment with [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) when data models split. + +## What a gig is + +A **gig** is the combat **role** on an outing: which **abilities** you run, how the party reads you (tank, support, control, damage, etc.), and tuning expectations. It is **not** a non-combat profession—**skills** cover gather/craft ([skills.md](skills.md)). + +Fiction may say *contract*, *loadout*, or *job*; specs use **gig**. + +## Gig roster + +**Open:** final count and names. Start from a **small roster** with **clear party niches** so LFG and encounter design stay legible; grow over content seasons. + +**Starter archetypes to cover (working labels, not final):** + +| Niche | Job in a fight | +|--------|------------------| +| Mitigation / control | Hold space, reduce harm to the group | +| Healing / cleansing | Recover HP, strip bad states | +| Damage (single / cleave) | Primary threat removal | +| Utility / debuff | Weaken targets, enable others | + +Cyberpunk paint (netrunner overlay, street sam, corp tech, etc.) layers on these **mechanical** niches—**open** which niches map to launch gigs. + +## Main gig + sub-gig + +**Agreed:** every loadout has a **main gig** and a **sub-gig** (FFXI-style). The sub adds **limited** cross-gig abilities without second-main power—a **large creative space** as the roster grows ([skills.md](skills.md) hybrid rationale). + +- **Effective sub level:** at **main** per-gig level **X**, sub contributes abilities up to **⌊X / 2⌋**, capped by the **sub-gig’s own trained level**—exact `min` / rounding **TBD**. +- **Hub-only** changes to main or sub ([Hub swap](#hub-swap)). + +**Still open:** + +- **Combat gear:** almost certainly **main-gig–restricted** for equip; sub feeds **abilities** only—confirm in content pass. +- **Consumables:** baseline for all; some items **amplify** on matching gig (e.g. medic)—does **sub-gig** count for amp? **Open.** +- **PvP:** gig + sub balance, brackets, templates—**open.** +- **UI:** two gig strips, sub ability styling, loadout summary for party—**open.** + +## Progression + +**Agreed:** **per-gig** level/XP (and later **mastery/perks** on that gig). No shared **combat rank** that levels every gig at once. **Maining every gig** on one character is allowed; **slow leveling** makes that a long-term goal ([skills.md](skills.md) seams). + +**Open:** + +- **When gig XP applies:** only while **main**, or also while **sub**, or split rates—must be decided for server rules and telemetry. +- **Curves:** same philosophy as **skills** (soft feel, more XP per level)—per-gig tables vs global template **TBD**. +- **Mastery/perks** on gigs vs flat level gates—**open** (E2.M3-style expression). + +## Hub swap + +**Agreed:** **no on-the-fly swap.** Changing **main gig**, **sub-gig**, or both only at a **safe hub**—**city**, **home base**, or other **data-tagged swap site**. Not in the field, not mid-combat. + +**Open:** + +- Which locations qualify (faction terminals, apartments, guild halls, etc.). +- Fees, rep gates, cooldowns, tutorial exceptions. +- **Loadout UX** after swap: auto-unequip invalid combat gear vs player-managed **presets** per gig pair. +- **Party:** what happens if someone swaps while grouped—**open** (session lock vs free swap at hub). + +## Party, LFG, encounters + +**Intent:** gigs give a **plain language** for recruitment (“need mitigation,” “need cleanse”) and for **encounter** assumptions (required niches vs flexible). + +**Open:** + +- LFG **tags** and filters (map 1:1 to gigs vs to niches). +- **Mandatory roles** in instanced content vs open-world flex. +- **Group scaling** ([E5.M4](../decomposition/modules/E5_M4_GroupCombatScaling.md)) vs gig composition—design pass with encounters. + +## PvE vs PvP + +**Open:** whether all gigs are PvP-viable on launch, **templates** (PvP loadout subset), or **security-band** restrictions ([overview](overview.md) risk stubs). Sub-gig rules may differ by mode. + +## Story + +**Gig-scoped** storylines and **main-quest-style** arcs live per gig on one character; **faction rep** stays character-wide ([skills.md](skills.md) seams). **Open:** how much **mandatory** gig story vs optional. + +## Gear & consumables (summary) + +- **Combat gear:** **gig-restricted** equip; after hub swap, player **fixes loadout** for new main gig. +- **Crafting** combat gear: **no gig requirement**—**skills** only; can craft for trade. +- **Consumables:** anyone can use; some scale with **gig** match. + +Detail: seams table in [skills.md](skills.md). + +## Decisions log (gig-focused) + +| Topic | Direction | Status | +|-------|-----------|--------| +| Sub-gig slot | FFXI-style; ~½ main effective cap; hub change | Agreed ([skills.md](skills.md)) | +| Hub swap | Safe hubs only; not in field / combat | Agreed | +| Combat progression | Per-gig tracks | Agreed | +| Gig roster size & names | Small launch set; clear niches | Open | +| Gig XP award timing (main vs sub) | — | Open | +| Sub-gig + consumable amp | — | Open | +| LFG / party tags | — | Open | +| PvP gig rules | — | Open | + +## Next artifacts + +- [Abilities](overview.md) — **gig-locked** kits, sub-gig ability rules, telegraphs ([Epic 5](../decomposition/epics/epic_05_pve_combat.md)). +- [Combat pillars](overview.md) — PvE readability, TTK, risk ([overview](overview.md)). +- [Items](overview.md) — equip tags per gig; crafted vs dropped. diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 94a6a7a..b0c46b4 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,20 +6,21 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. -**Vocabulary ([skills.md](skills.md)):** **gig** = combat role; **skill** = non-combat trained capability only. +**Vocabulary ([skills.md](skills.md)):** **gig** = combat role; **skill** = non-combat trained capability only. **Gig** design detail: [gigs.md](gigs.md). ## Artifact index | Document | Focus | Notes | |----------|--------|--------| -| [skills.md](skills.md) | Gigs (combat) + skills (non-combat); hybrid progression | First vision artifact | +| [skills.md](skills.md) | Hybrid progression; vocabulary; gigs ↔ skills seams | With [gigs.md](gigs.md) | +| [gigs.md](gigs.md) | Combat gigs: roster, hub swap, sub-gig, party, PvP (open) | Gig artifact | | *(add rows as files land)* | | | ### Planned topics (stubs) Link new files here when they exist; remove or rewrite this subsection once the table is populated. -- **Gigs & skills** — [skills.md](skills.md): **gigs** for combat; **skills** (classless) for gather/craft/etc. *Professions* stay folded into **skills** + rep unless a future doc defines something separate. +- **Gigs** — [gigs.md](gigs.md): combat roles, hub swap, sub-gig, progression, party/LFG. **Skills** (non-combat): [skills.md](skills.md). *Professions* stay folded into **skills** + rep unless a future doc defines something separate. - **Zones** — tone, danger, faction or economic role of a place. - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. @@ -28,7 +29,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Gathering & resources** — nodes, competition, exhaustion, what “open world” contesting feels like. - **Crafting & recipes** — depth vs. breadth, failure, specialization; pairs with items but is its own loop. - **Economy** — currency velocity, sinks, trade vs. self-sufficiency, how wealth shows up in play. -- **Factions & reputation** — who remembers you, grudges, access gates; **gig** story arcs are scoped in [skills.md](skills.md) seams. +- **Factions & reputation** — who remembers you, grudges, access gates; **gig** story arcs: [gigs.md](gigs.md), rep + seams: [skills.md](skills.md). - **Combat pillars** — PvE vs. PvP stance, readability, time-to-kill, what “fair” means here. - **Death, loss & recovery** — stakes on failure, recovery paths, anti-grief boundaries. - **Risk & security bands** — safe pockets vs. wild space; where optional PvP and theft sit (aligns with security-tier thinking). diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 2a56c69..e614279 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -10,7 +10,7 @@ From here on in game-design docs: |------|--------| | **Gig** | The **combat role** (combat “class”): what you bring to a fight—kit, tuning band, party expectations. Not used for crafting or gathering. | | **Skill** | A **non-combat** trained capability only (gather, craft, etc.). Never used to mean the combat gig. | -| **Sub-gig** | A **secondary gig** paired with your **main gig** on one loadout. Used for **limited** cross-gig ability access—see [Sub-gigs](#sub-gigs-ffxi-style) below—not for crafting or replacing the main gig’s identity in combat. | +| **Sub-gig** | A **secondary gig** paired with your **main gig** on one loadout. Used for **limited** cross-gig ability access—see [gigs.md](gigs.md) (**Main gig + sub-gig**)—not for crafting or replacing the main gig’s identity in combat. | Fiction and UI may still say *job*, *contract*, or *loadout* in dialogue; design vocabulary stays **gig** / **skill** to avoid ambiguity. @@ -21,19 +21,7 @@ Fiction and UI may still say *job*, *contract*, or *loadout* in dialogue; design ## Gigs (combat) -A **gig** is the **combat identity** you bring to a fight: ability access, baseline tuning band, and party expectations (tank, support, control, damage, etc.). - -- **Swap rules (agreed):** **No on-the-fly swap.** Changing **main gig**, **sub-gig**, or both happens only at a **safe hub**—a **city**, **home base**, or other **designated swap location** (world/data-defined). Not in the field, not mid-combat. **Open:** exact site list, fees, faction gates, or cooldowns at the hub. -- **Combat progression (agreed):** **Per gig.** Each gig has its **own level/XP track** (and later mastery/perks on that gig). There is **no** shared single “combat rank” that advances all gigs at once. **Open:** when gig XP is awarded (e.g. only while main, sub, or both). -- **Mastery/perks** can attach to **gigs** (combat expression) while **skills** use the same *idea* for craft depth (E2.M3-style), or stay separate—**open**. - -### Sub-gigs (FFXI-style) - -**Agreed:** each loadout has a **sub-gig** slot so one character mixes two gigs without full dual-main power. That opens a **large space of creative builds** as the gig roster grows—no need to enumerate counts; the point is **breadth of choice**. - -- **Reference pattern (FFXI-style):** at **main gig** per-gig level **X**, the **sub-gig** contributes abilities (and any sub-gated systems) only up to an **effective sub level** of **⌊X / 2⌋** (and not above the **sub-gig’s own trained level**—**open** how `min`/`floor` interacts). Exact floor/rounding **TBD**. -- **Intent:** hybrid builds and party coverage (e.g. main damage + sub support tools) without letting a sub match a fully leveled second gig. -- **Still open:** **gear** (likely still **main-gig–restricted** for combat gear; sub only feeds **abilities**), **consumable** amplification (main vs. sub), **PvP** ceilings, and UI (two gig strips on HUD). **Sub-gig** choice changes use the same **hub-only** rules as main gig swap. +The **gig** artifact—**roles**, **hub swap**, **per-gig progression**, **main + sub-gig**, **party/LFG**, **PvP notes**, and **gig-only open questions**—is **[gigs.md](gigs.md)**. This file keeps **vocabulary**, **why hybrid**, and **seams** with **skills**. ## Skills (non-combat, classless) @@ -99,6 +87,6 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech ## Next artifacts -- **Gigs** — roster size, main vs. **sub-gig** UX, **hub** definitions & swap UX, party finder tags, PvP ([overview](overview.md)). +- **[gigs.md](gigs.md)** — gig roster, hub UX, LFG, PvP (started; extend there). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. - **Items** — **equip:** gig rules; **craft:** **skills** (and recipe/rep), never gig level. From a204fb12e36c002a93e8a9605e08db06249ed2c1 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:12:54 -0400 Subject: [PATCH 23/91] chore: gig XP only on main gig; sub earns none --- docs/game-design/gigs.md | 7 ++++--- docs/game-design/skills.md | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 601950b..ac76703 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -29,7 +29,7 @@ Cyberpunk paint (netrunner overlay, street sam, corp tech, etc.) layers on these **Agreed:** every loadout has a **main gig** and a **sub-gig** (FFXI-style). The sub adds **limited** cross-gig abilities without second-main power—a **large creative space** as the roster grows ([skills.md](skills.md) hybrid rationale). -- **Effective sub level:** at **main** per-gig level **X**, sub contributes abilities up to **⌊X / 2⌋**, capped by the **sub-gig’s own trained level**—exact `min` / rounding **TBD**. +- **Effective sub level:** at **main** per-gig level **X**, sub contributes abilities up to **⌊X / 2⌋**, capped by the **sub-gig’s own stored level** (see **XP** below)—exact `min` / rounding **TBD**. - **Hub-only** changes to main or sub ([Hub swap](#hub-swap)). **Still open:** @@ -43,9 +43,10 @@ Cyberpunk paint (netrunner overlay, street sam, corp tech, etc.) layers on these **Agreed:** **per-gig** level/XP (and later **mastery/perks** on that gig). No shared **combat rank** that levels every gig at once. **Maining every gig** on one character is allowed; **slow leveling** makes that a long-term goal ([skills.md](skills.md) seams). +**Agreed — gig XP award timing:** only the **main gig** earns **gig XP** from combat (and any other gig-level awards). The **sub-gig** earns **no** XP toward its own progression while equipped as sub—it only **reads** its stored level for ability unlocks. To level a gig you ran as sub, **swap** it to **main** at a hub and play with it primary. **UI** should make clear that **gig XP** (bars, flytext) applies to **main** only. + **Open:** -- **When gig XP applies:** only while **main**, or also while **sub**, or split rates—must be decided for server rules and telemetry. - **Curves:** same philosophy as **skills** (soft feel, more XP per level)—per-gig tables vs global template **TBD**. - **Mastery/perks** on gigs vs flat level gates—**open** (E2.M3-style expression). @@ -94,7 +95,7 @@ Detail: seams table in [skills.md](skills.md). | Hub swap | Safe hubs only; not in field / combat | Agreed | | Combat progression | Per-gig tracks | Agreed | | Gig roster size & names | Small launch set; clear niches | Open | -| Gig XP award timing (main vs sub) | — | Open | +| Gig XP award timing | **Main gig only**; **sub-gig** earns no XP (level that gig as main to progress it) | Agreed | | Sub-gig + consumable amp | — | Open | | LFG / party tags | — | Open | | PvP gig rules | — | Open | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index e614279..0bbbcb1 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -83,6 +83,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Gig swap rules | **Hub-only** (city / home base / designated site)—**not** in the field or mid-fight | Agreed | | Sub-gig | **FFXI-style** slot **agreed**; sub abilities up to **~½ main gig level** (formula TBD); wide build space | Agreed | | Combat progression | **Per gig**—separate level/XP (and mastery) per gig; no shared combat rank | Agreed | +| Gig XP award | **Main gig only**; **sub-gig** earns no XP—see [gigs.md](gigs.md) | Agreed | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | ## Next artifacts From 31e7361ab3d1c5c2d89c968df88d87adc4c4db06 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:13:48 -0400 Subject: [PATCH 24/91] chore: passive consumable amp applies from main or sub-gig --- docs/game-design/gigs.md | 6 +++--- docs/game-design/skills.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index ac76703..17a0f72 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -35,7 +35,7 @@ Cyberpunk paint (netrunner overlay, street sam, corp tech, etc.) layers on these **Still open:** - **Combat gear:** almost certainly **main-gig–restricted** for equip; sub feeds **abilities** only—confirm in content pass. -- **Consumables:** baseline for all; some items **amplify** on matching gig (e.g. medic)—does **sub-gig** count for amp? **Open.** +- **Consumables (passive amp):** **Agreed** — **sub-gig** counts. **Passive** gig-tagged bonuses (e.g. extra healing from a med item when you’re a medic-type gig) apply if **either** **main** or **sub** matches the item’s gig hook. **Open:** if **both** match, **stack vs. single best** vs. **main wins**—pick at balance pass. - **PvP:** gig + sub balance, brackets, templates—**open.** - **UI:** two gig strips, sub ability styling, loadout summary for party—**open.** @@ -83,7 +83,7 @@ Cyberpunk paint (netrunner overlay, street sam, corp tech, etc.) layers on these - **Combat gear:** **gig-restricted** equip; after hub swap, player **fixes loadout** for new main gig. - **Crafting** combat gear: **no gig requirement**—**skills** only; can craft for trade. -- **Consumables:** anyone can use; some scale with **gig** match. +- **Consumables:** anyone can use; **passive** amp checks **main or sub** (see **Main gig + sub-gig**). Detail: seams table in [skills.md](skills.md). @@ -96,7 +96,7 @@ Detail: seams table in [skills.md](skills.md). | Combat progression | Per-gig tracks | Agreed | | Gig roster size & names | Small launch set; clear niches | Open | | Gig XP award timing | **Main gig only**; **sub-gig** earns no XP (level that gig as main to progress it) | Agreed | -| Sub-gig + consumable amp | — | Open | +| Sub-gig + consumable amp (passive) | **Sub counts**; main **or** sub can trigger passive amp | Agreed | | LFG / party tags | — | Open | | PvP gig rules | — | Open | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 0bbbcb1..e86b4e7 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -54,13 +54,13 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech |--------|-----------| | **Combat gear** | **Gig-restricted.** Weapons, armor, and other combat-loadout pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](#gigs-combat), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. | | **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. gunsmith), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | -| **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Potency can scale with gig:** e.g. a **medic** (or medic-adjacent gig) gets **bonus healing / duration / cleanse** from the same med consumable that others use at a **baseline**. Other consumables may have **no** gig hook, or hooks for other gigs—data-driven per item. | +| **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Passive** potency can scale with **gig** match: e.g. a **medic**-tagged bonus applies if **main *or* sub-gig** matches (see [gigs.md](gigs.md)). Others use a **baseline**. **Active** abilities from consumables (if any) follow their own rules—**open**. Other items may have **no** gig hook—data-driven per item. | | **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | | **Alts / multi-gig mastery** | One avatar still reduces **alt** pressure for economy and story. **Maining every gig** is **not** a design problem for now: **gig leveling is intentionally slow**, so fully progressing (or “maxing”) every gig is a **long-term time investment**, not something handed out quickly. Players who put in that time **may** legitimately be strong in every gig on one character. **Revisit** only if pacing, live balance, or PvP show harm. | ## Player-facing readability -- **Combat:** UI shows **main gig**, **sub-gig**, levels/tracks, combat abilities, and **combat gear** the main gig can use (mismatched gear disabled or greyed). Consumable tooltips can show **baseline vs. boosted** values when the active gig gets an amplification. +- **Combat:** UI shows **main gig**, **sub-gig**, levels/tracks, combat abilities, and **combat gear** the main gig can use (mismatched gear disabled or greyed). Consumable tooltips for **passive** amps can show **baseline vs. boosted** when **main or sub** matches the item’s gig hook. - **Non-combat / crafting:** **skill** list, XP sources, categories; crafting combat gear does **not** hide recipes behind gigs—only **skill**/recipe gates (optional UI hint if the product is unequippable for your current gig). - **Story:** journal or quest UI can separate **character / faction** threads from **gig** threads so players see which arc belongs to which gig. - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. @@ -72,7 +72,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech | Vocabulary | **Gig** = combat role; **skill** = non-combat only | Agreed | | Combat gear | **Gig-restricted** equip/activation; non-combat tools **skill**-gated | Agreed | | Crafting combat gear | **Skill**/recipe/rep (etc.) only—**not** gig or gig level; craft-for-others OK | Agreed | -| Consumables | Baseline for all; **gig can amplify** (e.g. medic + healing consumable) | Agreed | +| Consumables | Baseline for all; **passive gig amp** from **main or sub** ([gigs.md](gigs.md)) | Agreed | | Rep / story | Character-wide **rep**; **gig**-scoped **storylines** and **main quests** (per-gig progress on one avatar) | Agreed | | Multi-gig mastery | **OK for now**; slow gig leveling makes “all gigs” a **time** goal, not a loophole | Agreed (revisit if balance/PvP needs) | | Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Agreed | From 1ff835dd910925bb1fef3e06662f92a329a23acf Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:16:21 -0400 Subject: [PATCH 25/91] chore: decouple party recruitment from assumed LFG UI --- docs/game-design/gigs.md | 25 +++++++++++++++++-------- docs/game-design/overview.md | 4 ++-- docs/game-design/skills.md | 4 ++-- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 17a0f72..9a64c77 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -12,7 +12,7 @@ Fiction may say *contract*, *loadout*, or *job*; specs use **gig**. ## Gig roster -**Open:** final count and names. Start from a **small roster** with **clear party niches** so LFG and encounter design stay legible; grow over content seasons. +**Open:** final count and names. Start from a **small roster** with **clear party niches** so **recruitment talk** (chat or any future tool) and **encounter** design stay legible; grow over content seasons. **Starter archetypes to cover (working labels, not final):** @@ -61,15 +61,24 @@ Cyberpunk paint (netrunner overlay, street sam, corp tech, etc.) layers on these - **Loadout UX** after swap: auto-unequip invalid combat gear vs player-managed **presets** per gig pair. - **Party:** what happens if someone swaps while grouped—**open** (session lock vs free swap at hub). -## Party, LFG, encounters +## Party, encounters, and recruitment -**Intent:** gigs give a **plain language** for recruitment (“need mitigation,” “need cleanse”) and for **encounter** assumptions (required niches vs flexible). +Earlier drafts implied a **dedicated LFG UI** (tags, filters). That is **not** decided. Players might use **chat only** (zone, guild, party ads), a **future matchmaking tool**, or a **hybrid** (e.g. hub board + chat). -**Open:** +**Design intent (UI-agnostic):** gigs still give **shared vocabulary**—“need mitigation,” “need cleanse,” “LF damage”—whether typed in chat or, later, picked from a structured browser. **Encounter** and **scaling** design can reason about **niches** without assuming any specific recruitment feature ships. -- LFG **tags** and filters (map 1:1 to gigs vs to niches). -- **Mandatory roles** in instanced content vs open-world flex. -- **Group scaling** ([E5.M4](../decomposition/modules/E5_M4_GroupCombatScaling.md)) vs gig composition—design pass with encounters. +**Open — product / client:** + +- **Recruitment:** chat-only vs **built-in LFG/matchmaking** vs hybrid; scope for **launch** vs later. + +**Open — only if a structured LFG-style tool exists:** + +- Tags/filters (**gig** vs **niche**), how **main/sub** appears, limits, auto-fill from loadout. + +**Open — rules / content (independent of LFG UI):** + +- **Mandatory niches** in instanced content vs open-world flex. +- **Group scaling** ([E5.M4](../decomposition/modules/E5_M4_GroupCombatScaling.md)) vs gig composition—pass with encounters. ## PvE vs PvP @@ -97,7 +106,7 @@ Detail: seams table in [skills.md](skills.md). | Gig roster size & names | Small launch set; clear niches | Open | | Gig XP award timing | **Main gig only**; **sub-gig** earns no XP (level that gig as main to progress it) | Agreed | | Sub-gig + consumable amp (passive) | **Sub counts**; main **or** sub can trigger passive amp | Agreed | -| LFG / party tags | — | Open | +| Recruitment UX | **Undecided:** chat-only vs LFG/matchmaking tool vs hybrid; tag schema only if tool ships | Open | | PvP gig rules | — | Open | ## Next artifacts diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index b0c46b4..afeb2a3 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -13,14 +13,14 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | Document | Focus | Notes | |----------|--------|--------| | [skills.md](skills.md) | Hybrid progression; vocabulary; gigs ↔ skills seams | With [gigs.md](gigs.md) | -| [gigs.md](gigs.md) | Combat gigs: roster, hub swap, sub-gig, party, PvP (open) | Gig artifact | +| [gigs.md](gigs.md) | Combat gigs: roster, hub swap, sub-gig, party/encounters, PvP (open) | Recruitment UI undecided | | *(add rows as files land)* | | | ### Planned topics (stubs) Link new files here when they exist; remove or rewrite this subsection once the table is populated. -- **Gigs** — [gigs.md](gigs.md): combat roles, hub swap, sub-gig, progression, party/LFG. **Skills** (non-combat): [skills.md](skills.md). *Professions* stay folded into **skills** + rep unless a future doc defines something separate. +- **Gigs** — [gigs.md](gigs.md): combat roles, hub swap, sub-gig, progression, party/encounters (LFG tool vs chat **open**). **Skills** (non-combat): [skills.md](skills.md). *Professions* stay folded into **skills** + rep unless a future doc defines something separate. - **Zones** — tone, danger, faction or economic role of a place. - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index e86b4e7..3c3b6e4 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -21,7 +21,7 @@ Fiction and UI may still say *job*, *contract*, or *loadout* in dialogue; design ## Gigs (combat) -The **gig** artifact—**roles**, **hub swap**, **per-gig progression**, **main + sub-gig**, **party/LFG**, **PvP notes**, and **gig-only open questions**—is **[gigs.md](gigs.md)**. This file keeps **vocabulary**, **why hybrid**, and **seams** with **skills**. +The **gig** artifact—**roles**, **hub swap**, **per-gig progression**, **main + sub-gig**, **party/recruitment** (no LFG UI assumption), **PvP notes**, and **gig-only open questions**—is **[gigs.md](gigs.md)**. This file keeps **vocabulary**, **why hybrid**, and **seams** with **skills**. ## Skills (non-combat, classless) @@ -88,6 +88,6 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech ## Next artifacts -- **[gigs.md](gigs.md)** — gig roster, hub UX, LFG, PvP (started; extend there). +- **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment (chat vs tool **open**), PvP (started; extend there). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. - **Items** — **equip:** gig rules; **craft:** **skills** (and recipe/rep), never gig level. From c07237db3935efa83c21661e9c2b28031ae15622 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:17:59 -0400 Subject: [PATCH 26/91] =?UTF-8?q?chore:=20conditional=20LFG=20design=20?= =?UTF-8?q?=E2=80=94=20niches,=20gig+loadout=20eligibility,=20multi-select?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/game-design/gigs.md | 11 +++++++---- docs/game-design/overview.md | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 9a64c77..102b1ae 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -69,11 +69,13 @@ Earlier drafts implied a **dedicated LFG UI** (tags, filters). That is **not** d **Open — product / client:** -- **Recruitment:** chat-only vs **built-in LFG/matchmaking** vs hybrid; scope for **launch** vs later. +- **Recruitment channel:** chat-only vs **built-in LFG/matchmaking** vs hybrid; scope for **launch** vs later. -**Open — only if a structured LFG-style tool exists:** +**If we ship an LFG-style tool** (common in modern MMOs)—**agreed direction, conditional on building it:** -- Tags/filters (**gig** vs **niche**), how **main/sub** appears, limits, auto-fill from loadout. +- Listings and search are **niche / archetype** oriented (mitigation, heal, damage, control, etc.)—not raw gig names as the primary filter. +- **Eligibility:** the game (or data rules) decides whether your **current gig + loadout** (main/sub, gear, etc.—exact inputs **TBD**) **qualifies** you to advertise under each niche. If you qualify for **several**, you may **select multiple** niches for your listing—**player discretion** among what you’re allowed, not forced single pick. +- **Open:** eligibility tables per gig/loadout template, caps on how many niches one listing shows, how **sub-gig** factors in, and UX copy. **Open — rules / content (independent of LFG UI):** @@ -106,7 +108,8 @@ Detail: seams table in [skills.md](skills.md). | Gig roster size & names | Small launch set; clear niches | Open | | Gig XP award timing | **Main gig only**; **sub-gig** earns no XP (level that gig as main to progress it) | Agreed | | Sub-gig + consumable amp (passive) | **Sub counts**; main **or** sub can trigger passive amp | Agreed | -| Recruitment UX | **Undecided:** chat-only vs LFG/matchmaking tool vs hybrid; tag schema only if tool ships | Open | +| Recruitment channel | Chat-only vs LFG/matchmaking vs hybrid; launch scope | Open | +| LFG tool *(if shipped)* | **Niche** listings; **gig + loadout** eligibility per archetype; **multi-select** among qualified niches (player choice) | Agreed (conditional) | | PvP gig rules | — | Open | ## Next artifacts diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index afeb2a3..e3ba211 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -13,7 +13,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | Document | Focus | Notes | |----------|--------|--------| | [skills.md](skills.md) | Hybrid progression; vocabulary; gigs ↔ skills seams | With [gigs.md](gigs.md) | -| [gigs.md](gigs.md) | Combat gigs: roster, hub swap, sub-gig, party/encounters, PvP (open) | Recruitment UI undecided | +| [gigs.md](gigs.md) | Combat gigs: roster, hub swap, sub-gig, party/encounters, PvP (open) | LFG **if shipped:** niche + loadout eligibility | | *(add rows as files land)* | | | ### Planned topics (stubs) From 4c6dc94d5e50b4a28d15b17a7caf16537e68f5cd Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:22:03 -0400 Subject: [PATCH 27/91] chore: defer recruitment channel until broader vision --- docs/game-design/gigs.md | 6 ++---- docs/game-design/overview.md | 4 ++-- docs/game-design/skills.md | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 102b1ae..a0e0d8a 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -67,9 +67,7 @@ Earlier drafts implied a **dedicated LFG UI** (tags, filters). That is **not** d **Design intent (UI-agnostic):** gigs still give **shared vocabulary**—“need mitigation,” “need cleanse,” “LF damage”—whether typed in chat or, later, picked from a structured browser. **Encounter** and **scaling** design can reason about **niches** without assuming any specific recruitment feature ships. -**Open — product / client:** - -- **Recruitment channel:** chat-only vs **built-in LFG/matchmaking** vs hybrid; scope for **launch** vs later. +**Recruitment channel — deferred:** whether we ship **chat-only**, a **built-in LFG/matchmaking** tool, or a **hybrid** is **not** something to lock now. Revisit once **social, zone, and session vision** are further along; the **conditional LFG design** below stays ready if we build a tool. **If we ship an LFG-style tool** (common in modern MMOs)—**agreed direction, conditional on building it:** @@ -108,7 +106,7 @@ Detail: seams table in [skills.md](skills.md). | Gig roster size & names | Small launch set; clear niches | Open | | Gig XP award timing | **Main gig only**; **sub-gig** earns no XP (level that gig as main to progress it) | Agreed | | Sub-gig + consumable amp (passive) | **Sub counts**; main **or** sub can trigger passive amp | Agreed | -| Recruitment channel | Chat-only vs LFG/matchmaking vs hybrid; launch scope | Open | +| Recruitment channel | **Deferred**—revisit with broader game/social vision; options remain chat / tool / hybrid | Deferred | | LFG tool *(if shipped)* | **Niche** listings; **gig + loadout** eligibility per archetype; **multi-select** among qualified niches (player choice) | Agreed (conditional) | | PvP gig rules | — | Open | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index e3ba211..8152702 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -13,14 +13,14 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | Document | Focus | Notes | |----------|--------|--------| | [skills.md](skills.md) | Hybrid progression; vocabulary; gigs ↔ skills seams | With [gigs.md](gigs.md) | -| [gigs.md](gigs.md) | Combat gigs: roster, hub swap, sub-gig, party/encounters, PvP (open) | LFG **if shipped:** niche + loadout eligibility | +| [gigs.md](gigs.md) | Combat gigs: roster, hub swap, sub-gig, party/encounters, PvP (open) | Recruitment channel **deferred**; niche LFG **if** tool ships | | *(add rows as files land)* | | | ### Planned topics (stubs) Link new files here when they exist; remove or rewrite this subsection once the table is populated. -- **Gigs** — [gigs.md](gigs.md): combat roles, hub swap, sub-gig, progression, party/encounters (LFG tool vs chat **open**). **Skills** (non-combat): [skills.md](skills.md). *Professions* stay folded into **skills** + rep unless a future doc defines something separate. +- **Gigs** — [gigs.md](gigs.md): combat roles, hub swap, sub-gig, progression, party/encounters; recruitment channel **deferred** until more vision exists. **Skills** (non-combat): [skills.md](skills.md). *Professions* stay folded into **skills** + rep unless a future doc defines something separate. - **Zones** — tone, danger, faction or economic role of a place. - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 3c3b6e4..57ea126 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -88,6 +88,6 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech ## Next artifacts -- **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment (chat vs tool **open**), PvP (started; extend there). +- **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment channel **deferred**, PvP (started; extend there). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. - **Items** — **equip:** gig rules; **craft:** **skills** (and recipe/rep), never gig level. From a6b33d8a30026f579e286e27481c71e0046b4283 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:22:33 -0400 Subject: [PATCH 28/91] chore: PvP gig rules open indefinite pending PvP scope --- docs/game-design/gigs.md | 8 +++++--- docs/game-design/overview.md | 2 +- docs/game-design/skills.md | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index a0e0d8a..236ccda 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -36,7 +36,7 @@ Cyberpunk paint (netrunner overlay, street sam, corp tech, etc.) layers on these - **Combat gear:** almost certainly **main-gig–restricted** for equip; sub feeds **abilities** only—confirm in content pass. - **Consumables (passive amp):** **Agreed** — **sub-gig** counts. **Passive** gig-tagged bonuses (e.g. extra healing from a med item when you’re a medic-type gig) apply if **either** **main** or **sub** matches the item’s gig hook. **Open:** if **both** match, **stack vs. single best** vs. **main wins**—pick at balance pass. -- **PvP:** gig + sub balance, brackets, templates—**open.** +- **PvP:** **gig rules blocked** until we know **if** and **how much** PvP the game includes—see [PvE vs PvP](#pve-vs-pvp). - **UI:** two gig strips, sub ability styling, loadout summary for party—**open.** ## Progression @@ -82,7 +82,9 @@ Earlier drafts implied a **dedicated LFG UI** (tags, filters). That is **not** d ## PvE vs PvP -**Open:** whether all gigs are PvP-viable on launch, **templates** (PvP loadout subset), or **security-band** restrictions ([overview](overview.md) risk stubs). Sub-gig rules may differ by mode. +**PvP scope is undecided**—how much player-vs-player content (if any) ships, and in what form, is still unsettled. Until that vision exists, **gig-specific PvP rules** (viability per gig, **sub-gig** in PvP, brackets, **templates**, **security-band** hooks—[overview](overview.md) risk stubs) stay **open with no deadline**, not a near-term design task. + +**PvE** gig design proceeds **without** assuming a particular PvP answer. ## Story @@ -108,7 +110,7 @@ Detail: seams table in [skills.md](skills.md). | Sub-gig + consumable amp (passive) | **Sub counts**; main **or** sub can trigger passive amp | Agreed | | Recruitment channel | **Deferred**—revisit with broader game/social vision; options remain chat / tool / hybrid | Deferred | | LFG tool *(if shipped)* | **Niche** listings; **gig + loadout** eligibility per archetype; **multi-select** among qualified niches (player choice) | Agreed (conditional) | -| PvP gig rules | — | Open | +| PvP gig rules | **Blocked on overall PvP vision**—open indefinitely until product direction on PvP is clear | Open (indefinite) | ## Next artifacts diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 8152702..0a095da 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -13,7 +13,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | Document | Focus | Notes | |----------|--------|--------| | [skills.md](skills.md) | Hybrid progression; vocabulary; gigs ↔ skills seams | With [gigs.md](gigs.md) | -| [gigs.md](gigs.md) | Combat gigs: roster, hub swap, sub-gig, party/encounters, PvP (open) | Recruitment channel **deferred**; niche LFG **if** tool ships | +| [gigs.md](gigs.md) | Combat gigs: roster, hub swap, sub-gig, party/encounters | Recruitment **deferred**; PvP gig rules **open indefinite**; niche LFG **if** tool ships | | *(add rows as files land)* | | | ### Planned topics (stubs) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 57ea126..1bf7625 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -88,6 +88,6 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech ## Next artifacts -- **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment channel **deferred**, PvP (started; extend there). +- **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment **deferred**; **PvP** gig rules **open indefinite** (overall PvP scope TBD). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. - **Items** — **equip:** gig rules; **craft:** **skills** (and recipe/rep), never gig level. From 6b59ebbbe44d8c4515345042e75af9f96e122ac5 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:23:48 -0400 Subject: [PATCH 29/91] chore: first-draft 8-gig roster (2 per archetype) --- docs/game-design/gigs.md | 24 ++++++++++++++---------- docs/game-design/overview.md | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 236ccda..95179a5 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -12,18 +12,22 @@ Fiction may say *contract*, *loadout*, or *job*; specs use **gig**. ## Gig roster -**Open:** final count and names. Start from a **small roster** with **clear party niches** so **recruitment talk** (chat or any future tool) and **encounter** design stay legible; grow over content seasons. +**First draft (v0):** **eight gigs**—**two per archetype** across four archetypes: **damage**, **tank**, **heal**, **util**. Names and identities are **placeholders** until abilities and fiction pass over them. -**Starter archetypes to cover (working labels, not final):** +| Archetype | Gig (working name) | Draft identity (how it differs from its pair) | +|-----------|-------------------|-----------------------------------------------| +| **Damage** | **Breach** | Spike and focus: burst windows, priority-target removal, “delete one problem now.” | +| **Damage** | **Suppressor** | Sustained pressure: cleave, stagger, lane control—keeps many threats busy. | +| **Tank** | **Bulwark** | Anchor tank: stand ground, hard mitigation, bodyguard space for the group. | +| **Tank** | **Skirmisher** | Mobile tank: pick up strays, reposition fights, mitigation through movement and timing. | +| **Heal** | **Sawbones** | Direct recovery: triage spikes, raw throughput, “fix the bar now.” | +| **Heal** | **Synthesist** | Preventive / layered: shields, HoTs, slow cleanses—flatten damage before it spikes. | +| **Util** | **Interceptor** | Shutdown: debuffs, interrupts, strip or punish enemy plans—offensive support. | +| **Util** | **Conductor** | Enable: group buffs, resource or tempo hooks, “make the party’s next play bigger.” | -| Niche | Job in a fight | -|--------|------------------| -| Mitigation / control | Hold space, reduce harm to the group | -| Healing / cleansing | Recover HP, strip bad states | -| Damage (single / cleave) | Primary threat removal | -| Utility / debuff | Weaken targets, enable others | +**LFG / niches:** the four **archetypes** map cleanly to “need damage / tank / heal / util.” A **conditional** LFG tool ([Party, encounters, and recruitment](#party-encounters-and-recruitment)) can treat **archetype** as the coarse tag and **gig** (or loadout) as the fine print—**open**. -Cyberpunk paint (netrunner overlay, street sam, corp tech, etc.) layers on these **mechanical** niches—**open** which niches map to launch gigs. +**Still open:** final **display names**, which **weapon or gear families** attach to which gig, **sub-gig** pairings that feel bad, and whether we add a ninth gig before launch. Cyberpunk **skin** (corp vs street, chrome metaphors) layers on after kits exist. ## Main gig + sub-gig @@ -105,7 +109,7 @@ Detail: seams table in [skills.md](skills.md). | Sub-gig slot | FFXI-style; ~½ main effective cap; hub change | Agreed ([skills.md](skills.md)) | | Hub swap | Safe hubs only; not in field / combat | Agreed | | Combat progression | Per-gig tracks | Agreed | -| Gig roster size & names | Small launch set; clear niches | Open | +| Gig roster | **8 gigs**—**2 per** damage / tank / heal / util; working names in roster table | Draft | | Gig XP award timing | **Main gig only**; **sub-gig** earns no XP (level that gig as main to progress it) | Agreed | | Sub-gig + consumable amp (passive) | **Sub counts**; main **or** sub can trigger passive amp | Agreed | | Recruitment channel | **Deferred**—revisit with broader game/social vision; options remain chat / tool / hybrid | Deferred | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 0a095da..7e90956 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -13,7 +13,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | Document | Focus | Notes | |----------|--------|--------| | [skills.md](skills.md) | Hybrid progression; vocabulary; gigs ↔ skills seams | With [gigs.md](gigs.md) | -| [gigs.md](gigs.md) | Combat gigs: roster, hub swap, sub-gig, party/encounters | Recruitment **deferred**; PvP gig rules **open indefinite**; niche LFG **if** tool ships | +| [gigs.md](gigs.md) | **8-gig roster draft** (2× damage/tank/heal/util); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | | *(add rows as files land)* | | | ### Planned topics (stubs) From 4c8239b3bf4b3066923818506f73f747356d40bf Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:25:32 -0400 Subject: [PATCH 30/91] chore: add third damage gig Reach (ranged) --- docs/game-design/gigs.md | 13 +++++++------ docs/game-design/overview.md | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 95179a5..fbbc7cc 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -12,12 +12,13 @@ Fiction may say *contract*, *loadout*, or *job*; specs use **gig**. ## Gig roster -**First draft (v0):** **eight gigs**—**two per archetype** across four archetypes: **damage**, **tank**, **heal**, **util**. Names and identities are **placeholders** until abilities and fiction pass over them. +**First draft (v0):** **nine gigs**—**three** in **damage**, **two each** in **tank**, **heal**, and **util**. Names and identities are **placeholders** until abilities and fiction pass over them. -| Archetype | Gig (working name) | Draft identity (how it differs from its pair) | +| Archetype | Gig (working name) | Draft identity (distinction within archetype) | |-----------|-------------------|-----------------------------------------------| -| **Damage** | **Breach** | Spike and focus: burst windows, priority-target removal, “delete one problem now.” | -| **Damage** | **Suppressor** | Sustained pressure: cleave, stagger, lane control—keeps many threats busy. | +| **Damage** | **Breach** | Focused spike: burst windows, priority-target removal—“delete one problem now” (typically short-to-mid range in kit design). | +| **Damage** | **Suppressor** | AoE / cleave pressure: sustained stagger, packs and lanes—keeps many threats busy in **close or mid** space. | +| **Damage** | **Reach** | **Ranged** damage: best at distance, spacing and line-of-sight play, punishes spread or exposed targets—fills the “back line DPS” read without implying a specific weapon yet. | | **Tank** | **Bulwark** | Anchor tank: stand ground, hard mitigation, bodyguard space for the group. | | **Tank** | **Skirmisher** | Mobile tank: pick up strays, reposition fights, mitigation through movement and timing. | | **Heal** | **Sawbones** | Direct recovery: triage spikes, raw throughput, “fix the bar now.” | @@ -27,7 +28,7 @@ Fiction may say *contract*, *loadout*, or *job*; specs use **gig**. **LFG / niches:** the four **archetypes** map cleanly to “need damage / tank / heal / util.” A **conditional** LFG tool ([Party, encounters, and recruitment](#party-encounters-and-recruitment)) can treat **archetype** as the coarse tag and **gig** (or loadout) as the fine print—**open**. -**Still open:** final **display names**, which **weapon or gear families** attach to which gig, **sub-gig** pairings that feel bad, and whether we add a ninth gig before launch. Cyberpunk **skin** (corp vs street, chrome metaphors) layers on after kits exist. +**Still open:** final **display names**, which **weapon or gear families** attach to which gig (especially **Reach** vs **Breach** / **Suppressor**), **sub-gig** pairings that feel bad, and further roster growth after launch. Cyberpunk **skin** (corp vs street, chrome metaphors) layers on after kits exist. ## Main gig + sub-gig @@ -109,7 +110,7 @@ Detail: seams table in [skills.md](skills.md). | Sub-gig slot | FFXI-style; ~½ main effective cap; hub change | Agreed ([skills.md](skills.md)) | | Hub swap | Safe hubs only; not in field / combat | Agreed | | Combat progression | Per-gig tracks | Agreed | -| Gig roster | **8 gigs**—**2 per** damage / tank / heal / util; working names in roster table | Draft | +| Gig roster | **9 gigs**—**3 damage** (Breach, Suppressor, **Reach**), **2 each** tank / heal / util; working names in roster table | Draft | | Gig XP award timing | **Main gig only**; **sub-gig** earns no XP (level that gig as main to progress it) | Agreed | | Sub-gig + consumable amp (passive) | **Sub counts**; main **or** sub can trigger passive amp | Agreed | | Recruitment channel | **Deferred**—revisit with broader game/social vision; options remain chat / tool / hybrid | Deferred | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 7e90956..ee9adfb 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -13,7 +13,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | Document | Focus | Notes | |----------|--------|--------| | [skills.md](skills.md) | Hybrid progression; vocabulary; gigs ↔ skills seams | With [gigs.md](gigs.md) | -| [gigs.md](gigs.md) | **8-gig roster draft** (2× damage/tank/heal/util); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | +| [gigs.md](gigs.md) | **9-gig roster draft** (3× damage, 2× tank/heal/util); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | | *(add rows as files land)* | | | ### Planned topics (stubs) From 29838c862785f290ccb1f935ba061e4db32a4485 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:27:27 -0400 Subject: [PATCH 31/91] =?UTF-8?q?chore:=20cyberpunk-themed=20gig=20names?= =?UTF-8?q?=20(Breach,=20Cascade,=20Sightline,=20=E2=80=A6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/game-design/gigs.md | 38 ++++++++++++++++++++++-------------- docs/game-design/overview.md | 2 +- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index fbbc7cc..513e942 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -12,23 +12,31 @@ Fiction may say *contract*, *loadout*, or *job*; specs use **gig**. ## Gig roster -**First draft (v0):** **nine gigs**—**three** in **damage**, **two each** in **tank**, **heal**, and **util**. Names and identities are **placeholders** until abilities and fiction pass over them. +### Naming and theme -| Archetype | Gig (working name) | Draft identity (distinction within archetype) | -|-----------|-------------------|-----------------------------------------------| -| **Damage** | **Breach** | Focused spike: burst windows, priority-target removal—“delete one problem now” (typically short-to-mid range in kit design). | -| **Damage** | **Suppressor** | AoE / cleave pressure: sustained stagger, packs and lanes—keeps many threats busy in **close or mid** space. | -| **Damage** | **Reach** | **Ranged** damage: best at distance, spacing and line-of-sight play, punishes spread or exposed targets—fills the “back line DPS” read without implying a specific weapon yet. | -| **Tank** | **Bulwark** | Anchor tank: stand ground, hard mitigation, bodyguard space for the group. | -| **Tank** | **Skirmisher** | Mobile tank: pick up strays, reposition fights, mitigation through movement and timing. | -| **Heal** | **Sawbones** | Direct recovery: triage spikes, raw throughput, “fix the bar now.” | -| **Heal** | **Synthesist** | Preventive / layered: shields, HoTs, slow cleanses—flatten damage before it spikes. | -| **Util** | **Interceptor** | Shutdown: debuffs, interrupts, strip or punish enemy plans—offensive support. | -| **Util** | **Conductor** | Enable: group buffs, resource or tempo hooks, “make the party’s next play bigger.” | +Project priorities: **fun first**, then **distinctly cyberpunk**. Gig names should be **good in voice chat** (short, punchy, hard to confuse) and **signal the fantasy** without reading as generic fantasy MMO or pure military sim. -**LFG / niches:** the four **archetypes** map cleanly to “need damage / tank / heal / util.” A **conditional** LFG tool ([Party, encounters, and recruitment](#party-encounters-and-recruitment)) can treat **archetype** as the coarse tag and **gig** (or loadout) as the fine print—**open**. +**Cyberpunk flavor** here means: **street and contract work**, **net and security metaphors**, **hardware and software language**, **chrome and infrastructure**—not just “neon trim.” We avoid **Tolkien-adjacent** or **knightly** defaults unless we deliberately subvert them later. -**Still open:** final **display names**, which **weapon or gear families** attach to which gig (especially **Reach** vs **Breach** / **Suppressor**), **sub-gig** pairings that feel bad, and further roster growth after launch. Cyberpunk **skin** (corp vs street, chrome metaphors) layers on after kits exist. +Names below are **v1** after a theme pass; abilities and lore can still rename a gig if playtests demand it. + +**First draft (v1):** **nine gigs**—**three** **damage**, **two each** **tank**, **heal**, **util**. + +| Archetype | Gig | Cyberpunk read (why this name) | Draft identity (mechanical) | +|-----------|-----|-------------------------------|------------------------------| +| **Damage** | **Breach** | One clean **breach**—ICE, perimeter, or priority target—then exploit it. | Focused **spike**: burst windows, priority removal, short-to-mid range in kit. | +| **Damage** | **Cascade** | Failure **propagates** like a crash or outage—noise that hits **many** nodes at once. | **AoE / cleave** pressure, packs and lanes, close or mid space. | +| **Damage** | **Sightline** | **Optics** and **LOS**—control of angle and distance, surveillance-era violence. | **Ranged** DPS: spacing, line-of-sight play, back-line read; weapon-agnostic for now. | +| **Tank** | **Hardcase** | Street **chassis** attitude: you’re the **case** that doesn’t crack. | **Anchor** tank: stand ground, hard mitigation, hold space for the group. | +| **Tank** | **Drift** | **Slip** threat and **slide** the fight—ghost through damage, street motion. | **Mobile** tank: pick up strays, reposition, mitigation through timing and movement. | +| **Heal** | **Sawbones** | Classic **street doc**—already in-genre; visceral, human, grimy. | **Direct** healing: triage spikes, raw throughput. | +| **Heal** | **Patch** | **Patch** the body *and* the run—prevent the wipe like a hotfix before prod blows. | **Preventive / layered**: shields, HoTs, slow cleanses—flatten damage before it spikes. | +| **Util** | **Blackout** | **Kill the lights** on the enemy plan—casts, buffs, coordination. | **Shutdown**: debuffs, interrupts, punish windows—offensive support. | +| **Util** | **Relay** | You’re the **bus** that **amplifies** the crew’s signal and tempo. | **Enable**: group buffs, resource or tempo hooks—make the next team play bigger. | + +**LFG / niches:** the four **archetypes** still map to “need damage / tank / heal / util.” A **conditional** LFG tool ([Party, encounters, and recruitment](#party-encounters-and-recruitment)) can treat **archetype** as the coarse tag and **gig** (or loadout) as the fine print—**open**. + +**Still open:** **weapon / gear families** per gig (especially **Sightline** vs **Breach** / **Cascade**), **sub-gig** pairings that feel bad, corp vs street **faction skins** on the same gig, and roster growth after launch. ## Main gig + sub-gig @@ -110,7 +118,7 @@ Detail: seams table in [skills.md](skills.md). | Sub-gig slot | FFXI-style; ~½ main effective cap; hub change | Agreed ([skills.md](skills.md)) | | Hub swap | Safe hubs only; not in field / combat | Agreed | | Combat progression | Per-gig tracks | Agreed | -| Gig roster | **9 gigs**—**3 damage** (Breach, Suppressor, **Reach**), **2 each** tank / heal / util; working names in roster table | Draft | +| Gig roster | **9 gigs**—cyberpunk-themed v1 names in roster (**Breach**, **Cascade**, **Sightline**, **Hardcase**, **Drift**, **Sawbones**, **Patch**, **Blackout**, **Relay**) | Draft | | Gig XP award timing | **Main gig only**; **sub-gig** earns no XP (level that gig as main to progress it) | Agreed | | Sub-gig + consumable amp (passive) | **Sub counts**; main **or** sub can trigger passive amp | Agreed | | Recruitment channel | **Deferred**—revisit with broader game/social vision; options remain chat / tool / hybrid | Deferred | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index ee9adfb..4106883 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -13,7 +13,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | Document | Focus | Notes | |----------|--------|--------| | [skills.md](skills.md) | Hybrid progression; vocabulary; gigs ↔ skills seams | With [gigs.md](gigs.md) | -| [gigs.md](gigs.md) | **9-gig roster draft** (3× damage, 2× tank/heal/util); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | +| [gigs.md](gigs.md) | **9-gig roster** (v1 cyberpunk names); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | | *(add rows as files land)* | | | ### Planned topics (stubs) From 49ee930f5d480b9244a945b484d5dc905cdaee9a Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:29:03 -0400 Subject: [PATCH 32/91] chore: note likely fourth damage gig later; keep 9-gig v1 roster --- docs/game-design/gigs.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 513e942..f613ab2 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -34,9 +34,11 @@ Names below are **v1** after a theme pass; abilities and lore can still rename a | **Util** | **Blackout** | **Kill the lights** on the enemy plan—casts, buffs, coordination. | **Shutdown**: debuffs, interrupts, punish windows—offensive support. | | **Util** | **Relay** | You’re the **bus** that **amplifies** the crew’s signal and tempo. | **Enable**: group buffs, resource or tempo hooks—make the next team play bigger. | +**Roster scope (v1):** we **expect** to add a **fourth damage** gig eventually once a clear mechanical niche shows up in combat design (e.g. DoT, pets, or another distinct fantasy—**TBD**). **For now** the roster stays at **nine** gigs; no fourth damage row until we’re ready to name and kit it. + **LFG / niches:** the four **archetypes** still map to “need damage / tank / heal / util.” A **conditional** LFG tool ([Party, encounters, and recruitment](#party-encounters-and-recruitment)) can treat **archetype** as the coarse tag and **gig** (or loadout) as the fine print—**open**. -**Still open:** **weapon / gear families** per gig (especially **Sightline** vs **Breach** / **Cascade**), **sub-gig** pairings that feel bad, corp vs street **faction skins** on the same gig, and roster growth after launch. +**Still open:** **weapon / gear families** per gig (especially **Sightline** vs **Breach** / **Cascade**), **sub-gig** pairings that feel bad, corp vs street **faction skins** on the same gig, future **fourth damage** gig definition, and other roster growth after launch. ## Main gig + sub-gig @@ -118,7 +120,7 @@ Detail: seams table in [skills.md](skills.md). | Sub-gig slot | FFXI-style; ~½ main effective cap; hub change | Agreed ([skills.md](skills.md)) | | Hub swap | Safe hubs only; not in field / combat | Agreed | | Combat progression | Per-gig tracks | Agreed | -| Gig roster | **9 gigs**—cyberpunk-themed v1 names in roster (**Breach**, **Cascade**, **Sightline**, **Hardcase**, **Drift**, **Sawbones**, **Patch**, **Blackout**, **Relay**) | Draft | +| Gig roster | **9 gigs** (v1); **4th damage** likely later—parked until niche is clear | Draft | | Gig XP award timing | **Main gig only**; **sub-gig** earns no XP (level that gig as main to progress it) | Agreed | | Sub-gig + consumable amp (passive) | **Sub counts**; main **or** sub can trigger passive amp | Agreed | | Recruitment channel | **Deferred**—revisit with broader game/social vision; options remain chat / tool / hybrid | Deferred | From 8bc7018776d2bde97612ea5332bf46615c6fdd13 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:40:22 -0400 Subject: [PATCH 33/91] chore: capture hack + bodyguard mission idea (skills + gigs) --- docs/game-design/gigs.md | 1 + docs/game-design/hack-bodyguard-missions.md | 36 +++++++++++++++++++++ docs/game-design/overview.md | 3 +- docs/game-design/skills.md | 1 + 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 docs/game-design/hack-bodyguard-missions.md diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index f613ab2..38e073d 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -132,3 +132,4 @@ Detail: seams table in [skills.md](skills.md). - [Abilities](overview.md) — **gig-locked** kits, sub-gig ability rules, telegraphs ([Epic 5](../decomposition/epics/epic_05_pve_combat.md)). - [Combat pillars](overview.md) — PvE readability, TTK, risk ([overview](overview.md)). - [Items](overview.md) — equip tags per gig; crafted vs dropped. +- [hack-bodyguard-missions.md](hack-bodyguard-missions.md) — group content where **gigs** hold security while **skills** run the hack (brainstorm). diff --git a/docs/game-design/hack-bodyguard-missions.md b/docs/game-design/hack-bodyguard-missions.md new file mode 100644 index 0000000..bc1a84a --- /dev/null +++ b/docs/game-design/hack-bodyguard-missions.md @@ -0,0 +1,36 @@ +# Hack + bodyguard missions (idea capture) + +**Status:** brainstorm only—so the concept is not lost. Not a spec; no commitment to ship, sizing, or tech. + +## Pitch + +Certain **instances / dungeons / group quests** split party pressure across two layers at once: + +1. **Runners / hackers** — progress an objective through **non-combat skills** (intrusion, decryption, keeping a channel open, etc.). This lane is **skill**-based ([skills.md](skills.md)), not gig-based. +2. **Bodyguards** — hold space against **physical security** (drones, guards, automated defenses). This lane is **gig**-based combat ([gigs.md](gigs.md)). + +Both need to succeed for the run to work. The fantasy: **corporate extraction**, **data heist**, **sabotage op**—cyberpunk bread and butter. + +## Cross-lane play (examples) + +Ideas to make the two halves **talk to each other** (fun > realism until balance says otherwise): + +- **Hackers → combat:** take down **security comms** or **sensor nets** so **attack waves slow**, telegraphs get sloppy, or patrol routes blind. +- **Bodyguards → hack:** **physical breach** of an IT closet / NOC floor so the **defense stack** against the hack weakens (fewer counter-intrusion ticks, shorter firewall phases, etc.). + +Other directions **open:** power budget for the site, timers, optional side objectives, failure states (wipe vs partial success). + +## Design intent + +- Reinforces the **skills vs gigs** split in **one** memorable content type. +- Gives **non-combat specialists** a spotlight **inside** group content that still has combat teeth. +- **Open:** minimum / maximum group size, solo scaling, whether one player can straddle both roles, how this ties to **zones** and **factions**, and encounter templates ([overview](overview.md) — encounters stub). + +## Related docs + +| Topic | Where | +|--------|--------| +| Gig roster, party language | [gigs.md](gigs.md) | +| Skills, seams with combat gear/crafting | [skills.md](skills.md) | +| Zone / instance tone later | [overview](overview.md) planned **Zones** | +| Enemy/security archetypes later | [overview](overview.md) planned **Encounters** | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 4106883..d8590a3 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -14,6 +14,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression |----------|--------|--------| | [skills.md](skills.md) | Hybrid progression; vocabulary; gigs ↔ skills seams | With [gigs.md](gigs.md) | | [gigs.md](gigs.md) | **9-gig roster** (v1 cyberpunk names); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | +| [hack-bodyguard-missions.md](hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | | *(add rows as files land)* | | | ### Planned topics (stubs) @@ -34,7 +35,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Death, loss & recovery** — stakes on failure, recovery paths, anti-grief boundaries. - **Risk & security bands** — safe pockets vs. wild space; where optional PvP and theft sit (aligns with security-tier thinking). - **Social play** — squad scale, corps, trust, betrayal affordances, async cooperation. -- **Encounters & enemy roles** — archetypes, what a fight teaches, variety without noise. +- **Encounters & enemy roles** — archetypes, what a fight teaches, variety without noise. **Skill + gig split runs:** [hack-bodyguard-missions.md](hack-bodyguard-missions.md). - **Onboarding** — first session hook, clarity vs. mystery, how much systems the new player sees. - **Tone & narrative** — how lore shows up (quests, environment, UI), voice of the world. diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 1bf7625..538a07c 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -91,3 +91,4 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech - **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment **deferred**; **PvP** gig rules **open indefinite** (overall PvP scope TBD). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. - **Items** — **equip:** gig rules; **craft:** **skills** (and recipe/rep), never gig level. +- [hack-bodyguard-missions.md](hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From 68419d03964b112237eb861a4da1649b962ed653 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:41:28 -0400 Subject: [PATCH 34/91] chore: add docs/game-design/brainstorm/ for loose ideas --- docs/game-design/README.md | 2 ++ docs/game-design/brainstorm/README.md | 9 +++++++++ .../{ => brainstorm}/hack-bodyguard-missions.md | 14 +++++++------- docs/game-design/gigs.md | 2 +- docs/game-design/overview.md | 6 +++--- docs/game-design/skills.md | 2 +- 6 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 docs/game-design/brainstorm/README.md rename docs/game-design/{ => brainstorm}/hack-bodyguard-missions.md (76%) diff --git a/docs/game-design/README.md b/docs/game-design/README.md index 5b9086f..46d2355 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -2,6 +2,8 @@ **Master index:** [`overview.md`](overview.md) — summary, artifact table, and links to related docs. +**Brainstorm-only** (not specs): [`brainstorm/`](brainstorm/README.md). + Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), zones, mechanics, items, abilities, and other design artifacts before they are tied to concrete systems or tickets. Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). diff --git a/docs/game-design/brainstorm/README.md b/docs/game-design/brainstorm/README.md new file mode 100644 index 0000000..9b0512a --- /dev/null +++ b/docs/game-design/brainstorm/README.md @@ -0,0 +1,9 @@ +# Brainstorm (game design) + +**Loose ideas** and **idea captures**—not specs, not committed scope. Anything here may move, merge into a proper artifact, or be dropped. + +Parent index: [`../overview.md`](../overview.md). + +| File | Topic | +|------|--------| +| [hack-bodyguard-missions.md](hack-bodyguard-missions.md) | Skill + gig split instances (hack / bodyguard) | diff --git a/docs/game-design/hack-bodyguard-missions.md b/docs/game-design/brainstorm/hack-bodyguard-missions.md similarity index 76% rename from docs/game-design/hack-bodyguard-missions.md rename to docs/game-design/brainstorm/hack-bodyguard-missions.md index bc1a84a..aa00d7d 100644 --- a/docs/game-design/hack-bodyguard-missions.md +++ b/docs/game-design/brainstorm/hack-bodyguard-missions.md @@ -6,8 +6,8 @@ Certain **instances / dungeons / group quests** split party pressure across two layers at once: -1. **Runners / hackers** — progress an objective through **non-combat skills** (intrusion, decryption, keeping a channel open, etc.). This lane is **skill**-based ([skills.md](skills.md)), not gig-based. -2. **Bodyguards** — hold space against **physical security** (drones, guards, automated defenses). This lane is **gig**-based combat ([gigs.md](gigs.md)). +1. **Runners / hackers** — progress an objective through **non-combat skills** (intrusion, decryption, keeping a channel open, etc.). This lane is **skill**-based ([skills.md](../skills.md)), not gig-based. +2. **Bodyguards** — hold space against **physical security** (drones, guards, automated defenses). This lane is **gig**-based combat ([gigs.md](../gigs.md)). Both need to succeed for the run to work. The fantasy: **corporate extraction**, **data heist**, **sabotage op**—cyberpunk bread and butter. @@ -24,13 +24,13 @@ Other directions **open:** power budget for the site, timers, optional side obje - Reinforces the **skills vs gigs** split in **one** memorable content type. - Gives **non-combat specialists** a spotlight **inside** group content that still has combat teeth. -- **Open:** minimum / maximum group size, solo scaling, whether one player can straddle both roles, how this ties to **zones** and **factions**, and encounter templates ([overview](overview.md) — encounters stub). +- **Open:** minimum / maximum group size, solo scaling, whether one player can straddle both roles, how this ties to **zones** and **factions**, and encounter templates ([overview](../overview.md) — encounters stub). ## Related docs | Topic | Where | |--------|--------| -| Gig roster, party language | [gigs.md](gigs.md) | -| Skills, seams with combat gear/crafting | [skills.md](skills.md) | -| Zone / instance tone later | [overview](overview.md) planned **Zones** | -| Enemy/security archetypes later | [overview](overview.md) planned **Encounters** | +| Gig roster, party language | [gigs.md](../gigs.md) | +| Skills, seams with combat gear/crafting | [skills.md](../skills.md) | +| Zone / instance tone later | [overview](../overview.md) planned **Zones** | +| Enemy/security archetypes later | [overview](../overview.md) planned **Encounters** | diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 38e073d..ea82ce2 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -132,4 +132,4 @@ Detail: seams table in [skills.md](skills.md). - [Abilities](overview.md) — **gig-locked** kits, sub-gig ability rules, telegraphs ([Epic 5](../decomposition/epics/epic_05_pve_combat.md)). - [Combat pillars](overview.md) — PvE readability, TTK, risk ([overview](overview.md)). - [Items](overview.md) — equip tags per gig; crafted vs dropped. -- [hack-bodyguard-missions.md](hack-bodyguard-missions.md) — group content where **gigs** hold security while **skills** run the hack (brainstorm). +- [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group content where **gigs** hold security while **skills** run the hack (brainstorm). diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index d8590a3..dda0f12 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,7 +6,7 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. -**Vocabulary ([skills.md](skills.md)):** **gig** = combat role; **skill** = non-combat trained capability only. **Gig** design detail: [gigs.md](gigs.md). +**Vocabulary ([skills.md](skills.md)):** **gig** = combat role; **skill** = non-combat trained capability only. **Gig** design detail: [gigs.md](gigs.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). ## Artifact index @@ -14,7 +14,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression |----------|--------|--------| | [skills.md](skills.md) | Hybrid progression; vocabulary; gigs ↔ skills seams | With [gigs.md](gigs.md) | | [gigs.md](gigs.md) | **9-gig roster** (v1 cyberpunk names); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | -| [hack-bodyguard-missions.md](hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | +| [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | | *(add rows as files land)* | | | ### Planned topics (stubs) @@ -35,7 +35,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Death, loss & recovery** — stakes on failure, recovery paths, anti-grief boundaries. - **Risk & security bands** — safe pockets vs. wild space; where optional PvP and theft sit (aligns with security-tier thinking). - **Social play** — squad scale, corps, trust, betrayal affordances, async cooperation. -- **Encounters & enemy roles** — archetypes, what a fight teaches, variety without noise. **Skill + gig split runs:** [hack-bodyguard-missions.md](hack-bodyguard-missions.md). +- **Encounters & enemy roles** — archetypes, what a fight teaches, variety without noise. **Skill + gig split runs:** [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md). - **Onboarding** — first session hook, clarity vs. mystery, how much systems the new player sees. - **Tone & narrative** — how lore shows up (quests, environment, UI), voice of the world. diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 538a07c..29fbfec 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -91,4 +91,4 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech - **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment **deferred**; **PvP** gig rules **open indefinite** (overall PvP scope TBD). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. - **Items** — **equip:** gig rules; **craft:** **skills** (and recipe/rep), never gig level. -- [hack-bodyguard-missions.md](hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). +- [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From 18f3635fbef77d7711afe80fc641834e2ba9cadf Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:43:27 -0400 Subject: [PATCH 35/91] =?UTF-8?q?chore:=20flesh=20out=20skills.md=20?= =?UTF-8?q?=E2=80=94=20domains,=20categories,=20XP,=20gates,=20mastery,=20?= =?UTF-8?q?epics?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/game-design/skills.md | 106 ++++++++++++++++++++++++++++++++----- 1 file changed, 92 insertions(+), 14 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 29fbfec..261801a 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -2,6 +2,8 @@ Vision-level design for how characters grow. **Combat** uses **gigs** (swap roles for grouping clarity); **each gig levels on its own track** (**per-gig** progression). **Non-combat** uses **skills** (gathering, crafting, and similar loops). [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4) still describes **skill** XP machinery; **gig** XP/levels are **per gig**—decomposition should be revisited when this split hardens. +**Document scope:** the sections below **Skills (non-combat)** are the skills design pass. **Gig** detail is **[gigs.md](gigs.md)**; **brainstorm-only** ideas live under [`brainstorm/`](brainstorm/README.md). + ## Vocabulary From here on in game-design docs: @@ -25,28 +27,104 @@ The **gig** artifact—**roles**, **hub swap**, **per-gig progression**, **main ## Skills (non-combat, classless) -Everything **outside combat role resolution**—gathering, refining, crafting lines, non-combat tech, etc.—uses **skills**: +Everything **outside combat role resolution** trains on **skills**. That includes gathering, refining, crafting, non-combat tech work, and other **world interactions** we choose to track as progression. -- **Any character can train any skill** over time (subject to world gates: discovery, rep, licenses—those expand content, they are not “you picked the wrong gig”). -- **Identity** for “what you do in the economy” is the **skill graph + reputation + gear**, not the gig you ran last night. +### Pillars + +- **Any character can train any skill** over time (subject to **world gates**: discovery, rep, licenses—those **add** content, they are not “you picked the wrong class”). +- **Economy identity** is the **skill graph + reputation + gear**, not which **gig** you had equipped last night. - **Long-term:** avoid dead-end grinds; slow or expensive is fine, “wrong choice forever” is not. -### What counts as a skill +### What is (and isn’t) a skill -A **skill** is a persistent, leveled capability improved primarily by **doing the activity** (chop, refine, assemble, etc.). Supplementary sources (books, training) stay optional. Skills stay **data-defined** (stable IDs, categories, prerequisites). +A **skill** is a **persistent, leveled** capability, **data-defined** (stable IDs, categories, optional prerequisites). Primary progression is **doing the activity** (gather, refine, assemble, hack a door in a skill-based encounter, etc.). **Books, trainers, or mission grants** can supplement XP—**optional** and should not replace “play the loop” as the main fantasy. + +**Not skills:** **gig** combat progression, **raw item stats** with no trained gate, and **one-off** quest flags (unless we explicitly model them as skills—**open**). + +### Skill domains (examples) + +Domains are **content-shaped**, not a locked taxonomy. Early vision includes: + +| Domain | Examples (illustrative) | +|--------|-------------------------| +| **Extraction** | Salvage, mining, harvesting, reclaiming scrap | +| **Processing** | Refining, chemistry prep, material conversion | +| **Fabrication** | Weaponsmith, armtech, synth-chem, cooking if we track it | +| **Tech / intrusion** | Non-combat hacking, bypass, diagnostics—**combat-facing** net actions stay **gig** | +| **Support craft** | Medtech fabrication, field repair kits, augment maintenance (**open** naming) | +| **Social / street** | Negotiation, street doc *craft*, fences—**only if** we give them real loops and XP (**open**) | + +New skills land here as **design + data** demand; domains can **overlap** one skill in multiple tags for UI. ### Categories (families) -Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech*, *Social*). They are **not** gigs and do not replace them. +**Categories** group skills for **UI, filters, and balance**—they are **not** gigs, **not** professions, and **not** hard caps on how many skills you can raise. -### XP, failure, caps, pacing (skills) +**Draft families** (can merge or rename): -- **Server-authoritative** grants with structured sources (node, recipe, mission payout, …). -- **Failure XP** (XP on a **failed attempt** at a skill action—e.g. burnt recipe—not **death penalty**): **per skill / per mechanic**; **open** globally, will depend on how each activity is built and what exploit surface it has. -- **Caps:** **Soft** only—no hard “max level” by default. **Each level needs more XP than the last** (threshold tables or formula; **data-driven** per skill or policy). -- **Runaway mitigation** beyond the curve: diminishing returns, context modifiers, or other knobs if telemetry demands. -- **Gates** (recipes, rep, licenses) should **add** paths, not fake gigs. -- **Pacing/catch-up** (E2.M4) applies across **skills**; **gig** pacing is **per-gig** (same or parallel engine—**open**). +| Category | Rough scope | +|----------|-------------| +| **Gather** | Nodes, yields, field extraction | +| **Process** | Refine, batch, intermediate goods | +| **Make** | Finished goods, recipes, bench work | +| **Tech** | Intrusion, electronics, rigging that isn’t a gig kit | +| **Social** | If we skill it: negotiation, contracts UI hooks (**open**) | + +A skill may appear in **more than one** category for sorting; **canonical** category lives in data for balance. + +### XP, levels, curves + +- **Server-authoritative** XP and level resolution ([E2.M2](../decomposition/modules/E2_M2_XpAwardAndLevelEngine.md)). +- **Primary source (agreed):** **do the activity**—gather, craft steps, skill-based mission objectives, etc. +- **Secondary sources (open):** quests, dailies, books, training dummies—tuned so they **assist** without **replacing** loops. +- **Structured grants:** skill id, amount, **source** (node id, recipe, quest key…) for telemetry and anti-exploit review. + +**Failure XP** (failed craft, failed hack attempt—not **death**): **per skill / per mechanic**; **open** until each activity’s rules exist ([Decisions log](#decisions-log)). + +**Caps (agreed):** **soft** curve only—**each level needs more XP** than the last; **data-driven** per skill or policy. **Runaway** mitigation: steeper curves, context modifiers, diminishing returns on repeat actions—**open** per skill. + +**Pacing / catch-up** ([E2.M4](../decomposition/modules/E2_M4_ProgressionPacingControls.md)): global or cohort knobs for ops; **gig** pacing stays separate ([gigs.md](gigs.md)). + +### Gates, discovery, prerequisites + +**UnlockRequirement**-style gates ([E2.M1](../decomposition/modules/E2_M1_SkillDefinitionRegistry.md)) should **widen** what you can do, not mimic a class pick: + +- **Recipes** and **facilities** tied to skill tier or world state. +- **Faction rep** or **licenses** for restricted goods or zones. +- **Discovery:** find a schematic, rescue a teacher, complete a gig-agnostic storyline. + +**Open:** how much is **available at level 1** vs **gated**; how **alt-friendly** discovery is. + +### Mastery and perks (skills) + +Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/modules/E2_M3_MasteryAndPerkUnlocks.md)) give **build texture** inside one skill (branch picks, efficiency, side effects). Same *idea* as gig expression, **different** system—no shared perk tree between gig and skill unless we deliberately link them (**open**). + +**Respec** for skill mastery—**open** (cost, partial reset). + +### Cross-skill synergies + +**Open:** explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“you’re known as a rigger-smith”) with no math. Avoid mandatory cross-grinds unless the loop is fun. + +### Where skills meet the rest of the game + +| Area | Tie-in | +|------|--------| +| [Epic 2](../decomposition/epics/epic_02_classless_progression.md) | Registry, XP engine, mastery, pacing | +| [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) | Gather and craft **award** skill XP; items and recipes | +| [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | Quest rewards, rep gates, optional skill payouts | +| [gigs.md](gigs.md) | **Craft** combat gear with **skills**; **equip** with **gigs**—[Seams](#seams-gigs--skills) | +| [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | **Skill** lane in a group instance (idea only) | + +### Open questions (skills-only) + +| Topic | Status | +|-------|--------| +| Full launch **skill list** and names | Open | +| Social / negotiation as tracked skills | Open | +| Failure XP defaults per activity type | Open | +| Mastery respec rules | Open | +| Cross-skill synergy math | Open | +| Skill-based **combat-adjacent** actions (e.g. deployable) vs **gig** ability | Open | ## Seams (gigs ↔ skills) @@ -61,7 +139,7 @@ Categories group skills for **UI and balance** (e.g. *Gathering*, *Craft*, *Tech ## Player-facing readability - **Combat:** UI shows **main gig**, **sub-gig**, levels/tracks, combat abilities, and **combat gear** the main gig can use (mismatched gear disabled or greyed). Consumable tooltips for **passive** amps can show **baseline vs. boosted** when **main or sub** matches the item’s gig hook. -- **Non-combat / crafting:** **skill** list, XP sources, categories; crafting combat gear does **not** hide recipes behind gigs—only **skill**/recipe gates (optional UI hint if the product is unequippable for your current gig). +- **Non-combat / crafting:** **skill** list, **category** filters, XP with **source** hints where helpful; **mastery** branches when E2.M3-style systems exist. Crafting combat gear uses **skill**/recipe gates only—not gigs (optional hint if you can’t equip the product on your current gig). - **Story:** journal or quest UI can separate **character / faction** threads from **gig** threads so players see which arc belongs to which gig. - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. From 8fa93d6455bcf1444d5042ecb587af649d7a7750 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:46:53 -0400 Subject: [PATCH 36/91] chore: add progression.md; make skills.md non-combat-only at top --- docs/game-design/README.md | 2 ++ docs/game-design/gigs.md | 4 ++-- docs/game-design/overview.md | 9 +++++---- docs/game-design/progression.md | 30 ++++++++++++++++++++++++++++++ docs/game-design/skills.md | 31 +++++-------------------------- 5 files changed, 44 insertions(+), 32 deletions(-) create mode 100644 docs/game-design/progression.md diff --git a/docs/game-design/README.md b/docs/game-design/README.md index 46d2355..f52af3e 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -2,6 +2,8 @@ **Master index:** [`overview.md`](overview.md) — summary, artifact table, and links to related docs. +**Progression (gigs + skills):** [`progression.md`](progression.md) — shared vocabulary and hybrid rationale. + **Brainstorm-only** (not specs): [`brainstorm/`](brainstorm/README.md). Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), zones, mechanics, items, abilities, and other design artifacts before they are tied to concrete systems or tickets. diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index ea82ce2..ee17c1a 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -1,6 +1,6 @@ # Gigs (combat roles) -Vision-level design for **combat identity**: what you bring to a fight, how you progress, and how you swap roles. Vocabulary (**gig**, **sub-gig**) and the **gigs ↔ skills** seams (gear, crafting, consumables, rep) stay in [skills.md](skills.md); this doc is the **gig** artifact proper. +Vision-level design for **combat identity**: what you bring to a fight, how you progress, and how you swap roles. **Shared progression framing** and **vocabulary**: [progression.md](progression.md). **Gigs ↔ skills seams** (gear, crafting, consumables, rep): [skills.md](skills.md). This file is the **gig** artifact proper. **Implementation anchors:** [Epic 5 — PvE combat](../decomposition/epics/epic_05_pve_combat.md); gig XP/progression will need alignment with [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) when data models split. @@ -42,7 +42,7 @@ Names below are **v1** after a theme pass; abilities and lore can still rename a ## Main gig + sub-gig -**Agreed:** every loadout has a **main gig** and a **sub-gig** (FFXI-style). The sub adds **limited** cross-gig abilities without second-main power—a **large creative space** as the roster grows ([skills.md](skills.md) hybrid rationale). +**Agreed:** every loadout has a **main gig** and a **sub-gig** (FFXI-style). The sub adds **limited** cross-gig abilities without second-main power—a **large creative space** as the roster grows ([progression.md](progression.md) **Why hybrid**). - **Effective sub level:** at **main** per-gig level **X**, sub contributes abilities up to **⌊X / 2⌋**, capped by the **sub-gig’s own stored level** (see **XP** below)—exact `min` / rounding **TBD**. - **Hub-only** changes to main or sub ([Hub swap](#hub-swap)). diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index dda0f12..3345a6e 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,13 +6,14 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. -**Vocabulary ([skills.md](skills.md)):** **gig** = combat role; **skill** = non-combat trained capability only. **Gig** design detail: [gigs.md](gigs.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). +**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). ## Artifact index | Document | Focus | Notes | |----------|--------|--------| -| [skills.md](skills.md) | Hybrid progression; vocabulary; gigs ↔ skills seams | With [gigs.md](gigs.md) | +| [progression.md](progression.md) | Shared **gig + skill** vision, vocabulary, links | Start here for progression | +| [skills.md](skills.md) | Non-combat **skills**; **gigs ↔ skills seams** | With [gigs.md](gigs.md) | | [gigs.md](gigs.md) | **9-gig roster** (v1 cyberpunk names); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | | *(add rows as files land)* | | | @@ -21,12 +22,12 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression Link new files here when they exist; remove or rewrite this subsection once the table is populated. -- **Gigs** — [gigs.md](gigs.md): combat roles, hub swap, sub-gig, progression, party/encounters; recruitment channel **deferred** until more vision exists. **Skills** (non-combat): [skills.md](skills.md). *Professions* stay folded into **skills** + rep unless a future doc defines something separate. +- **Progression** — [progression.md](progression.md): hybrid **gig + skill** overview and vocabulary. **Gigs:** [gigs.md](gigs.md). **Skills** + seams: [skills.md](skills.md). Recruitment channel **deferred**; *professions* stay folded into **skills** + rep unless a future doc defines something separate. - **Zones** — tone, danger, faction or economic role of a place. - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. - **Items** — categories, rarity philosophy, crafting vs. drops. -- **Abilities** — inputs, timing; combo with items; **gig** vs **skill** gates (see [skills.md](skills.md) vocabulary). +- **Abilities** — inputs, timing; combo with items; **gig** vs **skill** gates (see [progression.md](progression.md) vocabulary). - **Gathering & resources** — nodes, competition, exhaustion, what “open world” contesting feels like. - **Crafting & recipes** — depth vs. breadth, failure, specialization; pairs with items but is its own loop. - **Economy** — currency velocity, sinks, trade vs. self-sufficiency, how wealth shows up in play. diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md new file mode 100644 index 0000000..e819d15 --- /dev/null +++ b/docs/game-design/progression.md @@ -0,0 +1,30 @@ +# Progression (gigs + skills) + +Shared vision for **how characters grow** in Neon Sprawl: **combat** vs **everything else** use different systems that still live on **one avatar**. Detail docs: **[gigs.md](gigs.md)** (combat roles), **[skills.md](skills.md)** (non-combat skills and **gigs ↔ skills seams**). + +**Implementation note:** [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4) still describes **skill** XP machinery in decomposition; **gig** XP/levels are **per gig**—module text should be updated when the gig data model is finalized. + +## Vocabulary + +Use these terms in **design specs and tools** (fiction may say *job*, *contract*, *loadout*, etc.): + +| Term | Means | +|------|--------| +| **Gig** | The **combat role** (combat “class”): kit, tuning band, party expectations. **Not** for crafting or gathering. | +| **Skill** | A **non-combat** trained capability only (gather, craft, intrusion loops, etc.). **Never** the combat gig. | +| **Sub-gig** | **Secondary gig** on the same loadout as **main**—limited cross-gig abilities ([gigs.md](gigs.md) **Main gig + sub-gig**). Not crafting identity. | + +## Why hybrid + +- **Gigs** answer “what are you on **this fight**?”—readable roles, **hub swap**, cyberpunk **contract** fantasy, without alts for combat variety. +- **Skills** keep **economy and crafting** **classless**: anyone can raise gather/craft over time; “street doc” can mean high **medic fab** **skill** + rep, not only tonight’s gig. + +## Where to read next + +| Topic | Document | +|--------|-----------| +| Gig roster, hub swap, sub-gig, XP, party/PvP notes | [gigs.md](gigs.md) | +| Skill domains, categories, XP curves, gates, mastery | [skills.md](skills.md) | +| **Seams** (combat gear vs craft, consumables, rep, alts) | [skills.md](skills.md) (section *Seams (gigs ↔ skills)*) | +| Loose ideas | [brainstorm/](brainstorm/README.md) | +| Folder index | [overview.md](overview.md) | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 261801a..a4840de 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,31 +1,10 @@ -# Gigs & skills (hybrid progression) +# Skills (non-combat progression) -Vision-level design for how characters grow. **Combat** uses **gigs** (swap roles for grouping clarity); **each gig levels on its own track** (**per-gig** progression). **Non-combat** uses **skills** (gathering, crafting, and similar loops). [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4) still describes **skill** XP machinery; **gig** XP/levels are **per gig**—decomposition should be revisited when this split hardens. +Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. -**Document scope:** the sections below **Skills (non-combat)** are the skills design pass. **Gig** detail is **[gigs.md](gigs.md)**; **brainstorm-only** ideas live under [`brainstorm/`](brainstorm/README.md). +**This file also owns the [Seams (gigs ↔ skills)](#seams-gigs--skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). -## Vocabulary - -From here on in game-design docs: - -| Term | Means | -|------|--------| -| **Gig** | The **combat role** (combat “class”): what you bring to a fight—kit, tuning band, party expectations. Not used for crafting or gathering. | -| **Skill** | A **non-combat** trained capability only (gather, craft, etc.). Never used to mean the combat gig. | -| **Sub-gig** | A **secondary gig** paired with your **main gig** on one loadout. Used for **limited** cross-gig ability access—see [gigs.md](gigs.md) (**Main gig + sub-gig**)—not for crafting or replacing the main gig’s identity in combat. | - -Fiction and UI may still say *job*, *contract*, or *loadout* in dialogue; design vocabulary stays **gig** / **skill** to avoid ambiguity. - -## Why hybrid - -- **Gigs** give parties a readable answer to “what are you on this run?” without forcing alts. They match **contracts, loadouts, and corporate muscle** as fantasy. -- **Skills** keep the **economy and crafting** surface wide: anyone can work those capabilities over time, and “street doc” can mean high medic **craft skill** + rep, not only an active gig. - -## Gigs (combat) - -The **gig** artifact—**roles**, **hub swap**, **per-gig progression**, **main + sub-gig**, **party/recruitment** (no LFG UI assumption), **PvP notes**, and **gig-only open questions**—is **[gigs.md](gigs.md)**. This file keeps **vocabulary**, **why hybrid**, and **seams** with **skills**. - -## Skills (non-combat, classless) +## Classless skills Everything **outside combat role resolution** trains on **skills**. That includes gathering, refining, crafting, non-combat tech work, and other **world interactions** we choose to track as progression. @@ -130,7 +109,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Topic | Direction | |--------|-----------| -| **Combat gear** | **Gig-restricted.** Weapons, armor, and other combat-loadout pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](#gigs-combat), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. | +| **Combat gear** | **Gig-restricted.** Weapons, armor, and other combat-loadout pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. | | **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. gunsmith), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | | **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Passive** potency can scale with **gig** match: e.g. a **medic**-tagged bonus applies if **main *or* sub-gig** matches (see [gigs.md](gigs.md)). Others use a **baseline**. **Active** abilities from consumables (if any) follow their own rules—**open**. Other items may have **no** gig hook—data-driven per item. | | **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | From ebbe1f90b279e7d00ab4f06e4a4ea76387f428c3 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:49:07 -0400 Subject: [PATCH 37/91] chore: clarify skill domains vs categories in skills.md --- docs/game-design/skills.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index a4840de..fb2d170 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -22,6 +22,8 @@ A **skill** is a **persistent, leveled** capability, **data-defined** (stable ID ### Skill domains (examples) +**Domains** are a **design vocabulary**: when we brainstorm content, what *kind* of real-world activity is this skill about? They help writers and designers stay consistent (“is this **extraction** or **fabrication**?”) and stay separate from **gigs**. Domains are **not** required to match data tags 1:1. + Domains are **content-shaped**, not a locked taxonomy. Early vision includes: | Domain | Examples (illustrative) | @@ -33,11 +35,13 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: | **Support craft** | Medtech fabrication, field repair kits, augment maintenance (**open** naming) | | **Social / street** | Negotiation, street doc *craft*, fences—**only if** we give them real loops and XP (**open**) | -New skills land here as **design + data** demand; domains can **overlap** one skill in multiple tags for UI. +New skills land here as **design + data** demand; a skill can sit in **multiple domains** in conversation before we assign its **primary category**. ### Categories (families) -**Categories** group skills for **UI, filters, and balance**—they are **not** gigs, **not** professions, and **not** hard caps on how many skills you can raise. +**Categories** are **registry / UI tags**—what we put in data (e.g. E2.M1 `SkillCategory`) for **filters, sorting, and balance** knobs. Expect **one primary category per skill**; optional **secondary** tags for UI only if we need them. + +**Domains vs categories:** **domains** = “what is this skill *about* in the fiction/pipeline?” (design). **categories** = “which bucket does the **system** put it in for players and tuning?” (product). Today’s tables **overlap** on purpose while the roster is unsettled (e.g. extraction work often maps to **Gather**); when we lock a skill list, we either **merge** domain language into categories or keep domains as a **writer’s appendix** only. Categories are **not** gigs, **not** professions, and **not** caps on how many skills you can train. **Draft families** (can merge or rename): @@ -49,7 +53,7 @@ New skills land here as **design + data** demand; domains can **overlap** one sk | **Tech** | Intrusion, electronics, rigging that isn’t a gig kit | | **Social** | If we skill it: negotiation, contracts UI hooks (**open**) | -A skill may appear in **more than one** category for sorting; **canonical** category lives in data for balance. +Optional **secondary category** for UI sorting only—**primary** category in data drives balance defaults. ### XP, levels, curves From 714f98ae4fa8e675ed0b520782bb081ecff62cb0 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:50:21 -0400 Subject: [PATCH 38/91] chore: v0 skill roster ideas by Gather/Process/Make/Tech/Social --- docs/game-design/overview.md | 2 +- docs/game-design/skills.md | 50 +++++++++++++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 3345a6e..4d2b7eb 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -13,7 +13,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | Document | Focus | Notes | |----------|--------|--------| | [progression.md](progression.md) | Shared **gig + skill** vision, vocabulary, links | Start here for progression | -| [skills.md](skills.md) | Non-combat **skills**; **gigs ↔ skills seams** | With [gigs.md](gigs.md) | +| [skills.md](skills.md) | Non-combat **skills**; seams; **v0 skill roster** by category | With [gigs.md](gigs.md) | | [gigs.md](gigs.md) | **9-gig roster** (v1 cyberpunk names); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | | *(add rows as files land)* | | | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index fb2d170..98fd015 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -55,6 +55,54 @@ New skills land here as **design + data** demand; a skill can sit in **multiple Optional **secondary category** for UI sorting only—**primary** category in data drives balance defaults. +### Skill roster (draft ideas by category) + +**v0 — for examination, not a commit list.** Each bullet is a **candidate skill** (or tight cluster we might merge). Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** checks (especially **Tech** vs combat netrunning). + +#### Gather — pull raw value from the world + +- **Salvage** — wrecks, derelicts, e-waste pulls, stripped chrome. +- **Extraction** — mined or drilled feedstock (synth ores, rare earths, substrate for industry). +- **Reclaim** — urban scavenge: construction scrap, abandoned blocks, “legal gray” recovery. +- **Harvest (bio)** — cultured tissue, fungal mats, organics for chem or food chains (**open** how grim we want this). +- **Quarry / bulk** — aggregate and low-grade mass for concrete, fill, industrial bulk (**open** if distinct from Extraction). + +#### Process — turn raw into workable intermediate + +- **Refine** — smelt, purify, reduce ore and scrap to usable grades. +- **Synth-chem prep** — precursors, reagents, stable compounds for **Make** (stims, reactives, polymers). +- **Bioprocess** — ferment, culture, grow feedstock for medtech or consumables. +- **Composite work** — laminate layers, weave fibers, prep armtech “blanks” before final assembly. +- **Data scrub** — clean, normalize, or decrypt **datasets** that become a craft input (**Tech** overlap—pick one primary category). + +#### Make — recipes, benches, finished goods + +- **Gunsmith** — barrels, receivers, ballistics fab (ties [Seams](#seams-gigs--skills): craft without gig to *use*). +- **Armtech** — armor plates, suits, hardshell integration. +- **Synth-chem (product)** — finish stims, chems, consumables from **Process** outputs. +- **Medtech fab** — field kits, injectors, trauma foam—**craft** lane; **gig** Sawbones is *combat use*. +- **Rigging (gear)** — drones, harnesses, tool mods—**non-combat** rigging; combat deployables stay **gig**-gated (**open**). +- **Food synth** — ration fab, street kitchens (**open** if we skill it). + +#### Tech — systems work that is not “today’s gig kit” + +- **Intrusion** — bypass doors, hijack non-combat systems, mission timers on networks (**combat** debuff/net attacks stay **gig**). +- **Electronics** — repair boards, swap modules, bench diagnostics on devices and vehicles. +- **Signal** — scan, trace, tap—**out of combat** or **instance objectives**; battlefield version **open** (gig vs skill). +- **Fabrication tech** — print circuits, micro-actuators—feeds **Make** or stands alone (**open**). + +#### Social — only if we give real loops and XP + +- **Negotiation** — better outcomes on prices, timers, aggression thresholds in supported content. +- **Fixer facework** — unlock alternate quest routes, call in markers (**open** vs pure rep). +- **Fence / laundering** — move hot goods with less heat (**economy risk** skill—**open**). + +**Cross-cutting notes** + +- **Merge candidates:** e.g. **Refine** + **Synth-chem prep** vs split by fantasy; **Salvage** + **Reclaim** vs one **Scavenge** skill. +- **Cut / defer:** **Social** entire row if we decide rep-only; **Food synth** if not a loop. +- **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. + ### XP, levels, curves - **Server-authoritative** XP and level resolution ([E2.M2](../decomposition/modules/E2_M2_XpAwardAndLevelEngine.md)). @@ -102,7 +150,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Topic | Status | |-------|--------| -| Full launch **skill list** and names | Open | +| Full launch **skill list** and names | **Draft** roster by category in [Skill roster](#skill-roster-draft-ideas-by-category) | | Social / negotiation as tracked skills | Open | | Failure XP defaults per activity type | Open | | Mastery respec rules | Open | From d18656d29b0381b1980b25cbd18b852fb0778867 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:52:08 -0400 Subject: [PATCH 39/91] chore: move fab tech into Process / refine family in skill roster --- docs/game-design/skills.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 98fd015..5bb5623 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -48,7 +48,7 @@ New skills land here as **design + data** demand; a skill can sit in **multiple | Category | Rough scope | |----------|-------------| | **Gather** | Nodes, yields, field extraction | -| **Process** | Refine, batch, intermediate goods | +| **Process** | Refine (incl. fab-tech intermediates), batch, intermediate goods | | **Make** | Finished goods, recipes, bench work | | **Tech** | Intrusion, electronics, rigging that isn’t a gig kit | | **Social** | If we skill it: negotiation, contracts UI hooks (**open**) | @@ -70,6 +70,7 @@ Optional **secondary category** for UI sorting only—**primary** category in da #### Process — turn raw into workable intermediate - **Refine** — smelt, purify, reduce ore and scrap to usable grades. +- **Fab tech** (*refine family*) — print circuits, micro-actuators, substrate prep—industrial intermediates that feed **Make** (**open** vs folding into **Refine** mastery only). - **Synth-chem prep** — precursors, reagents, stable compounds for **Make** (stims, reactives, polymers). - **Bioprocess** — ferment, culture, grow feedstock for medtech or consumables. - **Composite work** — laminate layers, weave fibers, prep armtech “blanks” before final assembly. @@ -89,7 +90,6 @@ Optional **secondary category** for UI sorting only—**primary** category in da - **Intrusion** — bypass doors, hijack non-combat systems, mission timers on networks (**combat** debuff/net attacks stay **gig**). - **Electronics** — repair boards, swap modules, bench diagnostics on devices and vehicles. - **Signal** — scan, trace, tap—**out of combat** or **instance objectives**; battlefield version **open** (gig vs skill). -- **Fabrication tech** — print circuits, micro-actuators—feeds **Make** or stands alone (**open**). #### Social — only if we give real loops and XP From 0fcedd5c09cf0e9f8fdb5745fd2fd06b6fdc672e Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:53:11 -0400 Subject: [PATCH 40/91] chore: expand Tech roster with hacking and cyber security skills --- docs/game-design/skills.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 5bb5623..0de3acc 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -31,7 +31,7 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: | **Extraction** | Salvage, mining, harvesting, reclaiming scrap | | **Processing** | Refining, chemistry prep, material conversion | | **Fabrication** | Weaponsmith, armtech, synth-chem, cooking if we track it | -| **Tech / intrusion** | Non-combat hacking, bypass, diagnostics—**combat-facing** net actions stay **gig** | +| **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | | **Support craft** | Medtech fabrication, field repair kits, augment maintenance (**open** naming) | | **Social / street** | Negotiation, street doc *craft*, fences—**only if** we give them real loops and XP (**open**) | @@ -50,7 +50,7 @@ New skills land here as **design + data** demand; a skill can sit in **multiple | **Gather** | Nodes, yields, field extraction | | **Process** | Refine (incl. fab-tech intermediates), batch, intermediate goods | | **Make** | Finished goods, recipes, bench work | -| **Tech** | Intrusion, electronics, rigging that isn’t a gig kit | +| **Tech** | Intrusion, netsec, counter-intrusion, electronics, signal—**not** combat gig kit | | **Social** | If we skill it: negotiation, contracts UI hooks (**open**) | Optional **secondary category** for UI sorting only—**primary** category in data drives balance defaults. @@ -85,11 +85,17 @@ Optional **secondary category** for UI sorting only—**primary** category in da - **Rigging (gear)** — drones, harnesses, tool mods—**non-combat** rigging; combat deployables stay **gig**-gated (**open**). - **Food synth** — ration fab, street kitchens (**open** if we skill it). -#### Tech — systems work that is not “today’s gig kit” +#### Tech — systems, hacking, and cyber security (non-gig) -- **Intrusion** — bypass doors, hijack non-combat systems, mission timers on networks (**combat** debuff/net attacks stay **gig**). -- **Electronics** — repair boards, swap modules, bench diagnostics on devices and vehicles. -- **Signal** — scan, trace, tap—**out of combat** or **instance objectives**; battlefield version **open** (gig vs skill). +**Skill** tech covers **prep**, **world interaction**, and **instance / downtime** work. **Combat** net attacks, debuffs, and “today’s gig kit” **ICE-breaking in a fight** stay **gig**-gated unless we deliberately duplicate (**open**). + +- **Intrusion** — bypass locks and access control, pivot through non-combat systems, progress **hack timers** and objectives (e.g. [brainstorm/hack-bodyguard](brainstorm/hack-bodyguard-missions.md)). +- **Netsec / hardening** — patch holes, segment networks, raise **defense** ratings for sites, convoys, or ally systems before/during downtime phases. +- **Counter-intrusion** — trace hostile processes, sever sessions, quarantine malware—**defensive** counterpart to **Intrusion** in supported content. +- **Exploit dev** — build or tune **payloads** and tools used by Intrusion (authorized pen-tests, heists, corps)—**open** vs folding into **Intrusion** mastery. +- **Crypto & identity** — break weak schemes, spoof or forge **credentials** where content allows; ties rep and legality (**open**). +- **Electronics** — repair boards, swap modules, bench diagnostics on devices and vehicles (physical layer adjacent to netsec). +- **Signal** — scan, trace, tap—RF and traffic analysis **out of combat** or in **objectives**; jamming in **combat** **open** (gig vs skill). #### Social — only if we give real loops and XP From 3846c23ef2072886c594cc92e6195e40d87573e8 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:54:02 -0400 Subject: [PATCH 41/91] chore: drop Social skill category from game design skills doc --- docs/game-design/skills.md | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 0de3acc..72c2bab 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -33,7 +33,6 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: | **Fabrication** | Weaponsmith, armtech, synth-chem, cooking if we track it | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | | **Support craft** | Medtech fabrication, field repair kits, augment maintenance (**open** naming) | -| **Social / street** | Negotiation, street doc *craft*, fences—**only if** we give them real loops and XP (**open**) | New skills land here as **design + data** demand; a skill can sit in **multiple domains** in conversation before we assign its **primary category**. @@ -51,7 +50,6 @@ New skills land here as **design + data** demand; a skill can sit in **multiple | **Process** | Refine (incl. fab-tech intermediates), batch, intermediate goods | | **Make** | Finished goods, recipes, bench work | | **Tech** | Intrusion, netsec, counter-intrusion, electronics, signal—**not** combat gig kit | -| **Social** | If we skill it: negotiation, contracts UI hooks (**open**) | Optional **secondary category** for UI sorting only—**primary** category in data drives balance defaults. @@ -97,16 +95,10 @@ Optional **secondary category** for UI sorting only—**primary** category in da - **Electronics** — repair boards, swap modules, bench diagnostics on devices and vehicles (physical layer adjacent to netsec). - **Signal** — scan, trace, tap—RF and traffic analysis **out of combat** or in **objectives**; jamming in **combat** **open** (gig vs skill). -#### Social — only if we give real loops and XP - -- **Negotiation** — better outcomes on prices, timers, aggression thresholds in supported content. -- **Fixer facework** — unlock alternate quest routes, call in markers (**open** vs pure rep). -- **Fence / laundering** — move hot goods with less heat (**economy risk** skill—**open**). - **Cross-cutting notes** - **Merge candidates:** e.g. **Refine** + **Synth-chem prep** vs split by fantasy; **Salvage** + **Reclaim** vs one **Scavenge** skill. -- **Cut / defer:** **Social** entire row if we decide rep-only; **Food synth** if not a loop. +- **Cut / defer:** **Food synth** if not a loop. - **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. ### XP, levels, curves @@ -157,7 +149,6 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Topic | Status | |-------|--------| | Full launch **skill list** and names | **Draft** roster by category in [Skill roster](#skill-roster-draft-ideas-by-category) | -| Social / negotiation as tracked skills | Open | | Failure XP defaults per activity type | Open | | Mastery respec rules | Open | | Cross-skill synergy math | Open | @@ -198,6 +189,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Gig swap rules | **Hub-only** (city / home base / designated site)—**not** in the field or mid-fight | Agreed | | Sub-gig | **FFXI-style** slot **agreed**; sub abilities up to **~½ main gig level** (formula TBD); wide build space | Agreed | | Combat progression | **Per gig**—separate level/XP (and mastery) per gig; no shared combat rank | Agreed | +| Social skills category | **No** dedicated **Social** skill family or tracked negotiation/fixer/fence skills—outcomes live in **rep**, **quests**, **economy**, and other systems if we need them | Agreed | | Gig XP award | **Main gig only**; **sub-gig** earns no XP—see [gigs.md](gigs.md) | Agreed | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | From eacd03e5c58a52409af29c73684616897894ea95 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:58:16 -0400 Subject: [PATCH 42/91] chore: document low-gig specialist path and growing skill roster --- docs/game-design/progression.md | 1 + docs/game-design/skills.md | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index e819d15..0b94120 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -18,6 +18,7 @@ Use these terms in **design specs and tools** (fiction may say *job*, *contract* - **Gigs** answer “what are you on **this fight**?”—readable roles, **hub swap**, cyberpunk **contract** fantasy, without alts for combat variety. - **Skills** keep **economy and crafting** **classless**: anyone can raise gather/craft over time; “street doc” can mean high **medic fab** **skill** + rep, not only tonight’s gig. +- **Specialist fantasy:** a player can **under-invest in gigs** and still **mainline the game** through **skills**—top gatherer, crafter, or tech, with **lots of options** to explore. The **skill roster** is meant to **grow** over time; see [skills.md](skills.md) **Pillars** and **Skill roster**. ## Where to read next diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 72c2bab..26bfd10 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -12,6 +12,7 @@ Everything **outside combat role resolution** trains on **skills**. That include - **Any character can train any skill** over time (subject to **world gates**: discovery, rep, licenses—those **add** content, they are not “you picked the wrong class”). - **Economy identity** is the **skill graph + reputation + gear**, not which **gig** you had equipped last night. +- **Specialist path:** it must be viable to **keep gigs low** (minimal combat-role investment) and still **meaningfully play** by pushing **gather / process / make / tech**—best supplier, best bench, best netsec in the hubs and instances that reward skills. Combat and story may still **touch** gigs; they must not **hard-require** high gig levels to participate in the **economy and skill loops** players care about for that lifestyle ([Seams](#seams-gigs--skills): e.g. **craft** without needing to **equip** what you make). - **Long-term:** avoid dead-end grinds; slow or expensive is fine, “wrong choice forever” is not. ### What is (and isn’t) a skill @@ -55,7 +56,9 @@ Optional **secondary category** for UI sorting only—**primary** category in da ### Skill roster (draft ideas by category) -**v0 — for examination, not a commit list.** Each bullet is a **candidate skill** (or tight cluster we might merge). Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** checks (especially **Tech** vs combat netrunning). +**v0 — for examination, not a commit list.** Each bullet is a **candidate skill** (or tight cluster we might merge). The list below is a **solid opening roster**—on the order of **~18–24** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. + +Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** checks (especially **Tech** vs combat netrunning). #### Gather — pull raw value from the world @@ -190,6 +193,8 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Sub-gig | **FFXI-style** slot **agreed**; sub abilities up to **~½ main gig level** (formula TBD); wide build space | Agreed | | Combat progression | **Per gig**—separate level/XP (and mastery) per gig; no shared combat rank | Agreed | | Social skills category | **No** dedicated **Social** skill family or tracked negotiation/fixer/fence skills—outcomes live in **rep**, **quests**, **economy**, and other systems if we need them | Agreed | +| Low-gig specialist | **Viable** to focus progression on **skills** (gather/craft/tech) with **low gig levels**; economy loops must not **hard-gate** on high gig rank | Agreed | +| Skill roster size | **Opening** v0 list is strong; **add skills** pre-launch as needed—**breadth** is a feature | Agreed | | Gig XP award | **Main gig only**; **sub-gig** earns no XP—see [gigs.md](gigs.md) | Agreed | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | From feafb4d5a0fac3935f71a64feb67ccd57b3cfc3d Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 19:59:40 -0400 Subject: [PATCH 43/91] chore: format skill roster as per-category tables like gigs --- docs/game-design/skills.md | 62 ++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 26bfd10..2cb7378 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -56,47 +56,57 @@ Optional **secondary category** for UI sorting only—**primary** category in da ### Skill roster (draft ideas by category) -**v0 — for examination, not a commit list.** Each bullet is a **candidate skill** (or tight cluster we might merge). The list below is a **solid opening roster**—on the order of **~18–24** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. +**v0 — for examination, not a commit list.** Each row is a **candidate skill** (or tight cluster we might merge). The tables below are a **solid opening roster**—on the order of **~18–24** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** checks (especially **Tech** vs combat netrunning). +Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, **Skill** name plus **what it covers** and **open / merge** notes. + #### Gather — pull raw value from the world -- **Salvage** — wrecks, derelicts, e-waste pulls, stripped chrome. -- **Extraction** — mined or drilled feedstock (synth ores, rare earths, substrate for industry). -- **Reclaim** — urban scavenge: construction scrap, abandoned blocks, “legal gray” recovery. -- **Harvest (bio)** — cultured tissue, fungal mats, organics for chem or food chains (**open** how grim we want this). -- **Quarry / bulk** — aggregate and low-grade mass for concrete, fill, industrial bulk (**open** if distinct from Extraction). +| Skill | What it covers | Open / merge | +|-------|----------------|--------------| +| **Salvage** | Wrecks, derelicts, e-waste pulls, stripped chrome. | — | +| **Extraction** | Mined or drilled feedstock (synth ores, rare earths, substrate for industry). | — | +| **Reclaim** | Urban scavenge: construction scrap, abandoned blocks, “legal gray” recovery. | Merge vs **Salvage** → one **Scavenge**? **open** | +| **Harvest (bio)** | Cultured tissue, fungal mats, organics for chem or food chains. | Tone / how grim — **open** | +| **Quarry / bulk** | Aggregate and low-grade mass for concrete, fill, industrial bulk. | Distinct from **Extraction**? **open** | #### Process — turn raw into workable intermediate -- **Refine** — smelt, purify, reduce ore and scrap to usable grades. -- **Fab tech** (*refine family*) — print circuits, micro-actuators, substrate prep—industrial intermediates that feed **Make** (**open** vs folding into **Refine** mastery only). -- **Synth-chem prep** — precursors, reagents, stable compounds for **Make** (stims, reactives, polymers). -- **Bioprocess** — ferment, culture, grow feedstock for medtech or consumables. -- **Composite work** — laminate layers, weave fibers, prep armtech “blanks” before final assembly. -- **Data scrub** — clean, normalize, or decrypt **datasets** that become a craft input (**Tech** overlap—pick one primary category). +| Skill | What it covers | Open / merge | +|-------|----------------|--------------| +| **Refine** | Smelt, purify, reduce ore and scrap to usable grades. | Merge vs **Synth-chem prep**? **open** | +| **Fab tech** | *Refine family:* print circuits, micro-actuators, substrate prep—industrial intermediates for **Make**. | Fold into **Refine** mastery only? **open** | +| **Synth-chem prep** | Precursors, reagents, stable compounds for **Make** (stims, reactives, polymers). | — | +| **Bioprocess** | Ferment, culture, grow feedstock for medtech or consumables. | — | +| **Composite work** | Laminate layers, weave fibers, prep armtech “blanks” before final assembly. | — | +| **Data scrub** | Clean, normalize, or decrypt **datasets** that become a craft input. | **Tech** overlap—pick one **primary** category | #### Make — recipes, benches, finished goods -- **Gunsmith** — barrels, receivers, ballistics fab (ties [Seams](#seams-gigs--skills): craft without gig to *use*). -- **Armtech** — armor plates, suits, hardshell integration. -- **Synth-chem (product)** — finish stims, chems, consumables from **Process** outputs. -- **Medtech fab** — field kits, injectors, trauma foam—**craft** lane; **gig** Sawbones is *combat use*. -- **Rigging (gear)** — drones, harnesses, tool mods—**non-combat** rigging; combat deployables stay **gig**-gated (**open**). -- **Food synth** — ration fab, street kitchens (**open** if we skill it). +| Skill | What it covers | Open / merge | +|-------|----------------|--------------| +| **Gunsmith** | Barrels, receivers, ballistics fab. | [Seams](#seams-gigs--skills): craft without gig to *use* | +| **Armtech** | Armor plates, suits, hardshell integration. | — | +| **Synth-chem (product)** | Finish stims, chems, consumables from **Process** outputs. | — | +| **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | +| **Rigging (gear)** | Drones, harnesses, tool mods—**non-combat** rigging. | Combat deployables **gig**-gated — **open** | +| **Food synth** | Ration fab, street kitchens. | Skill at all? **open** | #### Tech — systems, hacking, and cyber security (non-gig) -**Skill** tech covers **prep**, **world interaction**, and **instance / downtime** work. **Combat** net attacks, debuffs, and “today’s gig kit” **ICE-breaking in a fight** stay **gig**-gated unless we deliberately duplicate (**open**). +**Skill** tech covers **prep**, **world interaction**, and **instance / downtime** work. **Combat** net attacks, debuffs, and **today’s gig kit** **ICE-breaking in a fight** stay **gig**-gated unless we deliberately duplicate (**open**). -- **Intrusion** — bypass locks and access control, pivot through non-combat systems, progress **hack timers** and objectives (e.g. [brainstorm/hack-bodyguard](brainstorm/hack-bodyguard-missions.md)). -- **Netsec / hardening** — patch holes, segment networks, raise **defense** ratings for sites, convoys, or ally systems before/during downtime phases. -- **Counter-intrusion** — trace hostile processes, sever sessions, quarantine malware—**defensive** counterpart to **Intrusion** in supported content. -- **Exploit dev** — build or tune **payloads** and tools used by Intrusion (authorized pen-tests, heists, corps)—**open** vs folding into **Intrusion** mastery. -- **Crypto & identity** — break weak schemes, spoof or forge **credentials** where content allows; ties rep and legality (**open**). -- **Electronics** — repair boards, swap modules, bench diagnostics on devices and vehicles (physical layer adjacent to netsec). -- **Signal** — scan, trace, tap—RF and traffic analysis **out of combat** or in **objectives**; jamming in **combat** **open** (gig vs skill). +| Skill | What it covers | Open / merge | +|-------|----------------|--------------| +| **Intrusion** | Bypass locks and access control, pivot non-combat systems, **hack timers** / objectives. | e.g. [brainstorm/hack-bodyguard](brainstorm/hack-bodyguard-missions.md) | +| **Netsec / hardening** | Patch holes, segment networks, raise **defense** for sites, convoys, ally systems (downtime / prep). | — | +| **Counter-intrusion** | Trace hostile processes, sever sessions, quarantine malware—defensive counterpart to **Intrusion**. | — | +| **Exploit dev** | Build or tune **payloads** and tools for **Intrusion** (pen-tests, heists, corps). | Fold into **Intrusion** mastery? **open** | +| **Crypto & identity** | Break weak schemes; spoof or forge **credentials** where content allows. | Rep / legality hooks — **open** | +| **Electronics** | Repair boards, swap modules, bench diagnostics—physical layer next to netsec. | — | +| **Signal** | Scan, trace, tap—RF and traffic **out of combat** or in objectives. | **Combat** jamming: gig vs skill — **open** | **Cross-cutting notes** From 5fded86bca805926c57bef984d64b1d2986075bb Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:02:22 -0400 Subject: [PATCH 44/91] chore: clarify Extraction (earth) vs Quarry (city infrastructure) --- docs/game-design/skills.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 2cb7378..cd028bd 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -29,7 +29,7 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: | Domain | Examples (illustrative) | |--------|-------------------------| -| **Extraction** | Salvage, mining, harvesting, reclaiming scrap | +| **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **wrecks & biology** (salvage, reclaim, harvest), and **infra bulk** (quarry from **buildings / city stack**) when we treat that as its own gather skill vs geological **Extraction** | | **Processing** | Refining, chemistry prep, material conversion | | **Fabrication** | Weaponsmith, armtech, synth-chem, cooking if we track it | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | @@ -67,10 +67,10 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | Skill | What it covers | Open / merge | |-------|----------------|--------------| | **Salvage** | Wrecks, derelicts, e-waste pulls, stripped chrome. | — | -| **Extraction** | Mined or drilled feedstock (synth ores, rare earths, substrate for industry). | — | +| **Extraction** | **From the earth:** mined or drilled feedstock—synth ores, rare earths, geological substrate for industry (subsurface and natural seams, not the city stack). | — | | **Reclaim** | Urban scavenge: construction scrap, abandoned blocks, “legal gray” recovery. | Merge vs **Salvage** → one **Scavenge**? **open** | | **Harvest (bio)** | Cultured tissue, fungal mats, organics for chem or food chains. | Tone / how grim — **open** | -| **Quarry / bulk** | Aggregate and low-grade mass for concrete, fill, industrial bulk. | Distinct from **Extraction**? **open** | +| **Quarry / bulk** | **Salvage at civic scale** from **buildings and city infrastructure:** aggregate, structural demo recoverables, fill and mass for concrete—**built environment**, not the earth seam. | Intentionally **not** **Extraction** (earth vs **infra**); overlap with **Reclaim** granularity — **open** | #### Process — turn raw into workable intermediate From b2de73bbaf21888861b0146baa5fd5cb89ea7ac2 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:04:57 -0400 Subject: [PATCH 45/91] chore: drop Reclaim skill; Salvage and Quarry cover the space --- docs/game-design/skills.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index cd028bd..b2d095f 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -29,7 +29,7 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: | Domain | Examples (illustrative) | |--------|-------------------------| -| **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **wrecks & biology** (salvage, reclaim, harvest), and **infra bulk** (quarry from **buildings / city stack**) when we treat that as its own gather skill vs geological **Extraction** | +| **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **wrecks & biology** (salvage, harvest), and **infra bulk** (quarry from **buildings / city stack**) when we treat that as its own gather skill vs geological **Extraction** | | **Processing** | Refining, chemistry prep, material conversion | | **Fabrication** | Weaponsmith, armtech, synth-chem, cooking if we track it | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | @@ -56,7 +56,7 @@ Optional **secondary category** for UI sorting only—**primary** category in da ### Skill roster (draft ideas by category) -**v0 — for examination, not a commit list.** Each row is a **candidate skill** (or tight cluster we might merge). The tables below are a **solid opening roster**—on the order of **~18–24** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. +**v0 — for examination, not a commit list.** Each row is a **candidate skill** (or tight cluster we might merge). The tables below are a **solid opening roster**—on the order of **~17–23** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** checks (especially **Tech** vs combat netrunning). @@ -68,9 +68,8 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** |-------|----------------|--------------| | **Salvage** | Wrecks, derelicts, e-waste pulls, stripped chrome. | — | | **Extraction** | **From the earth:** mined or drilled feedstock—synth ores, rare earths, geological substrate for industry (subsurface and natural seams, not the city stack). | — | -| **Reclaim** | Urban scavenge: construction scrap, abandoned blocks, “legal gray” recovery. | Merge vs **Salvage** → one **Scavenge**? **open** | | **Harvest (bio)** | Cultured tissue, fungal mats, organics for chem or food chains. | Tone / how grim — **open** | -| **Quarry / bulk** | **Salvage at civic scale** from **buildings and city infrastructure:** aggregate, structural demo recoverables, fill and mass for concrete—**built environment**, not the earth seam. | Intentionally **not** **Extraction** (earth vs **infra**); overlap with **Reclaim** granularity — **open** | +| **Quarry / bulk** | **Salvage at civic scale** from **buildings and city infrastructure:** aggregate, structural demo recoverables, fill and mass for concrete—**built environment**, not the earth seam. | Intentionally **not** **Extraction** (earth vs **infra**); fine-grained urban scrap lives in **Salvage** vs bulk **Quarry** — **open** | #### Process — turn raw into workable intermediate @@ -110,7 +109,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** **Cross-cutting notes** -- **Merge candidates:** e.g. **Refine** + **Synth-chem prep** vs split by fantasy; **Salvage** + **Reclaim** vs one **Scavenge** skill. +- **Merge candidates:** e.g. **Refine** + **Synth-chem prep** vs split by fantasy; **Salvage** vs **Quarry** boundary (wreck/chrome vs infra bulk) — **open**. - **Cut / defer:** **Food synth** if not a loop. - **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. From ae0ca367e120861f47cdb3f5477ea9fa4b011862 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:05:32 -0400 Subject: [PATCH 46/91] chore: document grim Harvest (bio) sourcing in skills roster --- docs/game-design/skills.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index b2d095f..afaf6b7 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -68,7 +68,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** |-------|----------------|--------------| | **Salvage** | Wrecks, derelicts, e-waste pulls, stripped chrome. | — | | **Extraction** | **From the earth:** mined or drilled feedstock—synth ores, rare earths, geological substrate for industry (subsurface and natural seams, not the city stack). | — | -| **Harvest (bio)** | Cultured tissue, fungal mats, organics for chem or food chains. | Tone / how grim — **open** | +| **Harvest (bio)** | **Organic feedstock** for chem, medtech, or food chains: cultured tissue and fungal mats **and** deliberately **grim** sourcing—e.g. **morgue** break-ins, **blood** and **tissue** theft, black-market organics. | Grim tone **in scope** for cyberpunk; how explicit in UI, warnings, or regional rules — **open** | | **Quarry / bulk** | **Salvage at civic scale** from **buildings and city infrastructure:** aggregate, structural demo recoverables, fill and mass for concrete—**built environment**, not the earth seam. | Intentionally **not** **Extraction** (earth vs **infra**); fine-grained urban scrap lives in **Salvage** vs bulk **Quarry** — **open** | #### Process — turn raw into workable intermediate From 193001c92b06014b8ea7edcec5ec41e691115cc1 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:06:48 -0400 Subject: [PATCH 47/91] chore: cap grim skill concepts at non-adult-only presentation --- docs/game-design/skills.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index afaf6b7..00a5f26 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -68,7 +68,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** |-------|----------------|--------------| | **Salvage** | Wrecks, derelicts, e-waste pulls, stripped chrome. | — | | **Extraction** | **From the earth:** mined or drilled feedstock—synth ores, rare earths, geological substrate for industry (subsurface and natural seams, not the city stack). | — | -| **Harvest (bio)** | **Organic feedstock** for chem, medtech, or food chains: cultured tissue and fungal mats **and** deliberately **grim** sourcing—e.g. **morgue** break-ins, **blood** and **tissue** theft, black-market organics. | Grim tone **in scope** for cyberpunk; how explicit in UI, warnings, or regional rules — **open** | +| **Harvest (bio)** | **Organic feedstock** for chem, medtech, or food chains: cultured tissue and fungal mats **and** deliberately **grim** sourcing—e.g. **morgue** break-ins, **blood** and **tissue** theft, black-market organics. | **Concepts** stay **very grim**; **presentation** (UI, cinematics, props) stays **below adult-only explicit**—implication and noir, not graphic exploitation. Regional storefront rules still **open** | | **Quarry / bulk** | **Salvage at civic scale** from **buildings and city infrastructure:** aggregate, structural demo recoverables, fill and mass for concrete—**built environment**, not the earth seam. | Intentionally **not** **Extraction** (earth vs **infra**); fine-grained urban scrap lives in **Salvage** vs bulk **Quarry** — **open** | #### Process — turn raw into workable intermediate @@ -204,6 +204,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Social skills category | **No** dedicated **Social** skill family or tracked negotiation/fixer/fence skills—outcomes live in **rep**, **quests**, **economy**, and other systems if we need them | Agreed | | Low-gig specialist | **Viable** to focus progression on **skills** (gather/craft/tech) with **low gig levels**; economy loops must not **hard-gate** on high gig rank | Agreed | | Skill roster size | **Opening** v0 list is strong; **add skills** pre-launch as needed—**breadth** is a feature | Agreed | +| Grim fiction vs presentation | **Concepts** can be **very grim**; **presentation** (UI, cinematics, props) stays **below adult-only explicit**—implication and noir, not graphic exploitation | Agreed | | Gig XP award | **Main gig only**; **sub-gig** earns no XP—see [gigs.md](gigs.md) | Agreed | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | From aa655d7a6fb8d5c2288c891e2484a1231576fb17 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:09:02 -0400 Subject: [PATCH 48/91] chore: move grim presentation and teen rating target to game design overview --- docs/game-design/overview.md | 12 +++++++++++- docs/game-design/skills.md | 3 +-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 4d2b7eb..02cc6d9 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -8,6 +8,16 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression **Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). +## Presentation and target rating (vision) + +**Intent:** The world and systems can carry **very grim** **ideas** (e.g. noir crime, body horror *as fiction*, exploitation as something the story *condemns or resists*). **On-screen presentation** stays **restrained**—implication, silhouette, report text, off-camera beats—not graphic **adult-only** depiction. **Overall product goal** is roughly a **teen-oriented** band (think **ESRB Teen–class** framing); **exact** labels, cuts, and territory rules are **out of scope** for per-skill design docs. + +**TODO** + +- Lock **target band** with stakeholders and (when relevant) compliance counsel—not a commitment to a specific board outcome until submission. +- Write **content guidelines**: grim **concept** vs acceptable **depiction** (UI, cinematics, props, loot naming) before heavy production on sensitive beats. +- Track **regional ratings and storefront policy** (PEGI, CERO, platform rules, etc.) when we approach release—do not block skill or quest design on that in early vision work. + ## Artifact index | Document | Focus | Notes | @@ -38,7 +48,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Social play** — squad scale, corps, trust, betrayal affordances, async cooperation. - **Encounters & enemy roles** — archetypes, what a fight teaches, variety without noise. **Skill + gig split runs:** [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md). - **Onboarding** — first session hook, clarity vs. mystery, how much systems the new player sees. -- **Tone & narrative** — how lore shows up (quests, environment, UI), voice of the world. +- **Tone & narrative** — how lore shows up (quests, environment, UI), voice of the world. **Presentation / ~teen rating target:** [Presentation and target rating (vision)](#presentation-and-target-rating-vision). ## Related repo docs diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 00a5f26..3c842d0 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -68,7 +68,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** |-------|----------------|--------------| | **Salvage** | Wrecks, derelicts, e-waste pulls, stripped chrome. | — | | **Extraction** | **From the earth:** mined or drilled feedstock—synth ores, rare earths, geological substrate for industry (subsurface and natural seams, not the city stack). | — | -| **Harvest (bio)** | **Organic feedstock** for chem, medtech, or food chains: cultured tissue and fungal mats **and** deliberately **grim** sourcing—e.g. **morgue** break-ins, **blood** and **tissue** theft, black-market organics. | **Concepts** stay **very grim**; **presentation** (UI, cinematics, props) stays **below adult-only explicit**—implication and noir, not graphic exploitation. Regional storefront rules still **open** | +| **Harvest (bio)** | **Organic feedstock** for chem, medtech, or food chains: cultured tissue and fungal mats **and** deliberately **grim** sourcing—e.g. **morgue** break-ins, **blood** and **tissue** theft, black-market organics. | Grim **concepts** in scope; **how we show it** and **target rating** are **vision-level**—see [overview.md](overview.md) | | **Quarry / bulk** | **Salvage at civic scale** from **buildings and city infrastructure:** aggregate, structural demo recoverables, fill and mass for concrete—**built environment**, not the earth seam. | Intentionally **not** **Extraction** (earth vs **infra**); fine-grained urban scrap lives in **Salvage** vs bulk **Quarry** — **open** | #### Process — turn raw into workable intermediate @@ -204,7 +204,6 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Social skills category | **No** dedicated **Social** skill family or tracked negotiation/fixer/fence skills—outcomes live in **rep**, **quests**, **economy**, and other systems if we need them | Agreed | | Low-gig specialist | **Viable** to focus progression on **skills** (gather/craft/tech) with **low gig levels**; economy loops must not **hard-gate** on high gig rank | Agreed | | Skill roster size | **Opening** v0 list is strong; **add skills** pre-launch as needed—**breadth** is a feature | Agreed | -| Grim fiction vs presentation | **Concepts** can be **very grim**; **presentation** (UI, cinematics, props) stays **below adult-only explicit**—implication and noir, not graphic exploitation | Agreed | | Gig XP award | **Main gig only**; **sub-gig** earns no XP—see [gigs.md](gigs.md) | Agreed | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | From 8bcd4cba04e4c9859c595f989fbc9bb20ff0d607 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:10:42 -0400 Subject: [PATCH 49/91] chore: define Salvage (consumer/vehicles) vs Quarry (urban infrastructure) --- docs/game-design/skills.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 3c842d0..a50a88f 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -29,7 +29,7 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: | Domain | Examples (illustrative) | |--------|-------------------------| -| **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **wrecks & biology** (salvage, harvest), and **infra bulk** (quarry from **buildings / city stack**) when we treat that as its own gather skill vs geological **Extraction** | +| **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **consumer salvage & biology** (**Salvage**, **Harvest**), and **urban infrastructure materials** (**Quarry**) vs geological **Extraction** skill | | **Processing** | Refining, chemistry prep, material conversion | | **Fabrication** | Weaponsmith, armtech, synth-chem, cooking if we track it | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | @@ -66,10 +66,10 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | Skill | What it covers | Open / merge | |-------|----------------|--------------| -| **Salvage** | Wrecks, derelicts, e-waste pulls, stripped chrome. | — | +| **Salvage** | **Consumer goods and vehicles:** cars, ships, computers, other wrecked or discarded **products**; e-waste, stripped chrome—**not** structural building stock (that’s **Quarry**). | — | | **Extraction** | **From the earth:** mined or drilled feedstock—synth ores, rare earths, geological substrate for industry (subsurface and natural seams, not the city stack). | — | | **Harvest (bio)** | **Organic feedstock** for chem, medtech, or food chains: cultured tissue and fungal mats **and** deliberately **grim** sourcing—e.g. **morgue** break-ins, **blood** and **tissue** theft, black-market organics. | Grim **concepts** in scope; **how we show it** and **target rating** are **vision-level**—see [overview.md](overview.md) | -| **Quarry / bulk** | **Salvage at civic scale** from **buildings and city infrastructure:** aggregate, structural demo recoverables, fill and mass for concrete—**built environment**, not the earth seam. | Intentionally **not** **Extraction** (earth vs **infra**); fine-grained urban scrap lives in **Salvage** vs bulk **Quarry** — **open** | +| **Quarry / bulk** | **Urban infrastructure** and **built-environment mass:** bricks, concrete, wooden building supplies, aggregate, fill, demo recoverables from **structures**—**not** consumer goods or vehicle wrecks (**Salvage**). | Intentionally **not** **Extraction** (earth seam vs **city stack**) | #### Process — turn raw into workable intermediate @@ -109,7 +109,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** **Cross-cutting notes** -- **Merge candidates:** e.g. **Refine** + **Synth-chem prep** vs split by fantasy; **Salvage** vs **Quarry** boundary (wreck/chrome vs infra bulk) — **open**. +- **Merge candidates:** e.g. **Refine** + **Synth-chem prep** vs split by fantasy. **Salvage** vs **Quarry** split (**consumer goods / vehicles** vs **urban infrastructure** materials) — **agreed**. - **Cut / defer:** **Food synth** if not a loop. - **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. From f8d99bfd4d21df328f82bcf48230742a4c2b5684 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:14:34 -0400 Subject: [PATCH 50/91] chore: note overlapping Process/Make production chains in skills doc --- docs/game-design/skills.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index a50a88f..8d6b009 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -73,6 +73,8 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** #### Process — turn raw into workable intermediate +**Overlapping chains:** **Process** and **Make** are not isolated trees. **Different** skills (or different recipes under one skill) can consume the **same** items and yield **different** intermediates or products—e.g. the same gathered or refined feedstock feeding **Refine**, **Synth-chem prep**, or **Bioprocess** paths with **different outputs**. Data-defined recipes carry the truth; overlap is **intentional** for a dense, interconnected economy. + | Skill | What it covers | Open / merge | |-------|----------------|--------------| | **Refine** | Smelt, purify, reduce ore and scrap to usable grades. | Merge vs **Synth-chem prep**? **open** | @@ -109,6 +111,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** **Cross-cutting notes** +- **Overlapping production chains:** **Agreed**—shared **inputs** across **Process** / **Make** with **different outputs**; recipe UX and balance **open** (paragraph under **Process** in [Skill roster](#skill-roster-draft-ideas-by-category)). - **Merge candidates:** e.g. **Refine** + **Synth-chem prep** vs split by fantasy. **Salvage** vs **Quarry** split (**consumer goods / vehicles** vs **urban infrastructure** materials) — **agreed**. - **Cut / defer:** **Food synth** if not a loop. - **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. From 30d760874134c67ef8336b1ca3e97b1167dfbc84 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:16:47 -0400 Subject: [PATCH 51/91] chore: split Refine (physical materials) vs Synth-chem prep (bio/chem) --- docs/game-design/skills.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 8d6b009..6faa606 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -30,7 +30,7 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: | Domain | Examples (illustrative) | |--------|-------------------------| | **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **consumer salvage & biology** (**Salvage**, **Harvest**), and **urban infrastructure materials** (**Quarry**) vs geological **Extraction** skill | -| **Processing** | Refining, chemistry prep, material conversion | +| **Processing** | **Refine** (ores, glass, steel, physical scrap → usable material grades); **Synth-chem prep** (bio/chem inputs → precursors/reagents); other conversion | | **Fabrication** | Weaponsmith, armtech, synth-chem, cooking if we track it | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | | **Support craft** | Medtech fabrication, field repair kits, augment maintenance (**open** naming) | @@ -48,7 +48,7 @@ New skills land here as **design + data** demand; a skill can sit in **multiple | Category | Rough scope | |----------|-------------| | **Gather** | Nodes, yields, field extraction | -| **Process** | Refine (incl. fab-tech intermediates), batch, intermediate goods | +| **Process** | **Refine** (physical materials); **Synth-chem prep** (bio/chem); fab-tech intermediates; batch; intermediate goods | | **Make** | Finished goods, recipes, bench work | | **Tech** | Intrusion, netsec, counter-intrusion, electronics, signal—**not** combat gig kit | @@ -73,13 +73,13 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** #### Process — turn raw into workable intermediate -**Overlapping chains:** **Process** and **Make** are not isolated trees. **Different** skills (or different recipes under one skill) can consume the **same** items and yield **different** intermediates or products—e.g. the same gathered or refined feedstock feeding **Refine**, **Synth-chem prep**, or **Bioprocess** paths with **different outputs**. Data-defined recipes carry the truth; overlap is **intentional** for a dense, interconnected economy. +**Overlapping chains:** **Process** and **Make** are not isolated trees. **Different** skills (or different recipes under one skill) can consume the **same** items and yield **different** intermediates or products—e.g. side streams where one batch of scrap or ore can route through **Refine**, **Synth-chem prep**, or **Bioprocess** with **different outputs** where content allows. Data-defined recipes carry the truth; overlap is **intentional** for a dense, interconnected economy. **Refine** vs **Synth-chem prep** stay **separate fantasies** (physical materials vs bio/chem)—see table. | Skill | What it covers | Open / merge | |-------|----------------|--------------| -| **Refine** | Smelt, purify, reduce ore and scrap to usable grades. | Merge vs **Synth-chem prep**? **open** | -| **Fab tech** | *Refine family:* print circuits, micro-actuators, substrate prep—industrial intermediates for **Make**. | Fold into **Refine** mastery only? **open** | -| **Synth-chem prep** | Precursors, reagents, stable compounds for **Make** (stims, reactives, polymers). | — | +| **Refine** | **Physical material** feedstock: raw **ore**, **salvaged glass** and **steel**, scrap metals, bulk mineral inputs—**smelt, purify, grade** toward **usable material forms** (ingots, sheet, cullet, structural grades). **Not** the bio/chem lane (**Synth-chem prep**). | Separate from **Synth-chem prep** — **agreed** | +| **Fab tech** | *Refine-adjacent (physical/industrial):* print circuits, micro-actuators, substrate prep—intermediates for **Make**. | Fold into **Refine** mastery only? **open** | +| **Synth-chem prep** | **Bio- and chemistry** streams: precursors, reagents, stable compounds, polymer feeds—inputs and outputs are **chem / organic / lab** oriented; feeds **Synth-chem (product)** and related **Make**. **Not** primary home for ore/glass/metal refinement (**Refine**). | Separate from **Refine** — **agreed** | | **Bioprocess** | Ferment, culture, grow feedstock for medtech or consumables. | — | | **Composite work** | Laminate layers, weave fibers, prep armtech “blanks” before final assembly. | — | | **Data scrub** | Clean, normalize, or decrypt **datasets** that become a craft input. | **Tech** overlap—pick one **primary** category | @@ -90,7 +90,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** |-------|----------------|--------------| | **Gunsmith** | Barrels, receivers, ballistics fab. | [Seams](#seams-gigs--skills): craft without gig to *use* | | **Armtech** | Armor plates, suits, hardshell integration. | — | -| **Synth-chem (product)** | Finish stims, chems, consumables from **Process** outputs. | — | +| **Synth-chem (product)** | Finish stims, chems, consumables from **Synth-chem prep** (and related **Process**) outputs. | — | | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | | **Rigging (gear)** | Drones, harnesses, tool mods—**non-combat** rigging. | Combat deployables **gig**-gated — **open** | | **Food synth** | Ration fab, street kitchens. | Skill at all? **open** | @@ -112,7 +112,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** **Cross-cutting notes** - **Overlapping production chains:** **Agreed**—shared **inputs** across **Process** / **Make** with **different outputs**; recipe UX and balance **open** (paragraph under **Process** in [Skill roster](#skill-roster-draft-ideas-by-category)). -- **Merge candidates:** e.g. **Refine** + **Synth-chem prep** vs split by fantasy. **Salvage** vs **Quarry** split (**consumer goods / vehicles** vs **urban infrastructure** materials) — **agreed**. +- **Merge candidates:** e.g. **Fab tech** folded into **Refine** vs separate. **Salvage** vs **Quarry** split (**consumer goods / vehicles** vs **urban infrastructure** materials) — **agreed**. **Refine** vs **Synth-chem prep** — **agreed** separate (physical materials vs bio/chem). - **Cut / defer:** **Food synth** if not a loop. - **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. @@ -205,6 +205,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Sub-gig | **FFXI-style** slot **agreed**; sub abilities up to **~½ main gig level** (formula TBD); wide build space | Agreed | | Combat progression | **Per gig**—separate level/XP (and mastery) per gig; no shared combat rank | Agreed | | Social skills category | **No** dedicated **Social** skill family or tracked negotiation/fixer/fence skills—outcomes live in **rep**, **quests**, **economy**, and other systems if we need them | Agreed | +| **Refine** vs **Synth-chem prep** | **Refine** = physical materials (ore, glass, steel, scrap metals → usable grades); **Synth-chem prep** = bio/chem streams (precursors, reagents, lab-oriented outputs) | Agreed | | Low-gig specialist | **Viable** to focus progression on **skills** (gather/craft/tech) with **low gig levels**; economy loops must not **hard-gate** on high gig rank | Agreed | | Skill roster size | **Opening** v0 list is strong; **add skills** pre-launch as needed—**breadth** is a feature | Agreed | | Gig XP award | **Main gig only**; **sub-gig** earns no XP—see [gigs.md](gigs.md) | Agreed | From 3d57013e1430edfaa8c7aa546706b31605827d7f Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:17:46 -0400 Subject: [PATCH 52/91] chore: separate Fab tech (PCBs, chips, solenoids) from Refine --- docs/game-design/skills.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 6faa606..13b7978 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -30,7 +30,7 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: | Domain | Examples (illustrative) | |--------|-------------------------| | **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **consumer salvage & biology** (**Salvage**, **Harvest**), and **urban infrastructure materials** (**Quarry**) vs geological **Extraction** skill | -| **Processing** | **Refine** (ores, glass, steel, physical scrap → usable material grades); **Synth-chem prep** (bio/chem inputs → precursors/reagents); other conversion | +| **Processing** | **Refine** (ores, glass, steel, scrap → material grades); **Fab tech** (PCBs, chips, solenoids, electromechanical subassemblies); **Synth-chem prep** (bio/chem); other conversion | | **Fabrication** | Weaponsmith, armtech, synth-chem, cooking if we track it | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | | **Support craft** | Medtech fabrication, field repair kits, augment maintenance (**open** naming) | @@ -48,7 +48,7 @@ New skills land here as **design + data** demand; a skill can sit in **multiple | Category | Rough scope | |----------|-------------| | **Gather** | Nodes, yields, field extraction | -| **Process** | **Refine** (physical materials); **Synth-chem prep** (bio/chem); fab-tech intermediates; batch; intermediate goods | +| **Process** | **Refine** (material grades); **Fab tech** (boards, chips, actuators—not smelting); **Synth-chem prep** (bio/chem); batch; intermediate goods | | **Make** | Finished goods, recipes, bench work | | **Tech** | Intrusion, netsec, counter-intrusion, electronics, signal—**not** combat gig kit | @@ -77,8 +77,8 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | Skill | What it covers | Open / merge | |-------|----------------|--------------| -| **Refine** | **Physical material** feedstock: raw **ore**, **salvaged glass** and **steel**, scrap metals, bulk mineral inputs—**smelt, purify, grade** toward **usable material forms** (ingots, sheet, cullet, structural grades). **Not** the bio/chem lane (**Synth-chem prep**). | Separate from **Synth-chem prep** — **agreed** | -| **Fab tech** | *Refine-adjacent (physical/industrial):* print circuits, micro-actuators, substrate prep—intermediates for **Make**. | Fold into **Refine** mastery only? **open** | +| **Refine** | **Physical material** feedstock: raw **ore**, **salvaged glass** and **steel**, scrap metals, bulk mineral inputs—**smelt, purify, grade** toward **usable material forms** (ingots, sheet, cullet, structural grades). **Not** bio/chem (**Synth-chem prep**) or component fab (**Fab tech**). | Separate from **Synth-chem prep** & **Fab tech** — **agreed** | +| **Fab tech** | **Electronics and electromechanical fab:** **chips**, **PCBs**, **solenoids**, micro-actuators, substrate and assembly steps—**built components**, not **Refine**’s job of turning raw ore/glass/steel into graded **bulk** material. Uses **Refine** outputs (and other inputs) as **feed**, but the skill fantasy is **manufacture**, not smelt/purify. | Separate from **Refine** — **agreed** | | **Synth-chem prep** | **Bio- and chemistry** streams: precursors, reagents, stable compounds, polymer feeds—inputs and outputs are **chem / organic / lab** oriented; feeds **Synth-chem (product)** and related **Make**. **Not** primary home for ore/glass/metal refinement (**Refine**). | Separate from **Refine** — **agreed** | | **Bioprocess** | Ferment, culture, grow feedstock for medtech or consumables. | — | | **Composite work** | Laminate layers, weave fibers, prep armtech “blanks” before final assembly. | — | @@ -112,7 +112,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** **Cross-cutting notes** - **Overlapping production chains:** **Agreed**—shared **inputs** across **Process** / **Make** with **different outputs**; recipe UX and balance **open** (paragraph under **Process** in [Skill roster](#skill-roster-draft-ideas-by-category)). -- **Merge candidates:** e.g. **Fab tech** folded into **Refine** vs separate. **Salvage** vs **Quarry** split (**consumer goods / vehicles** vs **urban infrastructure** materials) — **agreed**. **Refine** vs **Synth-chem prep** — **agreed** separate (physical materials vs bio/chem). +- **Agreed Process boundaries:** **Salvage** vs **Quarry**; **Refine** vs **Synth-chem prep** (physical materials vs bio/chem); **Refine** vs **Fab tech** (base material grades vs chips/PCBs/solenoids and electromechanical fab). Further merge/split ideas — **open** as the roster evolves. - **Cut / defer:** **Food synth** if not a loop. - **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. @@ -206,6 +206,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Combat progression | **Per gig**—separate level/XP (and mastery) per gig; no shared combat rank | Agreed | | Social skills category | **No** dedicated **Social** skill family or tracked negotiation/fixer/fence skills—outcomes live in **rep**, **quests**, **economy**, and other systems if we need them | Agreed | | **Refine** vs **Synth-chem prep** | **Refine** = physical materials (ore, glass, steel, scrap metals → usable grades); **Synth-chem prep** = bio/chem streams (precursors, reagents, lab-oriented outputs) | Agreed | +| **Refine** vs **Fab tech** | **Refine** = smelt/purify/grade **base** materials; **Fab tech** = fabricate **chips, PCBs, solenoids**, and similar **components**—may **consume** refined materials, does not **overlap** the refine loop | Agreed | | Low-gig specialist | **Viable** to focus progression on **skills** (gather/craft/tech) with **low gig levels**; economy loops must not **hard-gate** on high gig rank | Agreed | | Skill roster size | **Opening** v0 list is strong; **add skills** pre-launch as needed—**breadth** is a feature | Agreed | | Gig XP award | **Main gig only**; **sub-gig** earns no XP—see [gigs.md](gigs.md) | Agreed | From b4f72c77e65c62946bddea51bdbc2fc7ba6d6862 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:19:27 -0400 Subject: [PATCH 53/91] chore: document multi-stage Process chains (e.g. Composite work) --- docs/game-design/skills.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 13b7978..33adb45 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -75,13 +75,15 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** **Overlapping chains:** **Process** and **Make** are not isolated trees. **Different** skills (or different recipes under one skill) can consume the **same** items and yield **different** intermediates or products—e.g. side streams where one batch of scrap or ore can route through **Refine**, **Synth-chem prep**, or **Bioprocess** with **different outputs** where content allows. Data-defined recipes carry the truth; overlap is **intentional** for a dense, interconnected economy. **Refine** vs **Synth-chem prep** stay **separate fantasies** (physical materials vs bio/chem)—see table. +**Multi-stage processing (depth):** In addition to **branching** paths, expect **serial** depth—**several** **Process** steps before **Make**. A single finished good can depend on **Gather → Process → Process → Make** (or longer). For example, **Composite work** might take **raw** fibers or resin straight from **Gather** *and* **Refine** (or **Synth-chem prep**) outputs in the **same** recipe, so players see **intermediates feeding intermediates** rather than one hop from node to bench. + | Skill | What it covers | Open / merge | |-------|----------------|--------------| | **Refine** | **Physical material** feedstock: raw **ore**, **salvaged glass** and **steel**, scrap metals, bulk mineral inputs—**smelt, purify, grade** toward **usable material forms** (ingots, sheet, cullet, structural grades). **Not** bio/chem (**Synth-chem prep**) or component fab (**Fab tech**). | Separate from **Synth-chem prep** & **Fab tech** — **agreed** | | **Fab tech** | **Electronics and electromechanical fab:** **chips**, **PCBs**, **solenoids**, micro-actuators, substrate and assembly steps—**built components**, not **Refine**’s job of turning raw ore/glass/steel into graded **bulk** material. Uses **Refine** outputs (and other inputs) as **feed**, but the skill fantasy is **manufacture**, not smelt/purify. | Separate from **Refine** — **agreed** | | **Synth-chem prep** | **Bio- and chemistry** streams: precursors, reagents, stable compounds, polymer feeds—inputs and outputs are **chem / organic / lab** oriented; feeds **Synth-chem (product)** and related **Make**. **Not** primary home for ore/glass/metal refinement (**Refine**). | Separate from **Refine** — **agreed** | | **Bioprocess** | Ferment, culture, grow feedstock for medtech or consumables. | — | -| **Composite work** | Laminate layers, weave fibers, prep armtech “blanks” before final assembly. | — | +| **Composite work** | Laminate layers, weave fibers, prep armtech “blanks” before final assembly. | Often **multi-stage:** mixes **Gather** inputs with **Refine** / other **Process** outputs—see **Multi-stage processing** above | | **Data scrub** | Clean, normalize, or decrypt **datasets** that become a craft input. | **Tech** overlap—pick one **primary** category | #### Make — recipes, benches, finished goods @@ -111,7 +113,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** **Cross-cutting notes** -- **Overlapping production chains:** **Agreed**—shared **inputs** across **Process** / **Make** with **different outputs**; recipe UX and balance **open** (paragraph under **Process** in [Skill roster](#skill-roster-draft-ideas-by-category)). +- **Production chain shape:** **Agreed**—(1) **Overlapping** paths: shared **inputs**, divergent **outputs** across **Process** / **Make**; (2) **Multi-stage** depth: **Gather → Process → Process → Make** (or longer), including recipes that combine **raw** gatherables with **refined** or other processed intermediates (e.g. **Composite work**). Recipe UX and balance **open** (paragraphs under **Process** in [Skill roster](#skill-roster-draft-ideas-by-category)). - **Agreed Process boundaries:** **Salvage** vs **Quarry**; **Refine** vs **Synth-chem prep** (physical materials vs bio/chem); **Refine** vs **Fab tech** (base material grades vs chips/PCBs/solenoids and electromechanical fab). Further merge/split ideas — **open** as the roster evolves. - **Cut / defer:** **Food synth** if not a loop. - **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. From e13043f09a554d978411f920c75a3f7d11a9d7a3 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:20:18 -0400 Subject: [PATCH 54/91] chore: generalize multi-stage Process note; roster intro for chain shape --- docs/game-design/skills.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 33adb45..dc1d42f 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -62,6 +62,8 @@ Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** ch Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, **Skill** name plus **what it covers** and **open / merge** notes. +**Production chains (Gather → Process → Make):** Recipes can **branch** (same inputs, different outputs) and run **deep** (several **Process** steps in a row before **Make**). **Any** row in **Process**—not one named skill—may sit mid-pipeline, mixing **raw** gatherables with **earlier** intermediates from **Refine**, **Fab tech**, **Synth-chem prep**, **Bioprocess**, **Composite work**, etc. Detail in **Overlapping chains** and **Multi-stage processing** under the **Process** heading below (after **Gather**). + #### Gather — pull raw value from the world | Skill | What it covers | Open / merge | @@ -75,7 +77,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** **Overlapping chains:** **Process** and **Make** are not isolated trees. **Different** skills (or different recipes under one skill) can consume the **same** items and yield **different** intermediates or products—e.g. side streams where one batch of scrap or ore can route through **Refine**, **Synth-chem prep**, or **Bioprocess** with **different outputs** where content allows. Data-defined recipes carry the truth; overlap is **intentional** for a dense, interconnected economy. **Refine** vs **Synth-chem prep** stay **separate fantasies** (physical materials vs bio/chem)—see table. -**Multi-stage processing (depth):** In addition to **branching** paths, expect **serial** depth—**several** **Process** steps before **Make**. A single finished good can depend on **Gather → Process → Process → Make** (or longer). For example, **Composite work** might take **raw** fibers or resin straight from **Gather** *and* **Refine** (or **Synth-chem prep**) outputs in the **same** recipe, so players see **intermediates feeding intermediates** rather than one hop from node to bench. +**Multi-stage processing (depth):** Same idea as **Overlapping chains**, but **serial**: **several** **Process** steps before **Make**—e.g. **Gather → Process → Process → Make** (or longer). **Any** **Process** skill’s recipes can require **Gather**-fresh inputs **and** outputs from **prior** **Process** steps in one pass, or consume only intermediates from an earlier hop—**intermediates feeding intermediates**, not always a single hop from node to bench. | Skill | What it covers | Open / merge | |-------|----------------|--------------| @@ -83,7 +85,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | **Fab tech** | **Electronics and electromechanical fab:** **chips**, **PCBs**, **solenoids**, micro-actuators, substrate and assembly steps—**built components**, not **Refine**’s job of turning raw ore/glass/steel into graded **bulk** material. Uses **Refine** outputs (and other inputs) as **feed**, but the skill fantasy is **manufacture**, not smelt/purify. | Separate from **Refine** — **agreed** | | **Synth-chem prep** | **Bio- and chemistry** streams: precursors, reagents, stable compounds, polymer feeds—inputs and outputs are **chem / organic / lab** oriented; feeds **Synth-chem (product)** and related **Make**. **Not** primary home for ore/glass/metal refinement (**Refine**). | Separate from **Refine** — **agreed** | | **Bioprocess** | Ferment, culture, grow feedstock for medtech or consumables. | — | -| **Composite work** | Laminate layers, weave fibers, prep armtech “blanks” before final assembly. | Often **multi-stage:** mixes **Gather** inputs with **Refine** / other **Process** outputs—see **Multi-stage processing** above | +| **Composite work** | Laminate layers, weave fibers, prep armtech “blanks” before final assembly. | — | | **Data scrub** | Clean, normalize, or decrypt **datasets** that become a craft input. | **Tech** overlap—pick one **primary** category | #### Make — recipes, benches, finished goods @@ -113,7 +115,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** **Cross-cutting notes** -- **Production chain shape:** **Agreed**—(1) **Overlapping** paths: shared **inputs**, divergent **outputs** across **Process** / **Make**; (2) **Multi-stage** depth: **Gather → Process → Process → Make** (or longer), including recipes that combine **raw** gatherables with **refined** or other processed intermediates (e.g. **Composite work**). Recipe UX and balance **open** (paragraphs under **Process** in [Skill roster](#skill-roster-draft-ideas-by-category)). +- **Production chain shape:** **Agreed**—(1) **Overlapping** paths: shared **inputs**, divergent **outputs** across **Process** / **Make**; (2) **Multi-stage** depth: **Gather → Process → Process → Make** (or longer), with **any** **Process** skill able to participate. Recipe UX and balance **open** (roster intro + **Process** subsection in [Skill roster](#skill-roster-draft-ideas-by-category)). - **Agreed Process boundaries:** **Salvage** vs **Quarry**; **Refine** vs **Synth-chem prep** (physical materials vs bio/chem); **Refine** vs **Fab tech** (base material grades vs chips/PCBs/solenoids and electromechanical fab). Further merge/split ideas — **open** as the roster evolves. - **Cut / defer:** **Food synth** if not a loop. - **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. From 1757e8783021ca6b18e756087aa42c37a267c87e Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:21:23 -0400 Subject: [PATCH 55/91] chore: separate Data scrub (data/firmware) from Fab tech --- docs/game-design/skills.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index dc1d42f..4eed8a5 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -30,7 +30,7 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: | Domain | Examples (illustrative) | |--------|-------------------------| | **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **consumer salvage & biology** (**Salvage**, **Harvest**), and **urban infrastructure materials** (**Quarry**) vs geological **Extraction** skill | -| **Processing** | **Refine** (ores, glass, steel, scrap → material grades); **Fab tech** (PCBs, chips, solenoids, electromechanical subassemblies); **Synth-chem prep** (bio/chem); other conversion | +| **Processing** | **Refine** (ores, glass, steel, scrap → material grades); **Fab tech** (physical PCBs, chips, solenoids); **Data scrub** (abstract data—datasets, firmware, logical unlock); **Synth-chem prep** (bio/chem); other conversion | | **Fabrication** | Weaponsmith, armtech, synth-chem, cooking if we track it | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | | **Support craft** | Medtech fabrication, field repair kits, augment maintenance (**open** naming) | @@ -48,7 +48,7 @@ New skills land here as **design + data** demand; a skill can sit in **multiple | Category | Rough scope | |----------|-------------| | **Gather** | Nodes, yields, field extraction | -| **Process** | **Refine** (material grades); **Fab tech** (boards, chips, actuators—not smelting); **Synth-chem prep** (bio/chem); batch; intermediate goods | +| **Process** | **Refine**; **Fab tech** (physical fab); **Data scrub** (data/firmware); **Synth-chem prep** (bio/chem); batch; intermediate goods | | **Make** | Finished goods, recipes, bench work | | **Tech** | Intrusion, netsec, counter-intrusion, electronics, signal—**not** combat gig kit | @@ -62,7 +62,7 @@ Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** ch Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, **Skill** name plus **what it covers** and **open / merge** notes. -**Production chains (Gather → Process → Make):** Recipes can **branch** (same inputs, different outputs) and run **deep** (several **Process** steps in a row before **Make**). **Any** row in **Process**—not one named skill—may sit mid-pipeline, mixing **raw** gatherables with **earlier** intermediates from **Refine**, **Fab tech**, **Synth-chem prep**, **Bioprocess**, **Composite work**, etc. Detail in **Overlapping chains** and **Multi-stage processing** under the **Process** heading below (after **Gather**). +**Production chains (Gather → Process → Make):** Recipes can **branch** (same inputs, different outputs) and run **deep** (several **Process** steps in a row before **Make**). **Any** row in **Process**—not one named skill—may sit mid-pipeline, mixing **raw** gatherables with **earlier** intermediates from **Refine**, **Fab tech**, **Data scrub**, **Synth-chem prep**, **Bioprocess**, **Composite work**, etc. Detail in **Overlapping chains** and **Multi-stage processing** under the **Process** heading below (after **Gather**). #### Gather — pull raw value from the world @@ -82,11 +82,11 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | Skill | What it covers | Open / merge | |-------|----------------|--------------| | **Refine** | **Physical material** feedstock: raw **ore**, **salvaged glass** and **steel**, scrap metals, bulk mineral inputs—**smelt, purify, grade** toward **usable material forms** (ingots, sheet, cullet, structural grades). **Not** bio/chem (**Synth-chem prep**) or component fab (**Fab tech**). | Separate from **Synth-chem prep** & **Fab tech** — **agreed** | -| **Fab tech** | **Electronics and electromechanical fab:** **chips**, **PCBs**, **solenoids**, micro-actuators, substrate and assembly steps—**built components**, not **Refine**’s job of turning raw ore/glass/steel into graded **bulk** material. Uses **Refine** outputs (and other inputs) as **feed**, but the skill fantasy is **manufacture**, not smelt/purify. | Separate from **Refine** — **agreed** | +| **Fab tech** | **Electronics and electromechanical fab:** **chips**, **PCBs**, **solenoids**, micro-actuators, substrate and assembly steps—**built components**, not **Refine**’s job of turning raw ore/glass/steel into graded **bulk** material. Uses **Refine** outputs (and other inputs) as **feed**, but the skill fantasy is **manufacture**, not smelt/purify. | Separate from **Refine** & **Data scrub** — **agreed** (physical vs **data** layer) | | **Synth-chem prep** | **Bio- and chemistry** streams: precursors, reagents, stable compounds, polymer feeds—inputs and outputs are **chem / organic / lab** oriented; feeds **Synth-chem (product)** and related **Make**. **Not** primary home for ore/glass/metal refinement (**Refine**). | Separate from **Refine** — **agreed** | | **Bioprocess** | Ferment, culture, grow feedstock for medtech or consumables. | — | | **Composite work** | Laminate layers, weave fibers, prep armtech “blanks” before final assembly. | — | -| **Data scrub** | Clean, normalize, or decrypt **datasets** that become a craft input. | **Tech** overlap—pick one **primary** category | +| **Data scrub** | **Abstract data** work—not **Fab tech**’s physical manufacture. Clean, normalize, decrypt, or repackage **datasets** as craft inputs; **firmware wipes** and logical unlocks that make **salvaged** parts **usable** again without milling a new board. **Information and software** layer on devices and loot, not **PCBs/chips** fab. | Separate from **Fab tech** — **agreed**; **Tech** skills (e.g. **Intrusion**) for **live** hacks—**open** boundary | #### Make — recipes, benches, finished goods @@ -116,7 +116,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** **Cross-cutting notes** - **Production chain shape:** **Agreed**—(1) **Overlapping** paths: shared **inputs**, divergent **outputs** across **Process** / **Make**; (2) **Multi-stage** depth: **Gather → Process → Process → Make** (or longer), with **any** **Process** skill able to participate. Recipe UX and balance **open** (roster intro + **Process** subsection in [Skill roster](#skill-roster-draft-ideas-by-category)). -- **Agreed Process boundaries:** **Salvage** vs **Quarry**; **Refine** vs **Synth-chem prep** (physical materials vs bio/chem); **Refine** vs **Fab tech** (base material grades vs chips/PCBs/solenoids and electromechanical fab). Further merge/split ideas — **open** as the roster evolves. +- **Agreed Process boundaries:** **Salvage** vs **Quarry**; **Refine** vs **Synth-chem prep** (physical materials vs bio/chem); **Refine** vs **Fab tech** (base material grades vs physical electromechanical fab); **Fab tech** vs **Data scrub** (physical components vs **data/firmware** on salvage). Further merge/split ideas — **open** as the roster evolves. - **Cut / defer:** **Food synth** if not a loop. - **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. @@ -211,6 +211,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Social skills category | **No** dedicated **Social** skill family or tracked negotiation/fixer/fence skills—outcomes live in **rep**, **quests**, **economy**, and other systems if we need them | Agreed | | **Refine** vs **Synth-chem prep** | **Refine** = physical materials (ore, glass, steel, scrap metals → usable grades); **Synth-chem prep** = bio/chem streams (precursors, reagents, lab-oriented outputs) | Agreed | | **Refine** vs **Fab tech** | **Refine** = smelt/purify/grade **base** materials; **Fab tech** = fabricate **chips, PCBs, solenoids**, and similar **components**—may **consume** refined materials, does not **overlap** the refine loop | Agreed | +| **Fab tech** vs **Data scrub** | **Fab tech** = **physical** fab; **Data scrub** = **abstract** data—datasets, **firmware wipes**, logical reuse of salvaged parts—not the same skill fantasy | Agreed | | Low-gig specialist | **Viable** to focus progression on **skills** (gather/craft/tech) with **low gig levels**; economy loops must not **hard-gate** on high gig rank | Agreed | | Skill roster size | **Opening** v0 list is strong; **add skills** pre-launch as needed—**breadth** is a feature | Agreed | | Gig XP award | **Main gig only**; **sub-gig** earns no XP—see [gigs.md](gigs.md) | Agreed | From f6c4cb6b5224608ee2105d3e4c42a75767c5d019 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:22:53 -0400 Subject: [PATCH 56/91] fix: stable #seams-gigs-skills anchor for Seams section links --- docs/game-design/skills.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 4eed8a5..343da2c 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -2,7 +2,7 @@ Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. -**This file also owns the [Seams (gigs ↔ skills)](#seams-gigs--skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). +**This file also owns the [Seams (gigs ↔ skills)](#seams-gigs-skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). ## Classless skills @@ -12,7 +12,7 @@ Everything **outside combat role resolution** trains on **skills**. That include - **Any character can train any skill** over time (subject to **world gates**: discovery, rep, licenses—those **add** content, they are not “you picked the wrong class”). - **Economy identity** is the **skill graph + reputation + gear**, not which **gig** you had equipped last night. -- **Specialist path:** it must be viable to **keep gigs low** (minimal combat-role investment) and still **meaningfully play** by pushing **gather / process / make / tech**—best supplier, best bench, best netsec in the hubs and instances that reward skills. Combat and story may still **touch** gigs; they must not **hard-require** high gig levels to participate in the **economy and skill loops** players care about for that lifestyle ([Seams](#seams-gigs--skills): e.g. **craft** without needing to **equip** what you make). +- **Specialist path:** it must be viable to **keep gigs low** (minimal combat-role investment) and still **meaningfully play** by pushing **gather / process / make / tech**—best supplier, best bench, best netsec in the hubs and instances that reward skills. Combat and story may still **touch** gigs; they must not **hard-require** high gig levels to participate in the **economy and skill loops** players care about for that lifestyle ([Seams](#seams-gigs-skills): e.g. **craft** without needing to **equip** what you make). - **Long-term:** avoid dead-end grinds; slow or expensive is fine, “wrong choice forever” is not. ### What is (and isn’t) a skill @@ -92,7 +92,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | Skill | What it covers | Open / merge | |-------|----------------|--------------| -| **Gunsmith** | Barrels, receivers, ballistics fab. | [Seams](#seams-gigs--skills): craft without gig to *use* | +| **Gunsmith** | Barrels, receivers, ballistics fab. | [Seams](#seams-gigs-skills): craft without gig to *use* | | **Armtech** | Armor plates, suits, hardshell integration. | — | | **Synth-chem (product)** | Finish stims, chems, consumables from **Synth-chem prep** (and related **Process**) outputs. | — | | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | @@ -160,7 +160,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | [Epic 2](../decomposition/epics/epic_02_classless_progression.md) | Registry, XP engine, mastery, pacing | | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) | Gather and craft **award** skill XP; items and recipes | | [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | Quest rewards, rep gates, optional skill payouts | -| [gigs.md](gigs.md) | **Craft** combat gear with **skills**; **equip** with **gigs**—[Seams](#seams-gigs--skills) | +| [gigs.md](gigs.md) | **Craft** combat gear with **skills**; **equip** with **gigs**—[Seams](#seams-gigs-skills) | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | **Skill** lane in a group instance (idea only) | ### Open questions (skills-only) @@ -173,6 +173,8 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Cross-skill synergy math | Open | | Skill-based **combat-adjacent** actions (e.g. deployable) vs **gig** ability | Open | + + ## Seams (gigs ↔ skills) | Topic | Direction | From 39ef946814a195353566fbb2f1c6f5cc30ce8962 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:23:56 -0400 Subject: [PATCH 57/91] chore: add Cybernetics Make skill to skills roster --- docs/game-design/skills.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 343da2c..0466cee 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -31,9 +31,9 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: |--------|-------------------------| | **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **consumer salvage & biology** (**Salvage**, **Harvest**), and **urban infrastructure materials** (**Quarry**) vs geological **Extraction** skill | | **Processing** | **Refine** (ores, glass, steel, scrap → material grades); **Fab tech** (physical PCBs, chips, solenoids); **Data scrub** (abstract data—datasets, firmware, logical unlock); **Synth-chem prep** (bio/chem); other conversion | -| **Fabrication** | Weaponsmith, armtech, synth-chem, cooking if we track it | +| **Fabrication** | Gunsmith, armtech, **cybernetics** (implants, augmentation), synth-chem products, medtech fab, cooking if we track it | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | -| **Support craft** | Medtech fabrication, field repair kits, augment maintenance (**open** naming) | +| **Support craft** | Medtech fabrication, field repair kits; **implant install / tune** fiction may split **Cybernetics** **Make** vs bench maintenance (**open**) | New skills land here as **design + data** demand; a skill can sit in **multiple domains** in conversation before we assign its **primary category**. @@ -49,14 +49,14 @@ New skills land here as **design + data** demand; a skill can sit in **multiple |----------|-------------| | **Gather** | Nodes, yields, field extraction | | **Process** | **Refine**; **Fab tech** (physical fab); **Data scrub** (data/firmware); **Synth-chem prep** (bio/chem); batch; intermediate goods | -| **Make** | Finished goods, recipes, bench work | +| **Make** | Finished goods, recipes, bench work—**Gunsmith**, **Armtech**, **Cybernetics**, **Medtech fab**, etc. | | **Tech** | Intrusion, netsec, counter-intrusion, electronics, signal—**not** combat gig kit | Optional **secondary category** for UI sorting only—**primary** category in data drives balance defaults. ### Skill roster (draft ideas by category) -**v0 — for examination, not a commit list.** Each row is a **candidate skill** (or tight cluster we might merge). The tables below are a **solid opening roster**—on the order of **~17–23** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. +**v0 — for examination, not a commit list.** Each row is a **candidate skill** (or tight cluster we might merge). The tables below are a **solid opening roster**—on the order of **~18–24** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** checks (especially **Tech** vs combat netrunning). @@ -96,6 +96,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | **Armtech** | Armor plates, suits, hardshell integration. | — | | **Synth-chem (product)** | Finish stims, chems, consumables from **Synth-chem prep** (and related **Process**) outputs. | — | | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | +| **Cybernetics** | **Implants, augmentation, chrome:** neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installable augments from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). | **Equip / slots** vs **combat loadout** and gig-gated combat chrome — **open** ([Seams](#seams-gigs-skills)); overlap with **Medtech fab** / **Armtech** fiction — **open** | | **Rigging (gear)** | Drones, harnesses, tool mods—**non-combat** rigging. | Combat deployables **gig**-gated — **open** | | **Food synth** | Ration fab, street kitchens. | Skill at all? **open** | From ad0d1bc2b52f20ef04b1d70826104a5359f8ea37 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:26:25 -0400 Subject: [PATCH 58/91] chore: cybernetics semi-permanent and not gig-gated (Seams + decisions) --- docs/game-design/skills.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 0466cee..08b0d9f 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -96,7 +96,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | **Armtech** | Armor plates, suits, hardshell integration. | — | | **Synth-chem (product)** | Finish stims, chems, consumables from **Synth-chem prep** (and related **Process**) outputs. | — | | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | -| **Cybernetics** | **Implants, augmentation, chrome:** neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installable augments from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). | **Equip / slots** vs **combat loadout** and gig-gated combat chrome — **open** ([Seams](#seams-gigs-skills)); overlap with **Medtech fab** / **Armtech** fiction — **open** | +| **Cybernetics** | **Implants, augmentation, chrome:** neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installable augments from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). **Semi-permanent** **body** integration (e.g. an **ocular** suite)—**not** swapped like daily loadout; stays **active** across **gig** changes. | **Not gig-gated** — **agreed** ([Seams](#seams-gigs-skills)); strip/replace cost, clinic fiction, vs removable **Armtech** — **open** | | **Rigging (gear)** | Drones, harnesses, tool mods—**non-combat** rigging. | Combat deployables **gig**-gated — **open** | | **Food synth** | Ration fab, street kitchens. | Skill at all? **open** | @@ -180,7 +180,8 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Topic | Direction | |--------|-----------| -| **Combat gear** | **Gig-restricted.** Weapons, armor, and other combat-loadout pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. | +| **Combat gear** | **Gig-restricted.** Weapons, armor, and other **swap-friendly** combat-loadout pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. **Does not** apply to **semi-permanent** **Cybernetics** augments—see **Cybernetics / implants** row. | +| **Cybernetics / implants** | **Not gig-gated.** Augments from **Cybernetics** (**Make**) are **body-integrated** and **semi-permanent**: they remain **in play** when you change **main gig**, **sub-gig**, or combat loadout (e.g. an **ocular** implant does not come off at hub swap). **Crafting** stays **skill**/recipe/rep—never gig level. Removal, replacement, or tier-up may be **costly** and **fiction-heavy** (clinic, downtime)—**open**—but is **not** the same rhythm as re-banking a rifle. Contrast **Armtech** suits/plates and other **combat gear**, which stay **gig-restricted** above. | | **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. gunsmith), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | | **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Passive** potency can scale with **gig** match: e.g. a **medic**-tagged bonus applies if **main *or* sub-gig** matches (see [gigs.md](gigs.md)). Others use a **baseline**. **Active** abilities from consumables (if any) follow their own rules—**open**. Other items may have **no** gig hook—data-driven per item. | | **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | @@ -189,6 +190,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod ## Player-facing readability - **Combat:** UI shows **main gig**, **sub-gig**, levels/tracks, combat abilities, and **combat gear** the main gig can use (mismatched gear disabled or greyed). Consumable tooltips for **passive** amps can show **baseline vs. boosted** when **main or sub** matches the item’s gig hook. +- **Cybernetics:** **Implants** read as **character** chrome—always relevant, **not** hidden or disabled by gig mismatch; separate from the **combat loadout** strip ([Seams](#seams-gigs-skills) **Cybernetics / implants**). - **Non-combat / crafting:** **skill** list, **category** filters, XP with **source** hints where helpful; **mastery** branches when E2.M3-style systems exist. Crafting combat gear uses **skill**/recipe gates only—not gigs (optional hint if you can’t equip the product on your current gig). - **Story:** journal or quest UI can separate **character / faction** threads from **gig** threads so players see which arc belongs to which gig. - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. @@ -198,7 +200,8 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Topic | Direction | Status | |-------|-----------|--------| | Vocabulary | **Gig** = combat role; **skill** = non-combat only | Agreed | -| Combat gear | **Gig-restricted** equip/activation; non-combat tools **skill**-gated | Agreed | +| Combat gear | **Gig-restricted** equip/activation for **swap-friendly** loadout; non-combat tools **skill**-gated | Agreed | +| Cybernetics / implants | **Semi-permanent** augments from **Cybernetics** **Make**—**character-wide**, **not gig-gated**; persist across gig swap | Agreed | | Crafting combat gear | **Skill**/recipe/rep (etc.) only—**not** gig or gig level; craft-for-others OK | Agreed | | Consumables | Baseline for all; **passive gig amp** from **main or sub** ([gigs.md](gigs.md)) | Agreed | | Rep / story | Character-wide **rep**; **gig**-scoped **storylines** and **main quests** (per-gig progress on one avatar) | Agreed | @@ -224,5 +227,5 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod - **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment **deferred**; **PvP** gig rules **open indefinite** (overall PvP scope TBD). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. -- **Items** — **equip:** gig rules; **craft:** **skills** (and recipe/rep), never gig level. +- **Items** — **equip:** gig rules for **combat gear**; **cybernetics** character-wide (**not** gig-gated); **craft:** **skills** (and recipe/rep), never gig level. - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From c21f65532c49f6ff35cd195847d6b1fed93dc235 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:27:07 -0400 Subject: [PATCH 59/91] =?UTF-8?q?chore:=20Armtech=20swappable=20vs=20Cyber?= =?UTF-8?q?netics=20body-integrated=E2=80=94no=20overlap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/game-design/skills.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 08b0d9f..b3f3611 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -31,7 +31,7 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: |--------|-------------------------| | **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **consumer salvage & biology** (**Salvage**, **Harvest**), and **urban infrastructure materials** (**Quarry**) vs geological **Extraction** skill | | **Processing** | **Refine** (ores, glass, steel, scrap → material grades); **Fab tech** (physical PCBs, chips, solenoids); **Data scrub** (abstract data—datasets, firmware, logical unlock); **Synth-chem prep** (bio/chem); other conversion | -| **Fabrication** | Gunsmith, armtech, **cybernetics** (implants, augmentation), synth-chem products, medtech fab, cooking if we track it | +| **Fabrication** | Gunsmith; **Armtech** (swappable armor/suits); **Cybernetics** (body-integrated implants—**not** Armtech); synth-chem products, medtech fab, cooking if we track it | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | | **Support craft** | Medtech fabrication, field repair kits; **implant install / tune** fiction may split **Cybernetics** **Make** vs bench maintenance (**open**) | @@ -93,10 +93,10 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | Skill | What it covers | Open / merge | |-------|----------------|--------------| | **Gunsmith** | Barrels, receivers, ballistics fab. | [Seams](#seams-gigs-skills): craft without gig to *use* | -| **Armtech** | Armor plates, suits, hardshell integration. | — | +| **Armtech** | **Worn / carried** armor: plates, suits, hardshell, rigs—**swap-friendly** at hub or loadout like other **combat gear**; **gig-restricted** when equipped for fights ([Seams](#seams-gigs-skills)). **Does not** cover **body-integrated** implants (**Cybernetics**)—**no** fantasy overlap — **agreed** | | **Synth-chem (product)** | Finish stims, chems, consumables from **Synth-chem prep** (and related **Process**) outputs. | — | | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | -| **Cybernetics** | **Implants, augmentation, chrome:** neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installable augments from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). **Semi-permanent** **body** integration (e.g. an **ocular** suite)—**not** swapped like daily loadout; stays **active** across **gig** changes. | **Not gig-gated** — **agreed** ([Seams](#seams-gigs-skills)); strip/replace cost, clinic fiction, vs removable **Armtech** — **open** | +| **Cybernetics** | **Body-integrated** implants and augmentation: neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installs from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). **Semi-permanent** (e.g. **ocular** suite)—**not** the **swap-friendly** **Armtech** lane. Stays **active** across **gig** changes. | **Not gig-gated** — **agreed** ([Seams](#seams-gigs-skills)); **no** overlap with **Armtech** — **agreed**; strip/replace cost, clinic fiction — **open** | | **Rigging (gear)** | Drones, harnesses, tool mods—**non-combat** rigging. | Combat deployables **gig**-gated — **open** | | **Food synth** | Ration fab, street kitchens. | Skill at all? **open** | @@ -181,7 +181,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Topic | Direction | |--------|-----------| | **Combat gear** | **Gig-restricted.** Weapons, armor, and other **swap-friendly** combat-loadout pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. **Does not** apply to **semi-permanent** **Cybernetics** augments—see **Cybernetics / implants** row. | -| **Cybernetics / implants** | **Not gig-gated.** Augments from **Cybernetics** (**Make**) are **body-integrated** and **semi-permanent**: they remain **in play** when you change **main gig**, **sub-gig**, or combat loadout (e.g. an **ocular** implant does not come off at hub swap). **Crafting** stays **skill**/recipe/rep—never gig level. Removal, replacement, or tier-up may be **costly** and **fiction-heavy** (clinic, downtime)—**open**—but is **not** the same rhythm as re-banking a rifle. Contrast **Armtech** suits/plates and other **combat gear**, which stay **gig-restricted** above. | +| **Cybernetics / implants** | **Not gig-gated.** Augments from **Cybernetics** (**Make**) are **body-integrated** and **semi-permanent**: they remain **in play** when you change **main gig**, **sub-gig**, or combat loadout (e.g. an **ocular** implant does not come off at hub swap). **Crafting** stays **skill**/recipe/rep—never gig level. Removal, replacement, or tier-up may be **costly** and **fiction-heavy** (clinic, downtime)—**open**—but is **not** the same rhythm as re-banking a rifle. **Armtech** and **Cybernetics** **do not overlap**: **Armtech** is **easily swapped** worn armor and lives under **Combat gear** (**gig-restricted**); **Cybernetics** is **not** that bucket. | | **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. gunsmith), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | | **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Passive** potency can scale with **gig** match: e.g. a **medic**-tagged bonus applies if **main *or* sub-gig** matches (see [gigs.md](gigs.md)). Others use a **baseline**. **Active** abilities from consumables (if any) follow their own rules—**open**. Other items may have **no** gig hook—data-driven per item. | | **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | @@ -190,7 +190,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod ## Player-facing readability - **Combat:** UI shows **main gig**, **sub-gig**, levels/tracks, combat abilities, and **combat gear** the main gig can use (mismatched gear disabled or greyed). Consumable tooltips for **passive** amps can show **baseline vs. boosted** when **main or sub** matches the item’s gig hook. -- **Cybernetics:** **Implants** read as **character** chrome—always relevant, **not** hidden or disabled by gig mismatch; separate from the **combat loadout** strip ([Seams](#seams-gigs-skills) **Cybernetics / implants**). +- **Cybernetics vs Armtech:** **Armtech** shows on the **combat loadout** strip (swap-friendly, gig-matched armor). **Cybernetics** shows as **character** chrome—always relevant, **not** gig-disabled—**separate** UI lane ([Seams](#seams-gigs-skills) **Cybernetics / implants**). - **Non-combat / crafting:** **skill** list, **category** filters, XP with **source** hints where helpful; **mastery** branches when E2.M3-style systems exist. Crafting combat gear uses **skill**/recipe gates only—not gigs (optional hint if you can’t equip the product on your current gig). - **Story:** journal or quest UI can separate **character / faction** threads from **gig** threads so players see which arc belongs to which gig. - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. @@ -202,6 +202,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Vocabulary | **Gig** = combat role; **skill** = non-combat only | Agreed | | Combat gear | **Gig-restricted** equip/activation for **swap-friendly** loadout; non-combat tools **skill**-gated | Agreed | | Cybernetics / implants | **Semi-permanent** augments from **Cybernetics** **Make**—**character-wide**, **not gig-gated**; persist across gig swap | Agreed | +| **Armtech** vs **Cybernetics** | **Armtech** = **swappable** worn armor (**combat gear**, gig-restricted); **Cybernetics** = **body-integrated** implants—**no** overlap | Agreed | | Crafting combat gear | **Skill**/recipe/rep (etc.) only—**not** gig or gig level; craft-for-others OK | Agreed | | Consumables | Baseline for all; **passive gig amp** from **main or sub** ([gigs.md](gigs.md)) | Agreed | | Rep / story | Character-wide **rep**; **gig**-scoped **storylines** and **main quests** (per-gig progress on one avatar) | Agreed | From cc71b79e7809084f3d544b12954627cd755cb09f Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:27:39 -0400 Subject: [PATCH 60/91] chore: cybernetic replacement cost; old unit likely becomes scrap --- docs/game-design/skills.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index b3f3611..d5ad252 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -96,7 +96,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | **Armtech** | **Worn / carried** armor: plates, suits, hardshell, rigs—**swap-friendly** at hub or loadout like other **combat gear**; **gig-restricted** when equipped for fights ([Seams](#seams-gigs-skills)). **Does not** cover **body-integrated** implants (**Cybernetics**)—**no** fantasy overlap — **agreed** | | **Synth-chem (product)** | Finish stims, chems, consumables from **Synth-chem prep** (and related **Process**) outputs. | — | | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | -| **Cybernetics** | **Body-integrated** implants and augmentation: neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installs from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). **Semi-permanent** (e.g. **ocular** suite)—**not** the **swap-friendly** **Armtech** lane. Stays **active** across **gig** changes. | **Not gig-gated** — **agreed** ([Seams](#seams-gigs-skills)); **no** overlap with **Armtech** — **agreed**; strip/replace cost, clinic fiction — **open** | +| **Cybernetics** | **Body-integrated** implants and augmentation: neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installs from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). **Semi-permanent** (e.g. **ocular** suite)—**not** the **swap-friendly** **Armtech** lane. Stays **active** across **gig** changes. | **Not gig-gated** — **agreed** ([Seams](#seams-gigs-skills)); **no** overlap with **Armtech** — **agreed**; **replace** has **cost**—removed unit **likely** becomes **scrap** (salvage / recovery loop) — **agreed** direction; fees, clinic fiction, exact yields — **open** | | **Rigging (gear)** | Drones, harnesses, tool mods—**non-combat** rigging. | Combat deployables **gig**-gated — **open** | | **Food synth** | Ration fab, street kitchens. | Skill at all? **open** | @@ -181,7 +181,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Topic | Direction | |--------|-----------| | **Combat gear** | **Gig-restricted.** Weapons, armor, and other **swap-friendly** combat-loadout pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. **Does not** apply to **semi-permanent** **Cybernetics** augments—see **Cybernetics / implants** row. | -| **Cybernetics / implants** | **Not gig-gated.** Augments from **Cybernetics** (**Make**) are **body-integrated** and **semi-permanent**: they remain **in play** when you change **main gig**, **sub-gig**, or combat loadout (e.g. an **ocular** implant does not come off at hub swap). **Crafting** stays **skill**/recipe/rep—never gig level. Removal, replacement, or tier-up may be **costly** and **fiction-heavy** (clinic, downtime)—**open**—but is **not** the same rhythm as re-banking a rifle. **Armtech** and **Cybernetics** **do not overlap**: **Armtech** is **easily swapped** worn armor and lives under **Combat gear** (**gig-restricted**); **Cybernetics** is **not** that bucket. | +| **Cybernetics / implants** | **Not gig-gated.** Augments from **Cybernetics** (**Make**) are **body-integrated** and **semi-permanent**: they remain **in play** when you change **main gig**, **sub-gig**, or combat loadout (e.g. an **ocular** implant does not come off at hub swap). **Crafting** stays **skill**/recipe/rep—never gig level. **Changing** an installed augment has **cost** (credits, clinic, downtime—**open**); the **replaced** piece **likely** comes out as **scrap** or salvage-grade material (feeds **Gather**/**Salvage**/**Refine** loops) rather than a clean reusable item—**agreed** direction, exact tables **open**. **Not** the same rhythm as re-banking a rifle. **Armtech** and **Cybernetics** **do not overlap**: **Armtech** is **easily swapped** worn armor and lives under **Combat gear** (**gig-restricted**); **Cybernetics** is **not** that bucket. | | **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. gunsmith), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | | **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Passive** potency can scale with **gig** match: e.g. a **medic**-tagged bonus applies if **main *or* sub-gig** matches (see [gigs.md](gigs.md)). Others use a **baseline**. **Active** abilities from consumables (if any) follow their own rules—**open**. Other items may have **no** gig hook—data-driven per item. | | **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | @@ -201,7 +201,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod |-------|-----------|--------| | Vocabulary | **Gig** = combat role; **skill** = non-combat only | Agreed | | Combat gear | **Gig-restricted** equip/activation for **swap-friendly** loadout; non-combat tools **skill**-gated | Agreed | -| Cybernetics / implants | **Semi-permanent** augments from **Cybernetics** **Make**—**character-wide**, **not gig-gated**; persist across gig swap | Agreed | +| Cybernetics / implants | **Semi-permanent** augments—**character-wide**, **not gig-gated**; **replacement** costs and **likely** turns old unit into **scrap** / salvage feedstock | Agreed | | **Armtech** vs **Cybernetics** | **Armtech** = **swappable** worn armor (**combat gear**, gig-restricted); **Cybernetics** = **body-integrated** implants—**no** overlap | Agreed | | Crafting combat gear | **Skill**/recipe/rep (etc.) only—**not** gig or gig level; craft-for-others OK | Agreed | | Consumables | Baseline for all; **passive gig amp** from **main or sub** ([gigs.md](gigs.md)) | Agreed | From 38021311aaf6be8069ec0fe5343fae50e6cf3cf9 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:28:18 -0400 Subject: [PATCH 61/91] chore: keep Food synth Make skill; remove defer note --- docs/game-design/skills.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index d5ad252..3463235 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -31,7 +31,7 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: |--------|-------------------------| | **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **consumer salvage & biology** (**Salvage**, **Harvest**), and **urban infrastructure materials** (**Quarry**) vs geological **Extraction** skill | | **Processing** | **Refine** (ores, glass, steel, scrap → material grades); **Fab tech** (physical PCBs, chips, solenoids); **Data scrub** (abstract data—datasets, firmware, logical unlock); **Synth-chem prep** (bio/chem); other conversion | -| **Fabrication** | Gunsmith; **Armtech** (swappable armor/suits); **Cybernetics** (body-integrated implants—**not** Armtech); synth-chem products, medtech fab, cooking if we track it | +| **Fabrication** | Gunsmith; **Armtech**; **Cybernetics**; synth-chem products, medtech fab, **Food synth** | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | | **Support craft** | Medtech fabrication, field repair kits; **implant install / tune** fiction may split **Cybernetics** **Make** vs bench maintenance (**open**) | @@ -49,7 +49,7 @@ New skills land here as **design + data** demand; a skill can sit in **multiple |----------|-------------| | **Gather** | Nodes, yields, field extraction | | **Process** | **Refine**; **Fab tech** (physical fab); **Data scrub** (data/firmware); **Synth-chem prep** (bio/chem); batch; intermediate goods | -| **Make** | Finished goods, recipes, bench work—**Gunsmith**, **Armtech**, **Cybernetics**, **Medtech fab**, etc. | +| **Make** | Finished goods, recipes, bench work—**Gunsmith**, **Armtech**, **Cybernetics**, **Medtech fab**, **Food synth**, etc. | | **Tech** | Intrusion, netsec, counter-intrusion, electronics, signal—**not** combat gig kit | Optional **secondary category** for UI sorting only—**primary** category in data drives balance defaults. @@ -98,7 +98,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | | **Cybernetics** | **Body-integrated** implants and augmentation: neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installs from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). **Semi-permanent** (e.g. **ocular** suite)—**not** the **swap-friendly** **Armtech** lane. Stays **active** across **gig** changes. | **Not gig-gated** — **agreed** ([Seams](#seams-gigs-skills)); **no** overlap with **Armtech** — **agreed**; **replace** has **cost**—removed unit **likely** becomes **scrap** (salvage / recovery loop) — **agreed** direction; fees, clinic fiction, exact yields — **open** | | **Rigging (gear)** | Drones, harnesses, tool mods—**non-combat** rigging. | Combat deployables **gig**-gated — **open** | -| **Food synth** | Ration fab, street kitchens. | Skill at all? **open** | +| **Food synth** | Ration fab, street kitchens, synth-food **Make** from **Harvest** / **Bioprocess** / **Synth-chem** inputs where recipes need them. | **Kept** in roster — **agreed** | #### Tech — systems, hacking, and cyber security (non-gig) @@ -118,7 +118,6 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** - **Production chain shape:** **Agreed**—(1) **Overlapping** paths: shared **inputs**, divergent **outputs** across **Process** / **Make**; (2) **Multi-stage** depth: **Gather → Process → Process → Make** (or longer), with **any** **Process** skill able to participate. Recipe UX and balance **open** (roster intro + **Process** subsection in [Skill roster](#skill-roster-draft-ideas-by-category)). - **Agreed Process boundaries:** **Salvage** vs **Quarry**; **Refine** vs **Synth-chem prep** (physical materials vs bio/chem); **Refine** vs **Fab tech** (base material grades vs physical electromechanical fab); **Fab tech** vs **Data scrub** (physical components vs **data/firmware** on salvage). Further merge/split ideas — **open** as the roster evolves. -- **Cut / defer:** **Food synth** if not a loop. - **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. ### XP, levels, curves @@ -221,6 +220,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | **Fab tech** vs **Data scrub** | **Fab tech** = **physical** fab; **Data scrub** = **abstract** data—datasets, **firmware wipes**, logical reuse of salvaged parts—not the same skill fantasy | Agreed | | Low-gig specialist | **Viable** to focus progression on **skills** (gather/craft/tech) with **low gig levels**; economy loops must not **hard-gate** on high gig rank | Agreed | | Skill roster size | **Opening** v0 list is strong; **add skills** pre-launch as needed—**breadth** is a feature | Agreed | +| **Food synth** | **Make** skill **kept**—rations, street kitchens, food economy loops | Agreed | | Gig XP award | **Main gig only**; **sub-gig** earns no XP—see [gigs.md](gigs.md) | Agreed | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | From a3140e509e6ee6c8f22bd4aae44230c50af079d3 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:29:15 -0400 Subject: [PATCH 62/91] chore: add Edgesmith Make skill for non-gun weapons --- docs/game-design/skills.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 3463235..053ec9b 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -31,7 +31,7 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: |--------|-------------------------| | **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **consumer salvage & biology** (**Salvage**, **Harvest**), and **urban infrastructure materials** (**Quarry**) vs geological **Extraction** skill | | **Processing** | **Refine** (ores, glass, steel, scrap → material grades); **Fab tech** (physical PCBs, chips, solenoids); **Data scrub** (abstract data—datasets, firmware, logical unlock); **Synth-chem prep** (bio/chem); other conversion | -| **Fabrication** | Gunsmith; **Armtech**; **Cybernetics**; synth-chem products, medtech fab, **Food synth** | +| **Fabrication** | **Gunsmith**; **Edgesmith** (non-gun weapons); **Armtech**; **Cybernetics**; synth-chem products, medtech fab, **Food synth** | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | | **Support craft** | Medtech fabrication, field repair kits; **implant install / tune** fiction may split **Cybernetics** **Make** vs bench maintenance (**open**) | @@ -49,14 +49,14 @@ New skills land here as **design + data** demand; a skill can sit in **multiple |----------|-------------| | **Gather** | Nodes, yields, field extraction | | **Process** | **Refine**; **Fab tech** (physical fab); **Data scrub** (data/firmware); **Synth-chem prep** (bio/chem); batch; intermediate goods | -| **Make** | Finished goods, recipes, bench work—**Gunsmith**, **Armtech**, **Cybernetics**, **Medtech fab**, **Food synth**, etc. | +| **Make** | Finished goods, recipes, bench work—**Gunsmith**, **Edgesmith**, **Armtech**, **Cybernetics**, **Medtech fab**, **Food synth**, etc. | | **Tech** | Intrusion, netsec, counter-intrusion, electronics, signal—**not** combat gig kit | Optional **secondary category** for UI sorting only—**primary** category in data drives balance defaults. ### Skill roster (draft ideas by category) -**v0 — for examination, not a commit list.** Each row is a **candidate skill** (or tight cluster we might merge). The tables below are a **solid opening roster**—on the order of **~18–24** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. +**v0 — for examination, not a commit list.** Each row is a **candidate skill** (or tight cluster we might merge). The tables below are a **solid opening roster**—on the order of **~19–25** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** checks (especially **Tech** vs combat netrunning). @@ -93,6 +93,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | Skill | What it covers | Open / merge | |-------|----------------|--------------| | **Gunsmith** | Barrels, receivers, ballistics fab. | [Seams](#seams-gigs-skills): craft without gig to *use* | +| **Edgesmith** | **Non-gun** weaponry: blades, clubs and impact tools, stun batons, monofilament / vibro **melee**, **thrown** weapons that are **not** firearms—**not** **Gunsmith** (ballistics, receivers, barrels). | Same [Seams](#seams-gigs-skills) as **Gunsmith**: **craft** with skill; **combat equip** **gig-restricted** | | **Armtech** | **Worn / carried** armor: plates, suits, hardshell, rigs—**swap-friendly** at hub or loadout like other **combat gear**; **gig-restricted** when equipped for fights ([Seams](#seams-gigs-skills)). **Does not** cover **body-integrated** implants (**Cybernetics**)—**no** fantasy overlap — **agreed** | | **Synth-chem (product)** | Finish stims, chems, consumables from **Synth-chem prep** (and related **Process**) outputs. | — | | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | @@ -181,7 +182,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod |--------|-----------| | **Combat gear** | **Gig-restricted.** Weapons, armor, and other **swap-friendly** combat-loadout pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. **Does not** apply to **semi-permanent** **Cybernetics** augments—see **Cybernetics / implants** row. | | **Cybernetics / implants** | **Not gig-gated.** Augments from **Cybernetics** (**Make**) are **body-integrated** and **semi-permanent**: they remain **in play** when you change **main gig**, **sub-gig**, or combat loadout (e.g. an **ocular** implant does not come off at hub swap). **Crafting** stays **skill**/recipe/rep—never gig level. **Changing** an installed augment has **cost** (credits, clinic, downtime—**open**); the **replaced** piece **likely** comes out as **scrap** or salvage-grade material (feeds **Gather**/**Salvage**/**Refine** loops) rather than a clean reusable item—**agreed** direction, exact tables **open**. **Not** the same rhythm as re-banking a rifle. **Armtech** and **Cybernetics** **do not overlap**: **Armtech** is **easily swapped** worn armor and lives under **Combat gear** (**gig-restricted**); **Cybernetics** is **not** that bucket. | -| **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. gunsmith), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | +| **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. **Gunsmith**, **Edgesmith**), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | | **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Passive** potency can scale with **gig** match: e.g. a **medic**-tagged bonus applies if **main *or* sub-gig** matches (see [gigs.md](gigs.md)). Others use a **baseline**. **Active** abilities from consumables (if any) follow their own rules—**open**. Other items may have **no** gig hook—data-driven per item. | | **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | | **Alts / multi-gig mastery** | One avatar still reduces **alt** pressure for economy and story. **Maining every gig** is **not** a design problem for now: **gig leveling is intentionally slow**, so fully progressing (or “maxing”) every gig is a **long-term time investment**, not something handed out quickly. Players who put in that time **may** legitimately be strong in every gig on one character. **Revisit** only if pacing, live balance, or PvP show harm. | @@ -221,6 +222,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Low-gig specialist | **Viable** to focus progression on **skills** (gather/craft/tech) with **low gig levels**; economy loops must not **hard-gate** on high gig rank | Agreed | | Skill roster size | **Opening** v0 list is strong; **add skills** pre-launch as needed—**breadth** is a feature | Agreed | | **Food synth** | **Make** skill **kept**—rations, street kitchens, food economy loops | Agreed | +| **Gunsmith** vs **Edgesmith** | **Gunsmith** = firearms / ballistics; **Edgesmith** = **non-gun** melee, thrown (non-ballistic), stun batons, monowire-style—same craft/equip **Seams** as other **combat gear** | Agreed | | Gig XP award | **Main gig only**; **sub-gig** earns no XP—see [gigs.md](gigs.md) | Agreed | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | From 9f7a1e0af874df0ec7be5315dec940a50248c8ed Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:34:09 -0400 Subject: [PATCH 63/91] chore: split armor into Hardshell and Softshell; powered armor on Rigging --- docs/game-design/skills.md | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 053ec9b..b53f9a2 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -31,7 +31,7 @@ Domains are **content-shaped**, not a locked taxonomy. Early vision includes: |--------|-------------------------| | **Extraction** | Pulling value from the world: **earth/subsurface** (mining, drilling), **consumer salvage & biology** (**Salvage**, **Harvest**), and **urban infrastructure materials** (**Quarry**) vs geological **Extraction** skill | | **Processing** | **Refine** (ores, glass, steel, scrap → material grades); **Fab tech** (physical PCBs, chips, solenoids); **Data scrub** (abstract data—datasets, firmware, logical unlock); **Synth-chem prep** (bio/chem); other conversion | -| **Fabrication** | **Gunsmith**; **Edgesmith** (non-gun weapons); **Armtech**; **Cybernetics**; synth-chem products, medtech fab, **Food synth** | +| **Fabrication** | **Gunsmith**; **Edgesmith**; **Hardshell** / **Softshell** (rigid vs flexible armor); **Rigging** (powered/systems shells); **Cybernetics**; synth-chem, medtech fab, **Food synth** | | **Tech / intrusion** | Hacking, netsec, counter-intrusion, bypass, diagnostics—**combat-facing** net actions stay **gig** | | **Support craft** | Medtech fabrication, field repair kits; **implant install / tune** fiction may split **Cybernetics** **Make** vs bench maintenance (**open**) | @@ -49,14 +49,14 @@ New skills land here as **design + data** demand; a skill can sit in **multiple |----------|-------------| | **Gather** | Nodes, yields, field extraction | | **Process** | **Refine**; **Fab tech** (physical fab); **Data scrub** (data/firmware); **Synth-chem prep** (bio/chem); batch; intermediate goods | -| **Make** | Finished goods, recipes, bench work—**Gunsmith**, **Edgesmith**, **Armtech**, **Cybernetics**, **Medtech fab**, **Food synth**, etc. | +| **Make** | Finished goods, recipes, bench work—**Gunsmith**, **Edgesmith**, **Hardshell**, **Softshell**, **Rigging (gear)**, **Cybernetics**, **Medtech fab**, **Food synth**, etc. | | **Tech** | Intrusion, netsec, counter-intrusion, electronics, signal—**not** combat gig kit | Optional **secondary category** for UI sorting only—**primary** category in data drives balance defaults. ### Skill roster (draft ideas by category) -**v0 — for examination, not a commit list.** Each row is a **candidate skill** (or tight cluster we might merge). The tables below are a **solid opening roster**—on the order of **~19–25** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. +**v0 — for examination, not a commit list.** Each row is a **candidate skill** (or tight cluster we might merge). The tables below are a **solid opening roster**—on the order of **~20–26** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** checks (especially **Tech** vs combat netrunning). @@ -85,20 +85,23 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | **Fab tech** | **Electronics and electromechanical fab:** **chips**, **PCBs**, **solenoids**, micro-actuators, substrate and assembly steps—**built components**, not **Refine**’s job of turning raw ore/glass/steel into graded **bulk** material. Uses **Refine** outputs (and other inputs) as **feed**, but the skill fantasy is **manufacture**, not smelt/purify. | Separate from **Refine** & **Data scrub** — **agreed** (physical vs **data** layer) | | **Synth-chem prep** | **Bio- and chemistry** streams: precursors, reagents, stable compounds, polymer feeds—inputs and outputs are **chem / organic / lab** oriented; feeds **Synth-chem (product)** and related **Make**. **Not** primary home for ore/glass/metal refinement (**Refine**). | Separate from **Refine** — **agreed** | | **Bioprocess** | Ferment, culture, grow feedstock for medtech or consumables. | — | -| **Composite work** | Laminate layers, weave fibers, prep armtech “blanks” before final assembly. | — | +| **Composite work** | Laminate layers, weave fibers, prep **Hardshell** / **Softshell** “blanks” before final **Make** assembly. | — | | **Data scrub** | **Abstract data** work—not **Fab tech**’s physical manufacture. Clean, normalize, decrypt, or repackage **datasets** as craft inputs; **firmware wipes** and logical unlocks that make **salvaged** parts **usable** again without milling a new board. **Information and software** layer on devices and loot, not **PCBs/chips** fab. | Separate from **Fab tech** — **agreed**; **Tech** skills (e.g. **Intrusion**) for **live** hacks—**open** boundary | #### Make — recipes, benches, finished goods +**Swap-friendly armor** splits **rigid** vs **flexible** (**Hardshell** / **Softshell**). **Powered** / **systems** armor—exo frames, actuator-linked shells, mechatronic tactical rigs—is **made** with **Rigging (gear)** (not a third plate/weave skill); **equip** still follows **Combat gear** (**gig-restricted**). **Open:** hybrid pieces (e.g. powered softshell) pick **primary** skill per recipe. + | Skill | What it covers | Open / merge | |-------|----------------|--------------| | **Gunsmith** | Barrels, receivers, ballistics fab. | [Seams](#seams-gigs-skills): craft without gig to *use* | | **Edgesmith** | **Non-gun** weaponry: blades, clubs and impact tools, stun batons, monofilament / vibro **melee**, **thrown** weapons that are **not** firearms—**not** **Gunsmith** (ballistics, receivers, barrels). | Same [Seams](#seams-gigs-skills) as **Gunsmith**: **craft** with skill; **combat equip** **gig-restricted** | -| **Armtech** | **Worn / carried** armor: plates, suits, hardshell, rigs—**swap-friendly** at hub or loadout like other **combat gear**; **gig-restricted** when equipped for fights ([Seams](#seams-gigs-skills)). **Does not** cover **body-integrated** implants (**Cybernetics**)—**no** fantasy overlap — **agreed** | +| **Hardshell** | **Rigid** swap-friendly armor: plates, inserts, helmets, **non-powered** hardshell, ceramic or composite face—**not** **Softshell** flexible suits; **not** **powered** frames (**Rigging (gear)**). **Gig-restricted** when equipped ([Seams](#seams-gigs-skills)). | **No** overlap with **Cybernetics** — **agreed** | +| **Softshell** | **Flexible** swap-friendly armor: kinetic-weave suits, underlayers, padded rigs, textile-forward shells without the **Rigging** mechatronics lane—**not** rigid **Hardshell**; **not** powered exo (**Rigging (gear)**). **Gig-restricted** when equipped ([Seams](#seams-gigs-skills)). | **No** overlap with **Cybernetics** — **agreed**; vs **Hardshell** on hybrid garments — **open** | | **Synth-chem (product)** | Finish stims, chems, consumables from **Synth-chem prep** (and related **Process**) outputs. | — | | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | -| **Cybernetics** | **Body-integrated** implants and augmentation: neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installs from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). **Semi-permanent** (e.g. **ocular** suite)—**not** the **swap-friendly** **Armtech** lane. Stays **active** across **gig** changes. | **Not gig-gated** — **agreed** ([Seams](#seams-gigs-skills)); **no** overlap with **Armtech** — **agreed**; **replace** has **cost**—removed unit **likely** becomes **scrap** (salvage / recovery loop) — **agreed** direction; fees, clinic fiction, exact yields — **open** | -| **Rigging (gear)** | Drones, harnesses, tool mods—**non-combat** rigging. | Combat deployables **gig**-gated — **open** | +| **Cybernetics** | **Body-integrated** implants and augmentation: neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installs from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). **Semi-permanent** (e.g. **ocular** suite)—**not** swap-friendly **Hardshell** / **Softshell** / **Rigging** armor. Stays **active** across **gig** changes. | **Not gig-gated** — **agreed** ([Seams](#seams-gigs-skills)); **no** overlap with external armor skills — **agreed**; **replace** has **cost**—removed unit **likely** becomes **scrap** (salvage / recovery loop) — **agreed** direction; fees, clinic fiction, exact yields — **open** | +| **Rigging (gear)** | Drones, harnesses, tool mods, and **powered / systems** armor **Manufacture**: exo-style frames, actuator-linked hardshell, tactical mechatronic rigs—**Fab tech**-heavy lane for **wearable** systems that are **not** plain **Hardshell** / **Softshell** fab. | **Craft** with skill; **combat equip** **gig-restricted** when the product is **combat gear**; deployables and non-combat drones — **open**; vs **Hardshell** on hybrids — **open** | | **Food synth** | Ration fab, street kitchens, synth-food **Make** from **Harvest** / **Bioprocess** / **Synth-chem** inputs where recipes need them. | **Kept** in roster — **agreed** | #### Tech — systems, hacking, and cyber security (non-gig) @@ -180,9 +183,9 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Topic | Direction | |--------|-----------| -| **Combat gear** | **Gig-restricted.** Weapons, armor, and other **swap-friendly** combat-loadout pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. **Does not** apply to **semi-permanent** **Cybernetics** augments—see **Cybernetics / implants** row. | -| **Cybernetics / implants** | **Not gig-gated.** Augments from **Cybernetics** (**Make**) are **body-integrated** and **semi-permanent**: they remain **in play** when you change **main gig**, **sub-gig**, or combat loadout (e.g. an **ocular** implant does not come off at hub swap). **Crafting** stays **skill**/recipe/rep—never gig level. **Changing** an installed augment has **cost** (credits, clinic, downtime—**open**); the **replaced** piece **likely** comes out as **scrap** or salvage-grade material (feeds **Gather**/**Salvage**/**Refine** loops) rather than a clean reusable item—**agreed** direction, exact tables **open**. **Not** the same rhythm as re-banking a rifle. **Armtech** and **Cybernetics** **do not overlap**: **Armtech** is **easily swapped** worn armor and lives under **Combat gear** (**gig-restricted**); **Cybernetics** is **not** that bucket. | -| **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. **Gunsmith**, **Edgesmith**), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | +| **Combat gear** | **Gig-restricted.** Weapons, armor (including **Hardshell**, **Softshell**, and **Rigging**-built powered frames when worn as loadout), and other **swap-friendly** combat pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. **Does not** apply to **semi-permanent** **Cybernetics** augments—see **Cybernetics / implants** row. | +| **Cybernetics / implants** | **Not gig-gated.** Augments from **Cybernetics** (**Make**) are **body-integrated** and **semi-permanent**: they remain **in play** when you change **main gig**, **sub-gig**, or combat loadout (e.g. an **ocular** implant does not come off at hub swap). **Crafting** stays **skill**/recipe/rep—never gig level. **Changing** an installed augment has **cost** (credits, clinic, downtime—**open**); the **replaced** piece **likely** comes out as **scrap** or salvage-grade material (feeds **Gather**/**Salvage**/**Refine** loops) rather than a clean reusable item—**agreed** direction, exact tables **open**. **Not** the same rhythm as re-banking a rifle. **External** armor (**Hardshell**, **Softshell**, **Rigging**-built powered shells) and **Cybernetics** **do not overlap**: external armor is **swap-friendly** **Combat gear** (**gig-restricted**); **Cybernetics** is **not** that bucket. | +| **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. **Gunsmith**, **Edgesmith**, **Hardshell**, **Softshell**, **Rigging (gear)** for powered frames), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | | **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Passive** potency can scale with **gig** match: e.g. a **medic**-tagged bonus applies if **main *or* sub-gig** matches (see [gigs.md](gigs.md)). Others use a **baseline**. **Active** abilities from consumables (if any) follow their own rules—**open**. Other items may have **no** gig hook—data-driven per item. | | **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | | **Alts / multi-gig mastery** | One avatar still reduces **alt** pressure for economy and story. **Maining every gig** is **not** a design problem for now: **gig leveling is intentionally slow**, so fully progressing (or “maxing”) every gig is a **long-term time investment**, not something handed out quickly. Players who put in that time **may** legitimately be strong in every gig on one character. **Revisit** only if pacing, live balance, or PvP show harm. | @@ -190,7 +193,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod ## Player-facing readability - **Combat:** UI shows **main gig**, **sub-gig**, levels/tracks, combat abilities, and **combat gear** the main gig can use (mismatched gear disabled or greyed). Consumable tooltips for **passive** amps can show **baseline vs. boosted** when **main or sub** matches the item’s gig hook. -- **Cybernetics vs Armtech:** **Armtech** shows on the **combat loadout** strip (swap-friendly, gig-matched armor). **Cybernetics** shows as **character** chrome—always relevant, **not** gig-disabled—**separate** UI lane ([Seams](#seams-gigs-skills) **Cybernetics / implants**). +- **Cybernetics vs external armor:** **Hardshell**, **Softshell**, and **Rigging**-built powered pieces show on the **combat loadout** strip when equipped (swap-friendly, **gig-matched**). **Cybernetics** shows as **character** chrome—always relevant, **not** gig-disabled—**separate** UI lane ([Seams](#seams-gigs-skills) **Cybernetics / implants**). - **Non-combat / crafting:** **skill** list, **category** filters, XP with **source** hints where helpful; **mastery** branches when E2.M3-style systems exist. Crafting combat gear uses **skill**/recipe gates only—not gigs (optional hint if you can’t equip the product on your current gig). - **Story:** journal or quest UI can separate **character / faction** threads from **gig** threads so players see which arc belongs to which gig. - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. @@ -202,7 +205,8 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Vocabulary | **Gig** = combat role; **skill** = non-combat only | Agreed | | Combat gear | **Gig-restricted** equip/activation for **swap-friendly** loadout; non-combat tools **skill**-gated | Agreed | | Cybernetics / implants | **Semi-permanent** augments—**character-wide**, **not gig-gated**; **replacement** costs and **likely** turns old unit into **scrap** / salvage feedstock | Agreed | -| **Armtech** vs **Cybernetics** | **Armtech** = **swappable** worn armor (**combat gear**, gig-restricted); **Cybernetics** = **body-integrated** implants—**no** overlap | Agreed | +| **Hardshell** / **Softshell** / **Rigging** vs **Cybernetics** | **External** armor (**Hardshell**, **Softshell**, **Rigging** powered shells) = **swappable** **combat gear**, gig-restricted; **Cybernetics** = **body-integrated** implants—**no** overlap | Agreed | +| **Armor split + powered** | **Hardshell** = rigid; **Softshell** = flexible; **powered / systems** armor **Make** = **Rigging (gear)** | Agreed | | Crafting combat gear | **Skill**/recipe/rep (etc.) only—**not** gig or gig level; craft-for-others OK | Agreed | | Consumables | Baseline for all; **passive gig amp** from **main or sub** ([gigs.md](gigs.md)) | Agreed | | Rep / story | Character-wide **rep**; **gig**-scoped **storylines** and **main quests** (per-gig progress on one avatar) | Agreed | @@ -230,5 +234,5 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod - **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment **deferred**; **PvP** gig rules **open indefinite** (overall PvP scope TBD). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. -- **Items** — **equip:** gig rules for **combat gear**; **cybernetics** character-wide (**not** gig-gated); **craft:** **skills** (and recipe/rep), never gig level. +- **Items** — **equip:** gig rules for **combat gear** (incl. **Rigging**-built powered armor when worn); **cybernetics** character-wide (**not** gig-gated); **craft:** **skills** (**Hardshell**, **Softshell**, **Rigging**, etc.) and recipe/rep, never gig level. - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From 3786bae41ec7522c9d2253453ce9958b250700e3 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:36:39 -0400 Subject: [PATCH 64/91] chore: gig-gate combat deployables and default Make non-consumables in combat --- docs/game-design/skills.md | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index b53f9a2..0ea1675 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -101,9 +101,11 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | **Synth-chem (product)** | Finish stims, chems, consumables from **Synth-chem prep** (and related **Process**) outputs. | — | | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | | **Cybernetics** | **Body-integrated** implants and augmentation: neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installs from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). **Semi-permanent** (e.g. **ocular** suite)—**not** swap-friendly **Hardshell** / **Softshell** / **Rigging** armor. Stays **active** across **gig** changes. | **Not gig-gated** — **agreed** ([Seams](#seams-gigs-skills)); **no** overlap with external armor skills — **agreed**; **replace** has **cost**—removed unit **likely** becomes **scrap** (salvage / recovery loop) — **agreed** direction; fees, clinic fiction, exact yields — **open** | -| **Rigging (gear)** | Drones, harnesses, tool mods, and **powered / systems** armor **Manufacture**: exo-style frames, actuator-linked hardshell, tactical mechatronic rigs—**Fab tech**-heavy lane for **wearable** systems that are **not** plain **Hardshell** / **Softshell** fab. | **Craft** with skill; **combat equip** **gig-restricted** when the product is **combat gear**; deployables and non-combat drones — **open**; vs **Hardshell** on hybrids — **open** | +| **Rigging (gear)** | Drones, harnesses, tool mods, and **powered / systems** armor **Manufacture**: exo-style frames, actuator-linked hardshell, tactical mechatronic rigs—**Fab tech**-heavy lane for **wearable** systems that are **not** plain **Hardshell** / **Softshell** fab. | **Craft** with skill—**no** gig; **combat deploy** / **combat activation** of **Rigging** outputs (e.g. combat drones) **gig-restricted** — **agreed** ([Seams](#seams-gigs-skills)); non-combat drone/tool use — **open**; vs **Hardshell** on hybrids — **open** | | **Food synth** | Ration fab, street kitchens, synth-food **Make** from **Harvest** / **Bioprocess** / **Synth-chem** inputs where recipes need them. | **Kept** in roster — **agreed** | +**Make → gigs (combat):** **Vast majority** of **non-consumable** **Make** products are **gig-gated** when brought into **combat** (**equip**, **wear**, **deploy**). **Crafting** stays **skill**/recipe-only—e.g. anyone with **Rigging** can **build** a drone; **deploying** it in a fight needs a **gig** whose kit supports that **deploy** (**data-defined**). See [Seams](#seams-gigs-skills) **Combat gear** and **Make → combat (non-consumables)**. + #### Tech — systems, hacking, and cyber security (non-gig) **Skill** tech covers **prep**, **world interaction**, and **instance / downtime** work. **Combat** net attacks, debuffs, and **today’s gig kit** **ICE-breaking in a fight** stay **gig**-gated unless we deliberately duplicate (**open**). @@ -175,7 +177,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Failure XP defaults per activity type | Open | | Mastery respec rules | Open | | Cross-skill synergy math | Open | -| Skill-based **combat-adjacent** actions (e.g. deployable) vs **gig** ability | Open | +| Combat **deploy** / **equip** for **Make** outputs vs **gig** | **Agreed**—see [Seams](#seams-gigs-skills) **Combat gear** and **Make → combat (non-consumables)** | @@ -183,18 +185,19 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Topic | Direction | |--------|-----------| -| **Combat gear** | **Gig-restricted.** Weapons, armor (including **Hardshell**, **Softshell**, and **Rigging**-built powered frames when worn as loadout), and other **swap-friendly** combat pieces declare which **gig(s)** may equip or fully activate them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. **Does not** apply to **semi-permanent** **Cybernetics** augments—see **Cybernetics / implants** row. | +| **Combat gear** | **Gig-restricted.** Weapons, armor (including **Hardshell**, **Softshell**, and **Rigging**-built powered frames when **worn** as loadout), **combat deployables** **Manufactured** by **Rigging** (e.g. drones **deployed** in a fight), and other **swap-friendly** or **field-deployed** combat pieces declare which **gig(s)** may **equip**, **wear**, **fully activate**, or **combat-deploy** them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. **Does not** apply to **semi-permanent** **Cybernetics** augments—see **Cybernetics / implants** row. | | **Cybernetics / implants** | **Not gig-gated.** Augments from **Cybernetics** (**Make**) are **body-integrated** and **semi-permanent**: they remain **in play** when you change **main gig**, **sub-gig**, or combat loadout (e.g. an **ocular** implant does not come off at hub swap). **Crafting** stays **skill**/recipe/rep—never gig level. **Changing** an installed augment has **cost** (credits, clinic, downtime—**open**); the **replaced** piece **likely** comes out as **scrap** or salvage-grade material (feeds **Gather**/**Salvage**/**Refine** loops) rather than a clean reusable item—**agreed** direction, exact tables **open**. **Not** the same rhythm as re-banking a rifle. **External** armor (**Hardshell**, **Softshell**, **Rigging**-built powered shells) and **Cybernetics** **do not overlap**: external armor is **swap-friendly** **Combat gear** (**gig-restricted**); **Cybernetics** is **not** that bucket. | -| **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. **Gunsmith**, **Edgesmith**, **Hardshell**, **Softshell**, **Rigging (gear)** for powered frames), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip/activation** stays **gig-restricted** as above. | -| **Consumables** | **Carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Passive** potency can scale with **gig** match: e.g. a **medic**-tagged bonus applies if **main *or* sub-gig** matches (see [gigs.md](gigs.md)). Others use a **baseline**. **Active** abilities from consumables (if any) follow their own rules—**open**. Other items may have **no** gig hook—data-driven per item. | +| **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. **Gunsmith**, **Edgesmith**, **Hardshell**, **Softshell**, **Rigging (gear)** for powered frames and **deployables**), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip or combat-deploy** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip / wear / combat deploy / activation** stays **gig-restricted** as **Combat gear** above. | +| **Make → combat (non-consumables)** | **Agreed default:** **Most** **non-consumable** **Make** outputs are **gig-gated** when used in **combat**—weapons, armor, **Rigging** **combat deployables**, and similar—via **equip**, **wear**, or **combat deployment**. **Craft** is **always** **skill**/recipe/rep (plus world gates); **gig** gates **field use**, not the bench. **Exceptions:** **Cybernetics** (**not** gig-gated); **Consumables** (see row below—**carry/use** baseline not gig-gated); **purely non-combat** **Make** (e.g. **Food synth**, civilian tools)—**data-tagged** per item (**open** catalog). | +| **Consumables** | Unlike most **non-consumable** **Make** products, **carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Passive** potency can scale with **gig** match: e.g. a **medic**-tagged bonus applies if **main *or* sub-gig** matches (see [gigs.md](gigs.md)). Others use a **baseline**. **Active** abilities from consumables (if any) follow their own rules—**open**. Other items may have **no** gig hook—data-driven per item. | | **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | | **Alts / multi-gig mastery** | One avatar still reduces **alt** pressure for economy and story. **Maining every gig** is **not** a design problem for now: **gig leveling is intentionally slow**, so fully progressing (or “maxing”) every gig is a **long-term time investment**, not something handed out quickly. Players who put in that time **may** legitimately be strong in every gig on one character. **Revisit** only if pacing, live balance, or PvP show harm. | ## Player-facing readability -- **Combat:** UI shows **main gig**, **sub-gig**, levels/tracks, combat abilities, and **combat gear** the main gig can use (mismatched gear disabled or greyed). Consumable tooltips for **passive** amps can show **baseline vs. boosted** when **main or sub** matches the item’s gig hook. +- **Combat:** UI shows **main gig**, **sub-gig**, levels/tracks, combat abilities, and **combat gear** the main gig can use (mismatched gear disabled or greyed). **Deployables** (**Rigging**-built, etc.): show whether this gig may **combat-deploy** the item even if you **crafted** it with skills. Consumable tooltips for **passive** amps can show **baseline vs. boosted** when **main or sub** matches the item’s gig hook. - **Cybernetics vs external armor:** **Hardshell**, **Softshell**, and **Rigging**-built powered pieces show on the **combat loadout** strip when equipped (swap-friendly, **gig-matched**). **Cybernetics** shows as **character** chrome—always relevant, **not** gig-disabled—**separate** UI lane ([Seams](#seams-gigs-skills) **Cybernetics / implants**). -- **Non-combat / crafting:** **skill** list, **category** filters, XP with **source** hints where helpful; **mastery** branches when E2.M3-style systems exist. Crafting combat gear uses **skill**/recipe gates only—not gigs (optional hint if you can’t equip the product on your current gig). +- **Non-combat / crafting:** **skill** list, **category** filters, XP with **source** hints where helpful; **mastery** branches when E2.M3-style systems exist. Crafting combat-facing **Make** uses **skill**/recipe gates only—not gigs (optional hint if you can’t **equip** or **combat-deploy** the product on your current gig). - **Story:** journal or quest UI can separate **character / faction** threads from **gig** threads so players see which arc belongs to which gig. - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. @@ -203,7 +206,9 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Topic | Direction | Status | |-------|-----------|--------| | Vocabulary | **Gig** = combat role; **skill** = non-combat only | Agreed | -| Combat gear | **Gig-restricted** equip/activation for **swap-friendly** loadout; non-combat tools **skill**-gated | Agreed | +| Combat gear | **Gig-restricted** **equip** / **wear** / **combat deploy** / **activation**; includes **Rigging** **combat deployables**; non-combat tools **skill**-gated | Agreed | +| **Make** non-consumables + combat | **Default** **gig-gated** in combat; **craft** **skill**-only—**vast majority** of **Make** non-consumables | Agreed | +| **Rigging** deployables | **Anyone** with skill can **craft**; **combat deploy** **gig**-matched (e.g. drone gig kit) | Agreed | | Cybernetics / implants | **Semi-permanent** augments—**character-wide**, **not gig-gated**; **replacement** costs and **likely** turns old unit into **scrap** / salvage feedstock | Agreed | | **Hardshell** / **Softshell** / **Rigging** vs **Cybernetics** | **External** armor (**Hardshell**, **Softshell**, **Rigging** powered shells) = **swappable** **combat gear**, gig-restricted; **Cybernetics** = **body-integrated** implants—**no** overlap | Agreed | | **Armor split + powered** | **Hardshell** = rigid; **Softshell** = flexible; **powered / systems** armor **Make** = **Rigging (gear)** | Agreed | @@ -234,5 +239,5 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod - **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment **deferred**; **PvP** gig rules **open indefinite** (overall PvP scope TBD). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. -- **Items** — **equip:** gig rules for **combat gear** (incl. **Rigging**-built powered armor when worn); **cybernetics** character-wide (**not** gig-gated); **craft:** **skills** (**Hardshell**, **Softshell**, **Rigging**, etc.) and recipe/rep, never gig level. +- **Items** — **equip / combat-deploy:** gig rules for **combat gear** (armor, **Rigging** deployables, etc.); **cybernetics** character-wide (**not** gig-gated); **craft:** **skills** only—never gig level ([Seams](#seams-gigs-skills) **Make → combat (non-consumables)**). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From 08a9e672115376bee316a3dbb693c4a0f89c6879 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:37:57 -0400 Subject: [PATCH 65/91] chore: non-combat Rigging use by specialty skill; utility items without hooks --- docs/game-design/skills.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 0ea1675..7563969 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -101,7 +101,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | **Synth-chem (product)** | Finish stims, chems, consumables from **Synth-chem prep** (and related **Process**) outputs. | — | | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | | **Cybernetics** | **Body-integrated** implants and augmentation: neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installs from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). **Semi-permanent** (e.g. **ocular** suite)—**not** swap-friendly **Hardshell** / **Softshell** / **Rigging** armor. Stays **active** across **gig** changes. | **Not gig-gated** — **agreed** ([Seams](#seams-gigs-skills)); **no** overlap with external armor skills — **agreed**; **replace** has **cost**—removed unit **likely** becomes **scrap** (salvage / recovery loop) — **agreed** direction; fees, clinic fiction, exact yields — **open** | -| **Rigging (gear)** | Drones, harnesses, tool mods, and **powered / systems** armor **Manufacture**: exo-style frames, actuator-linked hardshell, tactical mechatronic rigs—**Fab tech**-heavy lane for **wearable** systems that are **not** plain **Hardshell** / **Softshell** fab. | **Craft** with skill—**no** gig; **combat deploy** / **combat activation** of **Rigging** outputs (e.g. combat drones) **gig-restricted** — **agreed** ([Seams](#seams-gigs-skills)); non-combat drone/tool use — **open**; vs **Hardshell** on hybrids — **open** | +| **Rigging (gear)** | Drones, harnesses, carry systems, tool mods, and **powered / systems** armor **Manufacture**: exo-style frames, actuator-linked hardshell, tactical mechatronic rigs—**Fab tech**-heavy lane for **wearable** systems that are **not** plain **Hardshell** / **Softshell** fab. | **Craft** with skill—**no** gig; **combat deploy** / **combat activation** **gig-restricted** — **agreed** ([Seams](#seams-gigs-skills)); **non-combat** **use** gated by **intended specialty skill** when applicable ([Seams](#seams-gigs-skills)); vs **Hardshell** on hybrids — **open** | | **Food synth** | Ration fab, street kitchens, synth-food **Make** from **Harvest** / **Bioprocess** / **Synth-chem** inputs where recipes need them. | **Kept** in roster — **agreed** | **Make → gigs (combat):** **Vast majority** of **non-consumable** **Make** products are **gig-gated** when brought into **combat** (**equip**, **wear**, **deploy**). **Crafting** stays **skill**/recipe-only—e.g. anyone with **Rigging** can **build** a drone; **deploying** it in a fight needs a **gig** whose kit supports that **deploy** (**data-defined**). See [Seams](#seams-gigs-skills) **Combat gear** and **Make → combat (non-consumables)**. @@ -185,10 +185,11 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Topic | Direction | |--------|-----------| -| **Combat gear** | **Gig-restricted.** Weapons, armor (including **Hardshell**, **Softshell**, and **Rigging**-built powered frames when **worn** as loadout), **combat deployables** **Manufactured** by **Rigging** (e.g. drones **deployed** in a fight), and other **swap-friendly** or **field-deployed** combat pieces declare which **gig(s)** may **equip**, **wear**, **fully activate**, or **combat-deploy** them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated, not gig-gated, unless a piece is explicitly hybrid. **Does not** apply to **semi-permanent** **Cybernetics** augments—see **Cybernetics / implants** row. | +| **Combat gear** | **Gig-restricted.** Weapons, armor (including **Hardshell**, **Softshell**, and **Rigging**-built powered frames when **worn** as loadout), **combat deployables** **Manufactured** by **Rigging** (e.g. drones **deployed** in a fight), and other **swap-friendly** or **field-deployed** combat pieces declare which **gig(s)** may **equip**, **wear**, **fully activate**, or **combat-deploy** them. After a **hub-only** [gig swap](gigs.md#hub-swap), the player **re-banks or re-equips** combat gear for the new gig (automation vs. manual loadout UX **open**). Non-combat tools (pickaxe, scanner, craft bench) stay **skill**-gated for **use**, not gig-gated, unless a piece is explicitly hybrid; **Rigging** **non-combat** outputs follow **Non-combat Rigging / utility Make**. **Does not** apply to **semi-permanent** **Cybernetics** augments—see **Cybernetics / implants** row. | | **Cybernetics / implants** | **Not gig-gated.** Augments from **Cybernetics** (**Make**) are **body-integrated** and **semi-permanent**: they remain **in play** when you change **main gig**, **sub-gig**, or combat loadout (e.g. an **ocular** implant does not come off at hub swap). **Crafting** stays **skill**/recipe/rep—never gig level. **Changing** an installed augment has **cost** (credits, clinic, downtime—**open**); the **replaced** piece **likely** comes out as **scrap** or salvage-grade material (feeds **Gather**/**Salvage**/**Refine** loops) rather than a clean reusable item—**agreed** direction, exact tables **open**. **Not** the same rhythm as re-banking a rifle. **External** armor (**Hardshell**, **Softshell**, **Rigging**-built powered shells) and **Cybernetics** **do not overlap**: external armor is **swap-friendly** **Combat gear** (**gig-restricted**); **Cybernetics** is **not** that bucket. | | **Crafting combat gear** | **No gig or gig level requirement.** Who can *build* it depends on **skills** (e.g. **Gunsmith**, **Edgesmith**, **Hardshell**, **Softshell**, **Rigging (gear)** for powered frames and **deployables**), recipes, rep, facilities—never on owning a gig or its level. A character can **craft combat gear they cannot equip or combat-deploy** (wrong gig, low gig level, etc.): valid for **trade**, **stock**, or **group play**. **Equip / wear / combat deploy / activation** stays **gig-restricted** as **Combat gear** above. | -| **Make → combat (non-consumables)** | **Agreed default:** **Most** **non-consumable** **Make** outputs are **gig-gated** when used in **combat**—weapons, armor, **Rigging** **combat deployables**, and similar—via **equip**, **wear**, or **combat deployment**. **Craft** is **always** **skill**/recipe/rep (plus world gates); **gig** gates **field use**, not the bench. **Exceptions:** **Cybernetics** (**not** gig-gated); **Consumables** (see row below—**carry/use** baseline not gig-gated); **purely non-combat** **Make** (e.g. **Food synth**, civilian tools)—**data-tagged** per item (**open** catalog). | +| **Make → combat (non-consumables)** | **Agreed default:** **Most** **non-consumable** **Make** outputs are **gig-gated** when used in **combat**—weapons, armor, **Rigging** **combat deployables**, and similar—via **equip**, **wear**, or **combat deployment**. **Craft** is **always** **skill**/recipe/rep (plus world gates); **gig** gates **field use**, not the bench. **Exceptions:** **Cybernetics** (**not** gig-gated); **Consumables** (see row below—**carry/use** baseline not gig-gated); **purely non-combat** **Make** (e.g. **Food synth**, civilian tools)—**data-tagged** per item (**open** catalog); **utility** items with **no** combat role and **no** specialty **use** hook (e.g. **backpacks**)—see **Non-combat Rigging / utility Make** row. | +| **Non-combat Rigging / utility Make** | **Non-combat** outputs from **Rigging** (and similar **Make**)—survey drones, harnesses, carry frames—**craft** on **Rigging** (or recipe skill). **Operating** them or getting **full benefit** is **skill-gated** when the item has an **intended specialty**: tie **use** to the relevant skill (**Signal**, **Electronics**, **Intrusion** kit, **Gather** tools, etc.)—**data-defined** per item. **General** items **outside** any specialty or gig (e.g. **backpacks**, simple webbing) may have **no** skill **use** requirement—anyone can **wear** or **use** them; **craft** still follows the recipe (**Rigging** or another **Make** skill as designed). | | **Consumables** | Unlike most **non-consumable** **Make** products, **carry and use** are not gig-gated by default—anyone can pop a stim or patch. **Passive** potency can scale with **gig** match: e.g. a **medic**-tagged bonus applies if **main *or* sub-gig** matches (see [gigs.md](gigs.md)). Others use a **baseline**. **Active** abilities from consumables (if any) follow their own rules—**open**. Other items may have **no** gig hook—data-driven per item. | | **Rep / story** | **Hybrid.** **Faction / world reputation** stays **character-wide** where it fits (one person, one web of grudges). **Narrative** also includes **gig storylines** and **main-quest-style arcs** tied to a **gig**—mentor paths, employer chains, identity stories that assume you *are* that role for a chapter. State for those arcs is **per gig** (or per gig branch) on the same character; switching gigs does not erase character rep, but **gig plot progress** is its own track. | | **Alts / multi-gig mastery** | One avatar still reduces **alt** pressure for economy and story. **Maining every gig** is **not** a design problem for now: **gig leveling is intentionally slow**, so fully progressing (or “maxing”) every gig is a **long-term time investment**, not something handed out quickly. Players who put in that time **may** legitimately be strong in every gig on one character. **Revisit** only if pacing, live balance, or PvP show harm. | @@ -197,7 +198,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod - **Combat:** UI shows **main gig**, **sub-gig**, levels/tracks, combat abilities, and **combat gear** the main gig can use (mismatched gear disabled or greyed). **Deployables** (**Rigging**-built, etc.): show whether this gig may **combat-deploy** the item even if you **crafted** it with skills. Consumable tooltips for **passive** amps can show **baseline vs. boosted** when **main or sub** matches the item’s gig hook. - **Cybernetics vs external armor:** **Hardshell**, **Softshell**, and **Rigging**-built powered pieces show on the **combat loadout** strip when equipped (swap-friendly, **gig-matched**). **Cybernetics** shows as **character** chrome—always relevant, **not** gig-disabled—**separate** UI lane ([Seams](#seams-gigs-skills) **Cybernetics / implants**). -- **Non-combat / crafting:** **skill** list, **category** filters, XP with **source** hints where helpful; **mastery** branches when E2.M3-style systems exist. Crafting combat-facing **Make** uses **skill**/recipe gates only—not gigs (optional hint if you can’t **equip** or **combat-deploy** the product on your current gig). +- **Non-combat / crafting:** **skill** list, **category** filters, XP with **source** hints where helpful; **mastery** branches when E2.M3-style systems exist. Crafting combat-facing **Make** uses **skill**/recipe gates only—not gigs (optional hint if you can’t **equip** or **combat-deploy** the product on your current gig). **Rigging** civ gear: tooltip **intended skill** for **full** operation when the item has a specialty; **utility** pieces (e.g. **backpacks**) may show **no** skill **use** gate. - **Story:** journal or quest UI can separate **character / faction** threads from **gig** threads so players see which arc belongs to which gig. - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. @@ -209,6 +210,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Combat gear | **Gig-restricted** **equip** / **wear** / **combat deploy** / **activation**; includes **Rigging** **combat deployables**; non-combat tools **skill**-gated | Agreed | | **Make** non-consumables + combat | **Default** **gig-gated** in combat; **craft** **skill**-only—**vast majority** of **Make** non-consumables | Agreed | | **Rigging** deployables | **Anyone** with skill can **craft**; **combat deploy** **gig**-matched (e.g. drone gig kit) | Agreed | +| **Rigging** non-combat **use** | **Use** / **full benefit** gated by **intended specialty skill** when item defines one; **no** skill hook for general **utility** (e.g. **backpacks**) | Agreed | | Cybernetics / implants | **Semi-permanent** augments—**character-wide**, **not gig-gated**; **replacement** costs and **likely** turns old unit into **scrap** / salvage feedstock | Agreed | | **Hardshell** / **Softshell** / **Rigging** vs **Cybernetics** | **External** armor (**Hardshell**, **Softshell**, **Rigging** powered shells) = **swappable** **combat gear**, gig-restricted; **Cybernetics** = **body-integrated** implants—**no** overlap | Agreed | | **Armor split + powered** | **Hardshell** = rigid; **Softshell** = flexible; **powered / systems** armor **Make** = **Rigging (gear)** | Agreed | @@ -239,5 +241,5 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod - **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment **deferred**; **PvP** gig rules **open indefinite** (overall PvP scope TBD). - **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. -- **Items** — **equip / combat-deploy:** gig rules for **combat gear** (armor, **Rigging** deployables, etc.); **cybernetics** character-wide (**not** gig-gated); **craft:** **skills** only—never gig level ([Seams](#seams-gigs-skills) **Make → combat (non-consumables)**). +- **Items** — **equip / combat-deploy:** gig rules for **combat gear**; **non-combat** **Rigging** / **utility** **use** vs specialty **skills**; **cybernetics** character-wide; **craft:** **skills** only—never gig level ([Seams](#seams-gigs-skills)). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From 681b9a6a95da2a9bd00eeeacdd0606c4204a9dcb Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:38:37 -0400 Subject: [PATCH 66/91] chore: clarify Rigging vs Hardshell hybrid note in skills roster --- docs/game-design/skills.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 7563969..41a758c 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -101,7 +101,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** | **Synth-chem (product)** | Finish stims, chems, consumables from **Synth-chem prep** (and related **Process**) outputs. | — | | **Medtech fab** | Field kits, injectors, trauma foam—**craft** lane. | **Gig** Sawbones = *combat use* | | **Cybernetics** | **Body-integrated** implants and augmentation: neural hooks, sensory suites, limb lines, organ-adjacent systems—**finished** installs from **Process** inputs (e.g. **Fab tech**, **Bioprocess**, **Harvest**, **Synth-chem**). **Semi-permanent** (e.g. **ocular** suite)—**not** swap-friendly **Hardshell** / **Softshell** / **Rigging** armor. Stays **active** across **gig** changes. | **Not gig-gated** — **agreed** ([Seams](#seams-gigs-skills)); **no** overlap with external armor skills — **agreed**; **replace** has **cost**—removed unit **likely** becomes **scrap** (salvage / recovery loop) — **agreed** direction; fees, clinic fiction, exact yields — **open** | -| **Rigging (gear)** | Drones, harnesses, carry systems, tool mods, and **powered / systems** armor **Manufacture**: exo-style frames, actuator-linked hardshell, tactical mechatronic rigs—**Fab tech**-heavy lane for **wearable** systems that are **not** plain **Hardshell** / **Softshell** fab. | **Craft** with skill—**no** gig; **combat deploy** / **combat activation** **gig-restricted** — **agreed** ([Seams](#seams-gigs-skills)); **non-combat** **use** gated by **intended specialty skill** when applicable ([Seams](#seams-gigs-skills)); vs **Hardshell** on hybrids — **open** | +| **Rigging (gear)** | Drones, harnesses, carry systems, tool mods, and **powered / systems** armor **Manufacture**: exo-style frames, actuator-linked hardshell, tactical mechatronic rigs—**Fab tech**-heavy lane for **wearable** systems that are **not** plain **Hardshell** / **Softshell** fab. | **Craft** with skill—**no** gig; **combat deploy** / **combat activation** **gig-restricted** — **agreed** ([Seams](#seams-gigs-skills)); **non-combat** **use** gated by **intended specialty skill** when applicable ([Seams](#seams-gigs-skills)); **hybrid** armor (rigid plate + powered frame—**Hardshell** × **Rigging**): **primary** skill per recipe / multi-step splits — **open** (see Make intro) | | **Food synth** | Ration fab, street kitchens, synth-food **Make** from **Harvest** / **Bioprocess** / **Synth-chem** inputs where recipes need them. | **Kept** in roster — **agreed** | **Make → gigs (combat):** **Vast majority** of **non-consumable** **Make** products are **gig-gated** when brought into **combat** (**equip**, **wear**, **deploy**). **Crafting** stays **skill**/recipe-only—e.g. anyone with **Rigging** can **build** a drone; **deploying** it in a fight needs a **gig** whose kit supports that **deploy** (**data-defined**). See [Seams](#seams-gigs-skills) **Combat gear** and **Make → combat (non-consumables)**. From c40923d1f9d26acd5c35e53ef208523e4650d863 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:40:41 -0400 Subject: [PATCH 67/91] chore: log Tech skill category roster as agreed solid for v0 --- docs/game-design/skills.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 41a758c..b0fd9c2 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -230,6 +230,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | **Refine** vs **Synth-chem prep** | **Refine** = physical materials (ore, glass, steel, scrap metals → usable grades); **Synth-chem prep** = bio/chem streams (precursors, reagents, lab-oriented outputs) | Agreed | | **Refine** vs **Fab tech** | **Refine** = smelt/purify/grade **base** materials; **Fab tech** = fabricate **chips, PCBs, solenoids**, and similar **components**—may **consume** refined materials, does not **overlap** the refine loop | Agreed | | **Fab tech** vs **Data scrub** | **Fab tech** = **physical** fab; **Data scrub** = **abstract** data—datasets, **firmware wipes**, logical reuse of salvaged parts—not the same skill fantasy | Agreed | +| **Tech** category roster | **Solid** for v0 (table under **Tech** in [Skill roster](#skill-roster-draft-ideas-by-category)); **skill** vs **gig kit** split as documented; per-row **open** notes stay until implementation | Agreed | | Low-gig specialist | **Viable** to focus progression on **skills** (gather/craft/tech) with **low gig levels**; economy loops must not **hard-gate** on high gig rank | Agreed | | Skill roster size | **Opening** v0 list is strong; **add skills** pre-launch as needed—**breadth** is a feature | Agreed | | **Food synth** | **Make** skill **kept**—rations, street kitchens, food economy loops | Agreed | From b7aeccafa9ee2cb854cbd5bb36ef20b9b0167f27 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 20:44:04 -0400 Subject: [PATCH 68/91] chore: defer failure XP, respec, synergy to late-stage tuning --- docs/game-design/skills.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index b0fd9c2..157bb05 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -133,7 +133,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** - **Secondary sources (open):** quests, dailies, books, training dummies—tuned so they **assist** without **replacing** loops. - **Structured grants:** skill id, amount, **source** (node id, recipe, quest key…) for telemetry and anti-exploit review. -**Failure XP** (failed craft, failed hack attempt—not **death**): **per skill / per mechanic**; **open** until each activity’s rules exist ([Decisions log](#decisions-log)). +**Failure XP** (failed craft, failed hack attempt—not **death**): **not** deciding defaults here—stays **open** for **late-stage tuning** once activity mechanics and the wider progression picture exist ([Decisions log](#decisions-log), [Open questions](#open-questions-skills-only)). **Caps (agreed):** **soft** curve only—**each level needs more XP** than the last; **data-driven** per skill or policy. **Runaway** mitigation: steeper curves, context modifiers, diminishing returns on repeat actions—**open** per skill. @@ -153,11 +153,11 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/modules/E2_M3_MasteryAndPerkUnlocks.md)) give **build texture** inside one skill (branch picks, efficiency, side effects). Same *idea* as gig expression, **different** system—no shared perk tree between gig and skill unless we deliberately link them (**open**). -**Respec** for skill mastery—**open** (cost, partial reset). +**Respec** for skill mastery—**not** locking rules (cost, partial reset, cadence) at this vision stage; **open** for **late-stage tuning** ([Decisions log](#decisions-log)). ### Cross-skill synergies -**Open:** explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“you’re known as a rigger-smith”) with no math. Avoid mandatory cross-grinds unless the loop is fun. +Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“you’re known as a rigger-smith”) with no math—**not** deciding formulas or mandatory links here; **open** until the **system** is better understood; avoid mandatory cross-grinds unless the loop proves fun ([Decisions log](#decisions-log)). ### Where skills meet the rest of the game @@ -171,12 +171,12 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod ### Open questions (skills-only) +**Late-stage tuning (intentionally open):** **Failure XP**, **skill mastery respec**, and **cross-skill synergy** math are **not** commitments at this stage. They stay **open** until we understand **skills**, **gigs**, economy, and combat together—then we **fine-tune** in a later balance pass, not as immediate design blockers. See [Decisions log](#decisions-log) **Late-stage tuning**. + | Topic | Status | |-------|--------| | Full launch **skill list** and names | **Draft** roster by category in [Skill roster](#skill-roster-draft-ideas-by-category) | -| Failure XP defaults per activity type | Open | -| Mastery respec rules | Open | -| Cross-skill synergy math | Open | +| **Failure XP**; **mastery respec**; **cross-skill synergy** | **Open**—deferred; **late-stage tuning** (paragraph above) | | Combat **deploy** / **equip** for **Make** outputs vs **gig** | **Agreed**—see [Seams](#seams-gigs-skills) **Combat gear** and **Make → combat (non-consumables)** | @@ -221,7 +221,7 @@ Beyond raw level, **mastery tracks** and **perks** ([E2.M3](../decomposition/mod | Combat vs. non-combat | **Gigs** for combat; **skills** for gather/craft/etc. | Agreed | | Professions (economy) | No separate profession system; economy identity from **skills** + rep | Agreed ([overview](overview.md)) | | Primary skill XP | Do the activity | Agreed | -| Failure XP | **Open**; decided **per skill / activity** once mechanics exist (not the same as death penalty) | Open | +| **Late-stage tuning** | **Failure XP**, **skill mastery respec**, **cross-skill synergy** formulas—**not** decided at vision stage; **open** until the **system** (skills, gigs, economy, combat) is understood; **fine-tuning** pass | Open (deferred) | | Skill caps | **Soft**; **progressively more XP** per level (data-driven curves) | Agreed | | Gig swap rules | **Hub-only** (city / home base / designated site)—**not** in the field or mid-fight | Agreed | | Sub-gig | **FFXI-style** slot **agreed**; sub abilities up to **~½ main gig level** (formula TBD); wide build space | Agreed | From dd2fef797de4e50b82281cc8139757bde29ab14d Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:21:33 -0400 Subject: [PATCH 69/91] chore: align game-design docs, SkillDef schema, and docs review agent - Hybrid progression: encounter gig XP, mission skill rewards, Slice 3 split - SkillDef JSON Schema: stable id, gather/process/make/tech, allowedXpSourceKinds - Prototype skills: salvage, refine, intrusion; expand E2.M1/E2.M2 contracts - Add docs-review-agent rule, skills coherence review, AGENTS.md row - gigs/progression/overview/skills cross-links; explicit HTML anchors in skills.md --- .cursor/rules/docs-review-agent.md | 73 +++++++++++++++++++ AGENTS.md | 1 + content/README.md | 2 +- content/schemas/skill-def.schema.json | 30 +++++++- content/skills/prototype_skills.json | 21 +++--- .../epics/epic_02_classless_progression.md | 13 ++-- .../modules/E2_M1_SkillDefinitionRegistry.md | 48 ++++++++++-- .../modules/E2_M2_XpAwardAndLevelEngine.md | 12 +-- docs/game-design/gigs.md | 4 +- docs/game-design/overview.md | 2 +- docs/game-design/progression.md | 7 +- docs/game-design/skills.md | 11 ++- ...2026-03-31-game-design-skills-coherence.md | 60 +++++++++++++++ 13 files changed, 244 insertions(+), 40 deletions(-) create mode 100644 .cursor/rules/docs-review-agent.md create mode 100644 docs/reviews/2026-03-31-game-design-skills-coherence.md diff --git a/.cursor/rules/docs-review-agent.md b/.cursor/rules/docs-review-agent.md new file mode 100644 index 0000000..a62e746 --- /dev/null +++ b/.cursor/rules/docs-review-agent.md @@ -0,0 +1,73 @@ +--- +description: >- + Documentation review agent — coherence, links, and dev-guide fitness for docs/ + (especially game-design and decomposition). @docs-review-agent or ask for a + “docs review” / “review the design docs” using this persona. +globs: docs/**/* +alwaysApply: false +--- + +# Documentation review agent (Neon Sprawl) + +Use this rule when the user is working in **`docs/`** (design, decomposition, plans, architecture notes) and wants a **structured pass** over one or more documents: **coherence**, **cross-links**, **contradictions** with linked files, and **readiness to guide implementation** — not a quick skim. + +## Role + +- Act as a **tech writer + design lead**: trace **definitions**, **seams**, and **dependencies** across files the target doc cites or should cite. +- Be **specific** (path, section, table). Separate **blocking** (wrong or unsafe guidance), **should fix** (stale or confusing), and **nits**. +- Prefer **actionable** edits: suggest exact wording or file-level fixes; apply them only if the user asked to **fix** or **update** docs, not when they asked **review only**. + +## When this applies + +- **Primary:** `docs/game-design/**` — progression, skills, gigs, overview, brainstorm; any new vision artifact. +- **Also:** `docs/decomposition/**`, `docs/plans/**`, `docs/architecture/**` when the user is **connecting** design to implementation or reviewing doc drift. +- **Trigger:** User @-mentions this rule, asks for a **docs review**, **coherence check**, or **design-doc audit**, or has **`docs/**` files** in focus (see `globs`). + +## Ground truth (required to check) + +1. **Same folder and upstream links** — Read every `docs/...` link from the target doc(s); verify paths exist and headings match intent. +2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`: **Gig** = combat role; **Skill** = non-combat; **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Mission/quest rewards** may still grant **skill XP** when explicitly defined—separate from the encounter **gig XP** path. +3. **Decomposition** — Map claims to `docs/decomposition/epics/` and `docs/decomposition/modules/` where relevant; flag **conflicts** (e.g. “combat skill” vs skills-as-non-combat). +4. **Plans** — If work maps to `docs/plans/`, check for **acceptance criteria** vs design doc (same spirit as [code-review-agent](code-review-agent.md) plan alignment). + +## Review checklist + +Work through what applies (skip irrelevant briefly). + +1. **Purpose** — Who is the reader (design, eng, production)? Is the doc scoped correctly? +2. **Definitions** — Terms (gig, skill, seam, category) consistent with `progression.md` / `skills.md`. +3. **Internal coherence** — Tables, decisions log, and body text agree; roster counts vs prose if stated. +4. **Cross-doc coherence** — Linked files don’t contradict; flag **stale** epics or slices. +5. **Implementation hooks** — IDs, modules (E2.M1, …), open vs agreed; what’s missing for tickets. +6. **Links & anchors** — Broken paths; fragile `#anchors` (prefer stable HTML `id` where needed). +7. **Next steps** — Obvious follow-up artifacts or epic/plan updates. + +## Review document (required) + +**Every** invocation must produce a **saved markdown file** under `docs/reviews/`, not only chat (same spirit as [code-review-agent](code-review-agent.md)). + +1. **Directory:** `docs/reviews/` (create if missing). +2. **Filename:** `YYYY-MM-DD-{slug}.md` — use session **Today’s date** when known; slug from topic or ticket (kebab-case). +3. **Preamble:** Date, **Scope** (paths or “full game-design pass”), **Base** branch or “as of date” if relevant. +4. **Body:** Use **Output format** below. For design reviews, use **Documentation checked** instead of only “plan + modules”: list each consulted path and **matches / partially matches / conflicts / N/A**. +5. **Commits:** Write the review file **uncommitted** unless the user asks to commit it. Follow [commit-and-review](commit-and-review.md) — no tool-attribution boilerplate in PR text. + +In the saved file, use **normal fenced code blocks** and **backtick paths** — not IDE line-number citations (GitHub-friendly). + +## Output format (required) + +1. **Verdict** — e.g. `Approve for vision`, `Approve with suggestions`, `Request doc updates`. +2. **Summary** — 2–5 sentences. +3. **Documentation checked** — Table or bullets: path → **matches** / **partially matches** / **conflicts** / **N/A**. +4. **Blocking issues** — Factual errors, unsafe guidance, broken contracts; empty if none. +5. **Suggestions** — Stale links, epic drift, missing seams references. +6. **Nits** — Optional. +7. **Verification** — What humans should re-read or grep after edits. + +**Chat:** Short summary + **path to** `docs/reviews/YYYY-MM-DD-{slug}.md`. + +## Boundaries + +- Do **not** skip writing `docs/reviews/…` unless the user explicitly asks for **chat-only** (then state that exception in chat and **do not** claim full agent output). +- Do **not** rewrite entire doc trees unless asked; review is default. +- **Skills / gigs:** treat `docs/game-design/skills.md` **Seams** as the **authoritative** gig↔skill boundary unless superseded by a newer ADR or epic decision. diff --git a/AGENTS.md b/AGENTS.md index e4552f9..9bdc9f1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,6 +5,7 @@ Optional **personas** for Cursor. Enable by **@ mentioning** the rule in chat or | Agent | Rule file | When to use | |--------|-----------|-------------| | **Code review** | [`.cursor/rules/code-review-agent.md`](.cursor/rules/code-review-agent.md) | PR / diff / pre-merge review; **always writes** `docs/reviews/YYYY-MM-DD-{slug}.md` with **Documentation checked** vs `docs/plans/` and `docs/decomposition/modules/`; short chat pointer | +| **Docs review** | [`.cursor/rules/docs-review-agent.md`](.cursor/rules/docs-review-agent.md) | Coherence / links / dev-guide fitness for `docs/` (especially `docs/game-design/` + decomposition); **writes** `docs/reviews/YYYY-MM-DD-{slug}.md`; use when working in **documents** or @ mention | Project-wide conventions live under [`.cursor/rules/`](.cursor/rules/) (many are `alwaysApply`). **Godot client layout** (thin `main.gd`, split by concern): [`.cursor/rules/godot-client-script-organization.md`](.cursor/rules/godot-client-script-organization.md). **PR / push text:** no “Made-with: Cursor” boilerplate — [`.cursor/rules/commit-and-review.md`](.cursor/rules/commit-and-review.md). diff --git a/content/README.md b/content/README.md index a16b047..f286bb1 100644 --- a/content/README.md +++ b/content/README.md @@ -5,6 +5,6 @@ Data-driven definitions (skills, items, recipes, quests) validated in CI with ** | Path | Purpose | |------|---------| | [`schemas/`](schemas/) | JSON Schema files (`*.schema.json`) | -| [`skills/`](skills/) | Skill catalogs and related tables | +| [`skills/`](skills/) | Skill catalogs; each row matches [`schemas/skill-def.schema.json`](schemas/skill-def.schema.json) — **stable `id`**, **`allowedXpSourceKinds`** for [E2.M1](../docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md) / [E2.M2](../docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md) | Server load path and hot-reload policy are TBD; keep files versioned here as the source of truth. diff --git a/content/schemas/skill-def.schema.json b/content/schemas/skill-def.schema.json index 9a21a8d..5a2058d 100644 --- a/content/schemas/skill-def.schema.json +++ b/content/schemas/skill-def.schema.json @@ -2,18 +2,40 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://neon-sprawl.local/schemas/skill-def.json", "title": "SkillDef", + "description": "Single skill row for catalogs (e.g. content/skills/*.json). IDs are stable forever—rename display in displayName only. See docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md.", "type": "object", "additionalProperties": false, - "required": ["id", "category", "displayName"], + "required": ["id", "category", "displayName", "allowedXpSourceKinds"], "properties": { "id": { "type": "string", - "pattern": "^[a-z][a-z0-9_]*$" + "pattern": "^[a-z][a-z0-9_]*$", + "description": "Immutable skill key for saves, recipes, quests, telemetry, and XpGrantEvent.skillId. Never change after content ships; add a new id if the skill splits." }, "category": { "type": "string", - "enum": ["gathering", "crafting", "combat", "exploration", "utility", "social"] + "description": "Primary SkillCategory aligned with docs/game-design/skills.md (Gather / Process / Make / Tech).", + "enum": ["gather", "process", "make", "tech"] }, - "displayName": { "type": "string", "minLength": 1 } + "displayName": { + "type": "string", + "minLength": 1, + "description": "Player-facing label; safe to change without migrating character data." + }, + "allowedXpSourceKinds": { + "type": "array", + "minItems": 1, + "uniqueItems": true, + "description": "Which XpGrantEvent.sourceKind values may increase this skill. E2.M2 rejects grants outside this set. Combat encounters do not use skill XP—use gig progression instead.", + "items": { + "type": "string", + "enum": [ + "activity", + "mission_reward", + "trainer", + "book_or_item" + ] + } + } } } diff --git a/content/skills/prototype_skills.json b/content/skills/prototype_skills.json index bf55cbc..b6d3e9a 100644 --- a/content/skills/prototype_skills.json +++ b/content/skills/prototype_skills.json @@ -2,19 +2,22 @@ "schemaVersion": 1, "skills": [ { - "id": "gathering_scrap", - "category": "gathering", - "displayName": "Scrap Salvaging" + "id": "salvage", + "category": "gather", + "displayName": "Salvage", + "allowedXpSourceKinds": ["activity", "mission_reward"] }, { - "id": "crafting_engineering", - "category": "crafting", - "displayName": "Street Engineering" + "id": "refine", + "category": "process", + "displayName": "Refine", + "allowedXpSourceKinds": ["activity", "mission_reward", "trainer"] }, { - "id": "combat_ballistics", - "category": "combat", - "displayName": "Ballistics" + "id": "intrusion", + "category": "tech", + "displayName": "Intrusion", + "allowedXpSourceKinds": ["activity", "mission_reward", "book_or_item"] } ] } diff --git a/docs/decomposition/epics/epic_02_classless_progression.md b/docs/decomposition/epics/epic_02_classless_progression.md index 372a71b..4248073 100644 --- a/docs/decomposition/epics/epic_02_classless_progression.md +++ b/docs/decomposition/epics/epic_02_classless_progression.md @@ -49,7 +49,7 @@ Provide a data-driven classless progression layer: skill definitions, XP awards, ### Slice 1 - Skill registry and prototype skills -- Scope: E2.M1 with at least three skills (one gathering, one crafting, one combat) loaded from data. +- Scope: E2.M1 with at least three **non-combat** `SkillDef` rows loaded from data—e.g. aligned with **Gather**, **Process** or **Make**, and **Tech** as in [`docs/game-design/skills.md`](../../game-design/skills.md). **Combat role progression** is **gig**-scoped, not a `SkillDef` line (see [`docs/game-design/gigs.md`](../../game-design/gigs.md), [`docs/game-design/progression.md`](../../game-design/progression.md)). - Dependencies: None - Acceptance criteria: - All prototype activities reference skills by stable IDs. @@ -67,11 +67,12 @@ Provide a data-driven classless progression layer: skill definitions, XP awards, ### Slice 3 - XP award integration at activity sites -- Scope: Wire gathering (E3.M1), crafting (E3.M2), and combat (E5.M1) to invoke the E2.M2 award API so the three prototype skill lines gain XP from real play. -- Dependencies: E2.M2, E3.M1, E3.M2, E5.M1 (integration prerequisites; not part of the E2.M2 module dependency list). +- Scope: Wire **gathering** (E3.M1) and **crafting** (E3.M2) to the **E2.M2 skill XP** award API so prototype **`SkillDef`** lines gain XP from real play. Wire **combat** (E5.M1) to **gig XP only** ([`gigs.md`](../../game-design/gigs.md), [`progression.md`](../../game-design/progression.md))—**no** hook that maps **encounter resolution** to **skill** XP or a combat `SkillDef`. **Mission / quest reward** paths may still call the **skill** XP API when the **payout** explicitly includes skill XP (**not** the same as “combat trained this skill”). +- Dependencies: E2.M2, E3.M1, E3.M2, E5.M1 (integration prerequisites; not part of the E2.M2 module dependency list). Gig XP plumbing may live beside E2.M2 or under Epic 5—**split call sites** by progression type (skill vs gig). - Acceptance criteria: - - Visible XP and level-up feedback within first session from real gather/craft/combat actions. -- Telemetry hooks: `xp_grant`, `level_up`, time-to-first-level-up. + - Visible **skill** XP and skill level-up feedback within first session from real **gather/craft** actions. + - Visible **gig** XP and gig progression feedback from **combat** (main gig only, per game-design). +- Telemetry hooks: `xp_grant`, `level_up`, time-to-first-level-up for **skills**; gig progression hooks as agreed when gig model lands (e.g. `gig_xp_grant`, `gig_level_up`). ### Slice 4 - Mastery and pacing (pre-production) @@ -91,6 +92,6 @@ Provide a data-driven classless progression layer: skill definitions, XP awards, ## Definition of Done -- Prototype uses E2.M1 + E2.M2 for all three skill lines. +- Prototype uses E2.M1 + E2.M2 for three **non-combat** `SkillDef` lines (stable **`id`** + **`allowedXpSourceKinds`** per [E2.M1](../modules/E2_M1_SkillDefinitionRegistry.md)); **gig** progression for combat is separate. - Pre-production adds E2.M3/E2.M4 with documented tuning workflow. - Events align with baseline telemetry in master plan. diff --git a/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md b/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md index b492124..b9b97df 100644 --- a/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md +++ b/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md @@ -5,39 +5,75 @@ | Field | Value | |--------|--------| | **Module ID** | E2.M1 | -| **Epic** | [Epic 2 — Classless Progression](../epics/epic_02_classless_progression.md) | +| **Epic** | [Epic 2 — Classless progression](../epics/epic_02_classless_progression.md) | | **Stage target** | Prototype | | **Status** | Planned (see [dependency register](module_dependency_register.md)) | ## Purpose -Central catalog for skill metadata, category tags, and unlock prerequisites. All prototype activities reference skills by stable IDs validated against this registry. +Central catalog for **non-combat** skill metadata: **stable IDs**, **categories**, **allowed XP sources**, and unlock prerequisites. All prototype activities reference skills by **`SkillDef.id`** validated against this registry. **Combat role progression** is **not** a `SkillDef`—use gig progression ([`docs/game-design/gigs.md`](../../game-design/gigs.md)). + +## Data contract (schema) + +| Artifact | Path | +|----------|------| +| **JSON Schema** | [`content/schemas/skill-def.schema.json`](../../../content/schemas/skill-def.schema.json) | +| **Sample catalog** | [`content/skills/prototype_skills.json`](../../../content/skills/prototype_skills.json) | + +**`SkillDef` fields (prototype):** + +| Field | Rule | +|--------|------| +| **`id`** | Lowercase `snake_case`, **immutable** after ship. Used in saves, recipes, quests, `XpGrantEvent.skillId`, telemetry. **Never** rename to “fix” a skill—add a new `id` and migrate content if a skill splits. | +| **`category`** | One of `gather` \| `process` \| `make` \| `tech` — aligned with [`docs/game-design/skills.md`](../../game-design/skills.md) roster buckets (not gigs). | +| **`displayName`** | Player-facing string; **may change** without migrating progression data. | +| **`allowedXpSourceKinds`** | Non-empty set of grant channels [E2.M2](E2_M2_XpAwardAndLevelEngine.md) may apply to this skill. **Combat encounters** must **not** use skill XP—those award **gig XP**; `mission_reward` covers explicit mission/contract skill payouts. | + +**`allowedXpSourceKinds` values:** + +| Kind | Meaning | +|------|--------| +| `activity` | Primary loop (e.g. gather node complete, recipe craft complete, skill-based world interaction)—callers set `XpGrantEvent.sourceKind` to match. | +| `mission_reward` | Quest/contract hand-in or other scripted payout ([`docs/game-design/progression.md`](../../game-design/progression.md) **Mission rewards vs combat XP**). | +| `trainer` | NPC or teaching beat. | +| `book_or_item` | Book, chip, training consumable, or similar one-shot grant. | + +Add new enum values only with a **schema version** / migration note in [CT.M1](CT_M1_ContentValidationPipeline.md) when CI enforces catalogs. ## Responsibilities - Load and validate `SkillDef` from data; expose `SkillCategory` and `UnlockRequirement` for gating. +- Reject unknown `skillId` or **XP grants** whose `sourceKind` is **not** listed on the target skill’s `allowedXpSourceKinds` (enforced in [E2.M2](E2_M2_XpAwardAndLevelEngine.md) at grant time). ## Key contracts | Contract | Role | |----------|------| -| `SkillDef` | Per-skill metadata and references. | -| `SkillCategory` | Grouping for UX and balance. | +| `SkillDef` | Per-skill metadata: **id**, **category**, **displayName**, **allowedXpSourceKinds** (+ future unlock fields). | +| `SkillCategory` | `gather` \| `process` \| `make` \| `tech` for UX and balance. | | `UnlockRequirement` | Prerequisites before XP or use counts apply. | +## Acceptance criteria (E2.M1 / Slice 1) + +- Every loaded `SkillDef` validates against [`skill-def.schema.json`](../../../content/schemas/skill-def.schema.json) in CI ([CT.M1](CT_M1_ContentValidationPipeline.md)) or at server boot. +- **Duplicate `id`** in a catalog fails validation. +- **Roster freeze for prototype:** when Slice 1 locks three skills, their **`id`** values are treated as **stable**—downstream content (recipes, quests) may reference them; changing an `id` requires a **migration** or new row. +- Document for designers: each new skill row **must** declare **`allowedXpSourceKinds`** so engineers know which systems may grant XP (gather/craft hooks vs E7.M2 mission rewards only, etc.). + ## Module dependencies - **None** ## Dependents (by design) -- **E2.M2** — XpAwardAndLevelEngine (primary). +- **E2.M2** — XpAwardAndLevelEngine (primary): validates grants against `allowedXpSourceKinds`. ## Related implementation slices -Epic 2 **Slice 1** — skill registry and prototype skills; invalid references fail at load or in CI. +Epic 2 **Slice 1** — skill registry and prototype **non-combat** skills; invalid references fail at load or in CI. ## Source anchors +- Game design: [`docs/game-design/skills.md`](../../game-design/skills.md) — roster, **XP philosophy**, gig/skill boundary. - Master plan: [`neon_sprawl_vision.plan.md`](../../../neon_sprawl_vision.plan.md) — Epic 2. - [Module dependency register](module_dependency_register.md) diff --git a/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md b/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md index a75d636..85d5cae 100644 --- a/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md +++ b/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md @@ -11,11 +11,11 @@ ## Purpose -Central server-authoritative engine for classless skill progression: applying XP grants, resolving levels against data-driven curves, and emitting level-up events. Gathering, crafting, and combat integrate **as callers** of this API without being hard dependencies for implementing the engine itself (see Epic 2 Slice 2 vs Slice 3). +Central server-authoritative engine for **classless skill** progression: applying XP grants, resolving levels against data-driven curves, and emitting level-up events. **Gathering** and **crafting** integrate as callers for **skill** XP. **Combat encounters** advance **gigs** (gig XP), not `SkillDef` lines. **Mission rewards** may call this API for **skill** XP when the payout lists a skill grant. Callers are not hard dependencies for implementing the engine core (see Epic 2 Slice 2 vs Slice 3). ## Responsibilities -- Apply `XpGrantEvent` (or equivalent) per skill with validated skill references from [E2.M1](E2_M1_SkillDefinitionRegistry.md). +- Apply `XpGrantEvent` (or equivalent) per skill with validated **`skillId`** from [E2.M1](E2_M1_SkillDefinitionRegistry.md). Reject grants when **`sourceKind`** is not in the target `SkillDef.allowedXpSourceKinds`. - Resolve experience against `LevelCurve` / threshold tables. - Emit `LevelUpEvent` when thresholds are crossed. - Support data-driven curves; **reload policy:** [Data reload and telemetry operations policy](data_and_ops_policy.md#content-and-gameplay-data-reload) (boot load default; optional dev reload). @@ -24,17 +24,17 @@ Central server-authoritative engine for classless skill progression: applying XP | Contract | Role | |----------|------| -| `XpGrantEvent` | Structured XP award (skill id, amount, source, modifiers). | +| `XpGrantEvent` | Structured XP award: **`skillId`** (must exist in registry), **amount**, **`sourceKind`** (must appear in that skill’s **`allowedXpSourceKinds`**), optional modifiers. | | `LevelCurve` | Thresholds or formula per skill or global policy. | | `LevelUpEvent` | Notification for UI, unlocks, and downstream systems. | ## Module dependencies -- **E2.M1** — [SkillDefinitionRegistry](E2_M1_SkillDefinitionRegistry.md): `SkillDef`, categories, and validation of skill IDs. +- **E2.M1** — [SkillDefinitionRegistry](E2_M1_SkillDefinitionRegistry.md): `SkillDef`, categories, **allowedXpSourceKinds**, and validation of skill IDs. ## Dependents (by design) -- **E5.M1** — CombatRulesEngine: combat awards XP via integration (Epic 5 / Epic 2 slices). +- **E5.M1** — CombatRulesEngine: **gig XP** from combat (not `SkillDef` XP via E2.M2). - **E3.M1 / E3.M2** — Gathering and crafting award XP when wired in Slice 3. - **E7.M2** — RewardAndUnlockRouter routes quest rewards including XP through E2.M2. - **E2.M3 / E2.M4** — Mastery and pacing layers build on level/XP state (pre-production). @@ -42,7 +42,7 @@ Central server-authoritative engine for classless skill progression: applying XP ## Related implementation slices - **Epic 2 Slice 2 — XP engine (E2.M2 core)**: implement contracts and tests without requiring Epic 3 or 5 modules. -- **Epic 2 Slice 3 — XP award integration**: wire E3.M1, E3.M2, E5.M1 to the award API for three prototype skill lines. +- **Epic 2 Slice 3 — XP award integration**: E3.M1 / E3.M2 call the skill XP API with **`sourceKind`: `activity`** (where allowed per skill); E7.M2 / mission rewards use **`mission_reward`** (etc.) as configured; combat resolves **gig** progression separately from E2.M2. ## Risks and telemetry diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index ee17c1a..2c604fc 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -49,7 +49,7 @@ Names below are **v1** after a theme pass; abilities and lore can still rename a **Still open:** -- **Combat gear:** almost certainly **main-gig–restricted** for equip; sub feeds **abilities** only—confirm in content pass. +- **Combat gear:** **main-gig–restricted** for equip; sub feeds **abilities** only. **Seams** (equip / deploy / activation, crafting): [skills.md — Seams](skills.md#seams-gigs-skills). - **Consumables (passive amp):** **Agreed** — **sub-gig** counts. **Passive** gig-tagged bonuses (e.g. extra healing from a med item when you’re a medic-type gig) apply if **either** **main** or **sub** matches the item’s gig hook. **Open:** if **both** match, **stack vs. single best** vs. **main wins**—pick at balance pass. - **PvP:** **gig rules blocked** until we know **if** and **how much** PvP the game includes—see [PvE vs PvP](#pve-vs-pvp). - **UI:** two gig strips, sub ability styling, loadout summary for party—**open.** @@ -58,7 +58,7 @@ Names below are **v1** after a theme pass; abilities and lore can still rename a **Agreed:** **per-gig** level/XP (and later **mastery/perks** on that gig). No shared **combat rank** that levels every gig at once. **Maining every gig** on one character is allowed; **slow leveling** makes that a long-term goal ([skills.md](skills.md) seams). -**Agreed — gig XP award timing:** only the **main gig** earns **gig XP** from combat (and any other gig-level awards). The **sub-gig** earns **no** XP toward its own progression while equipped as sub—it only **reads** its stored level for ability unlocks. To level a gig you ran as sub, **swap** it to **main** at a hub and play with it primary. **UI** should make clear that **gig XP** (bars, flytext) applies to **main** only. +**Agreed — combat encounter → gig XP, not skill XP:** the **fight loop** (encounters, clears—however combat resolves) grants **gig XP** on the **main gig** only, not **`SkillDef` / skill** XP. **Missions** may still **reward skill XP** on **turn-in** or **bonus** objectives—that is a **separate** payout from **combat → gig XP**, data-defined per contract. **Agreed — gig XP award timing:** only the **main gig** earns **gig XP** from combat (and any other gig-level awards). The **sub-gig** earns **no** XP toward its own progression while equipped as sub—it only **reads** its stored level for ability unlocks. To level a gig you ran as sub, **swap** it to **main** at a hub and play with it primary. **UI** should make clear that **gig XP** (bars, flytext) applies to **main** only. **Open:** diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 02cc6d9..ab3c89a 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -23,7 +23,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | Document | Focus | Notes | |----------|--------|--------| | [progression.md](progression.md) | Shared **gig + skill** vision, vocabulary, links | Start here for progression | -| [skills.md](skills.md) | Non-combat **skills**; seams; **v0 skill roster** by category | With [gigs.md](gigs.md) | +| [skills.md](skills.md) | Non-combat **skills**; seams; **v0 skill roster** by category | With [gigs.md](gigs.md); roster encodes **Hardshell** / **Softshell** / **Edgesmith** / **Rigging** equip vs **combat-deploy** rules ([Seams](skills.md#seams-gigs-skills)) | | [gigs.md](gigs.md) | **9-gig roster** (v1 cyberpunk names); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | | *(add rows as files land)* | | | diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index 0b94120..6a97168 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -2,7 +2,7 @@ Shared vision for **how characters grow** in Neon Sprawl: **combat** vs **everything else** use different systems that still live on **one avatar**. Detail docs: **[gigs.md](gigs.md)** (combat roles), **[skills.md](skills.md)** (non-combat skills and **gigs ↔ skills seams**). -**Implementation note:** [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4) still describes **skill** XP machinery in decomposition; **gig** XP/levels are **per gig**—module text should be updated when the gig data model is finalized. +**Implementation note:** [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4): **Slice 3** wires **gather/craft** to **skill** XP (E2.M2), **combat encounters** to **gig XP only**, and allows **mission reward** hooks to grant **skill** XP when scripted—**not** via the combat encounter pipe. **Gig** levels stay **per gig**; exact gig XP module ownership may sit beside E2.M2 or under Epic 5 until the gig data model is finalized. ## Vocabulary @@ -11,14 +11,15 @@ Use these terms in **design specs and tools** (fiction may say *job*, *contract* | Term | Means | |------|--------| | **Gig** | The **combat role** (combat “class”): kit, tuning band, party expectations. **Not** for crafting or gathering. | -| **Skill** | A **non-combat** trained capability only (gather, craft, intrusion loops, etc.). **Never** the combat gig. | +| **Skill** | A **non-combat** trained capability only (gather, craft, intrusion loops, etc.). **Never** the combat gig. **Combat encounters** do not grant skill XP by default—only **gig XP** on the **main gig** ([gigs.md](gigs.md)). | | **Sub-gig** | **Secondary gig** on the same loadout as **main**—limited cross-gig abilities ([gigs.md](gigs.md) **Main gig + sub-gig**). Not crafting identity. | ## Why hybrid - **Gigs** answer “what are you on **this fight**?”—readable roles, **hub swap**, cyberpunk **contract** fantasy, without alts for combat variety. -- **Skills** keep **economy and crafting** **classless**: anyone can raise gather/craft over time; “street doc” can mean high **medic fab** **skill** + rep, not only tonight’s gig. +- **Skills** keep **economy and crafting** **classless**: anyone can raise gather/craft over time; “street doc” can mean high **Medtech fab** **skill** + rep, not only tonight’s gig. - **Specialist fantasy:** a player can **under-invest in gigs** and still **mainline the game** through **skills**—top gatherer, crafter, or tech, with **lots of options** to explore. The **skill roster** is meant to **grow** over time; see [skills.md](skills.md) **Pillars** and **Skill roster**. +- **Mission rewards vs combat XP:** **Missions** (contracts, arcs, hand-ins) may **pay skill XP** as an explicit **reward**—separate from the **combat encounter** pipe. Default flow stays **fight → gig XP**; skill XP from an op is **“this job’s payout,”** not **“kills trained my fab skill.”** ## Where to read next diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 157bb05..66c4250 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -50,15 +50,17 @@ New skills land here as **design + data** demand; a skill can sit in **multiple | **Gather** | Nodes, yields, field extraction | | **Process** | **Refine**; **Fab tech** (physical fab); **Data scrub** (data/firmware); **Synth-chem prep** (bio/chem); batch; intermediate goods | | **Make** | Finished goods, recipes, bench work—**Gunsmith**, **Edgesmith**, **Hardshell**, **Softshell**, **Rigging (gear)**, **Cybernetics**, **Medtech fab**, **Food synth**, etc. | -| **Tech** | Intrusion, netsec, counter-intrusion, electronics, signal—**not** combat gig kit | +| **Tech** | Intrusion, netsec, counter-intrusion, exploit dev, crypto & identity, electronics, signal—**not** combat gig kit | Optional **secondary category** for UI sorting only—**primary** category in data drives balance defaults. + + ### Skill roster (draft ideas by category) **v0 — for examination, not a commit list.** Each row is a **candidate skill** (or tight cluster we might merge). The tables below are a **solid opening roster**—on the order of **~20–26** names depending on how we **merge or split** clusters—and we **expect to add more** as we approach launch. A **wide** skill set is intentional: it gives design and live ops room to grow **loops**, **biomes**, and **specialist fantasies** without collapsing everything into a tiny tree. -Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** checks (especially **Tech** vs combat netrunning). +Final roster needs **stable IDs**, **XP sources**, and **gig/skill boundary** checks (especially **Tech** vs combat netrunning). **Implementation:** [`content/schemas/skill-def.schema.json`](../../content/schemas/skill-def.schema.json) (`id`, `allowedXpSourceKinds`) + [E2.M1 — SkillDefinitionRegistry](../decomposition/modules/E2_M1_SkillDefinitionRegistry.md) acceptance criteria; prototype sample [`content/skills/prototype_skills.json`](../../content/skills/prototype_skills.json). Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, **Skill** name plus **what it covers** and **open / merge** notes. @@ -169,6 +171,8 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ | [gigs.md](gigs.md) | **Craft** combat gear with **skills**; **equip** with **gigs**—[Seams](#seams-gigs-skills) | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | **Skill** lane in a group instance (idea only) | + + ### Open questions (skills-only) **Late-stage tuning (intentionally open):** **Failure XP**, **skill mastery respec**, and **cross-skill synergy** math are **not** commitments at this stage. They stay **open** until we understand **skills**, **gigs**, economy, and combat together—then we **fine-tune** in a later balance pass, not as immediate design blockers. See [Decisions log](#decisions-log) **Late-stage tuning**. @@ -202,6 +206,8 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ - **Story:** journal or quest UI can separate **character / faction** threads from **gig** threads so players see which arc belongs to which gig. - Use **gig** / **skill** consistently in specs and tools; flavor text can vary. + + ## Decisions log | Topic | Direction | Status | @@ -236,6 +242,7 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ | **Food synth** | **Make** skill **kept**—rations, street kitchens, food economy loops | Agreed | | **Gunsmith** vs **Edgesmith** | **Gunsmith** = firearms / ballistics; **Edgesmith** = **non-gun** melee, thrown (non-ballistic), stun batons, monowire-style—same craft/equip **Seams** as other **combat gear** | Agreed | | Gig XP award | **Main gig only**; **sub-gig** earns no XP—see [gigs.md](gigs.md) | Agreed | +| Mission reward skill XP | **Combat encounters** → **gig XP** only. **Skill XP** allowed when a **mission/contract** explicitly **rewards** it (hand-in, bonus)—**separate** payout from encounter **gig XP**, not “fighting levels a `SkillDef`” | Agreed | | Epic 2 doc split | Align modules when gig data model is chosen | TBD | ## Next artifacts diff --git a/docs/reviews/2026-03-31-game-design-skills-coherence.md b/docs/reviews/2026-03-31-game-design-skills-coherence.md new file mode 100644 index 0000000..625d75a --- /dev/null +++ b/docs/reviews/2026-03-31-game-design-skills-coherence.md @@ -0,0 +1,60 @@ +# Game design docs coherence review — skills + links + +**Date:** 2026-03-31 +**Scope:** `docs/game-design/skills.md` and connected game-design + decomposition references (no PR diff; full-document pass). +**Base:** `docs/game-design/` vision set as of this date. + +## Verdict + +**Approve for vision / pre-implementation guidance** — the hybrid **gig + skill** model, **Seams**, and **v0 skill roster** are internally coherent and usable to steer E2/E3/E5 work. **Epic 2** **Slice 1** (non-combat `SkillDef` trio) and **Slice 3** (encounters → **gig XP**, gather/craft → **skill** XP, **mission rewards** may grant **skill** XP) are aligned with game-design. + +## Summary + +`skills.md` is the strongest single artifact: clear **vocabulary**, **domains vs categories**, **roster tables**, **production chains**, **Seams** (combat gear, cybernetics, crafting, deployables, utility Rigging), **decisions log**, and **deferred late-stage tuning** (failure XP, respec, synergy). Linked docs (`progression.md`, `overview.md`, `gigs.md`, `README.md`) and **Epic 2** slices **1** and **3** align with **skills = non-combat**, **combat encounters = gig XP only** (mission **reward** skill XP stays a **separate** payout). + +Remaining gaps are **expected** for vision docs: stable skill IDs, per-recipe data tags, and **gig ↔ item** deploy matrices are not yet specified — call those out for implementation plans rather than blocking the design read-through. + +## Documentation checked + +| Path | Match vs skills.md / hybrid model | +|------|-----------------------------------| +| `docs/game-design/skills.md` | **N/A** (source reviewed) | +| `docs/game-design/progression.md` | **Matches** after **Medtech fab** naming alignment | +| `docs/game-design/overview.md` | **Matches** — index, rating vision, artifact table | +| `docs/game-design/gigs.md` | **Matches** — sub-gig **Combat gear** bullet now links to `skills.md` **Seams** | +| `docs/game-design/README.md` | **Matches** | +| `docs/decomposition/epics/epic_02_classless_progression.md` | **Matches** — **Slice 3**: gather/craft → E2.M2 **skill** XP; **encounters** → **gig** XP; **mission rewards** may grant **skill** XP (no combat `SkillDef` from encounters) | +| `docs/decomposition/epics/epic_03_crafting_economy.md` | **Not re-read in full** — `skills.md` “Where skills meet” cites E3; no contradiction spotted from skills side | +| `docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md` | **Matches** — schema + `allowedXpSourceKinds`, categories `gather`/`process`/`make`/`tech`, Slice 1 acceptance criteria | + +## Blocking issues + +None for **using the docs as design guidance**. (No incorrect security or authority claims found.) + +## Suggestions + +1. ~~**gigs.md — Combat gear:**~~ **Done** — sub-gig section links to `skills.md#seams-gigs-skills`. +2. ~~**epic_02 — Slice 3:**~~ **Done** — **encounters** → **gig XP only**; gather/craft → E2.M2 **skill** XP; **mission rewards** may grant **skill** XP explicitly (`progression.md`, `epic_02` Slice 3). +3. ~~**overview.md artifact table:**~~ **Done** — `skills.md` row notes **Hardshell** / **Softshell** / **Edgesmith** / **Rigging** equip vs combat-deploy + link to **Seams**. +4. ~~**Stable IDs + XP sources:**~~ **Done** — [`content/schemas/skill-def.schema.json`](../../content/schemas/skill-def.schema.json), [`content/skills/prototype_skills.json`](../../content/skills/prototype_skills.json), [E2.M1](../decomposition/modules/E2_M1_SkillDefinitionRegistry.md) + [E2.M2](../decomposition/modules/E2_M2_XpAwardAndLevelEngine.md); [`skills.md`](../game-design/skills.md) links. + +## Nits + +- ~~**Categories table (Tech):**~~ **Addressed** — row now includes exploit dev and crypto & identity. +- ~~**Anchor fragility:**~~ **Addressed** — `skills.md` uses explicit `` for **Skill roster**, **Open questions (skills-only)**, and **Decisions log** (same pattern as **Seams**). + +## Verification + +- Manually re-follow links from `skills.md` intro → `progression.md`, `gigs.md`, `overview.md`, `brainstorm/hack-bodyguard-missions.md`, E2/E3/E7 epics. +- After gig data model work: grep `docs/decomposition` for “combat skill” / “class” and align with hybrid vocabulary. + +## Follow-up (applied in this review pass) + +- `progression.md`: **medic fab** → **Medtech fab** (consistent with roster). +- `epic_02_classless_progression.md` **Slice 1** scope: **non-combat** trio aligned with `skills.md` / gigs hybrid (see commit). +- `skills.md`: **Tech** category row aligned with full Tech roster (exploit dev, crypto & identity). +- `gigs.md`: sub-gig **Combat gear** → link to `skills.md` **Seams**. +- `AGENTS.md`: **Docs review** agent row → `.cursor/rules/docs-review-agent.md`. +- **Combat XP rule:** `progression.md` + `epic_02` **Slice 3** — **encounters** → **gig XP only** (no combat `SkillDef`); **mission reward** skill XP is **separate**. +- `overview.md`: artifact table **skills.md** row — **Hardshell** / **Softshell** / **Edgesmith** / **Rigging** + **Seams** link. +- **SkillDef schema:** `content/schemas/skill-def.schema.json` + `prototype_skills.json`; E2.M1 / E2.M2 docs for **IDs** and **`allowedXpSourceKinds`**. From f9de62b5632097bf104672fbec178f58250f5b9b Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:23:36 -0400 Subject: [PATCH 70/91] chore: branch-wide docs review vs main + Epic 2 objective hybrid wording - Save docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md - Epic 2 Objective: skill vs gig progression; link progression + E2.M2 --- .../epics/epic_02_classless_progression.md | 2 +- ...3-branch-chore-game-design-docs-vs-main.md | 66 +++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md diff --git a/docs/decomposition/epics/epic_02_classless_progression.md b/docs/decomposition/epics/epic_02_classless_progression.md index 4248073..fd11e83 100644 --- a/docs/decomposition/epics/epic_02_classless_progression.md +++ b/docs/decomposition/epics/epic_02_classless_progression.md @@ -12,7 +12,7 @@ ## Objective -Provide a data-driven classless progression layer: skill definitions, XP awards, level curves, and eventually mastery/perk and pacing controls so gathering, crafting, and combat all feed one coherent progression model. +Provide a data-driven **classless non-combat skill** layer: `SkillDef` registry, **skill** XP awards, level curves, and eventually mastery/perk and pacing controls. **Gathering** and **crafting** feed **skill** progression via [E2.M2](../modules/E2_M2_XpAwardAndLevelEngine.md); **combat encounters** feed **gig** progression (not `SkillDef` XP)—see [`docs/game-design/progression.md`](../../game-design/progression.md). **Mission rewards** may still grant **skill** XP when scripted. ## Module Breakdown diff --git a/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md new file mode 100644 index 0000000..26f6710 --- /dev/null +++ b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md @@ -0,0 +1,66 @@ +# Branch review — `chore/game-design-docs` vs `main` + +**Date:** 2026-04-03 +**Scope:** Full documentation and content-contract pass over all paths changed relative to `main` (`git diff main...HEAD`). Includes game-design vision set, decomposition updates (Epic 2 / E2.M1 / E2.M2), `content/` schema + prototype catalog, Cursor rules, and `AGENTS.md`. +**Base:** `main` at merge-base with this branch; branch tip includes prior commits on `chore/game-design-docs` plus coherence follow-ups. + +## Verdict + +**Approve with suggestions addressed in-repo for one epic line** — The branch delivers a **coherent hybrid progression story** (gigs + skills, Seams, gig XP vs skill XP, mission reward carve-out) and wires it into **Epic 2** slices and **SkillDef** JSON Schema. **Non-doc** changes (`.vscode/` launch/tasks) are fine but **out of scope** for design coherence; no conflict with docs. + +## Summary + +Compared to `main`, this branch adds the **`docs/game-design/`** corpus (`overview`, `progression`, `skills`, `gigs`, `README`, `brainstorm/`), extends **Epic 2** and **E2.M1/E2.M2** to match that vision, introduces **`content/schemas/skill-def.schema.json`** with **`allowedXpSourceKinds`**, replaces prototype skills with three **non-combat** rows, and adds the **docs review** agent plus an earlier coherence review file. Cross-links between game-design and decomposition are generally consistent. One **stale sentence** in **Epic 2 Objective** implied combat fed the same “classless skill” model as gather/craft; that line is **updated** during this review to match **`progression.md`** / **Slice 3**. + +## Documentation checked + +| Path | Role vs `main` | Match / notes | +|------|------------------|---------------| +| `docs/game-design/overview.md` | New | **Matches** hybrid index; artifact table + **Seams** pointer for `skills.md` | +| `docs/game-design/progression.md` | New | **Matches** vocabulary, mission vs encounter XP, implementation note | +| `docs/game-design/skills.md` | New | **Matches** roster, Seams, decisions log; explicit **`id`** anchors for fragile fragments | +| `docs/game-design/gigs.md` | New | **Matches** gig XP rules, link to **Seams**, combat vs skill boundary | +| `docs/game-design/README.md` | New | **Matches** entry to `overview` / `progression` / brainstorm | +| `docs/game-design/brainstorm/*` | New | **Matches** “ideas only”; links to `skills.md` resolve | +| `docs/decomposition/epics/epic_02_classless_progression.md` | Updated | **Matches** after **Objective** paragraph fix (hybrid model explicit); Slice 1/3/DoD align | +| `docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md` | Updated | **Matches** schema paths, categories, acceptance criteria | +| `docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md` | Updated | **Matches** `sourceKind` validation, gig vs skill callers | +| `content/schemas/skill-def.schema.json` | Updated | **Matches** game-design categories (`gather`/`process`/`make`/`tech`); no combat `SkillDef` | +| `content/skills/prototype_skills.json` | Updated | **Matches** Slice 1 non-combat trio + `allowedXpSourceKinds` | +| `content/README.md` | Updated | **Matches** pointers to schema + E2 docs | +| `.cursor/rules/docs-review-agent.md` | New | **Matches** repo conventions; `globs: docs/**/*` | +| `AGENTS.md` | Updated | **Matches** Docs review row | +| `docs/reviews/2026-03-31-game-design-skills-coherence.md` | New | Prior focused review; still consistent with branch after later edits | +| `docs/decomposition/epics/epic_03_crafting_economy.md` | Unchanged | **Spot-check:** gather/craft → skill XP via E2.M2 — **no contradiction** | +| `docs/decomposition/modules/client_server_authority.md` | Unchanged | **Nit:** combat path still says “`SkillDef`” in one line — likely **ability/stats** semantics, not non-combat skill catalog; clarify when combat data model is written | +| `neon_sprawl_vision.plan.md` | Unchanged | **Spot-check:** Epic 2 bullets generic — **no direct conflict** with hybrid detail in epics | +| `.vscode/launch.json`, `.vscode/tasks.json` | New | **N/A** (editor config, not design docs) | + +## Blocking issues + +None for **using the branch as design + schema guidance**. + +## Suggestions + +1. ~~**Epic 2 Objective** — “gathering, crafting, and combat all feed one coherent progression model.”~~ **Fixed in this review** — now states **skill** vs **gig** split and mission **skill** rewards. +2. **E2.M1 “Module Breakdown” stub** (short `Responsibility` under `### E2.M1` in `epic_02`): still one generic line; optional align to “non-combat `SkillDef`” to mirror the long-form module doc. +3. **CT.M1 / CI:** Schema and prototype JSON are documented; **wire validation** when the content pipeline lands (`docs/plans/internal-content-authoring.md` already points at ajv/CLI). +4. **Decomposition grep:** Periodically run `rg "combat skill|one combat skill"` under `docs/decomposition` after gig modules are drafted to catch regressions. + +## Nits + +- **Epic title vs filename:** “Classless Skill and Progression” vs `epic_02_classless_progression.md` — fine; readers use **gigs** for combat naming. +- **`module_dependency_register.md`:** E2.M1 row could list **`allowedXpSourceKinds`** in the contract column when you next touch the register (cosmetic). +- **Two review files:** `2026-03-31-…` vs this `2026-04-03-…` — keep both; this one is **branch-wide vs main**, the other is **skills-focused**. + +## Verification + +- `git diff main...HEAD --stat` — 18 paths (docs + content + Cursor + VS Code + AGENTS). +- Re-follow `overview` → `progression` / `skills` / `gigs` / decomposition links. +- Validate sample data: `python3 -c "… jsonschema …"` against `skill-def.schema.json` (optional local check). + +## Follow-up (applied during this review pass) + +- `epic_02_classless_progression.md` **Objective**: hybrid **skill** vs **gig** wording + links to `progression.md` and E2.M2. + +**Commit:** User should commit the Epic 2 Objective fix separately or fold into the next push (not committed by the review tool). From d11641159d5a822fa03f96ca63a5f1c625ed9f59 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:27:52 -0400 Subject: [PATCH 71/91] chore: Epic 2 E2.M1 stub, content CI validation, doc follow-ups MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - epic_02: expand E2.M1 module breakdown (non-combat SkillDef, allowedXpSourceKinds) - PR gate: Python jsonschema validate content/skills vs skill-def.schema.json - Add scripts/validate_content.py, requirements-content.txt; ignore .venv-content - CT.M1, E2.M1, internal-content-authoring, content README: document CI spine - Update 2026-04-03 branch review (suggestions 2–3 done) --- .github/workflows/pr-gate.yml | 12 +++ .gitignore | 3 + content/README.md | 7 ++ .../epics/epic_02_classless_progression.md | 4 +- .../CT_M1_ContentValidationPipeline.md | 4 + .../modules/E2_M1_SkillDefinitionRegistry.md | 2 +- docs/plans/internal-content-authoring.md | 3 + ...3-branch-chore-game-design-docs-vs-main.md | 8 +- scripts/requirements-content.txt | 2 + scripts/validate_content.py | 81 +++++++++++++++++++ 10 files changed, 119 insertions(+), 7 deletions(-) create mode 100644 scripts/requirements-content.txt create mode 100644 scripts/validate_content.py diff --git a/.github/workflows/pr-gate.yml b/.github/workflows/pr-gate.yml index 823fd2a..e9afc03 100644 --- a/.github/workflows/pr-gate.yml +++ b/.github/workflows/pr-gate.yml @@ -18,5 +18,17 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: pip + cache-dependency-path: scripts/requirements-content.txt + + - name: Validate content catalogs + run: | + pip install -r scripts/requirements-content.txt + python scripts/validate_content.py + - name: Gate run: "true" diff --git a/.gitignore b/.gitignore index 8aa6685..198003a 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ client/.godot/ # Local secrets .env .env.*.local + +# Content validation (optional local venv) +.venv-content/ diff --git a/content/README.md b/content/README.md index f286bb1..5be4ccf 100644 --- a/content/README.md +++ b/content/README.md @@ -8,3 +8,10 @@ Data-driven definitions (skills, items, recipes, quests) validated in CI with ** | [`skills/`](skills/) | Skill catalogs; each row matches [`schemas/skill-def.schema.json`](schemas/skill-def.schema.json) — **stable `id`**, **`allowedXpSourceKinds`** for [E2.M1](../docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md) / [E2.M2](../docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md) | Server load path and hot-reload policy are TBD; keep files versioned here as the source of truth. + +**Validate locally** (same as PR gate): + +```bash +pip install -r scripts/requirements-content.txt +python scripts/validate_content.py +``` diff --git a/docs/decomposition/epics/epic_02_classless_progression.md b/docs/decomposition/epics/epic_02_classless_progression.md index fd11e83..7792336 100644 --- a/docs/decomposition/epics/epic_02_classless_progression.md +++ b/docs/decomposition/epics/epic_02_classless_progression.md @@ -18,8 +18,8 @@ Provide a data-driven **classless non-combat skill** layer: `SkillDef` registry, ### E2.M1 - SkillDefinitionRegistry -- Responsibility: Central catalog for skill metadata, category tags, unlock prerequisites. -- Key contracts: `SkillDef`, `SkillCategory`, `UnlockRequirement` +- Responsibility: Central catalog for **non-combat** `SkillDef` rows: **stable `id`**, **`SkillCategory`** (`gather` / `process` / `make` / `tech`), **`displayName`**, **`allowedXpSourceKinds`** (which `XpGrantEvent.sourceKind` values may grant XP per skill), and unlock prerequisites. **Combat roles** are **gigs**, not `SkillDef`. Detail: [E2.M1 — SkillDefinitionRegistry](../modules/E2_M1_SkillDefinitionRegistry.md), [`content/schemas/skill-def.schema.json`](../../../content/schemas/skill-def.schema.json). +- Key contracts: `SkillDef`, `SkillCategory`, `UnlockRequirement`; prototype schema requires **`allowedXpSourceKinds`** per skill. - Dependencies: None - Stage target: Prototype diff --git a/docs/decomposition/modules/CT_M1_ContentValidationPipeline.md b/docs/decomposition/modules/CT_M1_ContentValidationPipeline.md index 84758a0..b5ccee1 100644 --- a/docs/decomposition/modules/CT_M1_ContentValidationPipeline.md +++ b/docs/decomposition/modules/CT_M1_ContentValidationPipeline.md @@ -39,6 +39,10 @@ Own **content schema artifacts**, **automated validation** in CI and locally, an Content tooling **Slice 1** — schemas + CI; **Slice 4** — server parity hardening. +## CI (prototype) + +**Skill catalogs:** the repo **PR gate** workflow ([`.github/workflows/pr-gate.yml`](../../../.github/workflows/pr-gate.yml)) runs [`scripts/validate_content.py`](../../../scripts/validate_content.py) on every push and pull request. It validates each object in `content/skills/*.json` under the top-level `skills` array against [`content/schemas/skill-def.schema.json`](../../../content/schemas/skill-def.schema.json) (Python **jsonschema**, Draft 2020-12). Extend the script when additional catalogs and schemas ship. + ## Source anchors - Plan: [`internal-content-authoring.md`](../../plans/internal-content-authoring.md) diff --git a/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md b/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md index b9b97df..cb6569d 100644 --- a/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md +++ b/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md @@ -55,7 +55,7 @@ Add new enum values only with a **schema version** / migration note in [CT.M1](C ## Acceptance criteria (E2.M1 / Slice 1) -- Every loaded `SkillDef` validates against [`skill-def.schema.json`](../../../content/schemas/skill-def.schema.json) in CI ([CT.M1](CT_M1_ContentValidationPipeline.md)) or at server boot. +- Every loaded `SkillDef` validates against [`skill-def.schema.json`](../../../content/schemas/skill-def.schema.json) in CI ([CT.M1](CT_M1_ContentValidationPipeline.md#ci-prototype) — [`scripts/validate_content.py`](../../../scripts/validate_content.py) in **PR gate**) or at server boot. - **Duplicate `id`** in a catalog fails validation. - **Roster freeze for prototype:** when Slice 1 locks three skills, their **`id`** values are treated as **stable**—downstream content (recipes, quests) may reference them; changing an `id` requires a **migration** or new row. - Document for designers: each new skill row **must** declare **`allowedXpSourceKinds`** so engineers know which systems may grant XP (gather/craft hooks vs E7.M2 mission rewards only, etc.). diff --git a/docs/plans/internal-content-authoring.md b/docs/plans/internal-content-authoring.md index 5843f67..80dbb8f 100644 --- a/docs/plans/internal-content-authoring.md +++ b/docs/plans/internal-content-authoring.md @@ -54,10 +54,13 @@ Neon Sprawl is **data-driven** for skills, items, recipes, quests, and (eventual ## Phased roadmap (suggested) + + ### Phase 0 — Contracts and validation spine - Publish minimal **JSON Schemas** for `ItemDef`, `RecipeDef`, `QuestDef`, and zone graph payloads; align **one** canonical schema location with [contracts.md](../decomposition/modules/contracts.md) (`contracts/schemas/content/` vs co-located — pick once). - Wire **CI** so `content/**/*.json` cannot merge invalid (Node `ajv` / CLI or `dotnet` validator). +- **Done (partial):** `SkillDef` + `content/skills/*.json` — validated in **PR gate** via [`scripts/validate_content.py`](../../scripts/validate_content.py) + [`scripts/requirements-content.txt`](../../scripts/requirements-content.txt); see [CT.M1 — ContentValidationPipeline](../decomposition/modules/CT_M1_ContentValidationPipeline.md#ci-prototype). - Optional: **dotnet** test that **loads** all content (catches deserialization drift). ### Phase 1 — “Content Studio” MVP diff --git a/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md index 26f6710..6025443 100644 --- a/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md +++ b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md @@ -43,8 +43,8 @@ None for **using the branch as design + schema guidance**. ## Suggestions 1. ~~**Epic 2 Objective** — “gathering, crafting, and combat all feed one coherent progression model.”~~ **Fixed in this review** — now states **skill** vs **gig** split and mission **skill** rewards. -2. **E2.M1 “Module Breakdown” stub** (short `Responsibility` under `### E2.M1` in `epic_02`): still one generic line; optional align to “non-combat `SkillDef`” to mirror the long-form module doc. -3. **CT.M1 / CI:** Schema and prototype JSON are documented; **wire validation** when the content pipeline lands (`docs/plans/internal-content-authoring.md` already points at ajv/CLI). +2. ~~**E2.M1 “Module Breakdown” stub**~~ **Done** — `epic_02` **E2.M1** block matches long-form module + schema links. +3. ~~**CT.M1 / CI:**~~ **Done** — PR gate runs [`scripts/validate_content.py`](../../scripts/validate_content.py) for `content/skills/*.json` vs `skill-def.schema.json`; docs updated ([CT.M1](../decomposition/modules/CT_M1_ContentValidationPipeline.md#ci-prototype), [`internal-content-authoring` Phase 0](../plans/internal-content-authoring.md#phase-0-contracts-validation)). 4. **Decomposition grep:** Periodically run `rg "combat skill|one combat skill"` under `docs/decomposition` after gig modules are drafted to catch regressions. ## Nits @@ -62,5 +62,5 @@ None for **using the branch as design + schema guidance**. ## Follow-up (applied during this review pass) - `epic_02_classless_progression.md` **Objective**: hybrid **skill** vs **gig** wording + links to `progression.md` and E2.M2. - -**Commit:** User should commit the Epic 2 Objective fix separately or fold into the next push (not committed by the review tool). +- `epic_02_classless_progression.md` **E2.M1** module stub: non-combat **`SkillDef`**, categories, **`allowedXpSourceKinds`**, links to E2.M1 module + JSON Schema. +- **Content CI:** `.github/workflows/pr-gate.yml` + `scripts/validate_content.py` + `scripts/requirements-content.txt`; CT.M1 / E2.M1 / `content/README` / internal-content-authoring updates. diff --git a/scripts/requirements-content.txt b/scripts/requirements-content.txt new file mode 100644 index 0000000..0e4776b --- /dev/null +++ b/scripts/requirements-content.txt @@ -0,0 +1,2 @@ +# Used by scripts/validate_content.py and PR gate CI (SkillDef + future catalogs). +jsonschema>=4.22.0,<5 diff --git a/scripts/validate_content.py b/scripts/validate_content.py new file mode 100644 index 0000000..798f87a --- /dev/null +++ b/scripts/validate_content.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 +"""Validate content catalogs against JSON Schema (CI + local). + +Today: each object in content/skills/*.json top-level ``skills`` array vs +content/schemas/skill-def.schema.json. Extend this script as new catalogs land. +""" + +from __future__ import annotations + +import json +import sys +from pathlib import Path + +from jsonschema import Draft202012Validator + +REPO_ROOT = Path(__file__).resolve().parent.parent +SKILL_SCHEMA = REPO_ROOT / "content/schemas/skill-def.schema.json" +SKILLS_DIR = REPO_ROOT / "content/skills" + + +def main() -> int: + if not SKILL_SCHEMA.is_file(): + print(f"error: missing schema {SKILL_SCHEMA}", file=sys.stderr) + return 1 + + schema = json.loads(SKILL_SCHEMA.read_text(encoding="utf-8")) + validator = Draft202012Validator(schema) + + if not SKILLS_DIR.is_dir(): + print(f"error: missing directory {SKILLS_DIR}", file=sys.stderr) + return 1 + + json_files = sorted(SKILLS_DIR.glob("*.json")) + if not json_files: + print(f"error: no JSON files under {SKILLS_DIR}", file=sys.stderr) + return 1 + + seen_ids: dict[str, str] = {} + errors = 0 + + for path in json_files: + data = json.loads(path.read_text(encoding="utf-8")) + skills = data.get("skills") + if not isinstance(skills, list): + print(f"error: {path.relative_to(REPO_ROOT)}: expected top-level 'skills' array", file=sys.stderr) + errors += 1 + continue + for i, row in enumerate(skills): + if not isinstance(row, dict): + print(f"error: {path.relative_to(REPO_ROOT)}: skills[{i}] must be an object", file=sys.stderr) + errors += 1 + continue + for err in sorted(validator.iter_errors(row), key=lambda e: e.path): + loc = ".".join(str(p) for p in err.path) or "(root)" + print( + f"error: {path.relative_to(REPO_ROOT)} skills[{i}] {loc}: {err.message}", + file=sys.stderr, + ) + errors += 1 + sid = row.get("id") + if isinstance(sid, str): + prev = seen_ids.get(sid) + if prev: + print( + f"error: duplicate skill id {sid!r} in {prev} and {path.relative_to(REPO_ROOT)}", + file=sys.stderr, + ) + errors += 1 + else: + seen_ids[sid] = str(path.relative_to(REPO_ROOT)) + + if errors: + print(f"content validation failed with {errors} error(s)", file=sys.stderr) + return 1 + + print(f"content OK: {len(json_files)} skill catalog file(s), {len(seen_ids)} unique skill id(s)") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From 6599e136d67472307d643012fb6fa8fe0ea8525a Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:29:28 -0400 Subject: [PATCH 72/91] chore: CI check for decomposition hybrid vocabulary (suggestion 4) - Add scripts/check_decomposition_language.py (stdlib); PR gate step - CT.M1, content README, docs-review-agent, 2026-04-03 review updates --- .cursor/rules/docs-review-agent.md | 2 +- .github/workflows/pr-gate.yml | 3 + content/README.md | 1 + .../CT_M1_ContentValidationPipeline.md | 2 + ...3-branch-chore-game-design-docs-vs-main.md | 3 +- scripts/check_decomposition_language.py | 75 +++++++++++++++++++ 6 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 scripts/check_decomposition_language.py diff --git a/.cursor/rules/docs-review-agent.md b/.cursor/rules/docs-review-agent.md index a62e746..39c756d 100644 --- a/.cursor/rules/docs-review-agent.md +++ b/.cursor/rules/docs-review-agent.md @@ -27,7 +27,7 @@ Use this rule when the user is working in **`docs/`** (design, decomposition, pl 1. **Same folder and upstream links** — Read every `docs/...` link from the target doc(s); verify paths exist and headings match intent. 2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`: **Gig** = combat role; **Skill** = non-combat; **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Mission/quest rewards** may still grant **skill XP** when explicitly defined—separate from the encounter **gig XP** path. -3. **Decomposition** — Map claims to `docs/decomposition/epics/` and `docs/decomposition/modules/` where relevant; flag **conflicts** (e.g. “combat skill” vs skills-as-non-combat). +3. **Decomposition** — Map claims to `docs/decomposition/epics/` and `docs/decomposition/modules/` where relevant; flag **conflicts** (e.g. “combat skill” vs skills-as-non-combat). **CI** enforces a minimal guard via [`scripts/check_decomposition_language.py`](../../scripts/check_decomposition_language.py) in the **PR gate** (extend the script if a vetted exception is needed). 4. **Plans** — If work maps to `docs/plans/`, check for **acceptance criteria** vs design doc (same spirit as [code-review-agent](code-review-agent.md) plan alignment). ## Review checklist diff --git a/.github/workflows/pr-gate.yml b/.github/workflows/pr-gate.yml index e9afc03..717a174 100644 --- a/.github/workflows/pr-gate.yml +++ b/.github/workflows/pr-gate.yml @@ -30,5 +30,8 @@ jobs: pip install -r scripts/requirements-content.txt python scripts/validate_content.py + - name: Check decomposition doc language (gig vs skill) + run: python scripts/check_decomposition_language.py + - name: Gate run: "true" diff --git a/content/README.md b/content/README.md index 5be4ccf..958468a 100644 --- a/content/README.md +++ b/content/README.md @@ -14,4 +14,5 @@ Server load path and hot-reload policy are TBD; keep files versioned here as the ```bash pip install -r scripts/requirements-content.txt python scripts/validate_content.py +python scripts/check_decomposition_language.py ``` diff --git a/docs/decomposition/modules/CT_M1_ContentValidationPipeline.md b/docs/decomposition/modules/CT_M1_ContentValidationPipeline.md index b5ccee1..5e2ddb8 100644 --- a/docs/decomposition/modules/CT_M1_ContentValidationPipeline.md +++ b/docs/decomposition/modules/CT_M1_ContentValidationPipeline.md @@ -43,6 +43,8 @@ Content tooling **Slice 1** — schemas + CI; **Slice 4** — server parity hard **Skill catalogs:** the repo **PR gate** workflow ([`.github/workflows/pr-gate.yml`](../../../.github/workflows/pr-gate.yml)) runs [`scripts/validate_content.py`](../../../scripts/validate_content.py) on every push and pull request. It validates each object in `content/skills/*.json` under the top-level `skills` array against [`content/schemas/skill-def.schema.json`](../../../content/schemas/skill-def.schema.json) (Python **jsonschema**, Draft 2020-12). Extend the script when additional catalogs and schemas ship. +**Decomposition vocabulary:** the same workflow runs [`scripts/check_decomposition_language.py`](../../../scripts/check_decomposition_language.py) (stdlib only) over `docs/decomposition/**/*.md` to catch wording that treats **combat** as a leveled **`SkillDef`** line instead of **gig** progression (see script docstring for patterns). Adjust the script if a future doc needs a documented exception. + ## Source anchors - Plan: [`internal-content-authoring.md`](../../plans/internal-content-authoring.md) diff --git a/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md index 6025443..09b164c 100644 --- a/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md +++ b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md @@ -45,7 +45,7 @@ None for **using the branch as design + schema guidance**. 1. ~~**Epic 2 Objective** — “gathering, crafting, and combat all feed one coherent progression model.”~~ **Fixed in this review** — now states **skill** vs **gig** split and mission **skill** rewards. 2. ~~**E2.M1 “Module Breakdown” stub**~~ **Done** — `epic_02` **E2.M1** block matches long-form module + schema links. 3. ~~**CT.M1 / CI:**~~ **Done** — PR gate runs [`scripts/validate_content.py`](../../scripts/validate_content.py) for `content/skills/*.json` vs `skill-def.schema.json`; docs updated ([CT.M1](../decomposition/modules/CT_M1_ContentValidationPipeline.md#ci-prototype), [`internal-content-authoring` Phase 0](../plans/internal-content-authoring.md#phase-0-contracts-validation)). -4. **Decomposition grep:** Periodically run `rg "combat skill|one combat skill"` under `docs/decomposition` after gig modules are drafted to catch regressions. +4. ~~**Decomposition grep:**~~ **Done** — automated via [`scripts/check_decomposition_language.py`](../../scripts/check_decomposition_language.py) in **PR gate**; see [CT.M1 — CI (prototype)](../decomposition/modules/CT_M1_ContentValidationPipeline.md#ci-prototype). ## Nits @@ -64,3 +64,4 @@ None for **using the branch as design + schema guidance**. - `epic_02_classless_progression.md` **Objective**: hybrid **skill** vs **gig** wording + links to `progression.md` and E2.M2. - `epic_02_classless_progression.md` **E2.M1** module stub: non-combat **`SkillDef`**, categories, **`allowedXpSourceKinds`**, links to E2.M1 module + JSON Schema. - **Content CI:** `.github/workflows/pr-gate.yml` + `scripts/validate_content.py` + `scripts/requirements-content.txt`; CT.M1 / E2.M1 / `content/README` / internal-content-authoring updates. +- **Decomposition language CI:** `scripts/check_decomposition_language.py` + PR gate + CT.M1 / docs-review-agent notes. diff --git a/scripts/check_decomposition_language.py b/scripts/check_decomposition_language.py new file mode 100644 index 0000000..5a2f09c --- /dev/null +++ b/scripts/check_decomposition_language.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 +"""Fail if decomposition docs regress hybrid vocabulary (gig vs non-combat skill). + +Catches phrases like "one combat skill" or bare "combat skill" that imply a combat +SkillDef. Allows "non-combat skill(s)" and "anti-combat …" when the hyphen prefix +is immediately before ``combat``. + +Run in CI (PR gate) and locally after editing ``docs/decomposition/**``. +""" + +from __future__ import annotations + +import re +import sys +from pathlib import Path + +REPO_ROOT = Path(__file__).resolve().parent.parent +DECOMP_ROOT = REPO_ROOT / "docs/decomposition" + +# Standalone phrases that almost always indicate a doc bug vs game-design hybrid model. +LITERAL_BANS = [ + "one combat skill", + "one combat skills", +] + +# Match "combat skill" / "combat skills" unless prefixed by "non-" or "anti-" (hyphenated). +COMBAT_SKILL = re.compile(r"\bcombat skills?\b", re.IGNORECASE) + + +def line_has_bad_combat_skill(line: str) -> bool: + for m in COMBAT_SKILL.finditer(line): + start = m.start() + if start >= 4 and line[start - 4 : start].lower() == "non-": + continue + if start >= 5 and line[start - 5 : start].lower() == "anti-": + continue + return True + return False + + +def check_file(path: Path) -> list[str]: + errors: list[str] = [] + text = path.read_text(encoding="utf-8") + lower = text.lower() + for banned in LITERAL_BANS: + if banned in lower: + errors.append(f"{path.relative_to(REPO_ROOT)}: contains forbidden phrase {banned!r}") + + for i, line in enumerate(text.splitlines(), start=1): + if line_has_bad_combat_skill(line): + errors.append(f"{path.relative_to(REPO_ROOT)}:{i}: suspicious 'combat skill' (use gig or 'non-combat skill'): {line.strip()[:200]}") + return errors + + +def main() -> int: + if not DECOMP_ROOT.is_dir(): + print(f"error: missing {DECOMP_ROOT}", file=sys.stderr) + return 1 + + all_errors: list[str] = [] + for path in sorted(DECOMP_ROOT.rglob("*.md")): + all_errors.extend(check_file(path)) + + if all_errors: + for msg in all_errors: + print(msg, file=sys.stderr) + print(f"decomposition language check failed ({len(all_errors)} issue(s))", file=sys.stderr) + return 1 + + print("decomposition language OK: hybrid vocabulary (no stray combat SkillDef phrasing)") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From aceb6027bf9fc6e6e3138673c6dbca988eb87124 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:30:53 -0400 Subject: [PATCH 73/91] chore: align Epic 2 title with epic_02 filename (nit #1) - Rename to Classless Progression Framework in epic, vision plan, README, E2 modules, game-design links - Update 2026-04-03 review nit status --- docs/decomposition/README.md | 2 +- docs/decomposition/epics/epic_02_classless_progression.md | 2 +- docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md | 2 +- docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md | 2 +- docs/decomposition/modules/E2_M3_MasteryAndPerkUnlocks.md | 2 +- docs/decomposition/modules/E2_M4_ProgressionPacingControls.md | 2 +- docs/decomposition/modules/module_dependency_register.md | 2 +- docs/game-design/gigs.md | 2 +- docs/game-design/progression.md | 2 +- docs/game-design/skills.md | 2 +- .../2026-04-03-branch-chore-game-design-docs-vs-main.md | 3 ++- neon_sprawl_vision.plan.md | 4 ++-- 12 files changed, 14 insertions(+), 13 deletions(-) diff --git a/docs/decomposition/README.md b/docs/decomposition/README.md index fb58dce..a303cc7 100644 --- a/docs/decomposition/README.md +++ b/docs/decomposition/README.md @@ -25,7 +25,7 @@ This workspace contains detailed planning artifacts derived from the finalized m | Epic | Document | |------|----------| | 1 - Core Player Runtime | [epics/epic_01_core_player_runtime.md](epics/epic_01_core_player_runtime.md) | -| 2 - Classless Progression | [epics/epic_02_classless_progression.md](epics/epic_02_classless_progression.md) | +| 2 - Classless Progression Framework | [epics/epic_02_classless_progression.md](epics/epic_02_classless_progression.md) | | 3 - Crafting Economy | [epics/epic_03_crafting_economy.md](epics/epic_03_crafting_economy.md) | | 4 - World Topology | [epics/epic_04_world_topology.md](epics/epic_04_world_topology.md) | | 5 - PvE Combat | [epics/epic_05_pve_combat.md](epics/epic_05_pve_combat.md) | diff --git a/docs/decomposition/epics/epic_02_classless_progression.md b/docs/decomposition/epics/epic_02_classless_progression.md index 7792336..3301fd4 100644 --- a/docs/decomposition/epics/epic_02_classless_progression.md +++ b/docs/decomposition/epics/epic_02_classless_progression.md @@ -1,4 +1,4 @@ -# Epic 2 - Classless Skill and Progression Framework +# Epic 2 - Classless Progression Framework ## Source Anchors diff --git a/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md b/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md index cb6569d..9dcf95c 100644 --- a/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md +++ b/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md @@ -5,7 +5,7 @@ | Field | Value | |--------|--------| | **Module ID** | E2.M1 | -| **Epic** | [Epic 2 — Classless progression](../epics/epic_02_classless_progression.md) | +| **Epic** | [Epic 2 — Classless Progression Framework](../epics/epic_02_classless_progression.md) | | **Stage target** | Prototype | | **Status** | Planned (see [dependency register](module_dependency_register.md)) | diff --git a/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md b/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md index 85d5cae..7a99e31 100644 --- a/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md +++ b/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md @@ -5,7 +5,7 @@ | Field | Value | |--------|--------| | **Module ID** | E2.M2 | -| **Epic** | [Epic 2 — Classless Progression](../epics/epic_02_classless_progression.md) | +| **Epic** | [Epic 2 — Classless Progression Framework](../epics/epic_02_classless_progression.md) | | **Stage target** | Prototype | | **Status** | Planned (see [dependency register](module_dependency_register.md)) | diff --git a/docs/decomposition/modules/E2_M3_MasteryAndPerkUnlocks.md b/docs/decomposition/modules/E2_M3_MasteryAndPerkUnlocks.md index 1dd4db8..a44989c 100644 --- a/docs/decomposition/modules/E2_M3_MasteryAndPerkUnlocks.md +++ b/docs/decomposition/modules/E2_M3_MasteryAndPerkUnlocks.md @@ -5,7 +5,7 @@ | Field | Value | |--------|--------| | **Module ID** | E2.M3 | -| **Epic** | [Epic 2 — Classless Progression](../epics/epic_02_classless_progression.md) | +| **Epic** | [Epic 2 — Classless Progression Framework](../epics/epic_02_classless_progression.md) | | **Stage target** | Pre-production | | **Status** | Planned (see [dependency register](module_dependency_register.md)) | diff --git a/docs/decomposition/modules/E2_M4_ProgressionPacingControls.md b/docs/decomposition/modules/E2_M4_ProgressionPacingControls.md index f5bcd06..f6d636c 100644 --- a/docs/decomposition/modules/E2_M4_ProgressionPacingControls.md +++ b/docs/decomposition/modules/E2_M4_ProgressionPacingControls.md @@ -5,7 +5,7 @@ | Field | Value | |--------|--------| | **Module ID** | E2.M4 | -| **Epic** | [Epic 2 — Classless Progression](../epics/epic_02_classless_progression.md) | +| **Epic** | [Epic 2 — Classless Progression Framework](../epics/epic_02_classless_progression.md) | | **Stage target** | Pre-production | | **Status** | Planned (see [dependency register](module_dependency_register.md)) | diff --git a/docs/decomposition/modules/module_dependency_register.md b/docs/decomposition/modules/module_dependency_register.md index c633e12..5aba75a 100644 --- a/docs/decomposition/modules/module_dependency_register.md +++ b/docs/decomposition/modules/module_dependency_register.md @@ -17,7 +17,7 @@ Fleshed-out scope, contracts, and integration notes live in **per-module documen | E1.M3 | InteractionAndTargetingLayer | E1.M1 | TargetState, InteractableDescriptor, SelectionEvent | Prototype | Planned | | E1.M4 | AbilityInputScaffold | E1.M3, E5.M1 | AbilityCastRequest, HotbarLoadout, CooldownSnapshot | Prototype | Planned | -### Epic 2 — Classless Progression +### Epic 2 — Classless Progression Framework | Module ID | Module Name | Depends On | Contract Needed | Phase Required | Status | |---|---|---|---|---|---| diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 2c604fc..8316438 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -2,7 +2,7 @@ Vision-level design for **combat identity**: what you bring to a fight, how you progress, and how you swap roles. **Shared progression framing** and **vocabulary**: [progression.md](progression.md). **Gigs ↔ skills seams** (gear, crafting, consumables, rep): [skills.md](skills.md). This file is the **gig** artifact proper. -**Implementation anchors:** [Epic 5 — PvE combat](../decomposition/epics/epic_05_pve_combat.md); gig XP/progression will need alignment with [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) when data models split. +**Implementation anchors:** [Epic 5 — PvE combat](../decomposition/epics/epic_05_pve_combat.md); gig XP/progression will need alignment with [Epic 2 — Classless Progression Framework](../decomposition/epics/epic_02_classless_progression.md) when data models split. ## What a gig is diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index 6a97168..b4102fb 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -2,7 +2,7 @@ Shared vision for **how characters grow** in Neon Sprawl: **combat** vs **everything else** use different systems that still live on **one avatar**. Detail docs: **[gigs.md](gigs.md)** (combat roles), **[skills.md](skills.md)** (non-combat skills and **gigs ↔ skills seams**). -**Implementation note:** [Epic 2 — Classless progression](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4): **Slice 3** wires **gather/craft** to **skill** XP (E2.M2), **combat encounters** to **gig XP only**, and allows **mission reward** hooks to grant **skill** XP when scripted—**not** via the combat encounter pipe. **Gig** levels stay **per gig**; exact gig XP module ownership may sit beside E2.M2 or under Epic 5 until the gig data model is finalized. +**Implementation note:** [Epic 2 — Classless Progression Framework](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4): **Slice 3** wires **gather/craft** to **skill** XP (E2.M2), **combat encounters** to **gig XP only**, and allows **mission reward** hooks to grant **skill** XP when scripted—**not** via the combat encounter pipe. **Gig** levels stay **per gig**; exact gig XP module ownership may sit beside E2.M2 or under Epic 5 until the gig data model is finalized. ## Vocabulary diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 66c4250..3fe1df6 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -165,7 +165,7 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ | Area | Tie-in | |------|--------| -| [Epic 2](../decomposition/epics/epic_02_classless_progression.md) | Registry, XP engine, mastery, pacing | +| [Epic 2 — Classless Progression Framework](../decomposition/epics/epic_02_classless_progression.md) | Registry, XP engine, mastery, pacing | | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) | Gather and craft **award** skill XP; items and recipes | | [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | Quest rewards, rep gates, optional skill payouts | | [gigs.md](gigs.md) | **Craft** combat gear with **skills**; **equip** with **gigs**—[Seams](#seams-gigs-skills) | diff --git a/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md index 09b164c..59953d2 100644 --- a/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md +++ b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md @@ -49,7 +49,7 @@ None for **using the branch as design + schema guidance**. ## Nits -- **Epic title vs filename:** “Classless Skill and Progression” vs `epic_02_classless_progression.md` — fine; readers use **gigs** for combat naming. +- ~~**Epic title vs filename:**~~ **Addressed** — epic H1 and vision plan use **Classless Progression Framework** (matches `epic_02_classless_progression.md`); cross-links use the same name. - **`module_dependency_register.md`:** E2.M1 row could list **`allowedXpSourceKinds`** in the contract column when you next touch the register (cosmetic). - **Two review files:** `2026-03-31-…` vs this `2026-04-03-…` — keep both; this one is **branch-wide vs main**, the other is **skills-focused**. @@ -65,3 +65,4 @@ None for **using the branch as design + schema guidance**. - `epic_02_classless_progression.md` **E2.M1** module stub: non-combat **`SkillDef`**, categories, **`allowedXpSourceKinds`**, links to E2.M1 module + JSON Schema. - **Content CI:** `.github/workflows/pr-gate.yml` + `scripts/validate_content.py` + `scripts/requirements-content.txt`; CT.M1 / E2.M1 / `content/README` / internal-content-authoring updates. - **Decomposition language CI:** `scripts/check_decomposition_language.py` + PR gate + CT.M1 / docs-review-agent notes. +- **Epic 2 naming:** H1 + `neon_sprawl_vision.plan.md` + module/game-design link text → **Classless Progression Framework**. diff --git a/neon_sprawl_vision.plan.md b/neon_sprawl_vision.plan.md index b3c718a..4b56ff8 100644 --- a/neon_sprawl_vision.plan.md +++ b/neon_sprawl_vision.plan.md @@ -298,7 +298,7 @@ Transform the validated prototype into a scalable production-ready development m - **Scope:** Isometric camera runtime, character movement, interaction framework, input/ability scaffolding, moment-to-moment game feel. - **Success criteria:** Stable 3D isometric control loop feels responsive and readable across supported hardware tiers. -### Epic 2 - Classless Skill and Progression Framework +### Epic 2 - Classless Progression Framework - **Ownership focus:** Systems Design + Gameplay Engineering - **Scope:** Skill definitions, XP curves, unlock logic, mastery/perk unlocks, progression pacing controls. @@ -385,7 +385,7 @@ Module template: - Dependencies: E1.M3, E5.M1. - Stage target: Prototype. -### Epic 2 Modules - Classless Skill and Progression +### Epic 2 Modules - Classless Progression Framework - **E2.M1 SkillDefinitionRegistry** - Responsibility: Central catalog for skill metadata, category tags, unlock prerequisites. From fe38ebeb4fa6b38fd15f1be3611c8520fcc354bb Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:33:53 -0400 Subject: [PATCH 74/91] docs: drop classless terminology; rename Epic 2 to skills and progression MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename epic_02_classless_progression.md → epic_02_skills_and_progression.md - Epic 2 / vision plan: Skills and Progression Framework; clarify gigs vs non-combat skills - Replace classless prose in README, game-design, E2 modules, reviews, quest_scope - Plan diagrams: SkillsProgression, SkillXpAndMastery --- README.md | 2 +- docs/decomposition/README.md | 2 +- ...n.md => epic_02_skills_and_progression.md} | 10 +++++----- .../modules/E2_M1_SkillDefinitionRegistry.md | 2 +- .../modules/E2_M2_XpAwardAndLevelEngine.md | 4 ++-- .../modules/E2_M3_MasteryAndPerkUnlocks.md | 4 ++-- .../E2_M4_ProgressionPacingControls.md | 2 +- .../modules/module_dependency_register.md | 2 +- .../modules/quest_scope_and_party.md | 2 +- docs/game-design/gigs.md | 2 +- docs/game-design/progression.md | 4 ++-- docs/game-design/skills.md | 4 ++-- ...2026-03-31-game-design-skills-coherence.md | 4 ++-- ...3-branch-chore-game-design-docs-vs-main.md | 14 ++++++------- neon_sprawl_vision.plan.md | 20 +++++++++---------- 15 files changed, 39 insertions(+), 39 deletions(-) rename docs/decomposition/epics/{epic_02_classless_progression.md => epic_02_skills_and_progression.md} (85%) diff --git a/README.md b/README.md index c36cd3f..4fcf3a1 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Neon Sprawl -**Neon Sprawl** is the working title for a classless, crafting-focused sci-fi / cyberpunk MMORPG (solo-dev scope). Product intent and phase gates: [`neon_sprawl_vision.plan.md`](neon_sprawl_vision.plan.md). +**Neon Sprawl** is the working title for a crafting-focused sci-fi / cyberpunk MMORPG with **gigs** (combat roles) and open non-combat **skills** (solo-dev scope). Product intent and phase gates: [`neon_sprawl_vision.plan.md`](neon_sprawl_vision.plan.md). ## Tech stack (locked) diff --git a/docs/decomposition/README.md b/docs/decomposition/README.md index a303cc7..92cd357 100644 --- a/docs/decomposition/README.md +++ b/docs/decomposition/README.md @@ -25,7 +25,7 @@ This workspace contains detailed planning artifacts derived from the finalized m | Epic | Document | |------|----------| | 1 - Core Player Runtime | [epics/epic_01_core_player_runtime.md](epics/epic_01_core_player_runtime.md) | -| 2 - Classless Progression Framework | [epics/epic_02_classless_progression.md](epics/epic_02_classless_progression.md) | +| 2 - Skills and Progression Framework | [epics/epic_02_skills_and_progression.md](epics/epic_02_skills_and_progression.md) | | 3 - Crafting Economy | [epics/epic_03_crafting_economy.md](epics/epic_03_crafting_economy.md) | | 4 - World Topology | [epics/epic_04_world_topology.md](epics/epic_04_world_topology.md) | | 5 - PvE Combat | [epics/epic_05_pve_combat.md](epics/epic_05_pve_combat.md) | diff --git a/docs/decomposition/epics/epic_02_classless_progression.md b/docs/decomposition/epics/epic_02_skills_and_progression.md similarity index 85% rename from docs/decomposition/epics/epic_02_classless_progression.md rename to docs/decomposition/epics/epic_02_skills_and_progression.md index 3301fd4..549ca28 100644 --- a/docs/decomposition/epics/epic_02_classless_progression.md +++ b/docs/decomposition/epics/epic_02_skills_and_progression.md @@ -1,4 +1,4 @@ -# Epic 2 - Classless Progression Framework +# Epic 2 - Skills and Progression Framework ## Source Anchors @@ -8,11 +8,11 @@ ## Ownership and success (Level 1) - **Ownership focus:** Systems Design + Gameplay Engineering -- **Success criteria:** Any character can train all skills, and progression remains long-term without dead-end grinds. +- **Success criteria:** Any character can train all **non-combat** **skills** tracked as `SkillDef`, and **skill** progression stays long-term without dead-end grinds (**gig** combat roles are separate—see [`gigs.md`](../../game-design/gigs.md)). ## Objective -Provide a data-driven **classless non-combat skill** layer: `SkillDef` registry, **skill** XP awards, level curves, and eventually mastery/perk and pacing controls. **Gathering** and **crafting** feed **skill** progression via [E2.M2](../modules/E2_M2_XpAwardAndLevelEngine.md); **combat encounters** feed **gig** progression (not `SkillDef` XP)—see [`docs/game-design/progression.md`](../../game-design/progression.md). **Mission rewards** may still grant **skill** XP when scripted. +Provide a data-driven **non-combat skill** layer: `SkillDef` registry, **skill** XP awards, level curves, and eventually mastery/perk and pacing controls. **Gathering** and **crafting** feed **skill** progression via [E2.M2](../modules/E2_M2_XpAwardAndLevelEngine.md); **combat encounters** feed **gig** progression (not `SkillDef` XP)—see [`docs/game-design/progression.md`](../../game-design/progression.md). **Mission rewards** may still grant **skill** XP when scripted. ## Module Breakdown @@ -33,7 +33,7 @@ Provide a data-driven **classless non-combat skill** layer: `SkillDef` registry, ### E2.M3 - MasteryAndPerkUnlocks -- Responsibility: Mastery tracks and perk unlock state for non-class build expression. +- Responsibility: Mastery tracks and perk unlock state for **skill** build expression beyond raw levels. - Key contracts: `MasteryTrack`, `PerkUnlockEvent`, `PerkState` - Dependencies: E2.M2 - Stage target: Pre-production @@ -87,7 +87,7 @@ Provide a data-driven **classless non-combat skill** layer: `SkillDef` registry, - Risk: XP faucets create runaway leveling in one skill. - Mitigation: Diminishing returns per slice; monitor skill distribution via E9.M2. -- Risk: Classless identity feels flat without mastery expression. +- Risk: **Skill** progression feels flat without mastery expression. - Mitigation: Ship E2.M3 early in pre-production with one flagship mastery line. ## Definition of Done diff --git a/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md b/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md index 9dcf95c..585b4f9 100644 --- a/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md +++ b/docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md @@ -5,7 +5,7 @@ | Field | Value | |--------|--------| | **Module ID** | E2.M1 | -| **Epic** | [Epic 2 — Classless Progression Framework](../epics/epic_02_classless_progression.md) | +| **Epic** | [Epic 2 — Skills and Progression Framework](../epics/epic_02_skills_and_progression.md) | | **Stage target** | Prototype | | **Status** | Planned (see [dependency register](module_dependency_register.md)) | diff --git a/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md b/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md index 7a99e31..2c9a91d 100644 --- a/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md +++ b/docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md @@ -5,13 +5,13 @@ | Field | Value | |--------|--------| | **Module ID** | E2.M2 | -| **Epic** | [Epic 2 — Classless Progression Framework](../epics/epic_02_classless_progression.md) | +| **Epic** | [Epic 2 — Skills and Progression Framework](../epics/epic_02_skills_and_progression.md) | | **Stage target** | Prototype | | **Status** | Planned (see [dependency register](module_dependency_register.md)) | ## Purpose -Central server-authoritative engine for **classless skill** progression: applying XP grants, resolving levels against data-driven curves, and emitting level-up events. **Gathering** and **crafting** integrate as callers for **skill** XP. **Combat encounters** advance **gigs** (gig XP), not `SkillDef` lines. **Mission rewards** may call this API for **skill** XP when the payout lists a skill grant. Callers are not hard dependencies for implementing the engine core (see Epic 2 Slice 2 vs Slice 3). +Central server-authoritative engine for **non-combat skill** progression: applying XP grants, resolving levels against data-driven curves, and emitting level-up events. **Gathering** and **crafting** integrate as callers for **skill** XP. **Combat encounters** advance **gigs** (gig XP), not `SkillDef` lines. **Mission rewards** may call this API for **skill** XP when the payout lists a skill grant. Callers are not hard dependencies for implementing the engine core (see Epic 2 Slice 2 vs Slice 3). ## Responsibilities diff --git a/docs/decomposition/modules/E2_M3_MasteryAndPerkUnlocks.md b/docs/decomposition/modules/E2_M3_MasteryAndPerkUnlocks.md index a44989c..faffe5c 100644 --- a/docs/decomposition/modules/E2_M3_MasteryAndPerkUnlocks.md +++ b/docs/decomposition/modules/E2_M3_MasteryAndPerkUnlocks.md @@ -5,13 +5,13 @@ | Field | Value | |--------|--------| | **Module ID** | E2.M3 | -| **Epic** | [Epic 2 — Classless Progression Framework](../epics/epic_02_classless_progression.md) | +| **Epic** | [Epic 2 — Skills and Progression Framework](../epics/epic_02_skills_and_progression.md) | | **Stage target** | Pre-production | | **Status** | Planned (see [dependency register](module_dependency_register.md)) | ## Purpose -Mastery tracks and perk unlock state so classless builds have expressive identity beyond raw level curves. +Mastery tracks and perk unlock state so **skill** builds have expressive identity beyond raw level curves. ## Responsibilities diff --git a/docs/decomposition/modules/E2_M4_ProgressionPacingControls.md b/docs/decomposition/modules/E2_M4_ProgressionPacingControls.md index f6d636c..146862d 100644 --- a/docs/decomposition/modules/E2_M4_ProgressionPacingControls.md +++ b/docs/decomposition/modules/E2_M4_ProgressionPacingControls.md @@ -5,7 +5,7 @@ | Field | Value | |--------|--------| | **Module ID** | E2.M4 | -| **Epic** | [Epic 2 — Classless Progression Framework](../epics/epic_02_classless_progression.md) | +| **Epic** | [Epic 2 — Skills and Progression Framework](../epics/epic_02_skills_and_progression.md) | | **Stage target** | Pre-production | | **Status** | Planned (see [dependency register](module_dependency_register.md)) | diff --git a/docs/decomposition/modules/module_dependency_register.md b/docs/decomposition/modules/module_dependency_register.md index 5aba75a..1c15a82 100644 --- a/docs/decomposition/modules/module_dependency_register.md +++ b/docs/decomposition/modules/module_dependency_register.md @@ -17,7 +17,7 @@ Fleshed-out scope, contracts, and integration notes live in **per-module documen | E1.M3 | InteractionAndTargetingLayer | E1.M1 | TargetState, InteractableDescriptor, SelectionEvent | Prototype | Planned | | E1.M4 | AbilityInputScaffold | E1.M3, E5.M1 | AbilityCastRequest, HotbarLoadout, CooldownSnapshot | Prototype | Planned | -### Epic 2 — Classless Progression Framework +### Epic 2 — Skills and Progression Framework | Module ID | Module Name | Depends On | Contract Needed | Phase Required | Status | |---|---|---|---|---|---| diff --git a/docs/decomposition/modules/quest_scope_and_party.md b/docs/decomposition/modules/quest_scope_and_party.md index eb6e04e..04b6a51 100644 --- a/docs/decomposition/modules/quest_scope_and_party.md +++ b/docs/decomposition/modules/quest_scope_and_party.md @@ -9,7 +9,7 @@ This doc fixes **solo vs party** quest behavior: where `QuestStepState` lives, w - **Authoritative state** for a quest is stored **per character** (`QuestStepState` keyed by character / player id, plus quest id and any run id if replays exist). - There is **no** single shared “party quest row” in the prototype model; party play is expressed by **synchronizing advances** across multiple per-character states when content opts in (see below). -**Rationale:** Avoids orphan state when members leave the party, keeps abandon/reset rules simple, and matches “classless solo-friendly” progression with optional co-op credit. +**Rationale:** Avoids orphan state when members leave the party, keeps abandon/reset rules simple, and matches “solo-friendly” progression with optional co-op credit. --- diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 8316438..96a8807 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -2,7 +2,7 @@ Vision-level design for **combat identity**: what you bring to a fight, how you progress, and how you swap roles. **Shared progression framing** and **vocabulary**: [progression.md](progression.md). **Gigs ↔ skills seams** (gear, crafting, consumables, rep): [skills.md](skills.md). This file is the **gig** artifact proper. -**Implementation anchors:** [Epic 5 — PvE combat](../decomposition/epics/epic_05_pve_combat.md); gig XP/progression will need alignment with [Epic 2 — Classless Progression Framework](../decomposition/epics/epic_02_classless_progression.md) when data models split. +**Implementation anchors:** [Epic 5 — PvE combat](../decomposition/epics/epic_05_pve_combat.md); gig XP/progression will need alignment with [Epic 2 — Skills and Progression Framework](../decomposition/epics/epic_02_skills_and_progression.md) when data models split. ## What a gig is diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index b4102fb..1368ffb 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -2,7 +2,7 @@ Shared vision for **how characters grow** in Neon Sprawl: **combat** vs **everything else** use different systems that still live on **one avatar**. Detail docs: **[gigs.md](gigs.md)** (combat roles), **[skills.md](skills.md)** (non-combat skills and **gigs ↔ skills seams**). -**Implementation note:** [Epic 2 — Classless Progression Framework](../decomposition/epics/epic_02_classless_progression.md) (E2.M1–M4): **Slice 3** wires **gather/craft** to **skill** XP (E2.M2), **combat encounters** to **gig XP only**, and allows **mission reward** hooks to grant **skill** XP when scripted—**not** via the combat encounter pipe. **Gig** levels stay **per gig**; exact gig XP module ownership may sit beside E2.M2 or under Epic 5 until the gig data model is finalized. +**Implementation note:** [Epic 2 — Skills and Progression Framework](../decomposition/epics/epic_02_skills_and_progression.md) (E2.M1–M4): **Slice 3** wires **gather/craft** to **skill** XP (E2.M2), **combat encounters** to **gig XP only**, and allows **mission reward** hooks to grant **skill** XP when scripted—**not** via the combat encounter pipe. **Gig** levels stay **per gig**; exact gig XP module ownership may sit beside E2.M2 or under Epic 5 until the gig data model is finalized. ## Vocabulary @@ -17,7 +17,7 @@ Use these terms in **design specs and tools** (fiction may say *job*, *contract* ## Why hybrid - **Gigs** answer “what are you on **this fight**?”—readable roles, **hub swap**, cyberpunk **contract** fantasy, without alts for combat variety. -- **Skills** keep **economy and crafting** **classless**: anyone can raise gather/craft over time; “street doc” can mean high **Medtech fab** **skill** + rep, not only tonight’s gig. +- **Skills** keep **economy and crafting** **open to every character** (independent of **gig**): anyone can raise gather/craft over time; “street doc” can mean high **Medtech fab** **skill** + rep, not only tonight’s gig. - **Specialist fantasy:** a player can **under-invest in gigs** and still **mainline the game** through **skills**—top gatherer, crafter, or tech, with **lots of options** to explore. The **skill roster** is meant to **grow** over time; see [skills.md](skills.md) **Pillars** and **Skill roster**. - **Mission rewards vs combat XP:** **Missions** (contracts, arcs, hand-ins) may **pay skill XP** as an explicit **reward**—separate from the **combat encounter** pipe. Default flow stays **fight → gig XP**; skill XP from an op is **“this job’s payout,”** not **“kills trained my fab skill.”** diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 3fe1df6..fbd1de9 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -4,7 +4,7 @@ Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs **This file also owns the [Seams (gigs ↔ skills)](#seams-gigs-skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). -## Classless skills +## Skills outside combat roles Everything **outside combat role resolution** trains on **skills**. That includes gathering, refining, crafting, non-combat tech work, and other **world interactions** we choose to track as progression. @@ -165,7 +165,7 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ | Area | Tie-in | |------|--------| -| [Epic 2 — Classless Progression Framework](../decomposition/epics/epic_02_classless_progression.md) | Registry, XP engine, mastery, pacing | +| [Epic 2 — Skills and Progression Framework](../decomposition/epics/epic_02_skills_and_progression.md) | Registry, XP engine, mastery, pacing | | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) | Gather and craft **award** skill XP; items and recipes | | [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | Quest rewards, rep gates, optional skill payouts | | [gigs.md](gigs.md) | **Craft** combat gear with **skills**; **equip** with **gigs**—[Seams](#seams-gigs-skills) | diff --git a/docs/reviews/2026-03-31-game-design-skills-coherence.md b/docs/reviews/2026-03-31-game-design-skills-coherence.md index 625d75a..d2316a1 100644 --- a/docs/reviews/2026-03-31-game-design-skills-coherence.md +++ b/docs/reviews/2026-03-31-game-design-skills-coherence.md @@ -23,7 +23,7 @@ Remaining gaps are **expected** for vision docs: stable skill IDs, per-recipe da | `docs/game-design/overview.md` | **Matches** — index, rating vision, artifact table | | `docs/game-design/gigs.md` | **Matches** — sub-gig **Combat gear** bullet now links to `skills.md` **Seams** | | `docs/game-design/README.md` | **Matches** | -| `docs/decomposition/epics/epic_02_classless_progression.md` | **Matches** — **Slice 3**: gather/craft → E2.M2 **skill** XP; **encounters** → **gig** XP; **mission rewards** may grant **skill** XP (no combat `SkillDef` from encounters) | +| `docs/decomposition/epics/epic_02_skills_and_progression.md` | **Matches** — **Slice 3**: gather/craft → E2.M2 **skill** XP; **encounters** → **gig** XP; **mission rewards** may grant **skill** XP (no combat `SkillDef` from encounters) | | `docs/decomposition/epics/epic_03_crafting_economy.md` | **Not re-read in full** — `skills.md` “Where skills meet” cites E3; no contradiction spotted from skills side | | `docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md` | **Matches** — schema + `allowedXpSourceKinds`, categories `gather`/`process`/`make`/`tech`, Slice 1 acceptance criteria | @@ -51,7 +51,7 @@ None for **using the docs as design guidance**. (No incorrect security or author ## Follow-up (applied in this review pass) - `progression.md`: **medic fab** → **Medtech fab** (consistent with roster). -- `epic_02_classless_progression.md` **Slice 1** scope: **non-combat** trio aligned with `skills.md` / gigs hybrid (see commit). +- `epic_02_skills_and_progression.md` **Slice 1** scope: **non-combat** trio aligned with `skills.md` / gigs hybrid (see commit). - `skills.md`: **Tech** category row aligned with full Tech roster (exploit dev, crypto & identity). - `gigs.md`: sub-gig **Combat gear** → link to `skills.md` **Seams**. - `AGENTS.md`: **Docs review** agent row → `.cursor/rules/docs-review-agent.md`. diff --git a/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md index 59953d2..ce3cc90 100644 --- a/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md +++ b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md @@ -10,7 +10,7 @@ ## Summary -Compared to `main`, this branch adds the **`docs/game-design/`** corpus (`overview`, `progression`, `skills`, `gigs`, `README`, `brainstorm/`), extends **Epic 2** and **E2.M1/E2.M2** to match that vision, introduces **`content/schemas/skill-def.schema.json`** with **`allowedXpSourceKinds`**, replaces prototype skills with three **non-combat** rows, and adds the **docs review** agent plus an earlier coherence review file. Cross-links between game-design and decomposition are generally consistent. One **stale sentence** in **Epic 2 Objective** implied combat fed the same “classless skill” model as gather/craft; that line is **updated** during this review to match **`progression.md`** / **Slice 3**. +Compared to `main`, this branch adds the **`docs/game-design/`** corpus (`overview`, `progression`, `skills`, `gigs`, `README`, `brainstorm/`), extends **Epic 2** and **E2.M1/E2.M2** to match that vision, introduces **`content/schemas/skill-def.schema.json`** with **`allowedXpSourceKinds`**, replaces prototype skills with three **non-combat** rows, and adds the **docs review** agent plus an earlier coherence review file. Cross-links between game-design and decomposition are generally consistent. One **stale sentence** in **Epic 2 Objective** implied combat fed the same **skill-XP** pipeline as gather/craft; that line is **updated** during this review to match **`progression.md`** / **Slice 3**. ## Documentation checked @@ -22,7 +22,7 @@ Compared to `main`, this branch adds the **`docs/game-design/`** corpus (`overvi | `docs/game-design/gigs.md` | New | **Matches** gig XP rules, link to **Seams**, combat vs skill boundary | | `docs/game-design/README.md` | New | **Matches** entry to `overview` / `progression` / brainstorm | | `docs/game-design/brainstorm/*` | New | **Matches** “ideas only”; links to `skills.md` resolve | -| `docs/decomposition/epics/epic_02_classless_progression.md` | Updated | **Matches** after **Objective** paragraph fix (hybrid model explicit); Slice 1/3/DoD align | +| `docs/decomposition/epics/epic_02_skills_and_progression.md` | Updated | **Matches** after **Objective** paragraph fix (hybrid model explicit); Slice 1/3/DoD align | | `docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md` | Updated | **Matches** schema paths, categories, acceptance criteria | | `docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md` | Updated | **Matches** `sourceKind` validation, gig vs skill callers | | `content/schemas/skill-def.schema.json` | Updated | **Matches** game-design categories (`gather`/`process`/`make`/`tech`); no combat `SkillDef` | @@ -33,7 +33,7 @@ Compared to `main`, this branch adds the **`docs/game-design/`** corpus (`overvi | `docs/reviews/2026-03-31-game-design-skills-coherence.md` | New | Prior focused review; still consistent with branch after later edits | | `docs/decomposition/epics/epic_03_crafting_economy.md` | Unchanged | **Spot-check:** gather/craft → skill XP via E2.M2 — **no contradiction** | | `docs/decomposition/modules/client_server_authority.md` | Unchanged | **Nit:** combat path still says “`SkillDef`” in one line — likely **ability/stats** semantics, not non-combat skill catalog; clarify when combat data model is written | -| `neon_sprawl_vision.plan.md` | Unchanged | **Spot-check:** Epic 2 bullets generic — **no direct conflict** with hybrid detail in epics | +| `neon_sprawl_vision.plan.md` | Updated later | Epic 2 / pillars align with **gigs + skills** hybrid (see current plan text) | | `.vscode/launch.json`, `.vscode/tasks.json` | New | **N/A** (editor config, not design docs) | ## Blocking issues @@ -49,7 +49,7 @@ None for **using the branch as design + schema guidance**. ## Nits -- ~~**Epic title vs filename:**~~ **Addressed** — epic H1 and vision plan use **Classless Progression Framework** (matches `epic_02_classless_progression.md`); cross-links use the same name. +- ~~**Epic title vs filename:**~~ **Addressed** — epic file is **`epic_02_skills_and_progression.md`** with H1 **Skills and Progression Framework**; cross-links match. - **`module_dependency_register.md`:** E2.M1 row could list **`allowedXpSourceKinds`** in the contract column when you next touch the register (cosmetic). - **Two review files:** `2026-03-31-…` vs this `2026-04-03-…` — keep both; this one is **branch-wide vs main**, the other is **skills-focused**. @@ -61,8 +61,8 @@ None for **using the branch as design + schema guidance**. ## Follow-up (applied during this review pass) -- `epic_02_classless_progression.md` **Objective**: hybrid **skill** vs **gig** wording + links to `progression.md` and E2.M2. -- `epic_02_classless_progression.md` **E2.M1** module stub: non-combat **`SkillDef`**, categories, **`allowedXpSourceKinds`**, links to E2.M1 module + JSON Schema. +- `epic_02_skills_and_progression.md` **Objective**: hybrid **skill** vs **gig** wording + links to `progression.md` and E2.M2. +- `epic_02_skills_and_progression.md` **E2.M1** module stub: non-combat **`SkillDef`**, categories, **`allowedXpSourceKinds`**, links to E2.M1 module + JSON Schema. - **Content CI:** `.github/workflows/pr-gate.yml` + `scripts/validate_content.py` + `scripts/requirements-content.txt`; CT.M1 / E2.M1 / `content/README` / internal-content-authoring updates. - **Decomposition language CI:** `scripts/check_decomposition_language.py` + PR gate + CT.M1 / docs-review-agent notes. -- **Epic 2 naming:** H1 + `neon_sprawl_vision.plan.md` + module/game-design link text → **Classless Progression Framework**. +- **Epic 2 naming:** Renamed epic doc + **Skills and Progression Framework** (dropped misleading “classless” now that **gigs** are combat roles). diff --git a/neon_sprawl_vision.plan.md b/neon_sprawl_vision.plan.md index 4b56ff8..f11e4d5 100644 --- a/neon_sprawl_vision.plan.md +++ b/neon_sprawl_vision.plan.md @@ -1,6 +1,6 @@ --- name: Neon Sprawl Vision -overview: Create a 50,000-foot planning document for Neon Sprawl, a sci-fi/cyberpunk MMORPG inspired by RuneScape, focused on classless progression and deep crafting, with optional PvP and questing. +overview: Create a 50,000-foot planning document for Neon Sprawl, a sci-fi/cyberpunk MMORPG inspired by RuneScape, focused on hybrid progression (combat **gigs** and open non-combat **skills**) and deep crafting, with optional PvP and questing. isProject: false --- @@ -17,7 +17,7 @@ isProject: false ### Experience Pillars -- **Classless mastery:** Every character can learn and level every skill over time; identity comes from choices, gear, economy role, and mastery paths. +- **Open skill training:** Every character can learn and level every **non-combat** **skill** over time; **combat** identity uses **gigs** (swappable roles). Identity also comes from choices, gear, economy role, and mastery paths. - **Crafting-first economy:** Crafting and gathering are central progression loops, not side systems; player-made goods should matter at every stage. - **Persistent social world:** Shared hubs, guilds/corps, trading, and cooperative activities should be core to retention. - **Meaningful progression:** Long-term goals, visible advancement, and layered progression loops (short, mid, long horizons). @@ -298,11 +298,11 @@ Transform the validated prototype into a scalable production-ready development m - **Scope:** Isometric camera runtime, character movement, interaction framework, input/ability scaffolding, moment-to-moment game feel. - **Success criteria:** Stable 3D isometric control loop feels responsive and readable across supported hardware tiers. -### Epic 2 - Classless Progression Framework +### Epic 2 - Skills and Progression Framework - **Ownership focus:** Systems Design + Gameplay Engineering -- **Scope:** Skill definitions, XP curves, unlock logic, mastery/perk unlocks, progression pacing controls. -- **Success criteria:** Any character can train all skills, and progression remains long-term without dead-end grinds. +- **Scope:** **Non-combat** `SkillDef` catalog, **skill** XP and level curves, unlock logic, mastery/perk unlocks, progression pacing controls. **Combat role** progression (**gigs**) is separate—see Epic 5 and game-design `gigs.md`. +- **Success criteria:** Any character can train all **non-combat** **skills** tracked as `SkillDef`, with long-term **skill** progression and no dead-end grinds; **gig** combat roles remain swappable combat identity. ### Epic 3 - Crafting, Gathering, and Itemization Economy @@ -385,10 +385,10 @@ Module template: - Dependencies: E1.M3, E5.M1. - Stage target: Prototype. -### Epic 2 Modules - Classless Progression Framework +### Epic 2 Modules - Skills and Progression Framework - **E2.M1 SkillDefinitionRegistry** - - Responsibility: Central catalog for skill metadata, category tags, unlock prerequisites. + - Responsibility: Central catalog for **non-combat** `SkillDef` metadata, category tags, unlock prerequisites (and **`allowedXpSourceKinds`** in prototype schema). - Key contracts: `SkillDef`, `SkillCategory`, `UnlockRequirement`. - Dependencies: None. - Stage target: Prototype. @@ -398,7 +398,7 @@ Module template: - Dependencies: E2.M1. - Stage target: Prototype. - **E2.M3 MasteryAndPerkUnlocks** - - Responsibility: Mastery tracks and perk unlock state for non-class build expression. + - Responsibility: Mastery tracks and perk unlock state for **skill** build expression beyond raw levels. - Key contracts: `MasteryTrack`, `PerkUnlockEvent`, `PerkState`. - Dependencies: E2.M2. - Stage target: Pre-production. @@ -644,7 +644,7 @@ flowchart TD ```mermaid flowchart TD - E1[CorePlayerRuntime] --> E2[ClasslessProgression] + E1[CorePlayerRuntime] --> E2[SkillsProgression] E1 --> E5[PvECombatEncounters] E4[WorldTopologyZones] --> E5 E4 --> E6[PvPSecurityZones] @@ -767,7 +767,7 @@ flowchart TD flowchart TD Vision[ProductVision] --> Pillars[ExperiencePillars] Pillars --> Systems[CoreSystems] - Systems --> Progression[ClasslessSkillProgression] + Systems --> Progression[SkillXpAndMastery] Systems --> Crafting[CraftingAndEconomy] Systems --> Questing[QuestAndFactionContent] Systems --> Combat[CombatAndEncounters] From d1138bfe622e2fc3303f316684eb20c32b264a2c Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:34:49 -0400 Subject: [PATCH 75/91] docs: E2.M1 contract column lists allowedXpSourceKinds (nit #2) --- docs/decomposition/modules/module_dependency_register.md | 2 +- .../2026-04-03-branch-chore-game-design-docs-vs-main.md | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/decomposition/modules/module_dependency_register.md b/docs/decomposition/modules/module_dependency_register.md index 1c15a82..6e99a08 100644 --- a/docs/decomposition/modules/module_dependency_register.md +++ b/docs/decomposition/modules/module_dependency_register.md @@ -21,7 +21,7 @@ Fleshed-out scope, contracts, and integration notes live in **per-module documen | Module ID | Module Name | Depends On | Contract Needed | Phase Required | Status | |---|---|---|---|---|---| -| E2.M1 | SkillDefinitionRegistry | None | SkillDef, SkillCategory, UnlockRequirement | Prototype | Planned | +| E2.M1 | SkillDefinitionRegistry | None | SkillDef, SkillCategory, UnlockRequirement, allowedXpSourceKinds | Prototype | Planned | | E2.M2 | XpAwardAndLevelEngine | E2.M1 | XpGrantEvent, LevelCurve, LevelUpEvent | Prototype | Planned | | E2.M3 | MasteryAndPerkUnlocks | E2.M2 | MasteryTrack, PerkUnlockEvent, PerkState | Pre-production | Planned | | E2.M4 | ProgressionPacingControls | E2.M2, E9.M2 | XpModifierProfile, CatchUpRule, PacingPolicy | Pre-production | Planned | diff --git a/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md index ce3cc90..b93ddc6 100644 --- a/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md +++ b/docs/reviews/2026-04-03-branch-chore-game-design-docs-vs-main.md @@ -50,7 +50,7 @@ None for **using the branch as design + schema guidance**. ## Nits - ~~**Epic title vs filename:**~~ **Addressed** — epic file is **`epic_02_skills_and_progression.md`** with H1 **Skills and Progression Framework**; cross-links match. -- **`module_dependency_register.md`:** E2.M1 row could list **`allowedXpSourceKinds`** in the contract column when you next touch the register (cosmetic). +- ~~**`module_dependency_register.md`:** E2.M1 **Contract Needed**~~ **Addressed** — includes **`allowedXpSourceKinds`**. - **Two review files:** `2026-03-31-…` vs this `2026-04-03-…` — keep both; this one is **branch-wide vs main**, the other is **skills-focused**. ## Verification @@ -66,3 +66,4 @@ None for **using the branch as design + schema guidance**. - **Content CI:** `.github/workflows/pr-gate.yml` + `scripts/validate_content.py` + `scripts/requirements-content.txt`; CT.M1 / E2.M1 / `content/README` / internal-content-authoring updates. - **Decomposition language CI:** `scripts/check_decomposition_language.py` + PR gate + CT.M1 / docs-review-agent notes. - **Epic 2 naming:** Renamed epic doc + **Skills and Progression Framework** (dropped misleading “classless” now that **gigs** are combat roles). +- **module_dependency_register:** E2.M1 **Contract Needed** lists **`allowedXpSourceKinds`**. From c90c5baa41bf56ba8cda25a044ca3a76185b2ef5 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:39:43 -0400 Subject: [PATCH 76/91] docs: add game-design abilities.md and wire cross-links - Taxonomy: gig combat abilities, skill interactions, item channels - Decisions log + open questions; links to Seams, E1.M4, E5.M1, Epic 2/5/7 - overview, progression, gigs, skills, README; docs-review-agent ground truth --- .cursor/rules/docs-review-agent.md | 2 +- docs/game-design/README.md | 2 +- docs/game-design/abilities.md | 63 ++++++++++++++++++++++++++++++ docs/game-design/gigs.md | 4 +- docs/game-design/overview.md | 5 ++- docs/game-design/progression.md | 1 + docs/game-design/skills.md | 4 +- 7 files changed, 73 insertions(+), 8 deletions(-) create mode 100644 docs/game-design/abilities.md diff --git a/.cursor/rules/docs-review-agent.md b/.cursor/rules/docs-review-agent.md index 39c756d..054ec43 100644 --- a/.cursor/rules/docs-review-agent.md +++ b/.cursor/rules/docs-review-agent.md @@ -26,7 +26,7 @@ Use this rule when the user is working in **`docs/`** (design, decomposition, pl ## Ground truth (required to check) 1. **Same folder and upstream links** — Read every `docs/...` link from the target doc(s); verify paths exist and headings match intent. -2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`: **Gig** = combat role; **Skill** = non-combat; **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Mission/quest rewards** may still grant **skill XP** when explicitly defined—separate from the encounter **gig XP** path. +2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Mission/quest rewards** may still grant **skill XP** when explicitly defined—separate from the encounter **gig XP** path. 3. **Decomposition** — Map claims to `docs/decomposition/epics/` and `docs/decomposition/modules/` where relevant; flag **conflicts** (e.g. “combat skill” vs skills-as-non-combat). **CI** enforces a minimal guard via [`scripts/check_decomposition_language.py`](../../scripts/check_decomposition_language.py) in the **PR gate** (extend the script if a vetted exception is needed). 4. **Plans** — If work maps to `docs/plans/`, check for **acceptance criteria** vs design doc (same spirit as [code-review-agent](code-review-agent.md) plan alignment). diff --git a/docs/game-design/README.md b/docs/game-design/README.md index f52af3e..33459ed 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -6,6 +6,6 @@ **Brainstorm-only** (not specs): [`brainstorm/`](brainstorm/README.md). -Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), zones, mechanics, items, abilities, and other design artifacts before they are tied to concrete systems or tickets. +Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), zones, mechanics, items, and other design artifacts before they are tied to concrete systems or tickets. Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). diff --git a/docs/game-design/abilities.md b/docs/game-design/abilities.md new file mode 100644 index 0000000..2fdfe52 --- /dev/null +++ b/docs/game-design/abilities.md @@ -0,0 +1,63 @@ +# Abilities (player actions) + +Vision for **what the player triggers** in play: combat **kits**, non-combat **skill interactions**, and **item**-carried actions—and how those map to **gigs**, **`SkillDef`**, and **Seams**. This is **not** a full ability list or data schema; it steers combat design, UX, and implementation boundaries. + +**Framing:** [progression.md](progression.md) (**gig** vs **skill**). **Combat roles:** [gigs.md](gigs.md). **Gear, craft, consumables:** [skills.md](skills.md) **Seams** ([anchor](skills.md#seams-gigs-skills)). + +## Vocabulary + +| Term | Means | +|------|--------| +| **Combat ability** | An action **resolved in the combat loop** (damage, heal, control, buff, movement trick, etc.) that is **authorized by the player’s gig kit**—not by a non-combat **`SkillDef`** line. Unlocks and tuning track **gig level** (and **sub-gig** rules below). | +| **Skill interaction** | A **non-combat** action gated by **skills** and content: gather, craft, hack a door, use a bench, run a **skill-based encounter** slice. Uses **world / economy** systems; **not** the same contract as tab-target **combat** abilities unless we deliberately unify UX later (**open**). | +| **Item channel** | An effect delivered **through an item**: use a consumable, trigger a **weapon or gear** special, **combat-deploy** a Rigging drone, etc. **Whether** it counts as a “combat ability” for the engine is **data-defined** per item and gig match—see **Seams** and **Consumables** in [skills.md](skills.md). | + +## Gig abilities (combat kit) + +- **Source of truth:** the player’s **main gig** defines the **primary** combat kit: which abilities exist, their **unlock rungs** on that gig’s level track, and baseline **party readability** (tank, heal, control, damage, etc.—[gigs.md](gigs.md)). +- **Sub-gig:** adds a **limited** set of **cross-gig** abilities at **effective sub level** (capped vs main—[gigs.md](gigs.md) **Main gig + sub-gig**). Sub supports expression; it does **not** earn **gig XP** while equipped as sub. +- **Progression:** **gig XP** and **gig level** unlock kit rows; **`SkillDef`** XP does **not** replace gig unlocks for combat buttons ([progression.md](progression.md), [Epic 2 — Skills and Progression Framework](../decomposition/epics/epic_02_skills_and_progression.md) Slice 3). +- **Input / UX:** client **hotbar** and targeting feed **combat cast intent** into the authoritative combat rules ([E1.M4 — AbilityInputScaffold](../decomposition/modules/E1_M4_AbilityInputScaffold.md) → [E5.M1 — CombatRulesEngine](../decomposition/modules/E5_M1_CombatRulesEngine.md)). + +## Skill interactions (non-combat) + +- **No combat `SkillDef`:** raising **Salvage** or **Intrusion** does **not** by itself add buttons to the **combat** hotbar; it opens **non-combat** loops and gates ([skills.md](skills.md)). +- **Exception carve-out (design space):** **Tech** that **looks** like “hacking in a fight” may be implemented as **gig** kit (netrunner gig) **or** as **skill-gated** world/object interactions **around** combat—**split** is documented in [skills.md](skills.md) **Tech** / **gig kit** notes; avoid silent double-stacking the same fantasy (**open** until kits are authored). +- **Mission / instance design:** same run can mix **skill** objectives and **gig** combat ([brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md)). + +## Item-linked actions and Seams + +- **Combat gear** (weapons, armor, **Rigging** combat deployables) can **enable**, **modify**, or **channel** abilities according to **gig** allow lists—**craft** stays **skill**/recipe; **field use** stays **gig**-gated where [skills.md](skills.md) **Seams** say so. +- **Consumables:** baseline **use** is not gig-gated; **passive** amps may scale with **main or sub** gig match; **active** consumable abilities—**open** per item ([skills.md](skills.md) **Consumables** row). +- **Cybernetics:** **not** gig-gated for **having** chrome; whether an implant adds a **combat** button is **content**—must still respect server authority and gig readability (**open** catalog). + +## Readability (PvE baseline) + +- **Party scan:** players should infer **role** from **gig** + visible **ability bar** / cast patterns, not from hidden skill grinds. +- **Telegraphs and tab-target:** combat abilities favor **clear** enemy-facing signals and **readable** timing—detail lives in future **combat pillars** ([overview.md](overview.md) stub) and [Epic 5 — PvE combat](../decomposition/epics/epic_05_pve_combat.md). + +## Decisions log + +| Topic | Direction | Status | +|-------|-----------|--------| +| Combat ability ownership | **Gig kit** + **item channels** per data; **not** unlocked by **`SkillDef`** XP | Agreed | +| Sub-gig combat abilities | **Limited** kit at **effective sub level**; no sub **gig XP** from combat | Agreed ([gigs.md](gigs.md)) | +| Non-combat actions | **`SkillDef`** / world gates; **separate** from combat hotbar by default | Agreed | +| Consumable actives | Per-item rules; **passive** gig amp from main or sub where designed | Agreed direction ([skills.md](skills.md)) | +| Same fantasy, two systems (e.g. netrun) | **Gig** vs **skill** split explicit in content; avoid duplicate **open** | Open | + +## Open questions + +- **Combat pillars** doc: TTK bands, interrupt rules, friendly-fire posture—stub in [overview.md](overview.md). +- **Ability count per gig**, **resource types** (energy, ammo, heat), and **ground-target** vs **single-target** mix for isometric presentation. +- **Pets / summons / persistent deployables** as ability carriers vs pure **item deploy**—Rigging + gig kit intersection. + +## Where to read next + +| Topic | Document | +|--------|----------| +| Gig roster, hub swap, XP | [gigs.md](gigs.md) | +| Seams (gear, craft, consumables) | [skills.md](skills.md) | +| Hybrid vocabulary | [progression.md](progression.md) | +| Encounter rewards + combat hooks | [Epic 5](../decomposition/epics/epic_05_pve_combat.md), [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | +| Input → combat | [E1.M4](../decomposition/modules/E1_M4_AbilityInputScaffold.md), [E5.M1](../decomposition/modules/E5_M1_CombatRulesEngine.md) | diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 96a8807..cddc4a4 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -129,7 +129,7 @@ Detail: seams table in [skills.md](skills.md). ## Next artifacts -- [Abilities](overview.md) — **gig-locked** kits, sub-gig ability rules, telegraphs ([Epic 5](../decomposition/epics/epic_05_pve_combat.md)). -- [Combat pillars](overview.md) — PvE readability, TTK, risk ([overview](overview.md)). +- [abilities.md](abilities.md) — **gig-locked** kits, sub-gig ability rules, telegraphs ([Epic 5](../decomposition/epics/epic_05_pve_combat.md)). +- [Combat pillars](overview.md) — PvE readability, TTK, risk ([overview](overview.md); stub until a dedicated doc ships). - [Items](overview.md) — equip tags per gig; crafted vs dropped. - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group content where **gigs** hold security while **skills** run the hack (brainstorm). diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index ab3c89a..72191cd 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,7 +6,7 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. -**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). +**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). ## Presentation and target rating (vision) @@ -25,6 +25,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | [progression.md](progression.md) | Shared **gig + skill** vision, vocabulary, links | Start here for progression | | [skills.md](skills.md) | Non-combat **skills**; seams; **v0 skill roster** by category | With [gigs.md](gigs.md); roster encodes **Hardshell** / **Softshell** / **Edgesmith** / **Rigging** equip vs **combat-deploy** rules ([Seams](skills.md#seams-gigs-skills)) | | [gigs.md](gigs.md) | **9-gig roster** (v1 cyberpunk names); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | +| [abilities.md](abilities.md) | **Combat** gig kits vs **skill** interactions vs **item** channels; Seams hooks | With [gigs.md](gigs.md), [skills.md](skills.md); **combat pillars** still stub in this overview | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | | *(add rows as files land)* | | | @@ -37,7 +38,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. - **Items** — categories, rarity philosophy, crafting vs. drops. -- **Abilities** — inputs, timing; combo with items; **gig** vs **skill** gates (see [progression.md](progression.md) vocabulary). +- **Abilities** — [abilities.md](abilities.md): inputs, timing; combo with items; **gig** vs **skill** gates (see [progression.md](progression.md) vocabulary). **Combat pillars** stub remains below until written. - **Gathering & resources** — nodes, competition, exhaustion, what “open world” contesting feels like. - **Crafting & recipes** — depth vs. breadth, failure, specialization; pairs with items but is its own loop. - **Economy** — currency velocity, sinks, trade vs. self-sufficiency, how wealth shows up in play. diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index 1368ffb..23288a0 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -26,6 +26,7 @@ Use these terms in **design specs and tools** (fiction may say *job*, *contract* | Topic | Document | |--------|-----------| | Gig roster, hub swap, sub-gig, XP, party/PvP notes | [gigs.md](gigs.md) | +| Combat vs non-combat **actions** (kits, skill interactions, items) | [abilities.md](abilities.md) | | Skill domains, categories, XP curves, gates, mastery | [skills.md](skills.md) | | **Seams** (combat gear vs craft, consumables, rep, alts) | [skills.md](skills.md) (section *Seams (gigs ↔ skills)*) | | Loose ideas | [brainstorm/](brainstorm/README.md) | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index fbd1de9..03c1e6c 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,6 +1,6 @@ # Skills (non-combat progression) -Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. +Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **This file also owns the [Seams (gigs ↔ skills)](#seams-gigs-skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). @@ -248,6 +248,6 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ ## Next artifacts - **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment **deferred**; **PvP** gig rules **open indefinite** (overall PvP scope TBD). -- **Abilities** — **gig-locked** vs. **item-locked** vs. **skill-gated**. +- **[abilities.md](abilities.md)** — **gig** combat kits vs **skill** interactions vs **item** channels (written). - **Items** — **equip / combat-deploy:** gig rules for **combat gear**; **non-combat** **Rigging** / **utility** **use** vs specialty **skills**; **cybernetics** character-wide; **craft:** **skills** only—never gig level ([Seams](#seams-gigs-skills)). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From 940cc71840f0bd94bcf4fcf14dd5564005c72c7b Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:42:18 -0400 Subject: [PATCH 77/91] chore: add game-design items doc and cross-links - Add items.md (buckets, acquisition, rarity, loadouts, open questions) - Link from overview, progression, skills, gigs, abilities, README - Include items.md in docs-review-agent ground-truth list - Fix content README path in items.md --- .cursor/rules/docs-review-agent.md | 2 +- docs/game-design/README.md | 2 +- docs/game-design/abilities.md | 3 +- docs/game-design/gigs.md | 2 +- docs/game-design/items.md | 61 ++++++++++++++++++++++++++++++ docs/game-design/overview.md | 5 ++- docs/game-design/progression.md | 1 + docs/game-design/skills.md | 4 +- 8 files changed, 72 insertions(+), 8 deletions(-) create mode 100644 docs/game-design/items.md diff --git a/.cursor/rules/docs-review-agent.md b/.cursor/rules/docs-review-agent.md index 054ec43..197df3c 100644 --- a/.cursor/rules/docs-review-agent.md +++ b/.cursor/rules/docs-review-agent.md @@ -26,7 +26,7 @@ Use this rule when the user is working in **`docs/`** (design, decomposition, pl ## Ground truth (required to check) 1. **Same folder and upstream links** — Read every `docs/...` link from the target doc(s); verify paths exist and headings match intent. -2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Mission/quest rewards** may still grant **skill XP** when explicitly defined—separate from the encounter **gig XP** path. +2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Mission/quest rewards** may still grant **skill XP** when explicitly defined—separate from the encounter **gig XP** path. 3. **Decomposition** — Map claims to `docs/decomposition/epics/` and `docs/decomposition/modules/` where relevant; flag **conflicts** (e.g. “combat skill” vs skills-as-non-combat). **CI** enforces a minimal guard via [`scripts/check_decomposition_language.py`](../../scripts/check_decomposition_language.py) in the **PR gate** (extend the script if a vetted exception is needed). 4. **Plans** — If work maps to `docs/plans/`, check for **acceptance criteria** vs design doc (same spirit as [code-review-agent](code-review-agent.md) plan alignment). diff --git a/docs/game-design/README.md b/docs/game-design/README.md index 33459ed..faeca6c 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -6,6 +6,6 @@ **Brainstorm-only** (not specs): [`brainstorm/`](brainstorm/README.md). -Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), zones, mechanics, items, and other design artifacts before they are tied to concrete systems or tickets. +Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). diff --git a/docs/game-design/abilities.md b/docs/game-design/abilities.md index 2fdfe52..3036de3 100644 --- a/docs/game-design/abilities.md +++ b/docs/game-design/abilities.md @@ -2,7 +2,7 @@ Vision for **what the player triggers** in play: combat **kits**, non-combat **skill interactions**, and **item**-carried actions—and how those map to **gigs**, **`SkillDef`**, and **Seams**. This is **not** a full ability list or data schema; it steers combat design, UX, and implementation boundaries. -**Framing:** [progression.md](progression.md) (**gig** vs **skill**). **Combat roles:** [gigs.md](gigs.md). **Gear, craft, consumables:** [skills.md](skills.md) **Seams** ([anchor](skills.md#seams-gigs-skills)). +**Framing:** [progression.md](progression.md) (**gig** vs **skill**). **Combat roles:** [gigs.md](gigs.md). **Gear, craft, consumables:** [skills.md](skills.md) **Seams** ([anchor](skills.md#seams-gigs-skills)). **Item buckets & acquisition:** [items.md](items.md). ## Vocabulary @@ -57,6 +57,7 @@ Vision for **what the player triggers** in play: combat **kits**, non-combat **s | Topic | Document | |--------|----------| | Gig roster, hub swap, XP | [gigs.md](gigs.md) | +| Item categories, craft vs loot | [items.md](items.md) | | Seams (gear, craft, consumables) | [skills.md](skills.md) | | Hybrid vocabulary | [progression.md](progression.md) | | Encounter rewards + combat hooks | [Epic 5](../decomposition/epics/epic_05_pve_combat.md), [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index cddc4a4..06d7666 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -131,5 +131,5 @@ Detail: seams table in [skills.md](skills.md). - [abilities.md](abilities.md) — **gig-locked** kits, sub-gig ability rules, telegraphs ([Epic 5](../decomposition/epics/epic_05_pve_combat.md)). - [Combat pillars](overview.md) — PvE readability, TTK, risk ([overview](overview.md); stub until a dedicated doc ships). -- [Items](overview.md) — equip tags per gig; crafted vs dropped. +- [items.md](items.md) — **combat gear** vs chrome vs consumables; craft vs loot; loadout + swap ([Seams](skills.md#seams-gigs-skills)). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group content where **gigs** hold security while **skills** run the hack (brainstorm). diff --git a/docs/game-design/items.md b/docs/game-design/items.md new file mode 100644 index 0000000..61cb2f8 --- /dev/null +++ b/docs/game-design/items.md @@ -0,0 +1,61 @@ +# Items (loot, craft, equip) + +Vision for **what exists in the world as tangible “things”**: how items are **categorized**, **acquired**, **gated** by **gigs** vs **skills**, and how they connect to **combat**, **economy**, and **quests**. Not an `ItemDef` schema—that lives under [Epic 3 — Crafting economy](../decomposition/epics/epic_03_crafting_economy.md) and [`content/`](../../content/README.md) when wired. + +**Seams (authoritative detail):** [skills.md — Seams (gigs ↔ skills)](skills.md#seams-gigs-skills). **Actions from items:** [abilities.md](abilities.md) **Item-linked actions**. **Hybrid vocabulary:** [progression.md](progression.md). + +## Buckets (design-facing) + +These overlap in data; they are **lenses** for writers and systems. + +| Bucket | Role | Gig vs skill (summary) | +|--------|------|-------------------------| +| **Combat gear** | Weapons, **Hardshell** / **Softshell** / **Rigging**-built powered shells worn as loadout, **combat deployables** (e.g. fight drones)—**swap-friendly** | **Craft:** **skills** only. **Equip / wear / combat-deploy / activation in combat:** **gig**-tagged ([Seams](skills.md#seams-gigs-skills)). | +| **Cybernetics** | Body-integrated augments—**semi-permanent** | **Craft / install:** **skills** + world gates. **Not** removed by **gig swap**; **not** the same bucket as external armor ([Seams](skills.md#seams-gigs-skills)). | +| **Consumables** | Stims, patches, ammo-adjacent one-shots, etc. | **Carry / use** baseline **not** gig-gated; **passive** amps may scale with **main or sub** gig match (**open** actives per item). | +| **Non-combat Make** | Tools, **Food synth** outputs, civ gear, **utility Rigging** (harnesses, survey drones, **backpacks**) | **Craft:** recipe **skills**. **Use:** **skill**-gated when the item defines a **specialty**; some utilities have **no** use gate ([Seams](skills.md#seams-gigs-skills)). | +| **Materials & intermediates** | Ores, refinery grades, components, data objects, organics | Feed **recipes** and **economy depth**; usually **no** gig hook unless a piece is explicitly hybrid (**open**). | + +## Acquisition + +- **Crafted:** Primary fantasy for **durables** that matter in combat and economy—**player-made goods stay relevant** across stages ([Epic 3](../decomposition/epics/epic_03_crafting_economy.md) success criteria). +- **Dropped / looted / salvaged:** Feed **gather–refine–craft** loops and **world fiction**; tuning is **content + economy policy** (**open** drop tables). +- **Mission & vendor rewards:** Can grant **items** or **skill XP** separately from combat XP pipes ([progression.md](progression.md)); avoid double-dipping the same milestone without intent (**open** reward UX). +- **Trade:** Craft-for-others is **valid** even when the buyer cannot **equip** or **combat-deploy** the product ([Seams](skills.md#seams-gigs-skills) **Crafting combat gear**). + +## Rarity, quality, and readability + +- **Rarity** (or tier) signals **expectations**: availability, mod slots, repair cost, **faction** hooks—exact bands **data-driven** later. +- **Quality** within a tier may reflect **craft skill**, **recipe mastery**, or **material grade**—**open** math; directionally **crafting should compete with drops** where the economy needs it. +- **Tooltips** should expose **gig** match for **combat gear** and **consumable** amps, **intended skill** for specialty **non-combat** tools, and a **clear** lane for **cybernetics** vs **external armor** ([skills.md](skills.md) **Player-facing readability**). + +## Gig swap and loadouts + +- **Hub-only** [gig swap](gigs.md#hub-swap): **combat gear** may **invalidate** until the player **re-banks or re-equips**; **cybernetics** stay. +- **Presets** (per gig pair, per role) vs **manual** fix-up—**open** UX ([gigs.md](gigs.md), [abilities.md](abilities.md)). + +## Decisions log + +| Topic | Direction | Status | +|-------|-----------|--------| +| Craft vs equip split | **Bench** = **skill**/recipe; **combat field use** of most **non-consumable** **Make** = **gig**-gated | Agreed ([Seams](skills.md#seams-gigs-skills)) | +| Cybernetics vs armor | **No** bucket overlap; chrome is **character**-scoped; plates are **loadout** | Agreed | +| Consumable baseline | Anyone can **use**; **optional** gig-tuned **passive** potency | Agreed direction | +| Craft without gig | Allowed; **trade** and **group** play supported | Agreed | +| Player crafting relevance | **Crafting** is a **primary** progression lane—not only consumables | Agreed ([Epic 3](../decomposition/epics/epic_03_crafting_economy.md)) | + +## Open questions + +- **Durability, repair, sinks**—when items leave the economy ([E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md)); how hard **death** hits gear (**open** with death doc). +- **Binding**, **insurance**, **theft** in which **security tiers** ([overview.md](overview.md) risk stubs). +- **Named crafter**, **provenance**, **counterfeits**—social/economy flavor vs implementation cost. +- **Stacking**, **charges**, **mod slots**—per category defaults. + +## Where to read next + +| Topic | Document / module | +|--------|-------------------| +| Gig ↔ item rules (detail) | [skills.md](skills.md) **Seams** | +| Abilities from items | [abilities.md](abilities.md) | +| Gathering & recipes (runtime) | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md), [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md), [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | +| Encounter loot routing | [E5.M3](../decomposition/modules/E5_M3_EncounterAndRewardTables.md), [E7.M2](../decomposition/modules/E7_M2_RewardAndUnlockRouter.md) | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 72191cd..64c48db 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,7 +6,7 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. -**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). +**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). ## Presentation and target rating (vision) @@ -26,6 +26,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | [skills.md](skills.md) | Non-combat **skills**; seams; **v0 skill roster** by category | With [gigs.md](gigs.md); roster encodes **Hardshell** / **Softshell** / **Edgesmith** / **Rigging** equip vs **combat-deploy** rules ([Seams](skills.md#seams-gigs-skills)) | | [gigs.md](gigs.md) | **9-gig roster** (v1 cyberpunk names); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | | [abilities.md](abilities.md) | **Combat** gig kits vs **skill** interactions vs **item** channels; Seams hooks | With [gigs.md](gigs.md), [skills.md](skills.md); **combat pillars** still stub in this overview | +| [items.md](items.md) | Buckets (gear, chrome, consumables, mats); craft vs drops; rarity/readability | **Seams** in [skills.md](skills.md); **Epic 3** for implementation | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | | *(add rows as files land)* | | | @@ -37,7 +38,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Zones** — tone, danger, faction or economic role of a place. - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. -- **Items** — categories, rarity philosophy, crafting vs. drops. +- **Items** — [items.md](items.md): categories, rarity philosophy, crafting vs. drops; **Seams** for gig/skill gates. - **Abilities** — [abilities.md](abilities.md): inputs, timing; combo with items; **gig** vs **skill** gates (see [progression.md](progression.md) vocabulary). **Combat pillars** stub remains below until written. - **Gathering & resources** — nodes, competition, exhaustion, what “open world” contesting feels like. - **Crafting & recipes** — depth vs. breadth, failure, specialization; pairs with items but is its own loop. diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index 23288a0..5d5daec 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -27,6 +27,7 @@ Use these terms in **design specs and tools** (fiction may say *job*, *contract* |--------|-----------| | Gig roster, hub swap, sub-gig, XP, party/PvP notes | [gigs.md](gigs.md) | | Combat vs non-combat **actions** (kits, skill interactions, items) | [abilities.md](abilities.md) | +| **Items** (craft, loot, equip, gig/skill gates) | [items.md](items.md) | | Skill domains, categories, XP curves, gates, mastery | [skills.md](skills.md) | | **Seams** (combat gear vs craft, consumables, rep, alts) | [skills.md](skills.md) (section *Seams (gigs ↔ skills)*) | | Loose ideas | [brainstorm/](brainstorm/README.md) | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 03c1e6c..cd296dc 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,6 +1,6 @@ # Skills (non-combat progression) -Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. +Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **This file also owns the [Seams (gigs ↔ skills)](#seams-gigs-skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). @@ -249,5 +249,5 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ - **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment **deferred**; **PvP** gig rules **open indefinite** (overall PvP scope TBD). - **[abilities.md](abilities.md)** — **gig** combat kits vs **skill** interactions vs **item** channels (written). -- **Items** — **equip / combat-deploy:** gig rules for **combat gear**; **non-combat** **Rigging** / **utility** **use** vs specialty **skills**; **cybernetics** character-wide; **craft:** **skills** only—never gig level ([Seams](#seams-gigs-skills)). +- **[items.md](items.md)** — buckets, craft vs drops, rarity/readability; detail still in [Seams](#seams-gigs-skills). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From f45a5d8c06f83027613143bbd0897c099c4d1694 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:44:49 -0400 Subject: [PATCH 78/91] chore: tie items.md to Epic 3 modules; add combat pillars stub - items.md: E3.M3 contract summary, Epic 3 module map table, expanded where-next - overview.md: Combat pillars vision stub with Items row; fix artifact cross-links - abilities.md: pointer to overview combat pillars stub --- docs/game-design/abilities.md | 2 +- docs/game-design/items.md | 24 ++++++++++++++++++++++-- docs/game-design/overview.md | 21 +++++++++++++++++---- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/docs/game-design/abilities.md b/docs/game-design/abilities.md index 3036de3..e973695 100644 --- a/docs/game-design/abilities.md +++ b/docs/game-design/abilities.md @@ -2,7 +2,7 @@ Vision for **what the player triggers** in play: combat **kits**, non-combat **skill interactions**, and **item**-carried actions—and how those map to **gigs**, **`SkillDef`**, and **Seams**. This is **not** a full ability list or data schema; it steers combat design, UX, and implementation boundaries. -**Framing:** [progression.md](progression.md) (**gig** vs **skill**). **Combat roles:** [gigs.md](gigs.md). **Gear, craft, consumables:** [skills.md](skills.md) **Seams** ([anchor](skills.md#seams-gigs-skills)). **Item buckets & acquisition:** [items.md](items.md). +**Framing:** [progression.md](progression.md) (**gig** vs **skill**). **Combat roles:** [gigs.md](gigs.md). **Gear, craft, consumables:** [skills.md](skills.md) **Seams** ([anchor](skills.md#seams-gigs-skills)). **Item buckets & acquisition:** [items.md](items.md). **Combat pillar pointers:** [overview.md — Combat pillars](overview.md#combat-pillars-vision-stub). ## Vocabulary diff --git a/docs/game-design/items.md b/docs/game-design/items.md index 61cb2f8..0bd66ca 100644 --- a/docs/game-design/items.md +++ b/docs/game-design/items.md @@ -1,6 +1,8 @@ # Items (loot, craft, equip) -Vision for **what exists in the world as tangible “things”**: how items are **categorized**, **acquired**, **gated** by **gigs** vs **skills**, and how they connect to **combat**, **economy**, and **quests**. Not an `ItemDef` schema—that lives under [Epic 3 — Crafting economy](../decomposition/epics/epic_03_crafting_economy.md) and [`content/`](../../content/README.md) when wired. +Vision for **what exists in the world as tangible “things”**: how items are **categorized**, **acquired**, **gated** by **gigs** vs **skills**, and how they connect to **combat**, **economy**, and **quests**. + +**Schema ownership:** [E3.M3 — ItemizationAndInventorySchema](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) versions **`ItemDef`** (template), **`ItemInstance`** (per-item state: stack, durability hook, binds), and **`InventorySlot`** (containers)—that is where **rarity**, **quality**, **stack rules**, and **equipment metadata** land. Broader loop and slices: [Epic 3](../decomposition/epics/epic_03_crafting_economy.md); authored data under [`content/`](../../content/README.md) when wired. **Seams (authoritative detail):** [skills.md — Seams (gigs ↔ skills)](skills.md#seams-gigs-skills). **Actions from items:** [abilities.md](abilities.md) **Item-linked actions**. **Hybrid vocabulary:** [progression.md](progression.md). @@ -34,6 +36,18 @@ These overlap in data; they are **lenses** for writers and systems. - **Hub-only** [gig swap](gigs.md#hub-swap): **combat gear** may **invalidate** until the player **re-banks or re-equips**; **cybernetics** stay. - **Presets** (per gig pair, per role) vs **manual** fix-up—**open** UX ([gigs.md](gigs.md), [abilities.md](abilities.md)). +## Epic 3 module map + +Design **buckets** above are not 1:1 types in data—they inform tags and metadata on **`ItemDef`** / **`ItemInstance`**. Module responsibilities from [Epic 3](../decomposition/epics/epic_03_crafting_economy.md): + +| Module | Role | Ties to this doc | +|--------|------|-------------------| +| [E3.M1](../decomposition/modules/E3_M1_ResourceNodeAndGatherLoop.md) | Nodes, gather, yields | **Materials**; feeds refine/craft | +| [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) | Recipes, craft execution | **Crafted** acquisition; **skills**-only bench | +| [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | `ItemDef` / `ItemInstance` / slots | **All buckets**; rarity/quality/stack/equip | +| [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | Durability, repair, sinks | [Open questions](#open-questions); death doc | +| [E3.M5](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) | Faucets/sinks policy | Drops vs craft **balance**; trade velocity | + ## Decisions log | Topic | Direction | Status | @@ -57,5 +71,11 @@ These overlap in data; they are **lenses** for writers and systems. |--------|-------------------| | Gig ↔ item rules (detail) | [skills.md](skills.md) **Seams** | | Abilities from items | [abilities.md](abilities.md) | -| Gathering & recipes (runtime) | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md), [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md), [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | +| Combat pillars (vision stub) | [overview.md — Combat pillars](overview.md#combat-pillars-vision-stub) | +| Epic 3 loop & slices | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) | +| Gather nodes | [E3.M1](../decomposition/modules/E3_M1_ResourceNodeAndGatherLoop.md) | +| Recipes & craft pipeline | [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) | +| Item schema & inventory | [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | +| Sinks & durability | [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | +| Economy policy | [E3.M5](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) | | Encounter loot routing | [E5.M3](../decomposition/modules/E5_M3_EncounterAndRewardTables.md), [E7.M2](../decomposition/modules/E7_M2_RewardAndUnlockRouter.md) | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 64c48db..539a2fa 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -25,8 +25,8 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | [progression.md](progression.md) | Shared **gig + skill** vision, vocabulary, links | Start here for progression | | [skills.md](skills.md) | Non-combat **skills**; seams; **v0 skill roster** by category | With [gigs.md](gigs.md); roster encodes **Hardshell** / **Softshell** / **Edgesmith** / **Rigging** equip vs **combat-deploy** rules ([Seams](skills.md#seams-gigs-skills)) | | [gigs.md](gigs.md) | **9-gig roster** (v1 cyberpunk names); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | -| [abilities.md](abilities.md) | **Combat** gig kits vs **skill** interactions vs **item** channels; Seams hooks | With [gigs.md](gigs.md), [skills.md](skills.md); **combat pillars** still stub in this overview | -| [items.md](items.md) | Buckets (gear, chrome, consumables, mats); craft vs drops; rarity/readability | **Seams** in [skills.md](skills.md); **Epic 3** for implementation | +| [abilities.md](abilities.md) | **Combat** gig kits vs **skill** interactions vs **item** channels; Seams hooks | With [gigs.md](gigs.md), [skills.md](skills.md); [Combat pillars (vision stub)](#combat-pillars-vision-stub) | +| [items.md](items.md) | Buckets (gear, chrome, consumables, mats); craft vs drops; rarity/readability | **Seams** in [skills.md](skills.md); **Epic 3 module map** in [items.md](items.md#epic-3-module-map) | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | | *(add rows as files land)* | | | @@ -39,12 +39,12 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. - **Items** — [items.md](items.md): categories, rarity philosophy, crafting vs. drops; **Seams** for gig/skill gates. -- **Abilities** — [abilities.md](abilities.md): inputs, timing; combo with items; **gig** vs **skill** gates (see [progression.md](progression.md) vocabulary). **Combat pillars** stub remains below until written. +- **Abilities** — [abilities.md](abilities.md): inputs, timing; combo with items; **gig** vs **skill** gates (see [progression.md](progression.md) vocabulary). **Combat context:** [Combat pillars (vision stub)](#combat-pillars-vision-stub). - **Gathering & resources** — nodes, competition, exhaustion, what “open world” contesting feels like. - **Crafting & recipes** — depth vs. breadth, failure, specialization; pairs with items but is its own loop. - **Economy** — currency velocity, sinks, trade vs. self-sufficiency, how wealth shows up in play. - **Factions & reputation** — who remembers you, grudges, access gates; **gig** story arcs: [gigs.md](gigs.md), rep + seams: [skills.md](skills.md). -- **Combat pillars** — PvE vs. PvP stance, readability, time-to-kill, what “fair” means here. +- **Combat pillars** — [Vision stub below](#combat-pillars-vision-stub): PvE vs. PvP stance, readability, time-to-kill, fairness; **items in combat** in [items.md](items.md). - **Death, loss & recovery** — stakes on failure, recovery paths, anti-grief boundaries. - **Risk & security bands** — safe pockets vs. wild space; where optional PvP and theft sit (aligns with security-tier thinking). - **Social play** — squad scale, corps, trust, betrayal affordances, async cooperation. @@ -52,6 +52,19 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Onboarding** — first session hook, clarity vs. mystery, how much systems the new player sees. - **Tone & narrative** — how lore shows up (quests, environment, UI), voice of the world. **Presentation / ~teen rating target:** [Presentation and target rating (vision)](#presentation-and-target-rating-vision). +## Combat pillars (vision stub) + +Combat is still missing a **single** pillar doc. Until then, use this table for **where** vision lives: + +| Pillar | Where to read | +|--------|----------------| +| **Gig kits, inputs, skill vs item actions** | [abilities.md](abilities.md) | +| **Combat gear, loadouts, hub swap, consumables** | [items.md](items.md) (with [skills.md](skills.md) **Seams**) | +| **Roster, roles, party, sub-gig** | [gigs.md](gigs.md) | +| **PvE readability, TTK, encounter fairness** | Stub—future dedicated combat doc; implementation direction in [Epic 5 — PvE combat](../decomposition/epics/epic_05_pve_combat.md) | + +**Items in fights:** [items.md](items.md) **Combat gear** is **gig**-tagged for equip/deploy; **consumables** baseline is not gig-gated; **chrome** persists across gig swap. Aligns with [abilities.md](abilities.md) **Item-linked actions**. + ## Related repo docs | Area | Location | From 8d560e0df84127b16c4765cc9a57f656db3a0db0 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:47:59 -0400 Subject: [PATCH 79/91] chore: add game-design gathering & resources doc - Add gathering.md (nodes, Gather skills, gig vs skill XP, E3.M1/E4.M2) - Cross-link from overview, progression, skills, gigs, items, abilities, README - Extend docs-review-agent hybrid progression ground truth --- .cursor/rules/docs-review-agent.md | 2 +- docs/game-design/README.md | 2 +- docs/game-design/abilities.md | 1 + docs/game-design/gathering.md | 79 ++++++++++++++++++++++++++++++ docs/game-design/gigs.md | 1 + docs/game-design/items.md | 5 +- docs/game-design/overview.md | 5 +- docs/game-design/progression.md | 1 + docs/game-design/skills.md | 3 +- 9 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 docs/game-design/gathering.md diff --git a/.cursor/rules/docs-review-agent.md b/.cursor/rules/docs-review-agent.md index 197df3c..e51e321 100644 --- a/.cursor/rules/docs-review-agent.md +++ b/.cursor/rules/docs-review-agent.md @@ -26,7 +26,7 @@ Use this rule when the user is working in **`docs/`** (design, decomposition, pl ## Ground truth (required to check) 1. **Same folder and upstream links** — Read every `docs/...` link from the target doc(s); verify paths exist and headings match intent. -2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Mission/quest rewards** may still grant **skill XP** when explicitly defined—separate from the encounter **gig XP** path. +2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`, `gathering.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Gather / craft** → **skill XP** (see `gathering.md`, Epic 3)—not **gig** XP. **Mission/quest rewards** may still grant **skill XP** when explicitly defined—separate from the encounter **gig XP** path. 3. **Decomposition** — Map claims to `docs/decomposition/epics/` and `docs/decomposition/modules/` where relevant; flag **conflicts** (e.g. “combat skill” vs skills-as-non-combat). **CI** enforces a minimal guard via [`scripts/check_decomposition_language.py`](../../scripts/check_decomposition_language.py) in the **PR gate** (extend the script if a vetted exception is needed). 4. **Plans** — If work maps to `docs/plans/`, check for **acceptance criteria** vs design doc (same spirit as [code-review-agent](code-review-agent.md) plan alignment). diff --git a/docs/game-design/README.md b/docs/game-design/README.md index faeca6c..6a68ed6 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -6,6 +6,6 @@ **Brainstorm-only** (not specs): [`brainstorm/`](brainstorm/README.md). -Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. +Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), **[gathering](gathering.md)** (resource nodes, yields), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). diff --git a/docs/game-design/abilities.md b/docs/game-design/abilities.md index e973695..fccfe7d 100644 --- a/docs/game-design/abilities.md +++ b/docs/game-design/abilities.md @@ -58,6 +58,7 @@ Vision for **what the player triggers** in play: combat **kits**, non-combat **s |--------|----------| | Gig roster, hub swap, XP | [gigs.md](gigs.md) | | Item categories, craft vs loot | [items.md](items.md) | +| Gathering (skill XP, nodes—not gig) | [gathering.md](gathering.md) | | Seams (gear, craft, consumables) | [skills.md](skills.md) | | Hybrid vocabulary | [progression.md](progression.md) | | Encounter rewards + combat hooks | [Epic 5](../decomposition/epics/epic_05_pve_combat.md), [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | diff --git a/docs/game-design/gathering.md b/docs/game-design/gathering.md new file mode 100644 index 0000000..4b26cbb --- /dev/null +++ b/docs/game-design/gathering.md @@ -0,0 +1,79 @@ +# Gathering & resources + +Vision for **pulling raw value from the world**: **resource nodes**, **yields**, **who can compete**, and how gathering feeds **inventory** and **skill** progression—without collapsing into **gig** combat progression. + +**Runtime ownership:** [E3.M1 — ResourceNodeAndGatherLoop](../decomposition/modules/E3_M1_ResourceNodeAndGatherLoop.md) defines **`ResourceNodeDef`**, **`GatherResult`**, **`ResourceYieldTable`**, and ties gather interactions to [E1.M3 — InteractionAndTargetingLayer](../decomposition/modules/E1_M3_InteractionAndTargetingLayer.md). Outputs land as items via [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md). **Ecology / respawn pacing** per zone: [E4.M2 — SpawnEcologyController](../decomposition/modules/E4_M2_SpawnEcologyController.md). + +**Skill roster (Gather category):** [skills.md — Gather](skills.md#skill-roster-draft-ideas-by-category) (**Salvage**, **Extraction**, **Harvest (bio)**, **Quarry / bulk**). **Hybrid vocabulary:** [progression.md](progression.md). **Where gathered stuff goes:** [items.md](items.md) **Materials & intermediates** and **Acquisition**. + +## Gig vs skill + +- **Gathering is skill progression**, not **gig** identity. **Combat encounters** do not grant **skill XP** by default; **gather / craft** pipes do ([progression.md](progression.md), [Epic 2 — Skills](../decomposition/epics/epic_02_skills_and_progression.md) **Slice 3**). +- **No gig XP** from nodes or harvest loops—**gig XP** stays on the **combat** path ([gigs.md](gigs.md)). +- **World gates** (rep, licenses, zone access) can **gate which nodes exist or who may interact**; they must not replace “wrong class” locks—**any character** can train **Gather** skills over time ([skills.md](skills.md) **Pillars**). + +## Node lenses (design-facing) + +Nodes are **data** (`ResourceNodeDef`); these **lenses** help content and balance talk align with **Gather** skills: + +| Lens | Fiction / examples | Typical skill hook | +|------|--------------------|--------------------| +| **Consumer salvage** | Wrecks, e-waste, stripped chrome, discarded gear | **Salvage** | +| **Subsurface / geological** | Seams, drilled feedstock, rare earths | **Extraction** | +| **Bio / organic** | Fungal mats, cultured tissue, black-market organics (grim **concepts**—[overview.md](overview.md) presentation band) | **Harvest (bio)** | +| **Urban bulk / structures** | Demo recoverables, aggregate, structural mass—not consumer wrecks | **Quarry / bulk** | + +Same **physical prop** might map to **different** node types or yield tables by **zone tier** and **fiction**—**content** decides; skills table in [skills.md](skills.md) stays the **boundary** reference (e.g. **Salvage** vs **Quarry**). + +## Competition and “open world” feel + +Directional goals (implementation **open**): + +- **Depletion** and **regen** (capacity, timers) make **presence** and **timing** matter—aligned with E3.M1/E4.M2 responsibilities. +- **Contesting** the same node may be **non-combat** (arrival order, channel time, tool tier) or **high-risk** (PvP-adjacent) depending on **security tier**—see [overview.md](overview.md) **Risk & security bands** (stub) and [gigs.md](gigs.md) **PvP** notes (**open** until PvP vision lands). +- **Instanced vs shared** world: some resources may live only in **contracts** or **dungeons**; others in **shared** overworld—**split by content**, not a single global rule (**open**). + +## Exhaustion, tools, and gates + +- **Stamina / daily caps / exhaustion** on gather—**open**; if used, should support **specialist fantasy** without hard **gig** coupling ([skills.md](skills.md) **Low-gig specialist**). +- **Tools** (pickaxes, rigs, scanners) are **items**—craft or buy via [items.md](items.md); **use** may be **skill**-gated per item data ([Seams](skills.md#seams-gigs-skills) **Non-combat Rigging / utility** pattern). +- **Skill XP** from gather: award on **successful** interaction / yield resolution—structured for telemetry ([E2.M2 — XpAwardAndLevelEngine](../decomposition/modules/E2_M2_XpAwardAndLevelEngine.md)); exact curves **open**. + +## Pipeline position + +**Gather → Process → Make** is the agreed chain shape ([skills.md](skills.md) **Production chains**). This doc stops at **raw outputs**; **refine / fab / recipes** are [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) and a future **crafting & recipes** vision doc. + +## Module map (gathering-focused) + +| Module | Role | Ties to this doc | +|--------|------|-------------------| +| [E3.M1](../decomposition/modules/E3_M1_ResourceNodeAndGatherLoop.md) | Nodes, gather, yields | **Core** | +| [E2.M2](../decomposition/modules/E2_M2_XpAwardAndLevelEngine.md) | Skill XP awards | Gather **skill** progression | +| [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | Items in inventory | **GatherResult** outputs | +| [E4.M2](../decomposition/modules/E4_M2_SpawnEcologyController.md) | Spawn profiles, respawn, depletion bounds | Zone **density** and recovery | +| [E1.M3](../decomposition/modules/E1_M3_InteractionAndTargetingLayer.md) | Interaction range / targeting | Player **interacts** with node | + +## Decisions log + +| Topic | Direction | Status | +|-------|-----------|--------| +| Gather → skill XP, not gig XP | **Skill** XP from gather/craft pipes; **gig** XP from combat encounters | Agreed ([progression.md](progression.md)) | +| Gather skills vs node fiction | **Salvage** / **Extraction** / **Harvest** / **Quarry** boundaries as in [skills.md](skills.md) | Agreed | +| Pipeline | Raw from nodes feeds **Process** then **Make**—not a flat single-step economy | Agreed ([skills.md](skills.md)) | + +## Open questions + +- **Node ownership** (personal tap, party split, corp claims) vs **FFA** taps—social and exploit surface. +- **Stealing** gathered output or **harvesting under fire**—ties to **risk bands** and **death** doc (**TBD**). +- **Bots / automation** fantasy vs anti-bot—how much **AFK** is acceptable (**open**). +- **Cross-skill nodes** (e.g. **Intrusion** to **unlock** a **Salvage** pile)—mission design vs systemic rule. + +## Where to read next + +| Topic | Document / module | +|--------|-------------------| +| Gather skill names & merge notes | [skills.md](skills.md) **Gather** table | +| Items & materials buckets | [items.md](items.md) | +| Epic 3 gather slice | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) — *Slice 2 — Gather nodes and outputs* | +| Interaction contracts | [E1.M3](../decomposition/modules/E1_M3_InteractionAndTargetingLayer.md) | +| Zone ecology | [E4.M2](../decomposition/modules/E4_M2_SpawnEcologyController.md), [Epic 4](../decomposition/epics/epic_04_world_topology.md) | diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 06d7666..4a905fe 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -132,4 +132,5 @@ Detail: seams table in [skills.md](skills.md). - [abilities.md](abilities.md) — **gig-locked** kits, sub-gig ability rules, telegraphs ([Epic 5](../decomposition/epics/epic_05_pve_combat.md)). - [Combat pillars](overview.md) — PvE readability, TTK, risk ([overview](overview.md); stub until a dedicated doc ships). - [items.md](items.md) — **combat gear** vs chrome vs consumables; craft vs loot; loadout + swap ([Seams](skills.md#seams-gigs-skills)). +- [gathering.md](gathering.md) — **not** gig progression; **skill** nodes and yields feed economy ([progression.md](progression.md)). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group content where **gigs** hold security while **skills** run the hack (brainstorm). diff --git a/docs/game-design/items.md b/docs/game-design/items.md index 0bd66ca..8b88549 100644 --- a/docs/game-design/items.md +++ b/docs/game-design/items.md @@ -21,7 +21,7 @@ These overlap in data; they are **lenses** for writers and systems. ## Acquisition - **Crafted:** Primary fantasy for **durables** that matter in combat and economy—**player-made goods stay relevant** across stages ([Epic 3](../decomposition/epics/epic_03_crafting_economy.md) success criteria). -- **Dropped / looted / salvaged:** Feed **gather–refine–craft** loops and **world fiction**; tuning is **content + economy policy** (**open** drop tables). +- **Dropped / looted / salvaged:** Feed **gather–refine–craft** loops and **world fiction**; tuning is **content + economy policy** (**open** drop tables). **World-sourced raw** (nodes, yields): [gathering.md](gathering.md). - **Mission & vendor rewards:** Can grant **items** or **skill XP** separately from combat XP pipes ([progression.md](progression.md)); avoid double-dipping the same milestone without intent (**open** reward UX). - **Trade:** Craft-for-others is **valid** even when the buyer cannot **equip** or **combat-deploy** the product ([Seams](skills.md#seams-gigs-skills) **Crafting combat gear**). @@ -73,7 +73,8 @@ Design **buckets** above are not 1:1 types in data—they inform tags and metada | Abilities from items | [abilities.md](abilities.md) | | Combat pillars (vision stub) | [overview.md — Combat pillars](overview.md#combat-pillars-vision-stub) | | Epic 3 loop & slices | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) | -| Gather nodes | [E3.M1](../decomposition/modules/E3_M1_ResourceNodeAndGatherLoop.md) | +| Gathering vision (nodes, contesting) | [gathering.md](gathering.md) | +| Gather module | [E3.M1](../decomposition/modules/E3_M1_ResourceNodeAndGatherLoop.md) | | Recipes & craft pipeline | [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) | | Item schema & inventory | [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | | Sinks & durability | [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 539a2fa..2a29a3b 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,7 +6,7 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. -**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). +**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Gathering** (nodes, skill XP, ecology): [gathering.md](gathering.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). ## Presentation and target rating (vision) @@ -27,6 +27,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | [gigs.md](gigs.md) | **9-gig roster** (v1 cyberpunk names); hub, sub-gig, party | Recruitment **deferred**; PvP **open indefinite**; niche LFG **if** tool ships | | [abilities.md](abilities.md) | **Combat** gig kits vs **skill** interactions vs **item** channels; Seams hooks | With [gigs.md](gigs.md), [skills.md](skills.md); [Combat pillars (vision stub)](#combat-pillars-vision-stub) | | [items.md](items.md) | Buckets (gear, chrome, consumables, mats); craft vs drops; rarity/readability | **Seams** in [skills.md](skills.md); **Epic 3 module map** in [items.md](items.md#epic-3-module-map) | +| [gathering.md](gathering.md) | Resource **nodes**, **Gather** skills, contesting, pipeline to refine/craft | **E3.M1** + **E4.M2**; with [skills.md](skills.md), [items.md](items.md) | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | | *(add rows as files land)* | | | @@ -40,7 +41,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Mechanics** — loops, constraints, what the server vs. client must honor. - **Items** — [items.md](items.md): categories, rarity philosophy, crafting vs. drops; **Seams** for gig/skill gates. - **Abilities** — [abilities.md](abilities.md): inputs, timing; combo with items; **gig** vs **skill** gates (see [progression.md](progression.md) vocabulary). **Combat context:** [Combat pillars (vision stub)](#combat-pillars-vision-stub). -- **Gathering & resources** — nodes, competition, exhaustion, what “open world” contesting feels like. +- **Gathering & resources** — [gathering.md](gathering.md): nodes, competition, exhaustion, open-world contesting; **skill XP** not **gig** XP. - **Crafting & recipes** — depth vs. breadth, failure, specialization; pairs with items but is its own loop. - **Economy** — currency velocity, sinks, trade vs. self-sufficiency, how wealth shows up in play. - **Factions & reputation** — who remembers you, grudges, access gates; **gig** story arcs: [gigs.md](gigs.md), rep + seams: [skills.md](skills.md). diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index 5d5daec..73df53d 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -28,6 +28,7 @@ Use these terms in **design specs and tools** (fiction may say *job*, *contract* | Gig roster, hub swap, sub-gig, XP, party/PvP notes | [gigs.md](gigs.md) | | Combat vs non-combat **actions** (kits, skill interactions, items) | [abilities.md](abilities.md) | | **Items** (craft, loot, equip, gig/skill gates) | [items.md](items.md) | +| **Gathering** (nodes, yields, skill XP—not gig) | [gathering.md](gathering.md) | | Skill domains, categories, XP curves, gates, mastery | [skills.md](skills.md) | | **Seams** (combat gear vs craft, consumables, rep, alts) | [skills.md](skills.md) (section *Seams (gigs ↔ skills)*) | | Loose ideas | [brainstorm/](brainstorm/README.md) | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index cd296dc..a001a1f 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,6 +1,6 @@ # Skills (non-combat progression) -Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. +Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **Gathering & resource nodes** (competition, ecology, gig vs skill): **[gathering.md](gathering.md)**. **This file also owns the [Seams (gigs ↔ skills)](#seams-gigs-skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). @@ -250,4 +250,5 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ - **[gigs.md](gigs.md)** — gig roster, hub UX, recruitment **deferred**; **PvP** gig rules **open indefinite** (overall PvP scope TBD). - **[abilities.md](abilities.md)** — **gig** combat kits vs **skill** interactions vs **item** channels (written). - **[items.md](items.md)** — buckets, craft vs drops, rarity/readability; detail still in [Seams](#seams-gigs-skills). +- **[gathering.md](gathering.md)** — nodes, yields, **skill** XP from gather; **E3.M1** / **E4.M2** hooks (written). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From 277c25fdd013025ad95f77de6c21a0c1bad0c096 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:51:25 -0400 Subject: [PATCH 80/91] chore: add game-design crafting & recipes doc - Add crafting.md (pipeline, E3.M2 contracts, bench vs gig, module map) - Cross-link from overview, progression, skills, gigs, items, gathering, abilities, README - gathering.md: point pipeline follow-up to crafting.md; where-next row - Extend docs-review-agent hybrid progression list --- .cursor/rules/docs-review-agent.md | 2 +- docs/game-design/README.md | 2 +- docs/game-design/abilities.md | 1 + docs/game-design/crafting.md | 75 ++++++++++++++++++++++++++++++ docs/game-design/gathering.md | 3 +- docs/game-design/gigs.md | 1 + docs/game-design/items.md | 5 +- docs/game-design/overview.md | 5 +- docs/game-design/progression.md | 1 + docs/game-design/skills.md | 3 +- 10 files changed, 90 insertions(+), 8 deletions(-) create mode 100644 docs/game-design/crafting.md diff --git a/.cursor/rules/docs-review-agent.md b/.cursor/rules/docs-review-agent.md index e51e321..941597f 100644 --- a/.cursor/rules/docs-review-agent.md +++ b/.cursor/rules/docs-review-agent.md @@ -26,7 +26,7 @@ Use this rule when the user is working in **`docs/`** (design, decomposition, pl ## Ground truth (required to check) 1. **Same folder and upstream links** — Read every `docs/...` link from the target doc(s); verify paths exist and headings match intent. -2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`, `gathering.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Gather / craft** → **skill XP** (see `gathering.md`, Epic 3)—not **gig** XP. **Mission/quest rewards** may still grant **skill XP** when explicitly defined—separate from the encounter **gig XP** path. +2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`, `gathering.md`, `crafting.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Gather / craft** → **skill XP** (see `gathering.md`, `crafting.md`, Epic 3)—not **gig** XP. **Mission/quest rewards** may still grant **skill XP** when explicitly defined—separate from the encounter **gig XP** path. 3. **Decomposition** — Map claims to `docs/decomposition/epics/` and `docs/decomposition/modules/` where relevant; flag **conflicts** (e.g. “combat skill” vs skills-as-non-combat). **CI** enforces a minimal guard via [`scripts/check_decomposition_language.py`](../../scripts/check_decomposition_language.py) in the **PR gate** (extend the script if a vetted exception is needed). 4. **Plans** — If work maps to `docs/plans/`, check for **acceptance criteria** vs design doc (same spirit as [code-review-agent](code-review-agent.md) plan alignment). diff --git a/docs/game-design/README.md b/docs/game-design/README.md index 6a68ed6..a977e7e 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -6,6 +6,6 @@ **Brainstorm-only** (not specs): [`brainstorm/`](brainstorm/README.md). -Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), **[gathering](gathering.md)** (resource nodes, yields), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. +Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), **[gathering](gathering.md)** (resource nodes, yields), **[crafting](crafting.md)** (recipes, pipeline), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). diff --git a/docs/game-design/abilities.md b/docs/game-design/abilities.md index fccfe7d..c4b3c23 100644 --- a/docs/game-design/abilities.md +++ b/docs/game-design/abilities.md @@ -59,6 +59,7 @@ Vision for **what the player triggers** in play: combat **kits**, non-combat **s | Gig roster, hub swap, XP | [gigs.md](gigs.md) | | Item categories, craft vs loot | [items.md](items.md) | | Gathering (skill XP, nodes—not gig) | [gathering.md](gathering.md) | +| Crafting (bench skill vs gig combat use) | [crafting.md](crafting.md) | | Seams (gear, craft, consumables) | [skills.md](skills.md) | | Hybrid vocabulary | [progression.md](progression.md) | | Encounter rewards + combat hooks | [Epic 5](../decomposition/epics/epic_05_pve_combat.md), [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | diff --git a/docs/game-design/crafting.md b/docs/game-design/crafting.md new file mode 100644 index 0000000..6a04ae1 --- /dev/null +++ b/docs/game-design/crafting.md @@ -0,0 +1,75 @@ +# Crafting & recipes + +Vision for **turning inputs into outputs at benches** (and similar stations): **recipe shape**, **skill gates**, **multi-step pipelines**, and how crafting stays **skill** progression while **combat use** of products follows **gig** rules. + +**Runtime ownership:** [E3.M2 — RefinementAndRecipeExecution](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) validates **`CraftRequest`** against **`RecipeDef`**, produces **`CraftResult`** (success/failure, outputs, reason codes), and mutates inventory **server-authoritatively** with [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md). Inputs include [gathering.md](gathering.md) outputs, drops, and trade. + +**Skill roster:** **Process** and **Make** tables in [skills.md](skills.md#skill-roster-draft-ideas-by-category) (**Refine**, **Fab tech**, **Data scrub**, **Make** skills, etc.). **Chain shape:** [skills.md](skills.md) **Production chains** (**Gather → Process → Make**, branching and depth). **Seams (bench vs combat):** [skills.md — Seams](skills.md#seams-gigs-skills). **Item buckets from outputs:** [items.md](items.md). **Hybrid vocabulary:** [progression.md](progression.md). + +## Gig vs skill + +- **Crafting and refining are skills**, not **gigs**. **No gig XP** from recipe execution—**skill XP** from successful craft/refine (and related activity) via [E2.M2](../decomposition/modules/E2_M2_XpAwardAndLevelEngine.md) ([progression.md](progression.md), [Epic 2 — Skills](../decomposition/epics/epic_02_skills_and_progression.md) **Slice 3**). +- **Bench = skill / recipe gate**; **equip, wear, combat-deploy** for most **non-consumable** products stays **gig**-tagged when brought into combat ([items.md](items.md), [Seams](skills.md#seams-gigs-skills)). **Consumables** and **general utility** may have **no** gig **use** gate per item data. +- **World gates** (rep, licenses, station access) add **content** without “you picked the wrong class” for the whole economy ([skills.md](skills.md) **Pillars**). + +## Pipeline (design-facing) + +Authoritative **recipe graph** is **data** (`RecipeDef`); design intent: + +| Idea | Meaning | +|------|---------| +| **Depth** | **Gather → Process → Process → Make** (or longer)—intermediates feed intermediates ([skills.md](skills.md) **Multi-stage processing**). | +| **Branching** | Same inputs can route to **different** skills or recipes for **different** outputs (**overlapping chains**)—dense economy, not a single trunk. | +| **Skill per recipe** | Each recipe names **required skill** (and level band **TBD**); one **Process** skill is not the only mid-pipeline actor. | + +**Prototype scope:** [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) **Slice 3** targets a **starter recipe set** (e.g. 8–12 minimums in epic text) proving **gather → refine → item used in combat or quest**. + +## Stations, co-op, and UX + +- **Station types** (personal bench, public fab, corp line, mobile kit)—**open**; `RecipeDef` may carry **station** or **tag** requirements as scope grows. +- **Crafting for others** (commission, party assist)—**valid** fantasy aligned with [items.md](items.md) **Trade** and [Seams](skills.md#seams-gigs-skills); **implementation** **open**. +- **Queue, batch, cancel**—**open** UX; server remains authoritative on **`CraftResult`**. + +## Failure, quality, and mastery + +- **Craft failure** (lost materials vs returned partials vs soft fail)—**open**; must play nicely with **exploit** review and **E9** integrity patterns when live. +- **Quality** on output (tier within `ItemDef`, bonus stats, durability band)—aligns with [items.md](items.md) **Rarity, quality**; whether **skill level**, **recipe mastery**, **input grade**, or **RNG** mix—**open** math. +- **Recipe discovery** (trainers, experimentation, rep unlocks, data theft **fiction**)—**open**; **mission grants** may teach recipes without replacing **do the loop** as primary fantasy ([skills.md](skills.md) **XP**). + +## Module map (crafting-focused) + +| Module | Role | Ties to this doc | +|--------|------|-------------------| +| [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) | `RecipeDef`, craft execution | **Core** | +| [E3.M1](../decomposition/modules/E3_M1_ResourceNodeAndGatherLoop.md) | Gather outputs | **Inputs** | +| [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | Costs, outputs, stacks | **Inventory** | +| [E2.M2](../decomposition/modules/E2_M2_XpAwardAndLevelEngine.md) | Skill XP on craft | **Progression** | +| [E3.M5](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) | Faucets/sinks | Craft vs drop **parity** (later) | +| [E7.M1](../decomposition/modules/E7_M1_QuestStateMachine.md) | Quest steps | Craft **objectives** / hand-ins | +| [E6.M4](../decomposition/modules/E6_M4_RewardParityEnforcer.md) | Reward parity | Craft vs other reward **lanes** | + +## Decisions log + +| Topic | Direction | Status | +|-------|-----------|--------| +| Bench vs combat | **Craft** on **skill**; **combat field use** of most **non-consumable** **Make** = **gig**-gated | Agreed ([Seams](skills.md#seams-gigs-skills)) | +| Pipeline shape | **Gather → Process → Make** with **branching** and **multi-hop** depth | Agreed ([skills.md](skills.md)) | +| Craft → skill XP | **Skill** XP from craft/gather pipes; not **gig** XP | Agreed ([progression.md](progression.md)) | +| Player-made relevance | **Crafting** is a **primary** progression lane | Agreed ([Epic 3](../decomposition/epics/epic_03_crafting_economy.md)) | + +## Open questions + +- **Critical success / crit craft**—flavor vs economy distortion. +- **Time gating** (real-time jobs, offline queue)—fantasy vs session pacing. +- **Ammo and consumable churn**—how much **Make** is **repeatable grind** vs **milestone** crafts. +- **Cross-character recipe locks** (account, legacy blueprint)—social and alt policy. + +## Where to read next + +| Topic | Document / module | +|--------|-------------------| +| Process / Make skill names | [skills.md](skills.md) **Process** and **Make** tables | +| Raw inputs from the world | [gathering.md](gathering.md) | +| Item categories & tooltips | [items.md](items.md) | +| Epic 3 craft slice | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) — *Slice 3 — Recipes and crafting pipeline* | +| Gather slice (inputs) | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) — *Slice 2 — Gather nodes and outputs* | diff --git a/docs/game-design/gathering.md b/docs/game-design/gathering.md index 4b26cbb..b64c78a 100644 --- a/docs/game-design/gathering.md +++ b/docs/game-design/gathering.md @@ -41,7 +41,7 @@ Directional goals (implementation **open**): ## Pipeline position -**Gather → Process → Make** is the agreed chain shape ([skills.md](skills.md) **Production chains**). This doc stops at **raw outputs**; **refine / fab / recipes** are [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) and a future **crafting & recipes** vision doc. +**Gather → Process → Make** is the agreed chain shape ([skills.md](skills.md) **Production chains**). This doc stops at **raw outputs**; **recipes, benches, and pipeline vision:** [crafting.md](crafting.md); **runtime contracts:** [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md). ## Module map (gathering-focused) @@ -74,6 +74,7 @@ Directional goals (implementation **open**): |--------|-------------------| | Gather skill names & merge notes | [skills.md](skills.md) **Gather** table | | Items & materials buckets | [items.md](items.md) | +| Crafting & recipes (vision) | [crafting.md](crafting.md) | | Epic 3 gather slice | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) — *Slice 2 — Gather nodes and outputs* | | Interaction contracts | [E1.M3](../decomposition/modules/E1_M3_InteractionAndTargetingLayer.md) | | Zone ecology | [E4.M2](../decomposition/modules/E4_M2_SpawnEcologyController.md), [Epic 4](../decomposition/epics/epic_04_world_topology.md) | diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 4a905fe..5934582 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -133,4 +133,5 @@ Detail: seams table in [skills.md](skills.md). - [Combat pillars](overview.md) — PvE readability, TTK, risk ([overview](overview.md); stub until a dedicated doc ships). - [items.md](items.md) — **combat gear** vs chrome vs consumables; craft vs loot; loadout + swap ([Seams](skills.md#seams-gigs-skills)). - [gathering.md](gathering.md) — **not** gig progression; **skill** nodes and yields feed economy ([progression.md](progression.md)). +- [crafting.md](crafting.md) — **bench** = **skill**; **combat use** of most crafted **gear** still **gig**-gated ([Seams](skills.md#seams-gigs-skills)). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group content where **gigs** hold security while **skills** run the hack (brainstorm). diff --git a/docs/game-design/items.md b/docs/game-design/items.md index 8b88549..362665b 100644 --- a/docs/game-design/items.md +++ b/docs/game-design/items.md @@ -20,7 +20,7 @@ These overlap in data; they are **lenses** for writers and systems. ## Acquisition -- **Crafted:** Primary fantasy for **durables** that matter in combat and economy—**player-made goods stay relevant** across stages ([Epic 3](../decomposition/epics/epic_03_crafting_economy.md) success criteria). +- **Crafted:** Primary fantasy for **durables** that matter in combat and economy—**player-made goods stay relevant** across stages ([Epic 3](../decomposition/epics/epic_03_crafting_economy.md) success criteria). **Recipe pipeline & benches:** [crafting.md](crafting.md). - **Dropped / looted / salvaged:** Feed **gather–refine–craft** loops and **world fiction**; tuning is **content + economy policy** (**open** drop tables). **World-sourced raw** (nodes, yields): [gathering.md](gathering.md). - **Mission & vendor rewards:** Can grant **items** or **skill XP** separately from combat XP pipes ([progression.md](progression.md)); avoid double-dipping the same milestone without intent (**open** reward UX). - **Trade:** Craft-for-others is **valid** even when the buyer cannot **equip** or **combat-deploy** the product ([Seams](skills.md#seams-gigs-skills) **Crafting combat gear**). @@ -75,7 +75,8 @@ Design **buckets** above are not 1:1 types in data—they inform tags and metada | Epic 3 loop & slices | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) | | Gathering vision (nodes, contesting) | [gathering.md](gathering.md) | | Gather module | [E3.M1](../decomposition/modules/E3_M1_ResourceNodeAndGatherLoop.md) | -| Recipes & craft pipeline | [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) | +| Crafting vision (recipes, pipeline, quality) | [crafting.md](crafting.md) | +| Recipes & craft pipeline (runtime) | [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) | | Item schema & inventory | [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | | Sinks & durability | [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | | Economy policy | [E3.M5](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 2a29a3b..3ea0e34 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,7 +6,7 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. -**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Gathering** (nodes, skill XP, ecology): [gathering.md](gathering.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). +**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Gathering** (nodes, skill XP, ecology): [gathering.md](gathering.md). **Crafting** (recipes, pipeline, benches): [crafting.md](crafting.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). ## Presentation and target rating (vision) @@ -28,6 +28,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | [abilities.md](abilities.md) | **Combat** gig kits vs **skill** interactions vs **item** channels; Seams hooks | With [gigs.md](gigs.md), [skills.md](skills.md); [Combat pillars (vision stub)](#combat-pillars-vision-stub) | | [items.md](items.md) | Buckets (gear, chrome, consumables, mats); craft vs drops; rarity/readability | **Seams** in [skills.md](skills.md); **Epic 3 module map** in [items.md](items.md#epic-3-module-map) | | [gathering.md](gathering.md) | Resource **nodes**, **Gather** skills, contesting, pipeline to refine/craft | **E3.M1** + **E4.M2**; with [skills.md](skills.md), [items.md](items.md) | +| [crafting.md](crafting.md) | **Recipes**, **Process/Make** pipeline, bench vs **gig** combat use | **E3.M2**; with [gathering.md](gathering.md), [items.md](items.md), [skills.md](skills.md) **Seams** | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | | *(add rows as files land)* | | | @@ -42,7 +43,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Items** — [items.md](items.md): categories, rarity philosophy, crafting vs. drops; **Seams** for gig/skill gates. - **Abilities** — [abilities.md](abilities.md): inputs, timing; combo with items; **gig** vs **skill** gates (see [progression.md](progression.md) vocabulary). **Combat context:** [Combat pillars (vision stub)](#combat-pillars-vision-stub). - **Gathering & resources** — [gathering.md](gathering.md): nodes, competition, exhaustion, open-world contesting; **skill XP** not **gig** XP. -- **Crafting & recipes** — depth vs. breadth, failure, specialization; pairs with items but is its own loop. +- **Crafting & recipes** — [crafting.md](crafting.md): depth vs breadth, failure, quality, stations; **skill XP**; [items.md](items.md) for output buckets. - **Economy** — currency velocity, sinks, trade vs. self-sufficiency, how wealth shows up in play. - **Factions & reputation** — who remembers you, grudges, access gates; **gig** story arcs: [gigs.md](gigs.md), rep + seams: [skills.md](skills.md). - **Combat pillars** — [Vision stub below](#combat-pillars-vision-stub): PvE vs. PvP stance, readability, time-to-kill, fairness; **items in combat** in [items.md](items.md). diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index 73df53d..9929919 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -29,6 +29,7 @@ Use these terms in **design specs and tools** (fiction may say *job*, *contract* | Combat vs non-combat **actions** (kits, skill interactions, items) | [abilities.md](abilities.md) | | **Items** (craft, loot, equip, gig/skill gates) | [items.md](items.md) | | **Gathering** (nodes, yields, skill XP—not gig) | [gathering.md](gathering.md) | +| **Crafting** (recipes, pipeline, bench vs gig) | [crafting.md](crafting.md) | | Skill domains, categories, XP curves, gates, mastery | [skills.md](skills.md) | | **Seams** (combat gear vs craft, consumables, rep, alts) | [skills.md](skills.md) (section *Seams (gigs ↔ skills)*) | | Loose ideas | [brainstorm/](brainstorm/README.md) | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index a001a1f..3653d15 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,6 +1,6 @@ # Skills (non-combat progression) -Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **Gathering & resource nodes** (competition, ecology, gig vs skill): **[gathering.md](gathering.md)**. +Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **Gathering & resource nodes** (competition, ecology, gig vs skill): **[gathering.md](gathering.md)**. **Crafting & recipes** (pipeline, benches, failure/quality): **[crafting.md](crafting.md)**. **This file also owns the [Seams (gigs ↔ skills)](#seams-gigs-skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). @@ -251,4 +251,5 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ - **[abilities.md](abilities.md)** — **gig** combat kits vs **skill** interactions vs **item** channels (written). - **[items.md](items.md)** — buckets, craft vs drops, rarity/readability; detail still in [Seams](#seams-gigs-skills). - **[gathering.md](gathering.md)** — nodes, yields, **skill** XP from gather; **E3.M1** / **E4.M2** hooks (written). +- **[crafting.md](crafting.md)** — **Process/Make** pipeline, **RecipeDef** vision, bench vs **gig**; **E3.M2** (written). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From 6b9f4e8b5f8b6c7a4741e2b332218650e99240b0 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 21:59:39 -0400 Subject: [PATCH 81/91] chore: apply game-design docs review suggestions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - overview: drop placeholder artifact table row - skills: next-pass cites gathering/crafting + E2.M1 slice freeze - abilities: framing links gather → craft spine --- docs/game-design/abilities.md | 2 +- docs/game-design/overview.md | 1 - docs/game-design/skills.md | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/game-design/abilities.md b/docs/game-design/abilities.md index c4b3c23..c5a48ca 100644 --- a/docs/game-design/abilities.md +++ b/docs/game-design/abilities.md @@ -2,7 +2,7 @@ Vision for **what the player triggers** in play: combat **kits**, non-combat **skill interactions**, and **item**-carried actions—and how those map to **gigs**, **`SkillDef`**, and **Seams**. This is **not** a full ability list or data schema; it steers combat design, UX, and implementation boundaries. -**Framing:** [progression.md](progression.md) (**gig** vs **skill**). **Combat roles:** [gigs.md](gigs.md). **Gear, craft, consumables:** [skills.md](skills.md) **Seams** ([anchor](skills.md#seams-gigs-skills)). **Item buckets & acquisition:** [items.md](items.md). **Combat pillar pointers:** [overview.md — Combat pillars](overview.md#combat-pillars-vision-stub). +**Framing:** [progression.md](progression.md) (**gig** vs **skill**). **Combat roles:** [gigs.md](gigs.md). **Gear, craft, consumables:** [skills.md](skills.md) **Seams** ([anchor](skills.md#seams-gigs-skills)). **Item buckets & acquisition:** [items.md](items.md). **Gather → craft economy spine:** [gathering.md](gathering.md), [crafting.md](crafting.md). **Combat pillar pointers:** [overview.md — Combat pillars](overview.md#combat-pillars-vision-stub). ## Vocabulary diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 3ea0e34..809484e 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -30,7 +30,6 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | [gathering.md](gathering.md) | Resource **nodes**, **Gather** skills, contesting, pipeline to refine/craft | **E3.M1** + **E4.M2**; with [skills.md](skills.md), [items.md](items.md) | | [crafting.md](crafting.md) | **Recipes**, **Process/Make** pipeline, bench vs **gig** combat use | **E3.M2**; with [gathering.md](gathering.md), [items.md](items.md), [skills.md](skills.md) **Seams** | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | -| *(add rows as files land)* | | | ### Planned topics (stubs) diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 3653d15..db6d829 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -126,7 +126,7 @@ Layout mirrors **[gigs.md](gigs.md) gig roster**: one **table per category**, ** - **Production chain shape:** **Agreed**—(1) **Overlapping** paths: shared **inputs**, divergent **outputs** across **Process** / **Make**; (2) **Multi-stage** depth: **Gather → Process → Process → Make** (or longer), with **any** **Process** skill able to participate. Recipe UX and balance **open** (roster intro + **Process** subsection in [Skill roster](#skill-roster-draft-ideas-by-category)). - **Agreed Process boundaries:** **Salvage** vs **Quarry**; **Refine** vs **Synth-chem prep** (physical materials vs bio/chem); **Refine** vs **Fab tech** (base material grades vs physical electromechanical fab); **Fab tech** vs **Data scrub** (physical components vs **data/firmware** on salvage). Further merge/split ideas — **open** as the roster evolves. -- **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—align with decomposition when ready. +- **Next pass:** pick **prototype trio** (one Gather, one Process/Make, one Tech) for Epic 2/3 slices—written anchors for gather/craft legs: [gathering.md](gathering.md), [crafting.md](crafting.md); lock **`SkillDef` ids** in data with [E2.M1](../decomposition/modules/E2_M1_SkillDefinitionRegistry.md) when Slice 1 freezes. ### XP, levels, curves From 0a07f1dec91e52da3632747c0e69e184c0b88e18 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 22:02:17 -0400 Subject: [PATCH 82/91] chore: mark game-design docs review suggestions done (strikethrough) --- ...26-04-03-game-design-branch-docs-review.md | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 docs/reviews/2026-04-03-game-design-branch-docs-review.md diff --git a/docs/reviews/2026-04-03-game-design-branch-docs-review.md b/docs/reviews/2026-04-03-game-design-branch-docs-review.md new file mode 100644 index 0000000..b3840de --- /dev/null +++ b/docs/reviews/2026-04-03-game-design-branch-docs-review.md @@ -0,0 +1,60 @@ +# Docs review — game-design branch (`chore/game-design-docs` vs `main`) + +**Date:** 2026-04-03 +**Scope:** Documentation and content-contract coherence for paths changed on the branch relative to `main`: `docs/game-design/**`, linked `docs/decomposition/**` updates, `content/schemas` + prototype skills, `.cursor/rules/docs-review-agent.md`, `AGENTS.md`, PR gate scripts, and related cross-links. **Out of scope for verdict:** `.vscode/launch.json` and `.vscode/tasks.json` (editor convenience; no doc contradiction). +**Base:** `main` (review reflects branch state as of this file). +**Follow-up:** Suggestions in **Suggestions** below were implemented in commit `6b9f4e8` (same day). + +## Verdict + +**Approve** — Hybrid **gig vs non-combat skill** vocabulary is consistent across vision docs, **Epic 2** / **E2.M1** / **E2.M2**, and **CI** (`validate_content.py`, `check_decomposition_language.py` both **OK** locally). No blocking factual errors found in sampled cross-links. Prior **polish** suggestions (overview placeholder row, `skills.md` next-pass, `abilities.md` framing) are **done** — see strikethrough list below. + +## Summary + +The branch ships a **complete spine** for progression design: `progression.md`, `gigs.md`, `skills.md` (Seams), `abilities.md`, `items.md`, `gathering.md`, `crafting.md`, plus `overview.md` index and combat-pillars stub. Decomposition renames **Epic 2** to **Skills and Progression Framework** and aligns **Slice 1** / **Slice 3** with **no combat `SkillDef` XP** from encounters. **Content** enforces **`allowedXpSourceKinds`** and **category** enum (`gather` / `process` / `make` / `tech`) consistent with `skills.md`. The **docs-review-agent** ground truth correctly lists the new vision artifacts. + +## Documentation checked + +| Path | Assessment | +|------|------------| +| `docs/game-design/overview.md` | **Matches** — index, combat pillars stub, links to all core artifacts. ~~Placeholder artifact row~~ **Removed** in follow-up (`6b9f4e8`). | +| `docs/game-design/progression.md` | **Matches** — vocabulary, Epic 2 Slice 3 note, where-to-read includes items / gathering / crafting. | +| `docs/game-design/skills.md` | **Matches** — roster, production chains, Seams, decisions log, links to Epic 2/3/7 and content schema. ~~“Next pass” without gather/craft anchors~~ **Updated** — now cites `gathering.md`, `crafting.md`, E2.M1 (`6b9f4e8`). | +| `docs/game-design/gigs.md` | **Matches** — roster, hub/sub-gig, XP rules, next-artifact links. | +| `docs/game-design/abilities.md` | **Matches** — gig kit vs skill interaction vs item channel; Epic 2 Slice 3 cite. **N/A** for full combat pillar doc (still stubbed in overview). ~~Framing without gather/craft spine~~ **Updated** — `gathering.md` / `crafting.md` in framing (`6b9f4e8`). | +| `docs/game-design/items.md` | **Matches** — buckets, Seams, Epic 3 module map, open questions, cross-links to gathering/crafting. | +| `docs/game-design/gathering.md` | **Matches** — E3.M1/E4.M2/E2.M2 hooks, skill-not-gig XP, pipeline handoff to `crafting.md`. | +| `docs/game-design/crafting.md` | **Matches** — E3.M2 contracts, bench vs gig, module map including E7.M1 / E6.M4. | +| `docs/game-design/README.md` | **Matches** — pointers to overview + progression + new artifacts. | +| `docs/game-design/brainstorm/*` | **Matches** — relative links to parent `skills.md` / `gigs.md` / `overview.md` resolve. | +| `docs/decomposition/epics/epic_02_skills_and_progression.md` | **Matches** — objective and slices align with `progression.md` (gather/craft → skill XP; combat → gig XP; mission skill rewards explicit). | +| `docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md` | **Matches** — schema + `allowedXpSourceKinds` table aligns with `content/schemas/skill-def.schema.json`. | +| `docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md` | **Matches** — rejects skill grants outside allowed sources; combat → gig XP. | +| `docs/decomposition/README.md` | **Matches** — Epic 2 filename updated. | +| `docs/decomposition/modules/module_dependency_register.md` | **Matches** — Epic 2 heading + E2.M1 contract row. | +| `docs/decomposition/modules/CT_M1_ContentValidationPipeline.md` | **Matches** — documents PR gate validation. | +| `content/README.md` + `skill-def.schema.json` + `prototype_skills.json` | **Matches** — categories and XP source kinds align with game-design and E2.M1. | +| `.cursor/rules/docs-review-agent.md` | **Matches** — hybrid ground truth includes `gathering.md` and `crafting.md`. | +| `AGENTS.md` | **Matches** — docs-review agent row present. | +| `README.md` (repo root) | **Matches** — gigs + skills product line; consistent with hybrid docs. | +| `neon_sprawl_vision.plan.md` | **Matches** (spot-check via grep) — Epic 2 naming consistent with branch. | + +## Blocking issues + +None identified. + +## Suggestions + +1. ~~**`docs/game-design/overview.md`** — Remove or shrink the `*(add rows as files land)*` artifact row once you treat the core economy/combat vision set as “indexed.”~~ **Done** — placeholder row removed (`6b9f4e8`). +2. ~~**`docs/game-design/skills.md`** — Under **Cross-cutting notes**, refresh **Next pass** to reference **`gathering.md`** and **`crafting.md`** as the written anchors for the gather/craft legs of the prototype trio (still **TBD** which three `SkillDef` ids ship first in data).~~ **Done** — next-pass bullet cites `gathering.md`, `crafting.md`, and E2.M1 slice freeze (`6b9f4e8`). +3. ~~**`docs/game-design/abilities.md`** (optional) — In the opening **Framing** paragraph, add one line pointing to **`gathering.md`** / **`crafting.md`** so combat-adjacent readers find the economy spine without going through `items.md` only.~~ **Done** — **Gather → craft economy spine** line in framing (`6b9f4e8`). + +## Nits + +- Epic 3 slice references in `gathering.md` / `crafting.md` use *italic* slice titles next to the epic link rather than `#` anchors—**intentionally robust** vs GitHub slug drift; keep as-is unless you add explicit HTML ids in the epic doc. +- `skills.md` **Next artifacts** still lists **gigs** first (appropriate for folder flow); no change required. + +## Verification + +- Re-run locally: `pip install -r scripts/requirements-content.txt && python scripts/validate_content.py && python scripts/check_decomposition_language.py` +- Before merge: grep for **`epic_02_classless_progression`** (should be **zero**); quick click-test of `docs/game-design/overview.md` links in the GitHub preview for the PR. From 1bdc29288de942b1ebeb8f8501733d8eb4296560 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 22:13:56 -0400 Subject: [PATCH 83/91] chore: note PEP 668 / venv in docs review verification --- docs/reviews/2026-04-03-game-design-branch-docs-review.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/reviews/2026-04-03-game-design-branch-docs-review.md b/docs/reviews/2026-04-03-game-design-branch-docs-review.md index b3840de..dcd81b0 100644 --- a/docs/reviews/2026-04-03-game-design-branch-docs-review.md +++ b/docs/reviews/2026-04-03-game-design-branch-docs-review.md @@ -57,4 +57,5 @@ None identified. ## Verification - Re-run locally: `pip install -r scripts/requirements-content.txt && python scripts/validate_content.py && python scripts/check_decomposition_language.py` +- If **`pip install`** fails with **PEP 668** (externally managed environment), use a venv (e.g. `python3 -m venv .venv-content`, then `.venv-content/bin/pip install -r scripts/requirements-content.txt` — `.venv-content/` is gitignored) or rely on the **PR gate** workflow for the same checks. - Before merge: grep for **`epic_02_classless_progression`** (should be **zero**); quick click-test of `docs/game-design/overview.md` links in the GitHub preview for the PR. From 6b7623615d74921a8ea66406965b1b381cd0fda2 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 22:14:47 -0400 Subject: [PATCH 84/91] chore: stable Epic 3 slice anchors; deep-links from gather/craft docs - epic_03: HTML ids epic-3-slice-2 / epic-3-slice-3 - gathering/crafting: where-next and prototype scope use # anchors - game-design docs review: mark slice nit done; clarify gigs-first nit --- docs/decomposition/epics/epic_03_crafting_economy.md | 4 ++++ docs/game-design/crafting.md | 6 +++--- docs/game-design/gathering.md | 2 +- docs/reviews/2026-04-03-game-design-branch-docs-review.md | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/decomposition/epics/epic_03_crafting_economy.md b/docs/decomposition/epics/epic_03_crafting_economy.md index 2fc18c3..1071a28 100644 --- a/docs/decomposition/epics/epic_03_crafting_economy.md +++ b/docs/decomposition/epics/epic_03_crafting_economy.md @@ -62,6 +62,8 @@ Implement gathering from world nodes, item/inventory representation, recipe exec - Item schema versioned for forward-compatible migrations. - Telemetry hooks: `item_created`, `inventory_full` / transfer failures. + + ### Slice 2 - Gather nodes and outputs - Scope: E3.M1 with 4-6 node types and yield tables; awards crafting/gathering XP via E2.M2. @@ -70,6 +72,8 @@ Implement gathering from world nodes, item/inventory representation, recipe exec - Full gather interaction in prototype region without dupes or free resources. - Telemetry hooks: `resource_gathered`, `gather_node_depleted`. + + ### Slice 3 - Recipes and crafting pipeline - Scope: E3.M2 with 8-12 starter recipes per prototype minimums. diff --git a/docs/game-design/crafting.md b/docs/game-design/crafting.md index 6a04ae1..c507140 100644 --- a/docs/game-design/crafting.md +++ b/docs/game-design/crafting.md @@ -22,7 +22,7 @@ Authoritative **recipe graph** is **data** (`RecipeDef`); design intent: | **Branching** | Same inputs can route to **different** skills or recipes for **different** outputs (**overlapping chains**)—dense economy, not a single trunk. | | **Skill per recipe** | Each recipe names **required skill** (and level band **TBD**); one **Process** skill is not the only mid-pipeline actor. | -**Prototype scope:** [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) **Slice 3** targets a **starter recipe set** (e.g. 8–12 minimums in epic text) proving **gather → refine → item used in combat or quest**. +**Prototype scope:** [Epic 3 — Slice 3 (Recipes pipeline)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-3) targets a **starter recipe set** (e.g. 8–12 minimums in epic text) proving **gather → refine → item used in combat or quest**. ## Stations, co-op, and UX @@ -71,5 +71,5 @@ Authoritative **recipe graph** is **data** (`RecipeDef`); design intent: | Process / Make skill names | [skills.md](skills.md) **Process** and **Make** tables | | Raw inputs from the world | [gathering.md](gathering.md) | | Item categories & tooltips | [items.md](items.md) | -| Epic 3 craft slice | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) — *Slice 3 — Recipes and crafting pipeline* | -| Gather slice (inputs) | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) — *Slice 2 — Gather nodes and outputs* | +| Epic 3 craft slice | [Epic 3 — Slice 3 (Recipes pipeline)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-3) | +| Gather slice (inputs) | [Epic 3 — Slice 2 (Gather nodes)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-2) | diff --git a/docs/game-design/gathering.md b/docs/game-design/gathering.md index b64c78a..8d9a3e5 100644 --- a/docs/game-design/gathering.md +++ b/docs/game-design/gathering.md @@ -75,6 +75,6 @@ Directional goals (implementation **open**): | Gather skill names & merge notes | [skills.md](skills.md) **Gather** table | | Items & materials buckets | [items.md](items.md) | | Crafting & recipes (vision) | [crafting.md](crafting.md) | -| Epic 3 gather slice | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) — *Slice 2 — Gather nodes and outputs* | +| Epic 3 gather slice | [Epic 3 — Slice 2 (Gather nodes)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-2) | | Interaction contracts | [E1.M3](../decomposition/modules/E1_M3_InteractionAndTargetingLayer.md) | | Zone ecology | [E4.M2](../decomposition/modules/E4_M2_SpawnEcologyController.md), [Epic 4](../decomposition/epics/epic_04_world_topology.md) | diff --git a/docs/reviews/2026-04-03-game-design-branch-docs-review.md b/docs/reviews/2026-04-03-game-design-branch-docs-review.md index dcd81b0..2adf993 100644 --- a/docs/reviews/2026-04-03-game-design-branch-docs-review.md +++ b/docs/reviews/2026-04-03-game-design-branch-docs-review.md @@ -51,8 +51,8 @@ None identified. ## Nits -- Epic 3 slice references in `gathering.md` / `crafting.md` use *italic* slice titles next to the epic link rather than `#` anchors—**intentionally robust** vs GitHub slug drift; keep as-is unless you add explicit HTML ids in the epic doc. -- `skills.md` **Next artifacts** still lists **gigs** first (appropriate for folder flow); no change required. +- ~~Epic 3 slice references in `gathering.md` / `crafting.md` use *italic* slice titles next to the epic link rather than `#` anchors—**intentionally robust** vs GitHub slug drift; keep as-is unless you add explicit HTML ids in the epic doc.~~ **Done** — `epic_03_crafting_economy.md` now has `` / ``; `gathering.md` / `crafting.md` deep-link with stable anchors. +- `skills.md` **Next artifacts** lists **gigs** first — **intentional** (folder reading order); no change. ## Verification From 81695f93e4d5328687717db1b0a36e648c802947 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 22:20:39 -0400 Subject: [PATCH 85/91] chore: add game-design economy doc and cross-links - Add economy.md (faucets, sinks, trade, E3.M5/E8.M3/E6.M4, mission vs loot) - epic_03: anchor epic-3-slice-4 for stable deep links - Wire overview, progression, skills, gigs, items, crafting, gathering, abilities, README - Extend docs-review-agent hybrid ground truth for economy.md --- .cursor/rules/docs-review-agent.md | 2 +- .../epics/epic_03_crafting_economy.md | 2 + docs/game-design/README.md | 2 +- docs/game-design/abilities.md | 1 + docs/game-design/crafting.md | 1 + docs/game-design/economy.md | 91 +++++++++++++++++++ docs/game-design/gathering.md | 1 + docs/game-design/gigs.md | 1 + docs/game-design/items.md | 5 +- docs/game-design/overview.md | 5 +- docs/game-design/progression.md | 1 + docs/game-design/skills.md | 3 +- 12 files changed, 108 insertions(+), 7 deletions(-) create mode 100644 docs/game-design/economy.md diff --git a/.cursor/rules/docs-review-agent.md b/.cursor/rules/docs-review-agent.md index 941597f..d90710b 100644 --- a/.cursor/rules/docs-review-agent.md +++ b/.cursor/rules/docs-review-agent.md @@ -26,7 +26,7 @@ Use this rule when the user is working in **`docs/`** (design, decomposition, pl ## Ground truth (required to check) 1. **Same folder and upstream links** — Read every `docs/...` link from the target doc(s); verify paths exist and headings match intent. -2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`, `gathering.md`, `crafting.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Gather / craft** → **skill XP** (see `gathering.md`, `crafting.md`, Epic 3)—not **gig** XP. **Mission/quest rewards** may still grant **skill XP** when explicitly defined—separate from the encounter **gig XP** path. +2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`, `gathering.md`, `crafting.md`, `economy.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Gather / craft** → **skill XP** (see `gathering.md`, `crafting.md`, Epic 3)—not **gig** XP. **Mission/quest rewards** may grant **skill XP**, **currency**, or **items** when explicitly defined (`progression.md`, `economy.md`)—separate from the encounter **gig XP** path. **Economy** faucets/sinks and trade (`economy.md`) do not re-gate **craft** on **gig** (see `items.md` / Seams). 3. **Decomposition** — Map claims to `docs/decomposition/epics/` and `docs/decomposition/modules/` where relevant; flag **conflicts** (e.g. “combat skill” vs skills-as-non-combat). **CI** enforces a minimal guard via [`scripts/check_decomposition_language.py`](../../scripts/check_decomposition_language.py) in the **PR gate** (extend the script if a vetted exception is needed). 4. **Plans** — If work maps to `docs/plans/`, check for **acceptance criteria** vs design doc (same spirit as [code-review-agent](code-review-agent.md) plan alignment). diff --git a/docs/decomposition/epics/epic_03_crafting_economy.md b/docs/decomposition/epics/epic_03_crafting_economy.md index 1071a28..04252a9 100644 --- a/docs/decomposition/epics/epic_03_crafting_economy.md +++ b/docs/decomposition/epics/epic_03_crafting_economy.md @@ -82,6 +82,8 @@ Implement gathering from world nodes, item/inventory representation, recipe exec - Player completes gather to refine to usable item used in combat or quest. - Telemetry hooks: `item_crafted`, `craft_failed` with reason, time-to-first-craft. + + ### Slice 4 - Sinks and economy policy (pre-production) - Scope: E3.M4 + E3.M5 with tuning hooks and validation against outliers. diff --git a/docs/game-design/README.md b/docs/game-design/README.md index a977e7e..4f1e3ef 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -6,6 +6,6 @@ **Brainstorm-only** (not specs): [`brainstorm/`](brainstorm/README.md). -Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), **[gathering](gathering.md)** (resource nodes, yields), **[crafting](crafting.md)** (recipes, pipeline), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. +Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), **[gathering](gathering.md)** (resource nodes, yields), **[crafting](crafting.md)** (recipes, pipeline), **[economy](economy.md)** (faucets, sinks, trade), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). diff --git a/docs/game-design/abilities.md b/docs/game-design/abilities.md index c5a48ca..38ed017 100644 --- a/docs/game-design/abilities.md +++ b/docs/game-design/abilities.md @@ -60,6 +60,7 @@ Vision for **what the player triggers** in play: combat **kits**, non-combat **s | Item categories, craft vs loot | [items.md](items.md) | | Gathering (skill XP, nodes—not gig) | [gathering.md](gathering.md) | | Crafting (bench skill vs gig combat use) | [crafting.md](crafting.md) | +| Economy (trade, sinks—gig does not gate craft) | [economy.md](economy.md) | | Seams (gear, craft, consumables) | [skills.md](skills.md) | | Hybrid vocabulary | [progression.md](progression.md) | | Encounter rewards + combat hooks | [Epic 5](../decomposition/epics/epic_05_pve_combat.md), [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | diff --git a/docs/game-design/crafting.md b/docs/game-design/crafting.md index c507140..4e65d66 100644 --- a/docs/game-design/crafting.md +++ b/docs/game-design/crafting.md @@ -73,3 +73,4 @@ Authoritative **recipe graph** is **data** (`RecipeDef`); design intent: | Item categories & tooltips | [items.md](items.md) | | Epic 3 craft slice | [Epic 3 — Slice 3 (Recipes pipeline)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-3) | | Gather slice (inputs) | [Epic 3 — Slice 2 (Gather nodes)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-2) | +| Economy (sinks, trade, tuning) | [economy.md](economy.md) | diff --git a/docs/game-design/economy.md b/docs/game-design/economy.md new file mode 100644 index 0000000..e58d432 --- /dev/null +++ b/docs/game-design/economy.md @@ -0,0 +1,91 @@ +# Economy (currency, trade, sinks) + +Vision for **how value is created, destroyed, and exchanged**: **faucets**, **sinks**, **prices and fees**, **player trade**, and **live balance**—without re-specifying **item** shapes or **recipe** execution (those stay in [items.md](items.md) and [crafting.md](crafting.md)). + +**Policy & KPIs:** [E3.M5 — EconomyBalancePolicy](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) encodes **`EconomyPolicy`**, **`PriceBandRule`**, **`FaucetSinkRatio`** thresholds; ties to [E3.M4 — SinkAndDurabilityLifecycle](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) and alerts via [E9.M2 — KpiDashboardsAndAlerting](../decomposition/modules/E9_M2_KpiDashboardsAndAlerting.md); later [E9.M3 — LiveBalanceControlPlane](../decomposition/modules/E9_M3_LiveBalanceControlPlane.md). + +**Trade & settlement:** [E8.M3 — PlayerTradeAndMarketplace](../decomposition/modules/E8_M3_PlayerTradeAndMarketplace.md) (`MarketListing`, `TradeOffer`, `SettlementEvent`)—supports **crafting economy** per [Epic 8 — Social / trade](../decomposition/epics/epic_08_social_guild.md). + +**Reward paths:** [E7.M2 — RewardAndUnlockRouter](../decomposition/modules/E7_M2_RewardAndUnlockRouter.md) (missions, bundles); [E5.M3 — EncounterAndRewardTables](../decomposition/modules/E5_M3_EncounterAndRewardTables.md) (loot). **Parity guard:** [E6.M4 — RewardParityEnforcer](../decomposition/modules/E6_M4_RewardParityEnforcer.md) (PvP ↔ PvE/craft equivalents). + +**Production spine:** [gathering.md](gathering.md) → [crafting.md](crafting.md) → [items.md](items.md). **Progression payouts:** [progression.md](progression.md) (**mission** rewards vs **combat encounter** pipes). **Epic 3** loop: [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) — [Slice 4 (sinks + policy)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-4) for pre-production **economy** tuning. + +## Gig vs skill (economic identity) + +- **Wealth and supply** mainly flow through **skills** (gather, process, make), **items**, **trade**, and **missions**—not through **gig level**. **Gigs** gate **combat use** of much **gear**, not the right to **craft** or **sell** ([Seams](skills.md#seams-gigs-skills), [items.md](items.md)). +- **Combat encounters** → **gig XP** by default; they are **not** the primary faucet for **skill** economy unless we explicitly add **loot** or **currency** on the encounter table ([progression.md](progression.md)). +- **Mission / contract rewards** may inject **credits**, **items**, or **skill XP** as scripted **payouts**—separate from “the fight trained my fab skill” ([progression.md](progression.md), [skills.md](skills.md)). + +## Faucets (value entering circulation) + +Design lenses (exact tables **data-driven**): + +| Source | Role | +|--------|------| +| **Gather nodes** | Raw materials into the loop ([gathering.md](gathering.md)) | +| **Loot / salvage** | Drops and world pulls ([items.md](items.md) **Acquisition**) | +| **Craft outputs** | New usable goods from benches ([crafting.md](crafting.md))—creates **items**, not necessarily net **currency** | +| **Mission / vendor payouts** | Injected **currency** or **items** for story and progression | +| **Trade** | **Redistributes** existing stock; may pair with **currency** changing hands via **fees** or **prices** | + +## Sinks (value leaving or being taxed) + +| Sink | Role | +|------|------| +| **Consumables** | Ongoing churn (stims, ammo-adjacent, etc.) | +| **Durability, repair, destruction** | [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md); ties to [items.md](items.md) open questions until **death** doc lands | +| **Fees** | Listing, transfer, **clinic** / service **fiction**—**open** rates; `PriceBandRule` in E3.M5 | +| **Currency dumps** | Fast travel, licenses, rep gates, **optional** **sinks** for inflation—**open** catalog | + +Direction: **prototype** should prove at least one **meaningful** durable sink before leaning on **auction-house** scaling ([Epic 3 — Slice 4](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-4) intent). + +## Currency and wealth readability + +- **One primary player currency** vs **multiple** (regional, corp scrip, crypto **fiction**)—**open**; UX must stay **readable** ([items.md](items.md) **tooltips** discipline). +- **Wealth fantasy** includes **stockpiles**, **loadout value**, **workspace access**, and **social** **flex**—not only raw balance. +- **Binding**, **insurance**, **theft**, and **security tiers** change **effective** supply—see [items.md](items.md) **Open questions** and future **risk** / **death** docs (**TBD**). + +## Trade and prices + +- **Craft-for-others** and **face-to-face** trade are **valid**; buyers need not **equip** what they buy ([items.md](items.md) **Trade**, [Seams](skills.md#seams-gigs-skills)). +- **Market vs direct trade**—**open** product split; [E8.M3](../decomposition/modules/E8_M3_PlayerTradeAndMarketplace.md) owns settlement **contracts**. +- **Craft vs drops vs PvP rewards** should stay **comparable** where [E6.M4](../decomposition/modules/E6_M4_RewardParityEnforcer.md) applies—**parity** is a **gate**, not the full **fun** story. + +## Module map (economy-focused) + +| Module | Role | Ties to this doc | +|--------|------|-------------------| +| [E3.M5](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) | Policy, ratios, price bands | **Tuning hub** | +| [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | Durability, repair, item sinks | **Demand** for mats / craft | +| [E8.M3](../decomposition/modules/E8_M3_PlayerTradeAndMarketplace.md) | Listings, settlement | **Exchange** | +| [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | Items in motion | **All** trades | +| [E7.M2](../decomposition/modules/E7_M2_RewardAndUnlockRouter.md) | Quest/mission rewards | **Faucets** | +| [E5.M3](../decomposition/modules/E5_M3_EncounterAndRewardTables.md) | Encounter loot | **Faucets** | +| [E6.M4](../decomposition/modules/E6_M4_RewardParityEnforcer.md) | Cross-path parity | **Fairness** | +| [E9.M2](../decomposition/modules/E9_M2_KpiDashboardsAndAlerting.md) | KPIs, breaches | **Ops** visibility | +| [E9.M3](../decomposition/modules/E9_M3_LiveBalanceControlPlane.md) | Live knobs | **Later** balance | + +## Decisions log + +| Topic | Direction | Status | +|-------|-----------|--------| +| Crafting as primary lane | **Player-made** output stays **relevant**; not “drops only endgame” | Agreed ([Epic 3](../decomposition/epics/epic_03_crafting_economy.md), [items.md](items.md)) | +| Trade without gig | **Buy**/**sell** **craft** products without matching **combat gig** | Agreed ([items.md](items.md), [Seams](skills.md#seams-gigs-skills)) | +| Mission vs encounter payouts | **Skill**/**item**/**currency** from **missions** is explicit reward design—not default combat **skill** XP | Agreed ([progression.md](progression.md)) | + +## Open questions + +- **Starter wealth** and **new player** cadence vs **inflation** in mature shards. +- **Regional** or **instance** markets vs **global** listings—latency and **exploit** surface. +- **Tax**, **laundering**, **corruption** **fiction** vs systems cost. +- **RMT / TOS** stance—product and legal, not covered here beyond “server-authoritative **economy**.” + +## Where to read next + +| Topic | Document / module | +|--------|-------------------| +| Item buckets, rarity, trade seam | [items.md](items.md) | +| Gather / craft production | [gathering.md](gathering.md), [crafting.md](crafting.md) | +| Hybrid XP / reward pipes | [progression.md](progression.md), [skills.md](skills.md) | +| Epic 3 slices (incl. sinks/policy) | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) | +| Social / corp context for trade | [Epic 8](../decomposition/epics/epic_08_social_guild.md) | diff --git a/docs/game-design/gathering.md b/docs/game-design/gathering.md index 8d9a3e5..1b4b9fe 100644 --- a/docs/game-design/gathering.md +++ b/docs/game-design/gathering.md @@ -75,6 +75,7 @@ Directional goals (implementation **open**): | Gather skill names & merge notes | [skills.md](skills.md) **Gather** table | | Items & materials buckets | [items.md](items.md) | | Crafting & recipes (vision) | [crafting.md](crafting.md) | +| Economy (faucets from gather + policy) | [economy.md](economy.md) | | Epic 3 gather slice | [Epic 3 — Slice 2 (Gather nodes)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-2) | | Interaction contracts | [E1.M3](../decomposition/modules/E1_M3_InteractionAndTargetingLayer.md) | | Zone ecology | [E4.M2](../decomposition/modules/E4_M2_SpawnEcologyController.md), [Epic 4](../decomposition/epics/epic_04_world_topology.md) | diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 5934582..dff1e95 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -134,4 +134,5 @@ Detail: seams table in [skills.md](skills.md). - [items.md](items.md) — **combat gear** vs chrome vs consumables; craft vs loot; loadout + swap ([Seams](skills.md#seams-gigs-skills)). - [gathering.md](gathering.md) — **not** gig progression; **skill** nodes and yields feed economy ([progression.md](progression.md)). - [crafting.md](crafting.md) — **bench** = **skill**; **combat use** of most crafted **gear** still **gig**-gated ([Seams](skills.md#seams-gigs-skills)). +- [economy.md](economy.md) — **gig** does not gate **craft**/**trade**; **wealth** loops are **skill**- and **item**-heavy ([items.md](items.md)). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group content where **gigs** hold security while **skills** run the hack (brainstorm). diff --git a/docs/game-design/items.md b/docs/game-design/items.md index 362665b..9cc93e8 100644 --- a/docs/game-design/items.md +++ b/docs/game-design/items.md @@ -23,7 +23,7 @@ These overlap in data; they are **lenses** for writers and systems. - **Crafted:** Primary fantasy for **durables** that matter in combat and economy—**player-made goods stay relevant** across stages ([Epic 3](../decomposition/epics/epic_03_crafting_economy.md) success criteria). **Recipe pipeline & benches:** [crafting.md](crafting.md). - **Dropped / looted / salvaged:** Feed **gather–refine–craft** loops and **world fiction**; tuning is **content + economy policy** (**open** drop tables). **World-sourced raw** (nodes, yields): [gathering.md](gathering.md). - **Mission & vendor rewards:** Can grant **items** or **skill XP** separately from combat XP pipes ([progression.md](progression.md)); avoid double-dipping the same milestone without intent (**open** reward UX). -- **Trade:** Craft-for-others is **valid** even when the buyer cannot **equip** or **combat-deploy** the product ([Seams](skills.md#seams-gigs-skills) **Crafting combat gear**). +- **Trade:** Craft-for-others is **valid** even when the buyer cannot **equip** or **combat-deploy** the product ([Seams](skills.md#seams-gigs-skills) **Crafting combat gear**). **Faucets, sinks, listings:** [economy.md](economy.md). ## Rarity, quality, and readability @@ -79,5 +79,6 @@ Design **buckets** above are not 1:1 types in data—they inform tags and metada | Recipes & craft pipeline (runtime) | [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) | | Item schema & inventory | [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | | Sinks & durability | [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | -| Economy policy | [E3.M5](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) | +| Economy vision (faucets, trade, policy) | [economy.md](economy.md) | +| Economy policy (runtime) | [E3.M5](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) | | Encounter loot routing | [E5.M3](../decomposition/modules/E5_M3_EncounterAndRewardTables.md), [E7.M2](../decomposition/modules/E7_M2_RewardAndUnlockRouter.md) | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 809484e..d66faf0 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,7 +6,7 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. -**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Gathering** (nodes, skill XP, ecology): [gathering.md](gathering.md). **Crafting** (recipes, pipeline, benches): [crafting.md](crafting.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). +**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Gathering** (nodes, skill XP, ecology): [gathering.md](gathering.md). **Crafting** (recipes, pipeline, benches): [crafting.md](crafting.md). **Economy** (faucets, sinks, trade, policy): [economy.md](economy.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). ## Presentation and target rating (vision) @@ -29,6 +29,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | [items.md](items.md) | Buckets (gear, chrome, consumables, mats); craft vs drops; rarity/readability | **Seams** in [skills.md](skills.md); **Epic 3 module map** in [items.md](items.md#epic-3-module-map) | | [gathering.md](gathering.md) | Resource **nodes**, **Gather** skills, contesting, pipeline to refine/craft | **E3.M1** + **E4.M2**; with [skills.md](skills.md), [items.md](items.md) | | [crafting.md](crafting.md) | **Recipes**, **Process/Make** pipeline, bench vs **gig** combat use | **E3.M2**; with [gathering.md](gathering.md), [items.md](items.md), [skills.md](skills.md) **Seams** | +| [economy.md](economy.md) | **Faucets/sinks**, trade, **E3.M5** policy, mission vs loot **faucets** | With [items.md](items.md), [crafting.md](crafting.md); **E8.M3** trade, **E6.M4** parity | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | ### Planned topics (stubs) @@ -43,7 +44,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Abilities** — [abilities.md](abilities.md): inputs, timing; combo with items; **gig** vs **skill** gates (see [progression.md](progression.md) vocabulary). **Combat context:** [Combat pillars (vision stub)](#combat-pillars-vision-stub). - **Gathering & resources** — [gathering.md](gathering.md): nodes, competition, exhaustion, open-world contesting; **skill XP** not **gig** XP. - **Crafting & recipes** — [crafting.md](crafting.md): depth vs breadth, failure, quality, stations; **skill XP**; [items.md](items.md) for output buckets. -- **Economy** — currency velocity, sinks, trade vs. self-sufficiency, how wealth shows up in play. +- **Economy** — [economy.md](economy.md): currency, sinks, trade, **E3.M5** / **E8.M3**; **mission** payouts vs **combat** loot ([progression.md](progression.md)). - **Factions & reputation** — who remembers you, grudges, access gates; **gig** story arcs: [gigs.md](gigs.md), rep + seams: [skills.md](skills.md). - **Combat pillars** — [Vision stub below](#combat-pillars-vision-stub): PvE vs. PvP stance, readability, time-to-kill, fairness; **items in combat** in [items.md](items.md). - **Death, loss & recovery** — stakes on failure, recovery paths, anti-grief boundaries. diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index 9929919..78f92b4 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -30,6 +30,7 @@ Use these terms in **design specs and tools** (fiction may say *job*, *contract* | **Items** (craft, loot, equip, gig/skill gates) | [items.md](items.md) | | **Gathering** (nodes, yields, skill XP—not gig) | [gathering.md](gathering.md) | | **Crafting** (recipes, pipeline, bench vs gig) | [crafting.md](crafting.md) | +| **Economy** (faucets, sinks, trade, policy) | [economy.md](economy.md) | | Skill domains, categories, XP curves, gates, mastery | [skills.md](skills.md) | | **Seams** (combat gear vs craft, consumables, rep, alts) | [skills.md](skills.md) (section *Seams (gigs ↔ skills)*) | | Loose ideas | [brainstorm/](brainstorm/README.md) | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index db6d829..10b6482 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,6 +1,6 @@ # Skills (non-combat progression) -Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **Gathering & resource nodes** (competition, ecology, gig vs skill): **[gathering.md](gathering.md)**. **Crafting & recipes** (pipeline, benches, failure/quality): **[crafting.md](crafting.md)**. +Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **Gathering & resource nodes** (competition, ecology, gig vs skill): **[gathering.md](gathering.md)**. **Crafting & recipes** (pipeline, benches, failure/quality): **[crafting.md](crafting.md)**. **Economy** (faucets, sinks, trade, policy): **[economy.md](economy.md)**. **This file also owns the [Seams (gigs ↔ skills)](#seams-gigs-skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). @@ -252,4 +252,5 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ - **[items.md](items.md)** — buckets, craft vs drops, rarity/readability; detail still in [Seams](#seams-gigs-skills). - **[gathering.md](gathering.md)** — nodes, yields, **skill** XP from gather; **E3.M1** / **E4.M2** hooks (written). - **[crafting.md](crafting.md)** — **Process/Make** pipeline, **RecipeDef** vision, bench vs **gig**; **E3.M2** (written). +- **[economy.md](economy.md)** — faucets/sinks, trade, **E3.M5**; mission vs loot ([progression.md](progression.md)) (written). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From 6602f78b4b747afb91e5516f9e0b4bc8a93dd9c9 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 22:30:11 -0400 Subject: [PATCH 86/91] chore: add game-design death-loss-recovery doc - Add death-loss-recovery.md (E5.M1, E3.M4, E6.M3, recovery, PvE vs PvP) - Cross-link from overview (incl. combat stub), progression, skills, gigs, items, economy, gathering, crafting, abilities, README - Extend docs-review-agent ground truth for death/loss --- .cursor/rules/docs-review-agent.md | 2 +- docs/game-design/README.md | 2 +- docs/game-design/abilities.md | 1 + docs/game-design/crafting.md | 1 + docs/game-design/death-loss-recovery.md | 77 +++++++++++++++++++++++++ docs/game-design/economy.md | 5 +- docs/game-design/gathering.md | 3 +- docs/game-design/gigs.md | 1 + docs/game-design/items.md | 7 ++- docs/game-design/overview.md | 8 ++- docs/game-design/progression.md | 1 + docs/game-design/skills.md | 3 +- 12 files changed, 99 insertions(+), 12 deletions(-) create mode 100644 docs/game-design/death-loss-recovery.md diff --git a/.cursor/rules/docs-review-agent.md b/.cursor/rules/docs-review-agent.md index d90710b..23f8ab0 100644 --- a/.cursor/rules/docs-review-agent.md +++ b/.cursor/rules/docs-review-agent.md @@ -26,7 +26,7 @@ Use this rule when the user is working in **`docs/`** (design, decomposition, pl ## Ground truth (required to check) 1. **Same folder and upstream links** — Read every `docs/...` link from the target doc(s); verify paths exist and headings match intent. -2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`, `gathering.md`, `crafting.md`, `economy.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Gather / craft** → **skill XP** (see `gathering.md`, `crafting.md`, Epic 3)—not **gig** XP. **Mission/quest rewards** may grant **skill XP**, **currency**, or **items** when explicitly defined (`progression.md`, `economy.md`)—separate from the encounter **gig XP** path. **Economy** faucets/sinks and trade (`economy.md`) do not re-gate **craft** on **gig** (see `items.md` / Seams). +2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`, `gathering.md`, `crafting.md`, `economy.md`, `death-loss-recovery.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Gather / craft** → **skill XP** (see `gathering.md`, `crafting.md`, Epic 3)—not **gig** XP. **Mission/quest rewards** may grant **skill XP**, **currency**, or **items** when explicitly defined (`progression.md`, `economy.md`)—separate from the encounter **gig XP** path. **Economy** faucets/sinks and trade (`economy.md`) do not re-gate **craft** on **gig** (see `items.md` / Seams). **Death / loss / recovery** (`death-loss-recovery.md`): server-authoritative combat death; item stakes via **E3.M4** / **E5.M1**; **PvP** loss **E6.M3** vs **PvE** **open**; **cybernetics** vs external **gear** per **Seams**. 3. **Decomposition** — Map claims to `docs/decomposition/epics/` and `docs/decomposition/modules/` where relevant; flag **conflicts** (e.g. “combat skill” vs skills-as-non-combat). **CI** enforces a minimal guard via [`scripts/check_decomposition_language.py`](../../scripts/check_decomposition_language.py) in the **PR gate** (extend the script if a vetted exception is needed). 4. **Plans** — If work maps to `docs/plans/`, check for **acceptance criteria** vs design doc (same spirit as [code-review-agent](code-review-agent.md) plan alignment). diff --git a/docs/game-design/README.md b/docs/game-design/README.md index 4f1e3ef..842fb0c 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -6,6 +6,6 @@ **Brainstorm-only** (not specs): [`brainstorm/`](brainstorm/README.md). -Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), **[gathering](gathering.md)** (resource nodes, yields), **[crafting](crafting.md)** (recipes, pipeline), **[economy](economy.md)** (faucets, sinks, trade), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. +Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), **[gathering](gathering.md)** (resource nodes, yields), **[crafting](crafting.md)** (recipes, pipeline), **[economy](economy.md)** (faucets, sinks, trade), **[death-loss-recovery](death-loss-recovery.md)** (stakes, recovery), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). diff --git a/docs/game-design/abilities.md b/docs/game-design/abilities.md index 38ed017..87ed7eb 100644 --- a/docs/game-design/abilities.md +++ b/docs/game-design/abilities.md @@ -61,6 +61,7 @@ Vision for **what the player triggers** in play: combat **kits**, non-combat **s | Gathering (skill XP, nodes—not gig) | [gathering.md](gathering.md) | | Crafting (bench skill vs gig combat use) | [crafting.md](crafting.md) | | Economy (trade, sinks—gig does not gate craft) | [economy.md](economy.md) | +| Death / loss (combat death, gear stakes) | [death-loss-recovery.md](death-loss-recovery.md) | | Seams (gear, craft, consumables) | [skills.md](skills.md) | | Hybrid vocabulary | [progression.md](progression.md) | | Encounter rewards + combat hooks | [Epic 5](../decomposition/epics/epic_05_pve_combat.md), [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | diff --git a/docs/game-design/crafting.md b/docs/game-design/crafting.md index 4e65d66..ec3eb08 100644 --- a/docs/game-design/crafting.md +++ b/docs/game-design/crafting.md @@ -74,3 +74,4 @@ Authoritative **recipe graph** is **data** (`RecipeDef`); design intent: | Epic 3 craft slice | [Epic 3 — Slice 3 (Recipes pipeline)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-3) | | Gather slice (inputs) | [Epic 3 — Slice 2 (Gather nodes)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-2) | | Economy (sinks, trade, tuning) | [economy.md](economy.md) | +| Death / loss (durability, repair) | [death-loss-recovery.md](death-loss-recovery.md) | diff --git a/docs/game-design/death-loss-recovery.md b/docs/game-design/death-loss-recovery.md new file mode 100644 index 0000000..af21d06 --- /dev/null +++ b/docs/game-design/death-loss-recovery.md @@ -0,0 +1,77 @@ +# Death, loss & recovery + +Vision for **what happens when a character fails** (especially in **combat**): **item** stakes, **durability** and **destruction**, **recovery** flow, and **anti-grief** boundaries—without duplicating **combat ability** design ([abilities.md](abilities.md)) or full **risk tier** rules (stub in [overview.md](overview.md); future **risk** doc). + +**Combat resolution & death event:** [E5.M1 — CombatRulesEngine](../decomposition/modules/E5_M1_CombatRulesEngine.md) is **server-authoritative** for outcomes including **death** ([client vs server authority](../decomposition/modules/client_server_authority.md)); telemetry includes `player_death` per [Epic 5](../decomposition/epics/epic_05_pve_combat.md). + +**Item wear and sinks:** [E3.M4 — SinkAndDurabilityLifecycle](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) (`DurabilityState`, `ItemSinkEvent`, `RepairCostRule`)—**repair** and **decay** tie into [economy.md](economy.md) **sinks** and [items.md](items.md) **rarity** expectations. + +**PvP-context loss & abuse:** [E6.M3 — LossPenaltyAndAntiGriefRules](../decomposition/modules/E6_M3_LossPenaltyAndAntiGriefRules.md) (`PvPLossRule`, `SpawnProtectionState`, `GriefingStrike`) with hooks to [E9.M4 — IntegrityAndAbuseResponse](../decomposition/modules/E9_M4_IntegrityAndAbuseResponse.md) ([Epic 6](../decomposition/epics/epic_06_pvp_security.md)). Order with combat: [pvp integration](../decomposition/modules/pvp_combat_integration.md) — eligibility → resolution → **loss** rules. + +**Item schema:** per-item state lives on **`ItemInstance`** ([E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md)). **Cybernetics** vs **external armor** on death/loss follow [skills.md — Seams](skills.md#seams-gigs-skills) (**chrome** is **semi-permanent**; loadout **gear** is **swap-friendly**). + +## PvE vs PvP (design intent) + +- **PvE-first** product stance ([Epic 6](../decomposition/epics/epic_06_pvp_security.md) objective): default **loss** in **opt-in** or **high-tier** spaces can be **harsher** than in **safe** hubs; exact **banding** is a **risk** / **security tier** doc (**TBD**). +- **PvP death** applies **E6.M3** rules (drops, durability hits, flags)—not necessarily the same table as **PvE wipe** (**open** until PvP vision lands; [gigs.md](gigs.md) **PvP** notes). +- **Skill** and **gig** **progression** are **not** assumed to **reset** on death—loss is primarily **items**, **currency** (if any), **buffs**, and **position** unless a **hardcore** mode or **content** says otherwise (**open**). + +## Loss lenses (what can be taken or broken) + +| Lens | Design notes | +|------|----------------| +| **Durability** | Wear on use / death / repair loops ([E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md)) | +| **Drop on death / corpse** | **Lootable** body, **partial** drop, or **no** drop by **security tier**—**open**; drives **economy** and **grief** surface ([economy.md](economy.md)) | +| **Consumables** | Already **sinks**; death may **not** be the main churn—**open** | +| **Cybernetics** | **Unlikely** to fully **strip** on routine death—aligns with **character-scoped** fantasy ([skills.md](skills.md)); **damage**, **malfunction**, or **story** loss—**open** | +| **Materials / inventory** | **Full loot** vs **protected** slots vs **binding**—overlaps [items.md](items.md) **Open questions** | + +## Recovery (getting back into play) + +- **Respawn** points: **hub**, **checkpoint**, **squad**, **clinic** **fiction**—**open**; must be **clear** after **death** UX. +- **Corpse run** vs **instant** re-entry vs **mission** **fail** state—content-dependent (**open**). +- **Gig** and **loadout** after death: **same** main gig unless **content** forces **swap**; **invalid** **gear** stays governed by [gigs.md](gigs.md) **hub swap** rules when applicable. + +## Anti-grief and readability + +- **Spawn protection**, **repeated** **killing** penalties, and **escalation** to **integrity** pipeline: **E6.M3** / **E9.M4**. +- **Readable** stakes before engagement: ties to **consent / risk UX** ([Epic 6](../decomposition/epics/epic_06_pvp_security.md), [E6.M2](../decomposition/modules/E6_M2_ConsentAndRiskUxSignals.md))—detail **TBD** in **risk** doc. +- **Exploits** (dupe corpse, disconnect abuse): **server** truth + [E9.M4](../decomposition/modules/E9_M4_IntegrityAndAbuseResponse.md). + +## Module map (death / loss–focused) + +| Module | Role | Ties to this doc | +|--------|------|-------------------| +| [E5.M1](../decomposition/modules/E5_M1_CombatRulesEngine.md) | Combat outcomes, death | **Trigger** | +| [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | Durability, repair, item sink | **Item** consequences | +| [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | `ItemInstance`, binds | **What** can be lost | +| [E6.M3](../decomposition/modules/E6_M3_LossPenaltyAndAntiGriefRules.md) | PvP loss, spawn protection | **PvP** | +| [E6.M2](../decomposition/modules/E6_M2_ConsentAndRiskUxSignals.md) | Risk prompts | **Informed** consent | +| [E9.M4](../decomposition/modules/E9_M4_IntegrityAndAbuseResponse.md) | Abuse response | **Ops** | +| [E8.M3](../decomposition/modules/E8_M3_PlayerTradeAndMarketplace.md) | Trade | **Recovery** via market—**optional** fiction | + +## Decisions log + +| Topic | Direction | Status | +|-------|-----------|--------| +| Server authority on death | **Server** resolves death and **inventory** mutations—never client-trusted | Agreed ([E5.M1](../decomposition/modules/E5_M1_CombatRulesEngine.md), [authority](../decomposition/modules/client_server_authority.md)) | +| Chrome vs external gear on loss | **Different** buckets; **chrome** not treated as **swap** **plates** | Agreed ([skills.md](skills.md) **Seams**) | +| PvE-first | **Optional** **harsh** loss where product allows; **not** “PvP required to progress” | Agreed ([Epic 6](../decomposition/epics/epic_06_pvp_security.md) framing) | + +## Open questions + +- **Exact** PvE death tax (durability %, item drop table, **currency** **cut**) by **zone** / **instance**. +- **Hardcore** or **seasonal** **rules** vs **main** shard policy. +- **Failure XP** (non-lethal) remains **open** in [skills.md](skills.md)—separate from **death** **penalties**. +- **Insurance**, **clone**, **backup** **fiction** vs implementation cost ([items.md](items.md) binding/insurance notes). + +## Where to read next + +| Topic | Document / module | +|--------|-------------------| +| Item buckets, binding, open loss questions | [items.md](items.md) | +| Sinks, repair, economy | [economy.md](economy.md), [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | +| Combat actions & kits | [abilities.md](abilities.md), [gigs.md](gigs.md) | +| Hybrid XP (death does not imply skill XP change) | [progression.md](progression.md) | +| PvP product stance | [Epic 6](../decomposition/epics/epic_06_pvp_security.md) | +| Risk & security tiers (stub) | [overview.md](overview.md) planned **Risk & security bands** | diff --git a/docs/game-design/economy.md b/docs/game-design/economy.md index e58d432..2732b41 100644 --- a/docs/game-design/economy.md +++ b/docs/game-design/economy.md @@ -33,7 +33,7 @@ Design lenses (exact tables **data-driven**): | Sink | Role | |------|------| | **Consumables** | Ongoing churn (stims, ammo-adjacent, etc.) | -| **Durability, repair, destruction** | [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md); ties to [items.md](items.md) open questions until **death** doc lands | +| **Durability, repair, destruction** | [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md); **death** stakes: [death-loss-recovery.md](death-loss-recovery.md); [items.md](items.md) open questions | | **Fees** | Listing, transfer, **clinic** / service **fiction**—**open** rates; `PriceBandRule` in E3.M5 | | **Currency dumps** | Fast travel, licenses, rep gates, **optional** **sinks** for inflation—**open** catalog | @@ -43,7 +43,7 @@ Direction: **prototype** should prove at least one **meaningful** durable sink b - **One primary player currency** vs **multiple** (regional, corp scrip, crypto **fiction**)—**open**; UX must stay **readable** ([items.md](items.md) **tooltips** discipline). - **Wealth fantasy** includes **stockpiles**, **loadout value**, **workspace access**, and **social** **flex**—not only raw balance. -- **Binding**, **insurance**, **theft**, and **security tiers** change **effective** supply—see [items.md](items.md) **Open questions** and future **risk** / **death** docs (**TBD**). +- **Binding**, **insurance**, **theft**, and **security tiers** change **effective** supply—see [items.md](items.md) **Open questions**, [death-loss-recovery.md](death-loss-recovery.md), and future **risk** doc (**TBD**). ## Trade and prices @@ -89,3 +89,4 @@ Direction: **prototype** should prove at least one **meaningful** durable sink b | Hybrid XP / reward pipes | [progression.md](progression.md), [skills.md](skills.md) | | Epic 3 slices (incl. sinks/policy) | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) | | Social / corp context for trade | [Epic 8](../decomposition/epics/epic_08_social_guild.md) | +| Death, durability, PvP loss | [death-loss-recovery.md](death-loss-recovery.md) | diff --git a/docs/game-design/gathering.md b/docs/game-design/gathering.md index 1b4b9fe..8e5ae74 100644 --- a/docs/game-design/gathering.md +++ b/docs/game-design/gathering.md @@ -64,7 +64,7 @@ Directional goals (implementation **open**): ## Open questions - **Node ownership** (personal tap, party split, corp claims) vs **FFA** taps—social and exploit surface. -- **Stealing** gathered output or **harvesting under fire**—ties to **risk bands** and **death** doc (**TBD**). +- **Stealing** gathered output or **harvesting under fire**—ties to **risk bands** and [death-loss-recovery.md](death-loss-recovery.md) (**TBD** tuning). - **Bots / automation** fantasy vs anti-bot—how much **AFK** is acceptable (**open**). - **Cross-skill nodes** (e.g. **Intrusion** to **unlock** a **Salvage** pile)—mission design vs systemic rule. @@ -76,6 +76,7 @@ Directional goals (implementation **open**): | Items & materials buckets | [items.md](items.md) | | Crafting & recipes (vision) | [crafting.md](crafting.md) | | Economy (faucets from gather + policy) | [economy.md](economy.md) | +| Death / loss (contested gather, drops) | [death-loss-recovery.md](death-loss-recovery.md) | | Epic 3 gather slice | [Epic 3 — Slice 2 (Gather nodes)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-2) | | Interaction contracts | [E1.M3](../decomposition/modules/E1_M3_InteractionAndTargetingLayer.md) | | Zone ecology | [E4.M2](../decomposition/modules/E4_M2_SpawnEcologyController.md), [Epic 4](../decomposition/epics/epic_04_world_topology.md) | diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index dff1e95..1406c36 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -135,4 +135,5 @@ Detail: seams table in [skills.md](skills.md). - [gathering.md](gathering.md) — **not** gig progression; **skill** nodes and yields feed economy ([progression.md](progression.md)). - [crafting.md](crafting.md) — **bench** = **skill**; **combat use** of most crafted **gear** still **gig**-gated ([Seams](skills.md#seams-gigs-skills)). - [economy.md](economy.md) — **gig** does not gate **craft**/**trade**; **wealth** loops are **skill**- and **item**-heavy ([items.md](items.md)). +- [death-loss-recovery.md](death-loss-recovery.md) — **combat** death → **gig** loadout context; **PvP** loss rules **E6.M3** (not same as PvE—**open**). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group content where **gigs** hold security while **skills** run the hack (brainstorm). diff --git a/docs/game-design/items.md b/docs/game-design/items.md index 9cc93e8..9569124 100644 --- a/docs/game-design/items.md +++ b/docs/game-design/items.md @@ -45,7 +45,7 @@ Design **buckets** above are not 1:1 types in data—they inform tags and metada | [E3.M1](../decomposition/modules/E3_M1_ResourceNodeAndGatherLoop.md) | Nodes, gather, yields | **Materials**; feeds refine/craft | | [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) | Recipes, craft execution | **Crafted** acquisition; **skills**-only bench | | [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | `ItemDef` / `ItemInstance` / slots | **All buckets**; rarity/quality/stack/equip | -| [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | Durability, repair, sinks | [Open questions](#open-questions); death doc | +| [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | Durability, repair, sinks | [Open questions](#open-questions); [death-loss-recovery.md](death-loss-recovery.md) | | [E3.M5](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) | Faucets/sinks policy | Drops vs craft **balance**; trade velocity | ## Decisions log @@ -60,8 +60,8 @@ Design **buckets** above are not 1:1 types in data—they inform tags and metada ## Open questions -- **Durability, repair, sinks**—when items leave the economy ([E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md)); how hard **death** hits gear (**open** with death doc). -- **Binding**, **insurance**, **theft** in which **security tiers** ([overview.md](overview.md) risk stubs). +- **Durability, repair, sinks**—when items leave the economy ([E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md)); how hard **death** hits gear (**open**—[death-loss-recovery.md](death-loss-recovery.md)). +- **Binding**, **insurance**, **theft** in which **security tiers** ([overview.md](overview.md) risk stubs; [death-loss-recovery.md](death-loss-recovery.md) **Open questions**). - **Named crafter**, **provenance**, **counterfeits**—social/economy flavor vs implementation cost. - **Stacking**, **charges**, **mod slots**—per category defaults. @@ -79,6 +79,7 @@ Design **buckets** above are not 1:1 types in data—they inform tags and metada | Recipes & craft pipeline (runtime) | [E3.M2](../decomposition/modules/E3_M2_RefinementAndRecipeExecution.md) | | Item schema & inventory | [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | | Sinks & durability | [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | +| Death, loss & recovery | [death-loss-recovery.md](death-loss-recovery.md) | | Economy vision (faucets, trade, policy) | [economy.md](economy.md) | | Economy policy (runtime) | [E3.M5](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) | | Encounter loot routing | [E5.M3](../decomposition/modules/E5_M3_EncounterAndRewardTables.md), [E7.M2](../decomposition/modules/E7_M2_RewardAndUnlockRouter.md) | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index d66faf0..7b13194 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,7 +6,7 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. -**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Gathering** (nodes, skill XP, ecology): [gathering.md](gathering.md). **Crafting** (recipes, pipeline, benches): [crafting.md](crafting.md). **Economy** (faucets, sinks, trade, policy): [economy.md](economy.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). +**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Gathering** (nodes, skill XP, ecology): [gathering.md](gathering.md). **Crafting** (recipes, pipeline, benches): [crafting.md](crafting.md). **Economy** (faucets, sinks, trade, policy): [economy.md](economy.md). **Death / loss / recovery:** [death-loss-recovery.md](death-loss-recovery.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). ## Presentation and target rating (vision) @@ -30,6 +30,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | [gathering.md](gathering.md) | Resource **nodes**, **Gather** skills, contesting, pipeline to refine/craft | **E3.M1** + **E4.M2**; with [skills.md](skills.md), [items.md](items.md) | | [crafting.md](crafting.md) | **Recipes**, **Process/Make** pipeline, bench vs **gig** combat use | **E3.M2**; with [gathering.md](gathering.md), [items.md](items.md), [skills.md](skills.md) **Seams** | | [economy.md](economy.md) | **Faucets/sinks**, trade, **E3.M5** policy, mission vs loot **faucets** | With [items.md](items.md), [crafting.md](crafting.md); **E8.M3** trade, **E6.M4** parity | +| [death-loss-recovery.md](death-loss-recovery.md) | **Death** stakes, **durability**/drops, **recovery**, **PvP** loss (**E6.M3**) | With [items.md](items.md), [economy.md](economy.md); **risk** stub in this file | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | ### Planned topics (stubs) @@ -47,7 +48,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Economy** — [economy.md](economy.md): currency, sinks, trade, **E3.M5** / **E8.M3**; **mission** payouts vs **combat** loot ([progression.md](progression.md)). - **Factions & reputation** — who remembers you, grudges, access gates; **gig** story arcs: [gigs.md](gigs.md), rep + seams: [skills.md](skills.md). - **Combat pillars** — [Vision stub below](#combat-pillars-vision-stub): PvE vs. PvP stance, readability, time-to-kill, fairness; **items in combat** in [items.md](items.md). -- **Death, loss & recovery** — stakes on failure, recovery paths, anti-grief boundaries. +- **Death, loss & recovery** — [death-loss-recovery.md](death-loss-recovery.md): stakes, **E3.M4**/**E6.M3**, recovery UX; **risk tiers** still stub below. - **Risk & security bands** — safe pockets vs. wild space; where optional PvP and theft sit (aligns with security-tier thinking). - **Social play** — squad scale, corps, trust, betrayal affordances, async cooperation. - **Encounters & enemy roles** — archetypes, what a fight teaches, variety without noise. **Skill + gig split runs:** [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md). @@ -64,8 +65,9 @@ Combat is still missing a **single** pillar doc. Until then, use this table for | **Combat gear, loadouts, hub swap, consumables** | [items.md](items.md) (with [skills.md](skills.md) **Seams**) | | **Roster, roles, party, sub-gig** | [gigs.md](gigs.md) | | **PvE readability, TTK, encounter fairness** | Stub—future dedicated combat doc; implementation direction in [Epic 5 — PvE combat](../decomposition/epics/epic_05_pve_combat.md) | +| **Death, durability, recovery** | [death-loss-recovery.md](death-loss-recovery.md) (with [Epic 6](../decomposition/epics/epic_06_pvp_security.md) for **PvP** loss) | -**Items in fights:** [items.md](items.md) **Combat gear** is **gig**-tagged for equip/deploy; **consumables** baseline is not gig-gated; **chrome** persists across gig swap. Aligns with [abilities.md](abilities.md) **Item-linked actions**. +**Items in fights:** [items.md](items.md) **Combat gear** is **gig**-tagged for equip/deploy; **consumables** baseline is not gig-gated; **chrome** persists across gig swap. Aligns with [abilities.md](abilities.md) **Item-linked actions**. **Stakes on defeat:** [death-loss-recovery.md](death-loss-recovery.md). ## Related repo docs diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index 78f92b4..47b79bf 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -31,6 +31,7 @@ Use these terms in **design specs and tools** (fiction may say *job*, *contract* | **Gathering** (nodes, yields, skill XP—not gig) | [gathering.md](gathering.md) | | **Crafting** (recipes, pipeline, bench vs gig) | [crafting.md](crafting.md) | | **Economy** (faucets, sinks, trade, policy) | [economy.md](economy.md) | +| **Death / loss / recovery** (stakes, durability, PvP loss) | [death-loss-recovery.md](death-loss-recovery.md) | | Skill domains, categories, XP curves, gates, mastery | [skills.md](skills.md) | | **Seams** (combat gear vs craft, consumables, rep, alts) | [skills.md](skills.md) (section *Seams (gigs ↔ skills)*) | | Loose ideas | [brainstorm/](brainstorm/README.md) | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 10b6482..0f3424b 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,6 +1,6 @@ # Skills (non-combat progression) -Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **Gathering & resource nodes** (competition, ecology, gig vs skill): **[gathering.md](gathering.md)**. **Crafting & recipes** (pipeline, benches, failure/quality): **[crafting.md](crafting.md)**. **Economy** (faucets, sinks, trade, policy): **[economy.md](economy.md)**. +Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **Gathering & resource nodes** (competition, ecology, gig vs skill): **[gathering.md](gathering.md)**. **Crafting & recipes** (pipeline, benches, failure/quality): **[crafting.md](crafting.md)**. **Economy** (faucets, sinks, trade, policy): **[economy.md](economy.md)**. **Death, loss & recovery** (durability, PvP loss, recovery): **[death-loss-recovery.md](death-loss-recovery.md)**. **This file also owns the [Seams (gigs ↔ skills)](#seams-gigs-skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). @@ -253,4 +253,5 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ - **[gathering.md](gathering.md)** — nodes, yields, **skill** XP from gather; **E3.M1** / **E4.M2** hooks (written). - **[crafting.md](crafting.md)** — **Process/Make** pipeline, **RecipeDef** vision, bench vs **gig**; **E3.M2** (written). - **[economy.md](economy.md)** — faucets/sinks, trade, **E3.M5**; mission vs loot ([progression.md](progression.md)) (written). +- **[death-loss-recovery.md](death-loss-recovery.md)** — death stakes, **E3.M4** / **E6.M3**, recovery; **risk** doc still stub (written). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From d192567f57fb185798ebb015ff39fac850c86622 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 22:35:03 -0400 Subject: [PATCH 87/91] chore: add game-design risk-security-bands doc - Add risk-security-bands.md (E4.M4 tiers, E6.M1/M2 PvP + consent, tier gates) - epic_04: anchor epic-4-slice-2 for security tier slice - Cross-link death, items, economy, gathering; overview combat stub + index - Extend docs-review-agent ground truth --- .cursor/rules/docs-review-agent.md | 2 +- .../epics/epic_04_world_topology.md | 2 + docs/game-design/README.md | 2 +- docs/game-design/abilities.md | 1 + docs/game-design/crafting.md | 1 + docs/game-design/death-loss-recovery.md | 8 +- docs/game-design/economy.md | 3 +- docs/game-design/gathering.md | 3 +- docs/game-design/gigs.md | 1 + docs/game-design/items.md | 3 +- docs/game-design/overview.md | 10 ++- docs/game-design/progression.md | 1 + docs/game-design/risk-security-bands.md | 77 +++++++++++++++++++ docs/game-design/skills.md | 5 +- 14 files changed, 104 insertions(+), 15 deletions(-) create mode 100644 docs/game-design/risk-security-bands.md diff --git a/.cursor/rules/docs-review-agent.md b/.cursor/rules/docs-review-agent.md index 23f8ab0..7428629 100644 --- a/.cursor/rules/docs-review-agent.md +++ b/.cursor/rules/docs-review-agent.md @@ -26,7 +26,7 @@ Use this rule when the user is working in **`docs/`** (design, decomposition, pl ## Ground truth (required to check) 1. **Same folder and upstream links** — Read every `docs/...` link from the target doc(s); verify paths exist and headings match intent. -2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`, `gathering.md`, `crafting.md`, `economy.md`, `death-loss-recovery.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Gather / craft** → **skill XP** (see `gathering.md`, `crafting.md`, Epic 3)—not **gig** XP. **Mission/quest rewards** may grant **skill XP**, **currency**, or **items** when explicitly defined (`progression.md`, `economy.md`)—separate from the encounter **gig XP** path. **Economy** faucets/sinks and trade (`economy.md`) do not re-gate **craft** on **gig** (see `items.md` / Seams). **Death / loss / recovery** (`death-loss-recovery.md`): server-authoritative combat death; item stakes via **E3.M4** / **E5.M1**; **PvP** loss **E6.M3** vs **PvE** **open**; **cybernetics** vs external **gear** per **Seams**. +2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`, `gathering.md`, `crafting.md`, `economy.md`, `death-loss-recovery.md`, `risk-security-bands.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Gather / craft** → **skill XP** (see `gathering.md`, `crafting.md`, Epic 3)—not **gig** XP. **Mission/quest rewards** may grant **skill XP**, **currency**, or **items** when explicitly defined (`progression.md`, `economy.md`)—separate from the encounter **gig XP** path. **Economy** faucets/sinks and trade (`economy.md`) do not re-gate **craft** on **gig** (see `items.md` / Seams). **Death / loss / recovery** (`death-loss-recovery.md`): server-authoritative combat death; item stakes via **E3.M4** / **E5.M1**; **PvP** loss **E6.M3** vs **PvE** **open**; **cybernetics** vs external **gear** per **Seams**. **Risk / security** (`risk-security-bands.md`): **E4.M4** `SecurityTier` + **E6.M1**/**E6.M2** for **PvP** eligibility and **consent** UX—**not** client-only PvP toggles. 3. **Decomposition** — Map claims to `docs/decomposition/epics/` and `docs/decomposition/modules/` where relevant; flag **conflicts** (e.g. “combat skill” vs skills-as-non-combat). **CI** enforces a minimal guard via [`scripts/check_decomposition_language.py`](../../scripts/check_decomposition_language.py) in the **PR gate** (extend the script if a vetted exception is needed). 4. **Plans** — If work maps to `docs/plans/`, check for **acceptance criteria** vs design doc (same spirit as [code-review-agent](code-review-agent.md) plan alignment). diff --git a/docs/decomposition/epics/epic_04_world_topology.md b/docs/decomposition/epics/epic_04_world_topology.md index f72db9d..8f659ef 100644 --- a/docs/decomposition/epics/epic_04_world_topology.md +++ b/docs/decomposition/epics/epic_04_world_topology.md @@ -55,6 +55,8 @@ Represent the world as a zone graph with travel rules, security-tier signaling f - Travel rules prevent illegal shortcuts. - Telemetry hooks: `zone_enter`, `zone_exit`, invalid transition attempts. + + ### Slice 2 - Security tier tagging and UI hooks - Scope: E4.M4 on E4.M1: per-zone `SecurityTier`, `ZonePolicyState`, and entry-warning payloads. E6.M1 subscribes to this data for PvP eligibility (implemented in Epic 6; no circular module dependency). diff --git a/docs/game-design/README.md b/docs/game-design/README.md index 842fb0c..4b0e11e 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -6,6 +6,6 @@ **Brainstorm-only** (not specs): [`brainstorm/`](brainstorm/README.md). -Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), **[gathering](gathering.md)** (resource nodes, yields), **[crafting](crafting.md)** (recipes, pipeline), **[economy](economy.md)** (faucets, sinks, trade), **[death-loss-recovery](death-loss-recovery.md)** (stakes, recovery), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. +Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), **[gathering](gathering.md)** (resource nodes, yields), **[crafting](crafting.md)** (recipes, pipeline), **[economy](economy.md)** (faucets, sinks, trade), **[death-loss-recovery](death-loss-recovery.md)** (stakes, recovery), **[risk-security-bands](risk-security-bands.md)** (tiers, PvP eligibility), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). diff --git a/docs/game-design/abilities.md b/docs/game-design/abilities.md index 87ed7eb..5672ccc 100644 --- a/docs/game-design/abilities.md +++ b/docs/game-design/abilities.md @@ -62,6 +62,7 @@ Vision for **what the player triggers** in play: combat **kits**, non-combat **s | Crafting (bench skill vs gig combat use) | [crafting.md](crafting.md) | | Economy (trade, sinks—gig does not gate craft) | [economy.md](economy.md) | | Death / loss (combat death, gear stakes) | [death-loss-recovery.md](death-loss-recovery.md) | +| Risk tiers & PvP eligibility | [risk-security-bands.md](risk-security-bands.md) | | Seams (gear, craft, consumables) | [skills.md](skills.md) | | Hybrid vocabulary | [progression.md](progression.md) | | Encounter rewards + combat hooks | [Epic 5](../decomposition/epics/epic_05_pve_combat.md), [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | diff --git a/docs/game-design/crafting.md b/docs/game-design/crafting.md index ec3eb08..295f8ea 100644 --- a/docs/game-design/crafting.md +++ b/docs/game-design/crafting.md @@ -75,3 +75,4 @@ Authoritative **recipe graph** is **data** (`RecipeDef`); design intent: | Gather slice (inputs) | [Epic 3 — Slice 2 (Gather nodes)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-2) | | Economy (sinks, trade, tuning) | [economy.md](economy.md) | | Death / loss (durability, repair) | [death-loss-recovery.md](death-loss-recovery.md) | +| Risk & security (trade/theft context) | [risk-security-bands.md](risk-security-bands.md) | diff --git a/docs/game-design/death-loss-recovery.md b/docs/game-design/death-loss-recovery.md index af21d06..0224a08 100644 --- a/docs/game-design/death-loss-recovery.md +++ b/docs/game-design/death-loss-recovery.md @@ -1,6 +1,6 @@ # Death, loss & recovery -Vision for **what happens when a character fails** (especially in **combat**): **item** stakes, **durability** and **destruction**, **recovery** flow, and **anti-grief** boundaries—without duplicating **combat ability** design ([abilities.md](abilities.md)) or full **risk tier** rules (stub in [overview.md](overview.md); future **risk** doc). +Vision for **what happens when a character fails** (especially in **combat**): **item** stakes, **durability** and **destruction**, **recovery** flow, and **anti-grief** boundaries—without duplicating **combat ability** design ([abilities.md](abilities.md)) or **security tier** / **PvP** **eligibility** ([risk-security-bands.md](risk-security-bands.md)). **Combat resolution & death event:** [E5.M1 — CombatRulesEngine](../decomposition/modules/E5_M1_CombatRulesEngine.md) is **server-authoritative** for outcomes including **death** ([client vs server authority](../decomposition/modules/client_server_authority.md)); telemetry includes `player_death` per [Epic 5](../decomposition/epics/epic_05_pve_combat.md). @@ -12,7 +12,7 @@ Vision for **what happens when a character fails** (especially in **combat**): * ## PvE vs PvP (design intent) -- **PvE-first** product stance ([Epic 6](../decomposition/epics/epic_06_pvp_security.md) objective): default **loss** in **opt-in** or **high-tier** spaces can be **harsher** than in **safe** hubs; exact **banding** is a **risk** / **security tier** doc (**TBD**). +- **PvE-first** product stance ([Epic 6](../decomposition/epics/epic_06_pvp_security.md) objective): default **loss** in **opt-in** or **high-tier** spaces can be **harsher** than in **safe** hubs; **tier** **language** in [risk-security-bands.md](risk-security-bands.md); exact **tables** **TBD**. - **PvP death** applies **E6.M3** rules (drops, durability hits, flags)—not necessarily the same table as **PvE wipe** (**open** until PvP vision lands; [gigs.md](gigs.md) **PvP** notes). - **Skill** and **gig** **progression** are **not** assumed to **reset** on death—loss is primarily **items**, **currency** (if any), **buffs**, and **position** unless a **hardcore** mode or **content** says otherwise (**open**). @@ -35,7 +35,7 @@ Vision for **what happens when a character fails** (especially in **combat**): * ## Anti-grief and readability - **Spawn protection**, **repeated** **killing** penalties, and **escalation** to **integrity** pipeline: **E6.M3** / **E9.M4**. -- **Readable** stakes before engagement: ties to **consent / risk UX** ([Epic 6](../decomposition/epics/epic_06_pvp_security.md), [E6.M2](../decomposition/modules/E6_M2_ConsentAndRiskUxSignals.md))—detail **TBD** in **risk** doc. +- **Readable** stakes before engagement: ties to **consent / risk UX** ([Epic 6](../decomposition/epics/epic_06_pvp_security.md), [E6.M2](../decomposition/modules/E6_M2_ConsentAndRiskUxSignals.md), [risk-security-bands.md](risk-security-bands.md)). - **Exploits** (dupe corpse, disconnect abuse): **server** truth + [E9.M4](../decomposition/modules/E9_M4_IntegrityAndAbuseResponse.md). ## Module map (death / loss–focused) @@ -74,4 +74,4 @@ Vision for **what happens when a character fails** (especially in **combat**): * | Combat actions & kits | [abilities.md](abilities.md), [gigs.md](gigs.md) | | Hybrid XP (death does not imply skill XP change) | [progression.md](progression.md) | | PvP product stance | [Epic 6](../decomposition/epics/epic_06_pvp_security.md) | -| Risk & security tiers (stub) | [overview.md](overview.md) planned **Risk & security bands** | +| Risk & security tiers, PvP eligibility | [risk-security-bands.md](risk-security-bands.md) | diff --git a/docs/game-design/economy.md b/docs/game-design/economy.md index 2732b41..d641a1b 100644 --- a/docs/game-design/economy.md +++ b/docs/game-design/economy.md @@ -43,7 +43,7 @@ Direction: **prototype** should prove at least one **meaningful** durable sink b - **One primary player currency** vs **multiple** (regional, corp scrip, crypto **fiction**)—**open**; UX must stay **readable** ([items.md](items.md) **tooltips** discipline). - **Wealth fantasy** includes **stockpiles**, **loadout value**, **workspace access**, and **social** **flex**—not only raw balance. -- **Binding**, **insurance**, **theft**, and **security tiers** change **effective** supply—see [items.md](items.md) **Open questions**, [death-loss-recovery.md](death-loss-recovery.md), and future **risk** doc (**TBD**). +- **Binding**, **insurance**, **theft**, and **security tiers** change **effective** supply—see [items.md](items.md) **Open questions**, [death-loss-recovery.md](death-loss-recovery.md), [risk-security-bands.md](risk-security-bands.md). ## Trade and prices @@ -90,3 +90,4 @@ Direction: **prototype** should prove at least one **meaningful** durable sink b | Epic 3 slices (incl. sinks/policy) | [Epic 3](../decomposition/epics/epic_03_crafting_economy.md) | | Social / corp context for trade | [Epic 8](../decomposition/epics/epic_08_social_guild.md) | | Death, durability, PvP loss | [death-loss-recovery.md](death-loss-recovery.md) | +| Security tiers, PvP eligibility | [risk-security-bands.md](risk-security-bands.md) | diff --git a/docs/game-design/gathering.md b/docs/game-design/gathering.md index 8e5ae74..d0a6ad7 100644 --- a/docs/game-design/gathering.md +++ b/docs/game-design/gathering.md @@ -30,7 +30,7 @@ Same **physical prop** might map to **different** node types or yield tables by Directional goals (implementation **open**): - **Depletion** and **regen** (capacity, timers) make **presence** and **timing** matter—aligned with E3.M1/E4.M2 responsibilities. -- **Contesting** the same node may be **non-combat** (arrival order, channel time, tool tier) or **high-risk** (PvP-adjacent) depending on **security tier**—see [overview.md](overview.md) **Risk & security bands** (stub) and [gigs.md](gigs.md) **PvP** notes (**open** until PvP vision lands). +- **Contesting** the same node may be **non-combat** (arrival order, channel time, tool tier) or **high-risk** (PvP-adjacent) depending on **security tier**—see [risk-security-bands.md](risk-security-bands.md) and [gigs.md](gigs.md) **PvP** notes (**open** until PvP vision lands). - **Instanced vs shared** world: some resources may live only in **contracts** or **dungeons**; others in **shared** overworld—**split by content**, not a single global rule (**open**). ## Exhaustion, tools, and gates @@ -77,6 +77,7 @@ Directional goals (implementation **open**): | Crafting & recipes (vision) | [crafting.md](crafting.md) | | Economy (faucets from gather + policy) | [economy.md](economy.md) | | Death / loss (contested gather, drops) | [death-loss-recovery.md](death-loss-recovery.md) | +| Risk tiers & contest rules | [risk-security-bands.md](risk-security-bands.md) | | Epic 3 gather slice | [Epic 3 — Slice 2 (Gather nodes)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-2) | | Interaction contracts | [E1.M3](../decomposition/modules/E1_M3_InteractionAndTargetingLayer.md) | | Zone ecology | [E4.M2](../decomposition/modules/E4_M2_SpawnEcologyController.md), [Epic 4](../decomposition/epics/epic_04_world_topology.md) | diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 1406c36..742e098 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -136,4 +136,5 @@ Detail: seams table in [skills.md](skills.md). - [crafting.md](crafting.md) — **bench** = **skill**; **combat use** of most crafted **gear** still **gig**-gated ([Seams](skills.md#seams-gigs-skills)). - [economy.md](economy.md) — **gig** does not gate **craft**/**trade**; **wealth** loops are **skill**- and **item**-heavy ([items.md](items.md)). - [death-loss-recovery.md](death-loss-recovery.md) — **combat** death → **gig** loadout context; **PvP** loss rules **E6.M3** (not same as PvE—**open**). +- [risk-security-bands.md](risk-security-bands.md) — **where** **PvP** can apply (**E6.M1**); not defined by **gig** pick alone. - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group content where **gigs** hold security while **skills** run the hack (brainstorm). diff --git a/docs/game-design/items.md b/docs/game-design/items.md index 9569124..b27a1a5 100644 --- a/docs/game-design/items.md +++ b/docs/game-design/items.md @@ -61,7 +61,7 @@ Design **buckets** above are not 1:1 types in data—they inform tags and metada ## Open questions - **Durability, repair, sinks**—when items leave the economy ([E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md)); how hard **death** hits gear (**open**—[death-loss-recovery.md](death-loss-recovery.md)). -- **Binding**, **insurance**, **theft** in which **security tiers** ([overview.md](overview.md) risk stubs; [death-loss-recovery.md](death-loss-recovery.md) **Open questions**). +- **Binding**, **insurance**, **theft** in which **security tiers** ([risk-security-bands.md](risk-security-bands.md); [death-loss-recovery.md](death-loss-recovery.md) **Open questions**). - **Named crafter**, **provenance**, **counterfeits**—social/economy flavor vs implementation cost. - **Stacking**, **charges**, **mod slots**—per category defaults. @@ -80,6 +80,7 @@ Design **buckets** above are not 1:1 types in data—they inform tags and metada | Item schema & inventory | [E3.M3](../decomposition/modules/E3_M3_ItemizationAndInventorySchema.md) | | Sinks & durability | [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | | Death, loss & recovery | [death-loss-recovery.md](death-loss-recovery.md) | +| Risk & security bands | [risk-security-bands.md](risk-security-bands.md) | | Economy vision (faucets, trade, policy) | [economy.md](economy.md) | | Economy policy (runtime) | [E3.M5](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) | | Encounter loot routing | [E5.M3](../decomposition/modules/E5_M3_EncounterAndRewardTables.md), [E7.M2](../decomposition/modules/E7_M2_RewardAndUnlockRouter.md) | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 7b13194..9c8585c 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,7 +6,7 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. -**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Gathering** (nodes, skill XP, ecology): [gathering.md](gathering.md). **Crafting** (recipes, pipeline, benches): [crafting.md](crafting.md). **Economy** (faucets, sinks, trade, policy): [economy.md](economy.md). **Death / loss / recovery:** [death-loss-recovery.md](death-loss-recovery.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). +**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Gathering** (nodes, skill XP, ecology): [gathering.md](gathering.md). **Crafting** (recipes, pipeline, benches): [crafting.md](crafting.md). **Economy** (faucets, sinks, trade, policy): [economy.md](economy.md). **Death / loss / recovery:** [death-loss-recovery.md](death-loss-recovery.md). **Risk & security bands:** [risk-security-bands.md](risk-security-bands.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). ## Presentation and target rating (vision) @@ -30,7 +30,8 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | [gathering.md](gathering.md) | Resource **nodes**, **Gather** skills, contesting, pipeline to refine/craft | **E3.M1** + **E4.M2**; with [skills.md](skills.md), [items.md](items.md) | | [crafting.md](crafting.md) | **Recipes**, **Process/Make** pipeline, bench vs **gig** combat use | **E3.M2**; with [gathering.md](gathering.md), [items.md](items.md), [skills.md](skills.md) **Seams** | | [economy.md](economy.md) | **Faucets/sinks**, trade, **E3.M5** policy, mission vs loot **faucets** | With [items.md](items.md), [crafting.md](crafting.md); **E8.M3** trade, **E6.M4** parity | -| [death-loss-recovery.md](death-loss-recovery.md) | **Death** stakes, **durability**/drops, **recovery**, **PvP** loss (**E6.M3**) | With [items.md](items.md), [economy.md](economy.md); **risk** stub in this file | +| [death-loss-recovery.md](death-loss-recovery.md) | **Death** stakes, **durability**/drops, **recovery**, **PvP** loss (**E6.M3**) | With [items.md](items.md), [economy.md](economy.md), [risk-security-bands.md](risk-security-bands.md) | +| [risk-security-bands.md](risk-security-bands.md) | **Security tiers**, **PvP** **eligibility**, **consent** UX (**E4.M4**, **E6.M1**–**M2**) | With [death-loss-recovery.md](death-loss-recovery.md), [gathering.md](gathering.md); **zones** fiction **TBD** | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | ### Planned topics (stubs) @@ -48,8 +49,8 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Economy** — [economy.md](economy.md): currency, sinks, trade, **E3.M5** / **E8.M3**; **mission** payouts vs **combat** loot ([progression.md](progression.md)). - **Factions & reputation** — who remembers you, grudges, access gates; **gig** story arcs: [gigs.md](gigs.md), rep + seams: [skills.md](skills.md). - **Combat pillars** — [Vision stub below](#combat-pillars-vision-stub): PvE vs. PvP stance, readability, time-to-kill, fairness; **items in combat** in [items.md](items.md). -- **Death, loss & recovery** — [death-loss-recovery.md](death-loss-recovery.md): stakes, **E3.M4**/**E6.M3**, recovery UX; **risk tiers** still stub below. -- **Risk & security bands** — safe pockets vs. wild space; where optional PvP and theft sit (aligns with security-tier thinking). +- **Death, loss & recovery** — [death-loss-recovery.md](death-loss-recovery.md): stakes, **E3.M4**/**E6.M3**, recovery UX. +- **Risk & security bands** — [risk-security-bands.md](risk-security-bands.md): **tiers**, **PvP** opt-in, **theft**/gather **contest** hooks; **zone** tone in future **zones** doc. - **Social play** — squad scale, corps, trust, betrayal affordances, async cooperation. - **Encounters & enemy roles** — archetypes, what a fight teaches, variety without noise. **Skill + gig split runs:** [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md). - **Onboarding** — first session hook, clarity vs. mystery, how much systems the new player sees. @@ -66,6 +67,7 @@ Combat is still missing a **single** pillar doc. Until then, use this table for | **Roster, roles, party, sub-gig** | [gigs.md](gigs.md) | | **PvE readability, TTK, encounter fairness** | Stub—future dedicated combat doc; implementation direction in [Epic 5 — PvE combat](../decomposition/epics/epic_05_pve_combat.md) | | **Death, durability, recovery** | [death-loss-recovery.md](death-loss-recovery.md) (with [Epic 6](../decomposition/epics/epic_06_pvp_security.md) for **PvP** loss) | +| **Risk tiers, PvP eligibility, warnings** | [risk-security-bands.md](risk-security-bands.md) ([Epic 4](../decomposition/epics/epic_04_world_topology.md) **Slice 2**) | **Items in fights:** [items.md](items.md) **Combat gear** is **gig**-tagged for equip/deploy; **consumables** baseline is not gig-gated; **chrome** persists across gig swap. Aligns with [abilities.md](abilities.md) **Item-linked actions**. **Stakes on defeat:** [death-loss-recovery.md](death-loss-recovery.md). diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index 47b79bf..d2700e5 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -32,6 +32,7 @@ Use these terms in **design specs and tools** (fiction may say *job*, *contract* | **Crafting** (recipes, pipeline, bench vs gig) | [crafting.md](crafting.md) | | **Economy** (faucets, sinks, trade, policy) | [economy.md](economy.md) | | **Death / loss / recovery** (stakes, durability, PvP loss) | [death-loss-recovery.md](death-loss-recovery.md) | +| **Risk & security bands** (tiers, PvP eligibility) | [risk-security-bands.md](risk-security-bands.md) | | Skill domains, categories, XP curves, gates, mastery | [skills.md](skills.md) | | **Seams** (combat gear vs craft, consumables, rep, alts) | [skills.md](skills.md) (section *Seams (gigs ↔ skills)*) | | Loose ideas | [brainstorm/](brainstorm/README.md) | diff --git a/docs/game-design/risk-security-bands.md b/docs/game-design/risk-security-bands.md new file mode 100644 index 0000000..484da7e --- /dev/null +++ b/docs/game-design/risk-security-bands.md @@ -0,0 +1,77 @@ +# Risk & security bands + +Vision for **how dangerous a place is** and **what the rules allow**: **security tiers** on the world graph, **PvP eligibility**, **consent / risk UX**, and how **tiers** connect to **theft**, **gathering contest**, **trade**, and **death** stakes—not a full **zone** fiction doc (tone, factions per district → future **`zones.md`**). + +**Tier data (runtime):** [E4.M4 — SecurityTierZoneFlags](../decomposition/modules/E4_M4_SecurityTierZoneFlags.md) assigns **`SecurityTier`**, **`ZonePolicyState`**, and **`ZoneEntryWarning`** per zone on the graph from [E4.M1 — ZoneGraphAndTravelRules](../decomposition/modules/E4_M1_ZoneGraphAndTravelRules.md). **Server** is source of truth; **client** shows warnings on transition ([Epic 4 — Slice 2](../decomposition/epics/epic_04_world_topology.md#epic-4-slice-2)). + +**PvP gating:** [E6.M1 — PvPEligibilityAndFlagState](../decomposition/modules/E6_M1_PvPEligibilityAndFlagState.md) maps **tier + context** to whether **player hostility** is allowed—**never** client-only toggles ([Epic 6](../decomposition/epics/epic_06_pvp_security.md)). + +**Risk UI:** [E6.M2 — ConsentAndRiskUxSignals](../decomposition/modules/E6_M2_ConsentAndRiskUxSignals.md) consumes **tier** and **warnings** for prompts and HUD. + +**Combat pipeline order:** [pvp_combat_integration.md](../decomposition/modules/pvp_combat_integration.md) — eligibility → **E5.M1** resolution → [E6.M3](../decomposition/modules/E6_M3_LossPenaltyAndAntiGriefRules.md) **loss** rules. + +**Downstream design:** [death-loss-recovery.md](death-loss-recovery.md) (**loss** tables may differ by tier), [economy.md](economy.md) (**binding**, **theft**, **effective** supply), [items.md](items.md) **Open questions**, [gathering.md](gathering.md) **contesting**. **Gig** roster does not define **security**—[gigs.md](gigs.md) **PvP** stays **open** until product locks **opt-in** posture. + +## Tier lenses (design-facing) + +Tiers are **discrete** in data (`SecurityTier`); fiction may say *green zone*, *extraterritorial*, *lockdown*. Example **bands** (names **TBD**—align with content): + +| Band (illustrative) | Player expectation (directional) | +|---------------------|----------------------------------| +| **High security** | **No** optional **PvP**; **theft** / **player** **loot** **restricted** or **off**; **gather** contesting **mild** or **instanced** | +| **Low / frontier** | **Opt-in** or **conditional** **PvP**; **harsher** **death** **loss** **possible**; **contested** **nodes** | +| **Contested / special** | **Event**, **faction**, or **contract** **overrides**—explicit **warning** before entry | + +Exact **count** of tiers, **instance** vs **overworld** rules, and **mission** **pocket** **exceptions** are **content** + data (**open**). + +## What tiers gate (non-exhaustive) + +| System | Tie to tier | +|--------|-------------| +| **PvP** | **E6.M1** / **E6.M2** | +| **Death penalties** | [death-loss-recovery.md](death-loss-recovery.md) — e.g. **drop** tables **stricter** in **riskier** bands (**open**) | +| **Theft / looting players** | [items.md](items.md), [economy.md](economy.md) — only where **policy** allows | +| **Gathering contest** | [gathering.md](gathering.md) — **FFA** vs **protected** **node** **access** | +| **Trade / market fees** | [economy.md](economy.md) — optional **tier**-based **tax** **fiction** (**open**) | + +## Consent and clarity + +- **ZoneEntryWarning** must support **plain** copy: what can happen to **you** and **your** **gear** ([E4.M4](../decomposition/modules/E4_M4_SecurityTierZoneFlags.md)). +- **Opt-in** flows (flag, party, **contract**) sit with **E6.M1** / **E6.M2**; **retroactive** “I didn’t know” is a **UX** **failure** to fix in **content** or **systems**. +- **Teen-oriented** presentation ([overview.md](overview.md)) applies to **risk** **UI** and **threat** **messaging**, not only **cutscenes**. + +## Module map (risk / security–focused) + +| Module | Role | Ties to this doc | +|--------|------|-------------------| +| [E4.M1](../decomposition/modules/E4_M1_ZoneGraphAndTravelRules.md) | Zone graph, travel | **Where** tiers attach | +| [E4.M4](../decomposition/modules/E4_M4_SecurityTierZoneFlags.md) | `SecurityTier`, warnings | **Core** | +| [E6.M1](../decomposition/modules/E6_M1_PvPEligibilityAndFlagState.md) | PvP allow/deny | **Consumes** tiers | +| [E6.M2](../decomposition/modules/E6_M2_ConsentAndRiskUxSignals.md) | Risk prompts, HUD | **Player** **readability** | +| [E6.M3](../decomposition/modules/E6_M3_LossPenaltyAndAntiGriefRules.md) | PvP loss, spawn protection | After **hostility** | +| [E5.M1](../decomposition/modules/E5_M1_CombatRulesEngine.md) | Combat | Consults **eligibility** for **PvP** | + +## Decisions log + +| Topic | Direction | Status | +|-------|-----------|--------| +| Server-authoritative tier | **Zone** **risk** and **PvP** **policy** from **server**; client **display** only | Agreed ([E4.M4](../decomposition/modules/E4_M4_SecurityTierZoneFlags.md)) | +| E4 → E6 direction | **Epic 4** **tags**; **Epic 6** **consumes**—**no** circular **module** **dependency** | Agreed (epic/module text) | +| PvE-first | **High-security** **default** for **new** / **core** **progression**; **harsh** **bands** **opt-in** or **signed** **entry** | Agreed direction ([Epic 6](../decomposition/epics/epic_06_pvp_security.md) framing) | + +## Open questions + +- **Instanced** **dungeons** vs **open** **world** **tier** **inheritance** (override table per **content** **type**). +- **Corporation** / **faction** **leased** **quarters** vs **public** **street** **tier** **in** **same** **district** **mesh**. +- **Skill** **activities** (**hack**, **gather**) in **high** **PvP** **zones**—**interrupt** rules and **loss** of **progress** vs **gear** only. + +## Where to read next + +| Topic | Document / module | +|--------|-------------------| +| Death, durability, PvP loss | [death-loss-recovery.md](death-loss-recovery.md) | +| Economy, theft, binding | [economy.md](economy.md), [items.md](items.md) | +| Gathering under contest | [gathering.md](gathering.md) | +| Zone graph & travel (implementation) | [Epic 4](../decomposition/epics/epic_04_world_topology.md), [E4.M1](../decomposition/modules/E4_M1_ZoneGraphAndTravelRules.md) | +| PvP product stance | [Epic 6](../decomposition/epics/epic_06_pvp_security.md) | +| Folder index | [overview.md](overview.md) | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 0f3424b..76354cc 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,6 +1,6 @@ # Skills (non-combat progression) -Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **Gathering & resource nodes** (competition, ecology, gig vs skill): **[gathering.md](gathering.md)**. **Crafting & recipes** (pipeline, benches, failure/quality): **[crafting.md](crafting.md)**. **Economy** (faucets, sinks, trade, policy): **[economy.md](economy.md)**. **Death, loss & recovery** (durability, PvP loss, recovery): **[death-loss-recovery.md](death-loss-recovery.md)**. +Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **Gathering & resource nodes** (competition, ecology, gig vs skill): **[gathering.md](gathering.md)**. **Crafting & recipes** (pipeline, benches, failure/quality): **[crafting.md](crafting.md)**. **Economy** (faucets, sinks, trade, policy): **[economy.md](economy.md)**. **Death, loss & recovery** (durability, PvP loss, recovery): **[death-loss-recovery.md](death-loss-recovery.md)**. **Risk & security bands** (tiers, PvP eligibility): **[risk-security-bands.md](risk-security-bands.md)**. **This file also owns the [Seams (gigs ↔ skills)](#seams-gigs-skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). @@ -253,5 +253,6 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ - **[gathering.md](gathering.md)** — nodes, yields, **skill** XP from gather; **E3.M1** / **E4.M2** hooks (written). - **[crafting.md](crafting.md)** — **Process/Make** pipeline, **RecipeDef** vision, bench vs **gig**; **E3.M2** (written). - **[economy.md](economy.md)** — faucets/sinks, trade, **E3.M5**; mission vs loot ([progression.md](progression.md)) (written). -- **[death-loss-recovery.md](death-loss-recovery.md)** — death stakes, **E3.M4** / **E6.M3**, recovery; **risk** doc still stub (written). +- **[death-loss-recovery.md](death-loss-recovery.md)** — death stakes, **E3.M4** / **E6.M3**, recovery (written). +- **[risk-security-bands.md](risk-security-bands.md)** — **E4.M4** tiers, **E6.M1**/**M2** PvP + consent (written). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). From 0dea48e9fa9ac51c1960f0582e0a1a2f747ec807 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 22:47:05 -0400 Subject: [PATCH 88/91] chore: add zones game-design doc and cross-links Add docs/game-design/zones.md for place identity (tone, economy, faction hooks) on the E4.M1 graph, distinct from risk-security-bands tier rules. Link from overview, README, related vision docs, brainstorm table, and docs-review-agent; anchor Epic 4 slice 1 for deep links. --- .cursor/rules/docs-review-agent.md | 2 +- .../epics/epic_04_world_topology.md | 2 + docs/game-design/README.md | 2 +- docs/game-design/abilities.md | 1 + .../brainstorm/hack-bodyguard-missions.md | 2 +- docs/game-design/crafting.md | 1 + docs/game-design/death-loss-recovery.md | 1 + docs/game-design/economy.md | 1 + docs/game-design/gathering.md | 1 + docs/game-design/gigs.md | 1 + docs/game-design/items.md | 1 + docs/game-design/overview.md | 9 ++- docs/game-design/progression.md | 1 + docs/game-design/risk-security-bands.md | 3 +- docs/game-design/skills.md | 3 +- docs/game-design/zones.md | 74 +++++++++++++++++++ 16 files changed, 96 insertions(+), 9 deletions(-) create mode 100644 docs/game-design/zones.md diff --git a/.cursor/rules/docs-review-agent.md b/.cursor/rules/docs-review-agent.md index 7428629..9cf9c7b 100644 --- a/.cursor/rules/docs-review-agent.md +++ b/.cursor/rules/docs-review-agent.md @@ -26,7 +26,7 @@ Use this rule when the user is working in **`docs/`** (design, decomposition, pl ## Ground truth (required to check) 1. **Same folder and upstream links** — Read every `docs/...` link from the target doc(s); verify paths exist and headings match intent. -2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`, `gathering.md`, `crafting.md`, `economy.md`, `death-loss-recovery.md`, `risk-security-bands.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Gather / craft** → **skill XP** (see `gathering.md`, `crafting.md`, Epic 3)—not **gig** XP. **Mission/quest rewards** may grant **skill XP**, **currency**, or **items** when explicitly defined (`progression.md`, `economy.md`)—separate from the encounter **gig XP** path. **Economy** faucets/sinks and trade (`economy.md`) do not re-gate **craft** on **gig** (see `items.md` / Seams). **Death / loss / recovery** (`death-loss-recovery.md`): server-authoritative combat death; item stakes via **E3.M4** / **E5.M1**; **PvP** loss **E6.M3** vs **PvE** **open**; **cybernetics** vs external **gear** per **Seams**. **Risk / security** (`risk-security-bands.md`): **E4.M4** `SecurityTier` + **E6.M1**/**E6.M2** for **PvP** eligibility and **consent** UX—**not** client-only PvP toggles. +2. **Hybrid progression** — `docs/game-design/progression.md`, `skills.md`, `gigs.md`, `abilities.md`, `items.md`, `gathering.md`, `crafting.md`, `economy.md`, `death-loss-recovery.md`, `risk-security-bands.md`, `zones.md`: **Gig** = combat role; **Skill** = non-combat; **combat abilities** = gig kit (+ item channels per data); **Seams** live in `skills.md` unless a dedicated doc supersedes. **Combat encounters** → **gig XP** only (no default skill XP from the fight loop). **Gather / craft** → **skill XP** (see `gathering.md`, `crafting.md`, Epic 3)—not **gig** XP. **Mission/quest rewards** may grant **skill XP**, **currency**, or **items** when explicitly defined (`progression.md`, `economy.md`)—separate from the encounter **gig XP** path. **Economy** faucets/sinks and trade (`economy.md`) do not re-gate **craft** on **gig** (see `items.md` / Seams). **Death / loss / recovery** (`death-loss-recovery.md`): server-authoritative combat death; item stakes via **E3.M4** / **E5.M1**; **PvP** loss **E6.M3** vs **PvE** **open**; **cybernetics** vs external **gear** per **Seams**. **Risk / security** (`risk-security-bands.md`): **E4.M4** `SecurityTier` + **E6.M1**/**E6.M2** for **PvP** eligibility and **consent** UX—**not** client-only PvP toggles. **Zones** (`zones.md`): **place** **fiction** and **hooks** on the **same** **E4.M1** graph—**not** a second topology. 3. **Decomposition** — Map claims to `docs/decomposition/epics/` and `docs/decomposition/modules/` where relevant; flag **conflicts** (e.g. “combat skill” vs skills-as-non-combat). **CI** enforces a minimal guard via [`scripts/check_decomposition_language.py`](../../scripts/check_decomposition_language.py) in the **PR gate** (extend the script if a vetted exception is needed). 4. **Plans** — If work maps to `docs/plans/`, check for **acceptance criteria** vs design doc (same spirit as [code-review-agent](code-review-agent.md) plan alignment). diff --git a/docs/decomposition/epics/epic_04_world_topology.md b/docs/decomposition/epics/epic_04_world_topology.md index 8f659ef..3bf7e9f 100644 --- a/docs/decomposition/epics/epic_04_world_topology.md +++ b/docs/decomposition/epics/epic_04_world_topology.md @@ -46,6 +46,8 @@ Represent the world as a zone graph with travel rules, security-tier signaling f ## Implementation Slices (Backlog-Ready) + + ### Slice 1 - Prototype district zone graph - Scope: E4.M1 defining hub, PvE pocket, and edge zones with valid transitions. diff --git a/docs/game-design/README.md b/docs/game-design/README.md index 4b0e11e..7548323 100644 --- a/docs/game-design/README.md +++ b/docs/game-design/README.md @@ -6,6 +6,6 @@ **Brainstorm-only** (not specs): [`brainstorm/`](brainstorm/README.md). -Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), **[gathering](gathering.md)** (resource nodes, yields), **[crafting](crafting.md)** (recipes, pipeline), **[economy](economy.md)** (faucets, sinks, trade), **[death-loss-recovery](death-loss-recovery.md)** (stakes, recovery), **[risk-security-bands](risk-security-bands.md)** (tiers, PvP eligibility), zones, mechanics, and other design artifacts before they are tied to concrete systems or tickets. +Non-implementation notes: **gigs** (combat roles), **skills** (non-combat), **[abilities](abilities.md)** (what players trigger), **[items](items.md)** (loot, craft, equip), **[gathering](gathering.md)** (resource nodes, yields), **[crafting](crafting.md)** (recipes, pipeline), **[economy](economy.md)** (faucets, sinks, trade), **[death-loss-recovery](death-loss-recovery.md)** (stakes, recovery), **[risk-security-bands](risk-security-bands.md)** (tiers, PvP eligibility), **[zones](zones.md)** (place identity), travel/mechanics stubs, and other design artifacts before they are tied to concrete systems or tickets. Implementation-facing breakdowns stay under [`docs/decomposition/`](../decomposition/README.md) and plans under [`docs/plans/`](../plans/). diff --git a/docs/game-design/abilities.md b/docs/game-design/abilities.md index 5672ccc..d5dd18f 100644 --- a/docs/game-design/abilities.md +++ b/docs/game-design/abilities.md @@ -63,6 +63,7 @@ Vision for **what the player triggers** in play: combat **kits**, non-combat **s | Economy (trade, sinks—gig does not gate craft) | [economy.md](economy.md) | | Death / loss (combat death, gear stakes) | [death-loss-recovery.md](death-loss-recovery.md) | | Risk tiers & PvP eligibility | [risk-security-bands.md](risk-security-bands.md) | +| Zones (where fights live) | [zones.md](zones.md) | | Seams (gear, craft, consumables) | [skills.md](skills.md) | | Hybrid vocabulary | [progression.md](progression.md) | | Encounter rewards + combat hooks | [Epic 5](../decomposition/epics/epic_05_pve_combat.md), [Epic 7](../decomposition/epics/epic_07_quest_faction.md) | diff --git a/docs/game-design/brainstorm/hack-bodyguard-missions.md b/docs/game-design/brainstorm/hack-bodyguard-missions.md index aa00d7d..455b16f 100644 --- a/docs/game-design/brainstorm/hack-bodyguard-missions.md +++ b/docs/game-design/brainstorm/hack-bodyguard-missions.md @@ -32,5 +32,5 @@ Other directions **open:** power budget for the site, timers, optional side obje |--------|--------| | Gig roster, party language | [gigs.md](../gigs.md) | | Skills, seams with combat gear/crafting | [skills.md](../skills.md) | -| Zone / instance tone later | [overview](../overview.md) planned **Zones** | +| Zone / instance tone | [zones.md](../zones.md) | | Enemy/security archetypes later | [overview](../overview.md) planned **Encounters** | diff --git a/docs/game-design/crafting.md b/docs/game-design/crafting.md index 295f8ea..4594d7c 100644 --- a/docs/game-design/crafting.md +++ b/docs/game-design/crafting.md @@ -76,3 +76,4 @@ Authoritative **recipe graph** is **data** (`RecipeDef`); design intent: | Economy (sinks, trade, tuning) | [economy.md](economy.md) | | Death / loss (durability, repair) | [death-loss-recovery.md](death-loss-recovery.md) | | Risk & security (trade/theft context) | [risk-security-bands.md](risk-security-bands.md) | +| Zones (bench access, district flavor) | [zones.md](zones.md) | diff --git a/docs/game-design/death-loss-recovery.md b/docs/game-design/death-loss-recovery.md index 0224a08..978f8fa 100644 --- a/docs/game-design/death-loss-recovery.md +++ b/docs/game-design/death-loss-recovery.md @@ -75,3 +75,4 @@ Vision for **what happens when a character fails** (especially in **combat**): * | Hybrid XP (death does not imply skill XP change) | [progression.md](progression.md) | | PvP product stance | [Epic 6](../decomposition/epics/epic_06_pvp_security.md) | | Risk & security tiers, PvP eligibility | [risk-security-bands.md](risk-security-bands.md) | +| Place context (hub vs frontier) | [zones.md](zones.md) | diff --git a/docs/game-design/economy.md b/docs/game-design/economy.md index d641a1b..300c684 100644 --- a/docs/game-design/economy.md +++ b/docs/game-design/economy.md @@ -91,3 +91,4 @@ Direction: **prototype** should prove at least one **meaningful** durable sink b | Social / corp context for trade | [Epic 8](../decomposition/epics/epic_08_social_guild.md) | | Death, durability, PvP loss | [death-loss-recovery.md](death-loss-recovery.md) | | Security tiers, PvP eligibility | [risk-security-bands.md](risk-security-bands.md) | +| Zone identity (trade hubs, black markets) | [zones.md](zones.md) | diff --git a/docs/game-design/gathering.md b/docs/game-design/gathering.md index d0a6ad7..5ab5c1c 100644 --- a/docs/game-design/gathering.md +++ b/docs/game-design/gathering.md @@ -78,6 +78,7 @@ Directional goals (implementation **open**): | Economy (faucets from gather + policy) | [economy.md](economy.md) | | Death / loss (contested gather, drops) | [death-loss-recovery.md](death-loss-recovery.md) | | Risk tiers & contest rules | [risk-security-bands.md](risk-security-bands.md) | +| Zone identity & spawn feel | [zones.md](zones.md) | | Epic 3 gather slice | [Epic 3 — Slice 2 (Gather nodes)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-2) | | Interaction contracts | [E1.M3](../decomposition/modules/E1_M3_InteractionAndTargetingLayer.md) | | Zone ecology | [E4.M2](../decomposition/modules/E4_M2_SpawnEcologyController.md), [Epic 4](../decomposition/epics/epic_04_world_topology.md) | diff --git a/docs/game-design/gigs.md b/docs/game-design/gigs.md index 742e098..8e716e9 100644 --- a/docs/game-design/gigs.md +++ b/docs/game-design/gigs.md @@ -137,4 +137,5 @@ Detail: seams table in [skills.md](skills.md). - [economy.md](economy.md) — **gig** does not gate **craft**/**trade**; **wealth** loops are **skill**- and **item**-heavy ([items.md](items.md)). - [death-loss-recovery.md](death-loss-recovery.md) — **combat** death → **gig** loadout context; **PvP** loss rules **E6.M3** (not same as PvE—**open**). - [risk-security-bands.md](risk-security-bands.md) — **where** **PvP** can apply (**E6.M1**); not defined by **gig** pick alone. +- [zones.md](zones.md) — **where** gigs feel grounded; **hub** vs **pocket** world fantasy. - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group content where **gigs** hold security while **skills** run the hack (brainstorm). diff --git a/docs/game-design/items.md b/docs/game-design/items.md index b27a1a5..a45b3b1 100644 --- a/docs/game-design/items.md +++ b/docs/game-design/items.md @@ -81,6 +81,7 @@ Design **buckets** above are not 1:1 types in data—they inform tags and metada | Sinks & durability | [E3.M4](../decomposition/modules/E3_M4_SinkAndDurabilityLifecycle.md) | | Death, loss & recovery | [death-loss-recovery.md](death-loss-recovery.md) | | Risk & security bands | [risk-security-bands.md](risk-security-bands.md) | +| Zones (vendor/loot context) | [zones.md](zones.md) | | Economy vision (faucets, trade, policy) | [economy.md](economy.md) | | Economy policy (runtime) | [E3.M5](../decomposition/modules/E3_M5_EconomyBalancePolicy.md) | | Encounter loot routing | [E5.M3](../decomposition/modules/E5_M3_EncounterAndRewardTables.md), [E7.M2](../decomposition/modules/E7_M2_RewardAndUnlockRouter.md) | diff --git a/docs/game-design/overview.md b/docs/game-design/overview.md index 9c8585c..08f3a42 100644 --- a/docs/game-design/overview.md +++ b/docs/game-design/overview.md @@ -6,7 +6,7 @@ This folder holds **vision-level** design: what we want players to feel, do, and Neon Sprawl’s design work here starts from **concrete visions** of progression, places, risk, economy, social play, combat, and the items/abilities that express them. Documents below are added as we write them; each should stay opinionated and specific enough to argue with, without pretending to be a full GDD. -**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Gathering** (nodes, skill XP, ecology): [gathering.md](gathering.md). **Crafting** (recipes, pipeline, benches): [crafting.md](crafting.md). **Economy** (faucets, sinks, trade, policy): [economy.md](economy.md). **Death / loss / recovery:** [death-loss-recovery.md](death-loss-recovery.md). **Risk & security bands:** [risk-security-bands.md](risk-security-bands.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). +**Hybrid progression:** [progression.md](progression.md) (vocabulary + why gigs + skills). **Gig** detail: [gigs.md](gigs.md). **Skills** + **seams**: [skills.md](skills.md). **Abilities** (combat vs non-combat actions): [abilities.md](abilities.md). **Items** (loot, craft, equip): [items.md](items.md). **Gathering** (nodes, skill XP, ecology): [gathering.md](gathering.md). **Crafting** (recipes, pipeline, benches): [crafting.md](crafting.md). **Economy** (faucets, sinks, trade, policy): [economy.md](economy.md). **Death / loss / recovery:** [death-loss-recovery.md](death-loss-recovery.md). **Risk & security bands:** [risk-security-bands.md](risk-security-bands.md). **Zones** (place identity, tone, hooks): [zones.md](zones.md). **Loose ideas:** [`brainstorm/`](brainstorm/README.md). ## Presentation and target rating (vision) @@ -31,7 +31,8 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression | [crafting.md](crafting.md) | **Recipes**, **Process/Make** pipeline, bench vs **gig** combat use | **E3.M2**; with [gathering.md](gathering.md), [items.md](items.md), [skills.md](skills.md) **Seams** | | [economy.md](economy.md) | **Faucets/sinks**, trade, **E3.M5** policy, mission vs loot **faucets** | With [items.md](items.md), [crafting.md](crafting.md); **E8.M3** trade, **E6.M4** parity | | [death-loss-recovery.md](death-loss-recovery.md) | **Death** stakes, **durability**/drops, **recovery**, **PvP** loss (**E6.M3**) | With [items.md](items.md), [economy.md](economy.md), [risk-security-bands.md](risk-security-bands.md) | -| [risk-security-bands.md](risk-security-bands.md) | **Security tiers**, **PvP** **eligibility**, **consent** UX (**E4.M4**, **E6.M1**–**M2**) | With [death-loss-recovery.md](death-loss-recovery.md), [gathering.md](gathering.md); **zones** fiction **TBD** | +| [risk-security-bands.md](risk-security-bands.md) | **Security tiers**, **PvP** **eligibility**, **consent** UX (**E4.M4**, **E6.M1**–**M2**) | With [death-loss-recovery.md](death-loss-recovery.md), [gathering.md](gathering.md), [zones.md](zones.md) | +| [zones.md](zones.md) | **District** **identity**, tone, economy/faction **hooks**, **E4.M1** graph | With [risk-security-bands.md](risk-security-bands.md), [gathering.md](gathering.md); **travel** stub in planned topics | | [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) | Split **skill** (hack) + **gig** (bodyguard) instances—idea capture | Brainstorm | ### Planned topics (stubs) @@ -39,7 +40,7 @@ Neon Sprawl’s design work here starts from **concrete visions** of progression Link new files here when they exist; remove or rewrite this subsection once the table is populated. - **Progression** — [progression.md](progression.md): hybrid **gig + skill** overview and vocabulary. **Gigs:** [gigs.md](gigs.md). **Skills** + seams: [skills.md](skills.md). Recruitment channel **deferred**; *professions* stay folded into **skills** + rep unless a future doc defines something separate. -- **Zones** — tone, danger, faction or economic role of a place. +- **Zones** — [zones.md](zones.md): tone, danger, faction/economic **hooks**; **graph** in [E4.M1](../decomposition/modules/E4_M1_ZoneGraphAndTravelRules.md). - **Travel & connections** — how places link (gates, costs, downtime, danger en route); complements zone identity. - **Mechanics** — loops, constraints, what the server vs. client must honor. - **Items** — [items.md](items.md): categories, rarity philosophy, crafting vs. drops; **Seams** for gig/skill gates. @@ -50,7 +51,7 @@ Link new files here when they exist; remove or rewrite this subsection once the - **Factions & reputation** — who remembers you, grudges, access gates; **gig** story arcs: [gigs.md](gigs.md), rep + seams: [skills.md](skills.md). - **Combat pillars** — [Vision stub below](#combat-pillars-vision-stub): PvE vs. PvP stance, readability, time-to-kill, fairness; **items in combat** in [items.md](items.md). - **Death, loss & recovery** — [death-loss-recovery.md](death-loss-recovery.md): stakes, **E3.M4**/**E6.M3**, recovery UX. -- **Risk & security bands** — [risk-security-bands.md](risk-security-bands.md): **tiers**, **PvP** opt-in, **theft**/gather **contest** hooks; **zone** tone in future **zones** doc. +- **Risk & security bands** — [risk-security-bands.md](risk-security-bands.md): **tiers**, **PvP** opt-in, **theft**/gather **contest** hooks; **place** **fiction**: [zones.md](zones.md). - **Social play** — squad scale, corps, trust, betrayal affordances, async cooperation. - **Encounters & enemy roles** — archetypes, what a fight teaches, variety without noise. **Skill + gig split runs:** [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md). - **Onboarding** — first session hook, clarity vs. mystery, how much systems the new player sees. diff --git a/docs/game-design/progression.md b/docs/game-design/progression.md index d2700e5..5d1784e 100644 --- a/docs/game-design/progression.md +++ b/docs/game-design/progression.md @@ -33,6 +33,7 @@ Use these terms in **design specs and tools** (fiction may say *job*, *contract* | **Economy** (faucets, sinks, trade, policy) | [economy.md](economy.md) | | **Death / loss / recovery** (stakes, durability, PvP loss) | [death-loss-recovery.md](death-loss-recovery.md) | | **Risk & security bands** (tiers, PvP eligibility) | [risk-security-bands.md](risk-security-bands.md) | +| **Zones** (place identity, travel graph hooks) | [zones.md](zones.md) | | Skill domains, categories, XP curves, gates, mastery | [skills.md](skills.md) | | **Seams** (combat gear vs craft, consumables, rep, alts) | [skills.md](skills.md) (section *Seams (gigs ↔ skills)*) | | Loose ideas | [brainstorm/](brainstorm/README.md) | diff --git a/docs/game-design/risk-security-bands.md b/docs/game-design/risk-security-bands.md index 484da7e..67c2d76 100644 --- a/docs/game-design/risk-security-bands.md +++ b/docs/game-design/risk-security-bands.md @@ -1,6 +1,6 @@ # Risk & security bands -Vision for **how dangerous a place is** and **what the rules allow**: **security tiers** on the world graph, **PvP eligibility**, **consent / risk UX**, and how **tiers** connect to **theft**, **gathering contest**, **trade**, and **death** stakes—not a full **zone** fiction doc (tone, factions per district → future **`zones.md`**). +Vision for **how dangerous a place is** and **what the rules allow**: **security tiers** on the world graph, **PvP eligibility**, **consent / risk UX**, and how **tiers** connect to **theft**, **gathering contest**, **trade**, and **death** stakes. Place fiction (tone, economic role): [zones.md](zones.md). **Tier data (runtime):** [E4.M4 — SecurityTierZoneFlags](../decomposition/modules/E4_M4_SecurityTierZoneFlags.md) assigns **`SecurityTier`**, **`ZonePolicyState`**, and **`ZoneEntryWarning`** per zone on the graph from [E4.M1 — ZoneGraphAndTravelRules](../decomposition/modules/E4_M1_ZoneGraphAndTravelRules.md). **Server** is source of truth; **client** shows warnings on transition ([Epic 4 — Slice 2](../decomposition/epics/epic_04_world_topology.md#epic-4-slice-2)). @@ -74,4 +74,5 @@ Exact **count** of tiers, **instance** vs **overworld** rules, and **mission** * | Gathering under contest | [gathering.md](gathering.md) | | Zone graph & travel (implementation) | [Epic 4](../decomposition/epics/epic_04_world_topology.md), [E4.M1](../decomposition/modules/E4_M1_ZoneGraphAndTravelRules.md) | | PvP product stance | [Epic 6](../decomposition/epics/epic_06_pvp_security.md) | +| Place identity & district roles | [zones.md](zones.md) | | Folder index | [overview.md](overview.md) | diff --git a/docs/game-design/skills.md b/docs/game-design/skills.md index 76354cc..4214761 100644 --- a/docs/game-design/skills.md +++ b/docs/game-design/skills.md @@ -1,6 +1,6 @@ # Skills (non-combat progression) -Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **Gathering & resource nodes** (competition, ecology, gig vs skill): **[gathering.md](gathering.md)**. **Crafting & recipes** (pipeline, benches, failure/quality): **[crafting.md](crafting.md)**. **Economy** (faucets, sinks, trade, policy): **[economy.md](economy.md)**. **Death, loss & recovery** (durability, PvP loss, recovery): **[death-loss-recovery.md](death-loss-recovery.md)**. **Risk & security bands** (tiers, PvP eligibility): **[risk-security-bands.md](risk-security-bands.md)**. +Design for **non-combat skills** only. **Shared vocabulary**, **why we use gigs + skills**, and the **hybrid overview** are in **[progression.md](progression.md)**. **Combat gigs** (roster, hub swap, sub-gig, etc.) are **[gigs.md](gigs.md)**. **What counts as a combat vs non-combat action** (kits, interactions, items): **[abilities.md](abilities.md)**. **Item buckets and acquisition** (loot, craft, equip): **[items.md](items.md)**. **Gathering & resource nodes** (competition, ecology, gig vs skill): **[gathering.md](gathering.md)**. **Crafting & recipes** (pipeline, benches, failure/quality): **[crafting.md](crafting.md)**. **Economy** (faucets, sinks, trade, policy): **[economy.md](economy.md)**. **Death, loss & recovery** (durability, PvP loss, recovery): **[death-loss-recovery.md](death-loss-recovery.md)**. **Risk & security bands** (tiers, PvP eligibility): **[risk-security-bands.md](risk-security-bands.md)**. **Zones** (place identity, faction/econ hooks): **[zones.md](zones.md)**. **This file also owns the [Seams (gigs ↔ skills)](#seams-gigs-skills)** section—rules where **gigs** and **skills** meet (gear, crafting, consumables, rep, alts). **Brainstorm-only** ideas: [`brainstorm/`](brainstorm/README.md). @@ -255,4 +255,5 @@ Explicit **bonuses** when skill A + B cross a threshold vs **pure fiction** (“ - **[economy.md](economy.md)** — faucets/sinks, trade, **E3.M5**; mission vs loot ([progression.md](progression.md)) (written). - **[death-loss-recovery.md](death-loss-recovery.md)** — death stakes, **E3.M4** / **E6.M3**, recovery (written). - **[risk-security-bands.md](risk-security-bands.md)** — **E4.M4** tiers, **E6.M1**/**M2** PvP + consent (written). +- **[zones.md](zones.md)** — district **identity**, **E4.M1** graph, **hooks** for gather/missions (written). - [brainstorm/hack-bodyguard-missions.md](brainstorm/hack-bodyguard-missions.md) — group **skill** (hack) + **gig** (bodyguard) instances (brainstorm). diff --git a/docs/game-design/zones.md b/docs/game-design/zones.md new file mode 100644 index 0000000..8f920ad --- /dev/null +++ b/docs/game-design/zones.md @@ -0,0 +1,74 @@ +# Zones (places & identity) + +Vision for **what a place is** in fiction and design: **tone**, **danger feel**, **faction** or **economic role**, and **content hooks**—paired with the **same** underlying **zone graph** as [risk-security-bands.md](risk-security-bands.md) (**security tiers**, **PvP** rules) but **not** duplicating **tier** or **eligibility** mechanics. + +**Topology & travel (runtime):** [E4.M1 — ZoneGraphAndTravelRules](../decomposition/modules/E4_M1_ZoneGraphAndTravelRules.md) (`ZoneDef`, `ZoneEdge`, `TravelRule`)—**server-authoritative** **zone** **id** and **legal** **transitions** ([Epic 4 — Slice 1](../decomposition/epics/epic_04_world_topology.md#epic-4-slice-1)). **Travel** costs, **gates**, and **downtime** **fiction** → future **`travel.md`**; **TravelRule** already covers **gating** (level, quest, faction). + +**Ecology & density:** [E4.M2 — SpawnEcologyController](../decomposition/modules/E4_M2_SpawnEcologyController.md) drives **resource** and **NPC** **profiles** **per** **zone** ([gathering.md](gathering.md) **competition** **feel** ties here). + +**Handoffs:** [E4.M3 — SeamlessHandoffAndRegionState](../decomposition/modules/E4_M3_SeamlessHandoffAndRegionState.md) for **cross-region** **authority** (later scope). + +**Security overlay:** [E4.M4](../decomposition/modules/E4_M4_SecurityTierZoneFlags.md) attaches **`SecurityTier`** to **`ZoneDef`**—**one** **zone** **row** carries **both** **fiction** **tags** and **policy** **flags** in data (**open** how we split **design** **docs** vs **one** **`ZoneDef`** **sheet**). + +## Zone lenses (design-facing) + +Use these when briefing **writers**, **environment**, and **systems**; they **overlap** in data. + +| Lens | Questions | +|------|-----------| +| **Tone** | Noir, grime, hope, satire—how **hard** is life **here**? ([overview.md](overview.md) **presentation** band) | +| **Threat** | **Ambient** danger (mobs, cops, gangs) vs **opt-in** **combat**—distinct from **SecurityTier** **alone** | +| **Economy** | **Hub**, **industrial**, **black** **market**, **corporate** **enclave**—feeds **loot**, **vendors**, **gather** **node** **flavor** ([economy.md](economy.md)) | +| **Faction** | Who **owns** **the** **street**? **Rep** **gates**, **quests** ([skills.md](skills.md) **world** **gates**); detail → future **factions** doc | +| **Activity mix** | **PvE** **lanes**, **skill** **instances**, **social** **hubs**—what **players** **do** **here** | + +## Relationship to security tiers + +- **`SecurityTier`** answers **“what rules apply?”** ([risk-security-bands.md](risk-security-bands.md)). +- **Zone** **identity** answers **“what is this place **for** in the **fantasy**?”**—two **districts** can share a **tier** but **feel** **different** (**open** **content**). +- **TravelRule** can **reference** **rep**, **licenses**, **quests**—**fiction** **explains** **why** the **gate** **exists**. + +## Hubs, pockets, and edges + +Directional **shape** for **prototype** **districts** (names **TBD**—align with [Epic 4 — Slice 1](../decomposition/epics/epic_04_world_topology.md#epic-4-slice-1)): + +| Role | Intent | +|------|--------| +| **Hub** | **Services**, **vendors**, **social** **density**, **lower** **ambient** **PvE** **pressure** in **safe** **bands** | +| **Pocket** | **Focused** **PvE** or **skill** **content**—**instances** or **carved** **overworld** **chunks** | +| **Edge / frontier** | **Higher** **risk** **feel**, **richer** **gather** **or** **loot** **fantasy**, **clear** **warnings** on **entry** | + +## Module map (zone–fiction alignment) + +| Module | Role | Ties to this doc | +|--------|------|-------------------| +| [E4.M1](../decomposition/modules/E4_M1_ZoneGraphAndTravelRules.md) | `ZoneDef`, edges, `TravelRule` | **Identity** **data** **home** | +| [E4.M4](../decomposition/modules/E4_M4_SecurityTierZoneFlags.md) | Tier, warnings | **Overlay** on **same** **zones** | +| [E4.M2](../decomposition/modules/E4_M2_SpawnEcologyController.md) | Spawn **profiles** | **Feel** of **danger** / **resources** | +| [E4.M3](../decomposition/modules/E4_M3_SeamlessHandoffAndRegionState.md) | Region **handoff** | **Scale** **up** **later** | +| [E7.M4](../decomposition/modules/E7_M4_ContractMissionGenerator.md) | Contract **gen** | **Zone**-tagged **missions** (per E4.M1 **dependents**) | + +## Decisions log + +| Topic | Direction | Status | +|-------|-----------|--------| +| Fiction vs policy | **Same** **zone** **graph**; **tier** **is** **not** the **only** **identity** **axis** | Agreed | +| Server zone truth | **Current** **zone** **id** **authoritative**—no **client** **shortcuts** | Agreed ([E4.M1](../decomposition/modules/E4_M1_ZoneGraphAndTravelRules.md)) | +| Presentation band | **Grim** **ideas**, **restrained** **depiction**—[overview.md](overview.md) | Agreed | + +## Open questions + +- **Naming** **convention** for **player-facing** **district** **labels** vs **internal** **`ZoneDef` ids**. +- **Verticality** **and** **interiors** as **sub-zones** vs **one** **flat** **graph** **node**. +- **Dynamic** **zones** (lockdown, **riot**, **player** **corp** **capture**) vs **static** **data** **only**. + +## Where to read next + +| Topic | Document / module | +|--------|-------------------| +| Security tiers, PvP, warnings | [risk-security-bands.md](risk-security-bands.md) | +| Gather contest, nodes | [gathering.md](gathering.md) | +| Death / loss by context | [death-loss-recovery.md](death-loss-recovery.md) | +| Economy, trade hubs | [economy.md](economy.md) | +| Epic 4 overview | [Epic 4](../decomposition/epics/epic_04_world_topology.md) | +| Travel detail (stub) | [overview.md](overview.md) planned **Travel & connections** | From a0544f4d3375e0d88094585c4f08c723662d7e2a Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 22:55:21 -0400 Subject: [PATCH 89/91] chore: final branch docs review and Epic 2 E2.M2 note fix Add docs/reviews/2026-04-03-final-branch-docs-review.md. Correct epic E2.M2 integration note: E5.M1 uses gig progression, not E2.M2 skill XP. --- .../epics/epic_02_skills_and_progression.md | 2 +- .../2026-04-03-final-branch-docs-review.md | 64 +++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 docs/reviews/2026-04-03-final-branch-docs-review.md diff --git a/docs/decomposition/epics/epic_02_skills_and_progression.md b/docs/decomposition/epics/epic_02_skills_and_progression.md index 549ca28..5c9e63d 100644 --- a/docs/decomposition/epics/epic_02_skills_and_progression.md +++ b/docs/decomposition/epics/epic_02_skills_and_progression.md @@ -29,7 +29,7 @@ Provide a data-driven **non-combat skill** layer: `SkillDef` registry, **skill** - Key contracts: `XpGrantEvent`, `LevelCurve`, `LevelUpEvent` - Dependencies: E2.M1 - Stage target: Prototype -- Note: E3.M1, E3.M2, and E5.M1 integrate by calling this engine; they are not dependencies for implementing E2.M2 (see Slice 3). +- Note: **E3.M1** and **E3.M2** (and mission/reward routers such as **E7.M2**) integrate as **callers** of **E2.M2** for **skill** XP. **E5.M1** resolves **combat** and advances **gig** progression **outside** **E2.M2**—see Slice 3. None of these are **hard** dependencies for implementing the **E2.M2** core (stub callers in Slice 2). ### E2.M3 - MasteryAndPerkUnlocks diff --git a/docs/reviews/2026-04-03-final-branch-docs-review.md b/docs/reviews/2026-04-03-final-branch-docs-review.md new file mode 100644 index 0000000..b64cdec --- /dev/null +++ b/docs/reviews/2026-04-03-final-branch-docs-review.md @@ -0,0 +1,64 @@ +# Final branch documentation review + +**Date:** 2026-04-03 +**Scope:** Full doc + content contract pass for branch **`chore/game-design-docs`** vs **`main`** (game-design vision set, Epic 2 rename and module updates, `content/` skill schema + CI, `docs-review-agent`, PR gate, root README, `.vscode` debug/tasks). +**Base:** `main` (diff as of review); HEAD sample `0dea48e` on `chore/game-design-docs` (verify at merge time). + +## Verdict + +**Approve with suggestions** — Vision and decomposition align on the hybrid **gig vs non-combat skill** model; `SkillDef` schema, prototype catalog, and CI checks are consistent with **E2.M1** / **E2.M2** module text. The **E2.M2** bullet **Note** in **`epic_02_skills_and_progression.md`** was corrected during this review so it no longer implies **E5.M1** calls **E2.M2**. + +## Summary + +The branch tightens the **skills** track around **`allowedXpSourceKinds`**, four **`SkillCategory`** values, and explicit rejection of **combat encounter → skill XP**. Game-design docs (`progression`, `gathering`, `crafting`, `abilities`, `gigs`, `skills`) and **`epic_02_skills_and_progression.md`** agree with **E2.M1** / **E2.M2**. **`zones.md`** and cross-links sit correctly beside **`risk-security-bands.md`** on the **E4.M1** graph. **`scripts/validate_content.py`** and **`scripts/check_decomposition_language.py`** both pass locally. Optional follow-up: one line under **E2.M2** in **`neon_sprawl_vision.plan.md`** for **`sourceKind`** / **`allowedXpSourceKinds`** parity with modules. + +## Documentation checked + +| Path | Result | Notes | +|------|--------|--------| +| `docs/game-design/overview.md` | **Matches** | Artifact index + planned topics coherent; combat stub points to Epic 5 / abilities / items | +| `docs/game-design/progression.md` | **Matches** | Epic 2 Slice 3 = gather/craft → skill XP, combat → gig XP, mission rewards explicit | +| `docs/game-design/skills.md` | **Matches** | Seams anchor `#seams-gigs-skills` present; categories align with schema enum | +| `docs/game-design/gigs.md` | **Matches** | Epic 2 / Epic 5 anchors; PvP open indefinite called out | +| `docs/game-design/gathering.md`, `crafting.md`, `abilities.md` | **Matches** | Epic 2 links use `epic_02_skills_and_progression.md` | +| `docs/game-design/zones.md` | **Matches** | Same graph as tiers; E4.M1 / E7.M4 map | +| `docs/game-design/risk-security-bands.md` | **Matches** | Points to `zones.md` for place fiction | +| `docs/decomposition/epics/epic_02_skills_and_progression.md` | **Matches** | Objective + Slice 1/3/DoD correct; **E2.M2** **Note** updated: E3 callers vs E5 gig path (same session as this review) | +| `docs/decomposition/modules/E2_M1_SkillDefinitionRegistry.md` | **Matches** | Schema table, `allowedXpSourceKinds`, CI pointer | +| `docs/decomposition/modules/E2_M2_XpAwardAndLevelEngine.md` | **Matches** | `sourceKind` validation; E5.M1 → gig XP | +| `docs/decomposition/modules/E2_M3_*.md`, `E2_M4_*.md` | **Matches** | Epic link updated | +| `docs/decomposition/README.md` | **Matches** | Epic 2 row → new filename | +| `docs/decomposition/modules/CT_M1_ContentValidationPipeline.md` | **Matches** | PR gate + scripts described | +| `neon_sprawl_vision.plan.md` | **Partially matches** | Epic 2 title and E2.M1 note OK; E2.M2 could mention **grant channel** validation for parity with modules | +| `content/schemas/skill-def.schema.json` | **Matches** | Required fields + enum align with **E2.M1** | +| `content/skills/prototype_skills.json` | **Matches** | Three rows, distinct categories | +| `content/README.md` | **Matches** | Local validate instructions | +| `.cursor/rules/docs-review-agent.md` | **Matches** | Hybrid ground truth includes `zones.md` | +| `AGENTS.md` | **Matches** | Docs review agent row | +| `README.md` (root) | **Matches** | Gigs + skills one-liner | +| `.github/workflows/pr-gate.yml` | **N/A** (workflow) | Validates content + decomposition language | +| `.vscode/launch.json`, `tasks.json` | **N/A** | Launch targets `server/NeonSprawl.Server.Tests` + `NeonSprawl.sln` at repo root — paths exist | + +## Blocking issues + +None for **merge** from a **documentation correctness** standpoint. + +## Suggestions + +1. **`neon_sprawl_vision.plan.md`** — Optional one-line under **E2.M2**: reject **XP** grants whose **`sourceKind`** is not in the target skill’s **`allowedXpSourceKinds`** (mirrors module + schema descriptions). + +## Nits + +- **`docs/reviews/2026-04-03-game-design-branch-docs-review.md`** verification bullet still mentions grepping **`epic_02_classless_progression`**; repo docs no longer use that path (harmless historical note). +- **`.vscode/launch.json`** retains default .NET template comments — fine for a first drop; team may want a Neon Sprawl–specific label later. + +## Verification + +```bash +pip install -r scripts/requirements-content.txt +python scripts/validate_content.py +python scripts/check_decomposition_language.py +rg 'epic_02_classless_progression' docs/ content/ --glob '*.md' +``` + +Expect **no** hits under `docs/` (except optional old **reviews** text). Spot-check **GitHub** rendering for `docs/game-design/overview.md` and `epic_02_skills_and_progression.md` links after merge. From 53fb1d65155f2db9b0b98fce7ca2233c03366f01 Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 22:56:50 -0400 Subject: [PATCH 90/91] chore: document E2.M2 grant channel policy in vision plan Align neon_sprawl_vision.plan.md with E2.M2: reject skill XP when sourceKind is not on SkillDef.allowedXpSourceKinds. --- neon_sprawl_vision.plan.md | 1 + 1 file changed, 1 insertion(+) diff --git a/neon_sprawl_vision.plan.md b/neon_sprawl_vision.plan.md index f11e4d5..0a461a3 100644 --- a/neon_sprawl_vision.plan.md +++ b/neon_sprawl_vision.plan.md @@ -394,6 +394,7 @@ Module template: - Stage target: Prototype. - **E2.M2 XpAwardAndLevelEngine** - Responsibility: XP award rules, level thresholds, level-up event generation. + - Grant channel policy: Reject **`XpGrantEvent`** when **`sourceKind`** is not listed on the target **`SkillDef.allowedXpSourceKinds`** (E2.M1 catalog + [`content/schemas/skill-def.schema.json`](content/schemas/skill-def.schema.json)). - Key contracts: `XpGrantEvent`, `LevelCurve`, `LevelUpEvent`. - Dependencies: E2.M1. - Stage target: Prototype. From 3d9ea1fc6c699a0232e0b403175bd126dcea6edd Mon Sep 17 00:00:00 2001 From: VinPropane Date: Fri, 3 Apr 2026 22:58:14 -0400 Subject: [PATCH 91/91] chore: mark vision-plan suggestion done in final docs review --- docs/reviews/2026-04-03-final-branch-docs-review.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/reviews/2026-04-03-final-branch-docs-review.md b/docs/reviews/2026-04-03-final-branch-docs-review.md index b64cdec..84b5994 100644 --- a/docs/reviews/2026-04-03-final-branch-docs-review.md +++ b/docs/reviews/2026-04-03-final-branch-docs-review.md @@ -10,7 +10,7 @@ ## Summary -The branch tightens the **skills** track around **`allowedXpSourceKinds`**, four **`SkillCategory`** values, and explicit rejection of **combat encounter → skill XP**. Game-design docs (`progression`, `gathering`, `crafting`, `abilities`, `gigs`, `skills`) and **`epic_02_skills_and_progression.md`** agree with **E2.M1** / **E2.M2**. **`zones.md`** and cross-links sit correctly beside **`risk-security-bands.md`** on the **E4.M1** graph. **`scripts/validate_content.py`** and **`scripts/check_decomposition_language.py`** both pass locally. Optional follow-up: one line under **E2.M2** in **`neon_sprawl_vision.plan.md`** for **`sourceKind`** / **`allowedXpSourceKinds`** parity with modules. +The branch tightens the **skills** track around **`allowedXpSourceKinds`**, four **`SkillCategory`** values, and explicit rejection of **combat encounter → skill XP**. Game-design docs (`progression`, `gathering`, `crafting`, `abilities`, `gigs`, `skills`) and **`epic_02_skills_and_progression.md`** agree with **E2.M1** / **E2.M2**. **`zones.md`** and cross-links sit correctly beside **`risk-security-bands.md`** on the **E4.M1** graph. **`scripts/validate_content.py`** and **`scripts/check_decomposition_language.py`** both pass locally. **`neon_sprawl_vision.plan.md`** **E2.M2** **grant channel policy** was added after this review (**53fb1d6**). ## Documentation checked @@ -29,7 +29,7 @@ The branch tightens the **skills** track around **`allowedXpSourceKinds`**, four | `docs/decomposition/modules/E2_M3_*.md`, `E2_M4_*.md` | **Matches** | Epic link updated | | `docs/decomposition/README.md` | **Matches** | Epic 2 row → new filename | | `docs/decomposition/modules/CT_M1_ContentValidationPipeline.md` | **Matches** | PR gate + scripts described | -| `neon_sprawl_vision.plan.md` | **Partially matches** | Epic 2 title and E2.M1 note OK; E2.M2 could mention **grant channel** validation for parity with modules | +| `neon_sprawl_vision.plan.md` | **Matches** | Epic 2 title, E2.M1, E2.M2 **grant channel policy** bullet (**53fb1d6**) | | `content/schemas/skill-def.schema.json` | **Matches** | Required fields + enum align with **E2.M1** | | `content/skills/prototype_skills.json` | **Matches** | Three rows, distinct categories | | `content/README.md` | **Matches** | Local validate instructions | @@ -45,7 +45,7 @@ None for **merge** from a **documentation correctness** standpoint. ## Suggestions -1. **`neon_sprawl_vision.plan.md`** — Optional one-line under **E2.M2**: reject **XP** grants whose **`sourceKind`** is not in the target skill’s **`allowedXpSourceKinds`** (mirrors module + schema descriptions). +1. ~~**`neon_sprawl_vision.plan.md`** — Optional one-line under **E2.M2**: reject **XP** grants whose **`sourceKind`** is not in the target skill’s **`allowedXpSourceKinds`** (mirrors module + schema descriptions).~~ **Done** (**53fb1d6**): **Grant channel policy** bullet under **E2.M2**. ## Nits