Phillip Tarrant 021c2480d8 docs(spec): character reuse + the seven-campaign arc
A direction spec: one character, seven campaigns (one per demon king),
one saga — then it ends. The character, companions, deeds and level carry
between campaigns; the world does not.

Deliberately adds no milestone and no BOM line. Its real payload is a set
of guardrails on milestones that are about to be built blank and would
otherwise foreclose the shape:

- M5 owes a level curve — design it to a ceiling of 20 across 7 tiers,
  with tiered enemy stat blocks and never a scaling multiplier.
- M9 owes a save format — two objects (Saga + Campaign), not one blob.
  Humiliations move to the Saga or they die with the campaign.
- M3/M4 — don't foreclose a saga entry path; don't couple construct() to
  the creation scene.
- Build tool — add tier:1..7 when the item/quest namespaces land.

Difficulty is fixed at world-construction time from the campaign index,
never during play. That prohibition is the whole design; a world that
re-levels with the player is a treadmill.

The canon-log contract does not change: party[].disposition,
humiliations[] and established_facts[] already exist, and player still
admits no number. The Saga becomes the source; the canon log a projection
of it. The seam is one optional fourth arg to NewGame.construct().

Greywater at tier 1 under Ghaul is, unintentionally, already campaign 1.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-12 17:16:50 -05:00
2026-07-11 11:13:16 -05:00
2026-07-09 11:17:54 -05:00

coc-rpg

AI-driven single-player, party-based fantasy RPG. Godot 4 client, FastAPI proxy, AI as Dungeon Master.

Read CLAUDE.md first — project charter and working agreement. It is the source of truth. If code disagrees with it, the charter wins until the charter is changed.

The one rule

Code owns state. AI owns text. (charter §2)

Repo layout

/client        Godot 4.7 game client (GDScript) — ALL game state, ALL game rules
  /docs        Client-specific docs (scenes, input, combat wiring)
/api           FastAPI proxy — auth, metering, prompt routing, logging (charter §4)
  /docs        API-specific docs (endpoints, model routing, deploy)
  /prompts     Role prompts — source code, versioned, reviewed (charter §5, §16)
/content       Authored game data — quests, NPC knowledge lists, fallback text
  /quests      Story skeletons and quest definitions
  /npcs        Per-NPC knowledge lists (charter §6 — "the whole design")
  /fallback    Authored degraded-DM text for every AI surface (charter §13)
/docs          Cross-cutting docs — roadmap, ADRs, planning affecting both sides
  /adr         Architecture Decision Records

The three processes (charter §4)

client (GDScript)  ──HTTP──▶  api (FastAPI)  ──▶  Replicate / Ollama

The client holds no API key, ever. It knows one base URL and a set of role endpoints. It sends game state, receives text.

Description
No description provided
Readme 3.3 MiB
Languages
Text 100%