# Fold-ins: Brainstorm Session 2026-05-12 Loose notes on what shifted, expanded, or got added during the May 12 brainstorm. Not a spec. May not all make the game. Existing docs (00–16) stay as-is; this rolls in the deltas without rewriting them. ## Strategic shifts ### Platform: mobile → Steam-first [00-concept.md](00-concept.md) opens with "A mobile game." Working assumption now is **Steam (PC) as primary**. Mobile deferred or dropped. Reasons: - Premium monetization is the *default* on Steam, the exception on mobile - ~5–10× revenue per copy at comparable conversion rates - Wishlist/Next Fest discovery system actually exists on Steam - Existing design (drag-to-station, info-dense UI, reveal choreography) is structurally Steam-shaped; we were working around mobile constraints - Pixel art is more welcome on Steam than mobile - Steam Workshop is a force multiplier given the data-driven architecture Mobile port stays *possible* later — offline-first / no-live-service architecture choices leave the door open. ### Pacing: real-time idle → session-based, idle-within-session Existing docs lean Melvor-style real-time idle. Steam shifts this to **session-based, idle-within-session** — expeditions resolve in *in-session minutes*, not real-world hours. Loop Hero / FTL shape. The "AFK" is *within* the session, not while the game is closed. Numbers throughout existing docs (expedition durations, craft times, rank cadence) need re-scaling against in-session minutes, not real-world hours. Defer the actual rescaling to sim-driven tuning. ### Monetization lane Premium upfront, ~$10–15 on Steam, demo for Steam Next Fest. Off the table: gacha, energy timers, IAP-to-skip-friction, FOMO events. Realistic envelope: $0–2k (flop) / $5–30k (modest indie success) / $50k+ (hit). Designing for the *modest indie success* lane. ### Moral guardrail: the morning-after test Articulated as a design constraint: *would a player who put 30 minutes in last night wake up and feel fine about it? Not addicted, not wrung out, not "I don't know why I did that"?* If a mechanic only works by failing this test, it's out. Pair with "always something shiny" — both apply. ### Niche positioning (sharpened) Was: "Melvor meets Darkest Dungeon." Now: *"A crafting-guild idle with Wartales-style provisioning, CK3-style event streams, and open-ended expedition sessions you recall at will. Pixel-art, single-screen, Steam premium."* The Wartales/Battle Brothers provisioning lineage is the actual differentiator (see Consumables below). Nothing in the crafting-primary genre does this. ## Stack and tooling (tentative — spike before committing) Developer fluent in Python, C, C++, Rust, IEC61131, JS/TS — *not* C#. Strongly prefers terminal/code-editor workflows over GUI editors. Leading candidates: 1. **TypeScript + Phaser (or PIXI) + Tauri** — code-first, peak AI productivity for the developer's stack, web stack is natively brilliant at animated UI, Tauri ships small native binaries to Steam 2. **LÖVE + Lua** — code-first, Balatro-tier shipping track record, smaller corpus 3. **pygame-ce** — deepest Python familiarity, but framework grain doesn't match info-dense animated UI Out for this project: Godot (GUI-editor primary grain), C# stacks (extra language), Bevy/Rust (compile-time iteration tax), C++/raylib (UI work in C++ is painful), Hazel (teaching engine). Recommended spike before committing: one weekend in Phaser+TS+Tauri, one in LÖVE+Lua. Same toy each — single workshop screen, drag-an-ingredient-to-station, Master's Touch meter, one card reveal. ## Data pipeline User owns the visual asset pipeline (ComfyUI + Python scripts) — out of scope for tooling discussions. The *data* pipeline: - **Source format**: TOML files per domain (`data/materials/`, `data/recipes/`, `data/patrons/`, etc.), git-versioned, text-editable - **CSV as bulk-import escape hatch**: for AI-generated or spreadsheet-brainstormed batches; converted to TOML once imported - **Validation**: Pydantic schemas at the tooling layer - **Procedural expansion**: templates × materials × quality bands × affixes → expanded item space (potentially 10k+ permutations) - **Runtime artifact**: SQLite (same engine for content and save state) - **Simulator**: Python initially; port to TS if/when stack settles there, so sim and game share logic **Strategic milestone**: sim + recipe scope locked first; *then* game code. Lock the 30–60 hour content envelope by simulation before touching the runtime. ## Progression model — substantial revision [05-economy-progression.md](05-economy-progression.md) correctly rejected per-skill XP grind ("craft 300 daggers to level Smithing"). But it over-corrected — no visible quantified bars means players have nowhere for the "I'm almost there" feeling to live. ### Multiple visible progression surfaces | Surface | Visible bar | Advances by | Avoids grind because | |---|---|---|---| | Guild Rank (spine) | XP toward next rank | Orders + discoveries + masterworks + expeditions | Multiple sources; can't farm one | | Recipe Library | % discovered (47/200) | First craft of a recipe | Repeats don't count | | Material Catalog | Found (32/120) | New material drop | Repeats don't count | | Patron Favor | Per-patron (8/10) | Fulfilling their orders | Bounded per patron | | Engineer Career Arc | Apprentice → Journeyman → Master | First-Masterwork, first-Legendary, time-served | 3 stages, milestone-gated | | Quality Records | Best so far per recipe | New quality band on that recipe | Bounded by recipe count | | Region Map | % explored | Expeditions to new places | Discovery-gated | A glance at the session opening shows multiple "almost there" hooks at once. None advance by repetition. ### Capability stack — the positive constraint A craft attempt's success depends on the *sum* of: | Factor | Gates | Built by | |---|---|---| | Engineer career stage | Quality ceiling | Apprentice → Journeyman → Master, milestone-gated | | Engineer traits | Modifiers (Lucky, Steady, Hasty, Drunk) | Hire pool quality | | Station tier | Recipes attemptable at all | Crafted upgrades + materials | | Tools equipped | Discipline-specific bonuses (Masterwork Smith's Hammer) | Crafted in-game | | Materials provided | Output ceiling (Crude inputs can't yield Masterwork) | Expeditions, market, rewards | | Target quality band | Difficulty multiplier | Player choice, opt-in | Effective capability vs. recipe demand → outcome. ### Attempt risk gradient (over-capability attempts) | Mismatch | Outcome | |---|---| | Mild | Result drops one quality band below target; materials consumed | | Moderate | Chance of total failure, material waste, tool damage | | Severe | Engineer fatigue/injury, station damage, occasional cursed outcomes | | Long-shot | Small chance of against-the-odds Masterwork — Library entry, story moment | Recipe from expedition you're under-capability for? Burn the materials trying now, or save the scroll and build up? Either is a real decision. ### Pillar additions - **Capability matters.** Items, gear, stations, engineers, and materials compound systemically. - **Friction is real.** Attempts above capability cost real things. Sends above capability risk real things. - **Progression visibility.** Players always have 3+ visible bars they're proximate to advancing, each by varied play. ## Expedition system — substantial expansion [04-expeditions.md](04-expeditions.md) treats expeditions as "AFK timer with procedural narrative report on return." Major shift. ### Risk tiers with visible legibility Risk is gradient, telegraphed *before* the player commits. | Tier | Example | Failure modes | Stakes | |---|---|---|---| | 1 | Moo-Moo Meadows | Empty haul, minor scrape | Time only | | 2 | Misty Hollow | Minor injury, scuffed gear | Days off-duty | | 3 | Burned Hills | Serious injury, gear loss | Weeks off-duty | | 4 | Ravenwood Crypt | Death, capture, permanent loss | Roster member gone | | 5 | The Inverted Spire | Party wipe, story consequences | Multiple losses, rep hit | Pacing principle: **tier 1–2 frequent and chill**, tier 4–5 are *campaigns* you prepare for. Before sending: visible math (*"Dora vs. Ravenwood: 60% severe injury, 25% death, 85% return empty-handed."*). Telegraphed deaths are *story*; surprise deaths are *punishment*. ### Interactive event stream (the CK3 layer) Expeditions surface decision/flavor moments into a queue (sidebar feed), not as modal interrupts. Player works them at their own pace. Event mix per expedition: - **~70% flavor pings** — zero-choice texture (*"Brom found clover honey, +1"*). Cheap to author, constant pulse of life-happening-out-there. AI generates these in batches. - **~25% light decisions** — binary, low stakes - **~5% substantive decisions / story moments** — real branches, real stakes Trait- and capability-gated dialog: this is where roster identity matters most. *"Brom's Lucky trait reveals a third option."* *"Read the inscription (requires Lettered — none of your party has it)."* Equipped gear changes available options. ### Auto-resolve via character traits If the player ignores an event too long, the party defaults to a trait-driven auto-choice. **The auto-choice IS the character.** Cowardly Dora retreats. Brave Brom pushes through. No nag pressure; character expression preserved. ### Player-controlled return (significant shift) | Pattern | Example | Feel | |---|---|---| | A. AFK timer | Melvor mobile | Set duration, get loot | | B. Active mission | XCOM, Darkest Dungeon | Escort scripted party through run | | **C. Open-ended + player recall** | **This design** | Adventurer lives in field, you call them home | Pattern C is new for the crafting-guild genre. Adventurer remains in the field, generating events and loot, until the player recalls them. Closest analog: Stardew daytime exploration + CK3 event streams. What this enables: - Open-ended exploration — deep dives in a region searching for specific rare drops - Time-as-resource — adventurer-hours budget across the roster - Risk compounds with time — Tier-4 region kept-running is *very* dangerous - Triage decisions when carry is full (the onyx example) ### Forcing functions for return Player-controlled recall, but with mandatory-return conditions: - Fatal injury or near-death - Out of rations - Captured (rescue required, not recall) - Patron deadline pressing on inventory needed at the guild ### Death/loss mixed roll When things go wrong: not always permadeath. Roll across: - **Permadeath** (Darkest Dungeon — gone) - **Captured / ransomed** (recoverable but expensive, time-pressured; possible side-quest) - **Long-term wounded** (returns eventually, scarred — XCOM) - **Lost gear/inventory only** (the run was a wash; person survived) Variance keeps return moments narratively alive. Permadeath stays on the table for severe mismatches. ### Carry capacity Hybrid slots-with-weight-tiers: - N normal slots, each 1 item - Heavy items (large onyx, masterwork weapons, large recipe tomes) take 2 slots - Bag/saddlebag/cart capacity is another crafted-item axis — cobbler crafts the Pack of Holding Each rare find when carry is full is its own triage moment. ## Consumables as core economic driver (new framing) **The expedition envelope.** Every expedition is bounded by what the party brings: - **Rations** → how long they stay (no food = short auto-return timer) - **Carry capacity** (saddlebags, pack mules) → how much they bring back - **Survival kits** (torches, ropes, antitoxins, climbing gear) → what zones they can survive in - **Combat consumables** (potions, scrolls, bombs) → how many encounters they can stomach Unprepped trio auto-returns in 5 minutes with rabbit pelts. Same trio with Dark Elven Lumbass Bread, Five-Alarm Chili, Sturdy Saddlebags, and healing draughts stays out an hour and brings back several times the haul. What this fixes: 1. **Closes the economy loop.** Materials → crafted consumables → expeditions burn them → expeditions yield materials. The economy was open at one end before. 2. **Tradeskill breadth gets *structurally* justified.** Alchemy, Cooking, Leatherworking, Tailoring all feed expedition capability. Pure-smithing guild bottlenecks on expedition depth. 3. **Engineer roster specialization becomes strategic.** "I need an alchemist before tier-3 viability" is a real gate. 4. **Pre-expedition planning** is a real surface (provisioning UI) without a new mini-game. 5. **Everything crafted has a downstream destination.** Nothing is dead loot. Balance target: **2–4× net multiplier** (prepped vs unprepped), not 10×. Sim finds the actual number. The user-facing *feel* of "way more loot with prep" can still be true at 3×. ## Named character emergence and titles A unification that emerged this session: **all named characters in the world — patrons, engineers, adventurers, specialists — start *generic* and crystallize into named identities through specific gameplay moments.** The player doesn't pick from a static roster on day one; they *grow* the cast through play. ### Character lifecycle (unified across roles) ``` generic role → named identity → signature crafts/feats → arc evolution → legacy "Apprentice "Miles Tannen, Rhinestone Love Handles, Reaches Master, Heirloom items Leatherworker" Lucky Halfling Studded Doom-Boots, leaves for own bearing his name Tanner of Sunken The Bag of Holding shop → becomes in the Library Reach" "Lover's Embrace" a patron ``` The same model produces three patron *origins* as variations on one system, not three separate systems: - **Encountered patrons** — Dorothy the Undead-Exploder, a rare encounter in Ravenwood Crypt. Survive the encounter; she takes interest in your guild; eventually commissions specialized arms. - **Groomed-from-roster patrons** — Miles Tannen reaches Master tier; eventually opens his own shop in Goldshore; now *sends* orders to your guild rather than crafting in it. - **Reputation-unlocked patrons** — At Guild Rank 5, Lord Aldric of Westmark notices you and begins commissioning. ### Naming triggers (generic → named) | Trigger | Character class | Example | |---|---|---| | Crit on a signature craft | Engineers, specialists | Apprentice → "Miles Tannen" on the saddlebags crit | | Survival of a high-tier expedition | Adventurers | Returns alive from Ravenwood → "Dora the Undaunted" | | Milestone count | Anyone | First Masterwork / First Legendary / 10 Fine crafts | | Rare encounter in the field | Future patrons | Dorothy the Undead-Exploder | | Discovery moment | Adventurers, specialists | First to find Adamantine; first to read a crypt inscription | | Time-in-roster + activity | Slow-burn | "She's been with us since the beginning…" | The trigger determines the *flavor* of the identity — crit triggers produce craft-signature names; survival produces adventure-signature names; discovery produces lore-signature names. ### Procedural naming + signature items Given input traits + heritage + triggering event, AI batches: - A name with backstory fit ("Miles Tannen, Lucky Tanner of Sunken Reach") - A *signature variant* of the craft ("Rhinestone Love Handles" replaces "Dusty Saddlebags" as his go-to) - A short flavor blurb for the Library Signature items are where whimsy compounds. Generic items are functional; signature items are *characterful*. Same stats, different soul. Players collect characters' signature crafts the way Pokémon trainers collect badges. ### Titles (LotRO-style layer) Each named character has: - A *name* (set on crystallization) - A pool of *earned titles* (accumulated through specific deeds) - One *displayed title* (player's choice) - A *locked* flag (set on death/retirement; freezes display state and item attributions) Display format: > **Miles Tannen, the Harebrained** > *Lucky Halfling Tanner of Sunken Reach* #### Trigger taxonomy (whimsy + serious pair per achievement) | Trigger type | Example | Whimsy variant | Serious variant | |---|---|---|---| | Quantitative count | Crafted 100 saddlebags | "The Saddle-Stuffed" | "The Provisioner" | | Subject-specific | Collected 50 rabbit pelts | "The Harebrained" | "Keeper of Hares" | | Quality milestone | First Legendary | "The Touched" | "The Brilliant" | | Survival | Survived 10 Ravenwood runs | "The Twice-Wraithed" | "The Crypt-Tested" | | Discovery | First to find Adamantine | "The Lucky Idiot" | "The Bold" | | Patron | 20 orders for Lord Aldric | "Court Pet" | "Court Favorite" | | Easter egg | Crafted at midnight | "The Night-Owl" | "The Vigilant" | Each achievement seeds *two* title options. Player picks per character (or per earn, or with a default setting). Tone register flexes to the player. ### Lost characters become legacy When `is_locked` flips (death/retire): 1. **Display freezes.** "Miles Tannen the Harebrained" stays that way even if future achievements would've promoted his title. 2. **Item attribution permanence.** Rhinestone Love Handles crafted by Miles stay attributed to "Miles Tannen the Harebrained" forever. Legacy items carry their maker's identity *as it was*. Dora's +7 Teddy Bear of Banish Undead, after she falls in Ravenwood, can be equipped on another adventurer — but it's never *not Dora's bear*. The death/loss mixed roll now carries item-narrative weight. ### Why this is structurally significant 1. **Player agency in casting.** Two players end up with entirely different rosters and stories. The cast isn't designed by the designer; it's *grown* by the player. 2. **Emergent narrative without authored prose.** "Miles became Miles on day 8" — the player remembers because they were there. Cheap to produce, deeply meaningful. 3. **Investment compounds; losses sting more.** Each named character is *earned*. 4. **AI is the engine.** Procedural names, signature items, title pools, flavor blurbs — all perfectly AI-batched under a spec. 5. **Roster size constraint earns new purpose.** Was a balance number; now a constraint *forcing emotional investment*. You can only develop so many; choose wisely. 6. **Customization without dark patterns.** Title choice is expression, not gating. No premium title pack, no FOMO. Player agency in tone. ### Data model sketch ``` Character { id procedural_name // set on crystallization base_role // Apprentice Leatherworker, Recruit, etc. heritage // Halfling, Dwarven, ... traits // [Lucky, Steady, ...] state // generic | named | retired | dead | legacy earned_titles // [{title_id, earned_at, variant: whimsy|serious}] current_title_id // the displayed title is_locked // becomes true on death/retire; freezes display + item attributions signature_items // [item_id, ...] trigger_history // [crafts, expeditions, milestones — for title progress] } Item { ... crafted_by_character_id crafted_by_attribution_snapshot // captured at craft time; never updates } ``` The sim has to model emergence rates — strategies that mass-recruit and burn through generics produce very different cast graphs than strategies that invest deeply in a few. Title-earning rates are a sim-tunable lever. ## Tone reinforcement: whimsy is in scope, and a competitive advantage [10-tone.md](10-tone.md) already cites Machinarium + Quake (silly-meets-heavy). This session reinforces and sharpens: - Dark Elven Lumbass Bread, Five-Alarm Chili, +7 Teddy Bear of Banish Undead, 90lb-of-arbitrary-weight onyx, Grobb Plaguebringer's spring potpourri - Voice spans named items, named adventurers, named expeditions, expedition events, titles - A thousand serious medieval crafting games exist; whimsy is the differentiator - Lean in: not everything serious, not everything silly. Tonal range *is* the texture. ### Tonal anchor: darker WoW × Shrek Late-session reframing: the target tonal triangulation is **"darker WoW crossed with Shrek."** WoW was unafraid to put the grim plague-stricken-village quest right next to the goblin punt-yourself-from-a-slingshot quest. Shrek subverted fantasy seriousness while still earning real emotional beats. Both leaned into *"we know this is silly, and also this matters."* That's the range. Tools of the voice: - **Play on words** (Lumbass Bread, Plaguebringer's potpourri, Whirligig Crown) - **Pop-culture jabs** in moderation — winks, not load-bearing references - **Anachronisms welcome** (rhinestones, propeller hats, teddy bears, the absurd-weight onyx) - **Earnest emotional beats** when they come — roster grief, character retirement, legacy items Constraint: **don't get carried away.** The world is mostly serious; whimsy is the *texture on top*. If everything's a joke, nothing lands. If the joke surface is too thin, the whimsy stops being a register and becomes a tic. ### Design tenet: optimization creates absurd outcomes, and we lean in Most games hide stat-min-maxing behind transmog / glamour systems — "make it look the way you want." This game doesn't. **Crafted gear identity overrides character aesthetic.** If Miles Tannen's Whirligig Crown gives +12 Wisdom, your terrifying necromancer wears the propeller hat. The Archmage shows up in Lucky Bunny Slippers because they're BiS for that slot. Why this matters as a design choice: - **Player optimization is honored**, not hidden. The cost is visible silliness; that's the *trade*. - **Crafter identity persists in worn gear.** "That's clearly Miles's hat" is part of why you remember Miles. - **Comedy emerges from the system**, not from authored jokes. The propeller-hat-on-the-Archmage moment is funny *because the player chose it for rational reasons.* - **Signals the game has a sense of humor about itself** — which makes the *serious* beats land harder when they arrive. The grief over Dora's death in Ravenwood works *because* the rest of the game has shown it can laugh. ## Production characteristics (session synthesis) Observations that emerged late in the session, worth capturing because they validate (or constrain) the production envelope: ### Production feasibility - **Not asset-heavy.** Everything is procedural — items, characters, signature variants, expedition events, titles, narrative blurbs. AI tooling handles the bulk; no hand-illustrated cutscenes or keyframed animations required. - **No bespoke animation pipeline.** Shaders + code tricks (tweens, particles, reveal choreography) carry the visual layer. No animator hire, no rig system, no skeleton/IK work. - **No combat to simulate.** Expedition resolution is dice + capability + traits + narrative events. No real-time combat, no melee/ranged math, no enemy AI. Enormous scope relief. - **No twitch mechanics, low skill ceiling.** Master's Touch is opt-in skill-timing with auto-resolve. Players who can't or don't want timing aren't locked out. - **Young-player accessible.** Whimsy + low skill ceiling + emotional investment lets the game work for kids without designing *down*. Adults get the same experience. - **The retention engine is care, not pressure.** Roster grief, signature items, earned titles, patron arcs — emotional investment carries the long tail. ### Worldbuilding stance: deep lore, shallow world There is no walking around. No avatar in a town square. No environmental storytelling through level geometry. Lore lives entirely in: - Item descriptions and flavor blurbs - Expedition event text and character barks - Patron and adventurer backstories that surface in event prompts - Library entries for crafts, characters, regions - Region descriptions and rumored encounters This requires **deep written content in narrow places**, but **no expansive world authoring**. The game sits on something that *could* be a larger story — the world *could* have an overarching plot — but the design is intentionally shallow on the macro, rich on the micro. The player imagines the world from textures they encounter; the game doesn't insist on filling it in. Right tradeoff for solo / AI-augmented production. World-walking would explode scope; lore in flavor text is AI-batchable and fits the established voice. ### The texture, in one sentence *"Grobb Plaguebringer just returned from the depths of Ravenwood Crypt with essence of nightshade to put the final touches on his spring potpourri mastercrafted skill-up."* Named character (Grobb), earned title (Plaguebringer — serious variant on a grim subject), tier-4 expedition return (Ravenwood, with named drop), signature craft (spring potpourri), absolute whimsy on grim source material. If we ship 200 sentences with this texture, we have a game. ## Still-open threads (parked for next session) - **Per-discipline capability vs. single engineer rank** — breadth pillar suggests per-discipline (Master Smith AND Common Loom-worker), but UI/state complexity is real - **Per-recipe memory** — does the guild remember masterworking the Falchion? Diminishing returns on familiar recipes vs. fresh thrill of new? - **Simulator structure** — discussed inputs/outputs, haven't designed it - **Death/loss mixed-roll probabilities** — directional decision made, specific roll weights not pinned - **Replayability shape** — Steam expects 8–30 hr; NG+, ascension, sandbox, or "you've seen it"?