# coc-rpg

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

**Read [`CLAUDE.md`](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.
