neon-sprawl/docs/game-design/crafting.md

80 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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 — Slice 3 (Recipes pipeline)](../decomposition/epics/epic_03_crafting_economy.md#epic-3-slice-3) targets a **starter recipe set** (e.g. 812 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 — 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) |
| Risk & security (trade/theft context) | [risk-security-bands.md](risk-security-bands.md) |
| Zones (bench access, district flavor) | [zones.md](zones.md) |