# Project: rimlike

A 2D, tile-based **cute-farming-RPG-meets-colony-sim** for mobile / handheld. Rimworld DNA, Going Medieval × Stardew lodestars. Touch-first UI, sandbox + light storyteller, Rimworld-fidelity depth (5-priority work matrix, 16-chip stockpiles, mood + soft breaks, lighting, room beauty, Quality, dirtiness, production chains, combat, burial). Built on Godot 4 with the ElvGames "Ultimate Farming RPG" Humble bundle as primary art and Ventilatore Fantasy Tileset as medieval accent.

Working title `rimlike` — rename TBD.

## Working agreement

- This is a git repo with `origin` on Forgejo at `https://git.rdx4.com/megaproxy/rimlike.git` (private). HTTPS auth uses the token in `~/.git-credentials` — pushes are non-interactive.
- Commit after each logical change with a one-line imperative message; `git push` after each commit (or at minimum before ending the session).
- Read `memory.md` at session start. Update it before ending the session.
- Read the relevant `docs/` companion (design / architecture / ui / art) for any task in that area — `memory.md` is the index, the companions are the depth.
- Never commit secrets — see `.gitignore` and the rules in `~/claude/CLAUDE.md`.

## Project-specific notes

- **Engine:** Godot 4 (GDScript). 2D-first. Mobile and Steam-Deck export targets; iOS export needs Mac/Xcode, Android from Linux is fine.
- **Tile size:** 16×16 pixel art (locked).
- **Art:** ElvGames "Ultimate Farming RPG" Humble bundle is the primary visual layer; local path `/mnt/d/godot/assets/humble set new/`. Ventilatore Fantasy Tileset Bundle is owned and used as medieval accent. License attribution is required — maintain a credits string for every pack used (see `docs/art.md`).
- **Tick rate:** sim 20 Hz, render 60 Hz decoupled. Default speed Fast (5×) — 1 in-game day ≈ 5 min real time. Auto-pause on threats / pawn-down / dialog events.
- **Save format:** Mid-tick suspend safe; we save **between** sim ticks. JobRunner state must round-trip from day one.
- **i18n from day one:** all player-visible strings live in a string table; English-only ship plan but no hardcoded copy in code.
- **Conventions:** GDScript with Godot's standard idioms. Class-per-file. Snake_case for files and variables. Tilesets imported from the bundle's `Tilesets/*.png` directly (skip the .unitypackage / .yymps / RPG Maker variants).
- **Open scope:** the `Vertical slice` in `memory.md` is the MVP target — realistic timeline 3–6 months solo. Do not silently expand scope; fork choices live in `memory.md` Open questions.

### MCP Pro integration
AI assistant tools come from **Godot MCP Pro** (172 tools, paid, proprietary). Two pieces:
- **Server** at `D:\godot\mcp\server\` (= `/mnt/d/godot/mcp/server/` from WSL) — Node.js, shared across all Godot projects on this machine, **not** part of this repo.
- **Editor plugin** at `addons/godot_mcp/` — copied from the paid zip, **gitignored** (proprietary license, not redistributed). Re-copy on a fresh clone (once the Godot project is scaffolded): `cp -r /mnt/d/godot/mcp/addons/godot_mcp ./addons/`, then in Godot: Project → Project Settings → Plugins → Godot MCP Pro → Enable.
- `.mcp.json` here wires Claude Code → server. `.claude/settings.local.json` is the pre-built read-only-tool allowlist from the zip (committed).
- The Godot editor must be running with the plugin enabled before Claude can use MCP tools — look for the green dot in the "MCP Pro" bottom panel.
- **Editor vs runtime tools**: editor tools always work; runtime tools (`get_game_*`, `simulate_*`, `assert_*`, etc.) need `play_scene` first. Full split in `addons/godot_mcp/skills.*.md` or `D:\godot\mcp\instructions\CLAUDE.md`.
- Don't set `GODOT_MCP_PORT` in `.mcp.json` — server auto-scans 6505–6509; fixed port causes silent failures with stale Node processes. If "Editor not connected" persists, kill any leftover `node.exe` in Task Manager.

### Delegation: tiered subagents (cost/speed)
The main conversation runs on Opus. Three project-local subagents in `.claude/agents/` exist to offload work to cheaper, faster models. **Default to delegation** for any well-defined task that fits an agent's description — including small mechanical edits. Don't skip delegation just because the edit is tiny; the user wants the tiered system visibly firing on its natural workload.

- **`quick-edit`** (Haiku) — mechanical edits to `.gd` files: typos, renames, removing `print()`s, removing unused imports, single-line fixes. **Default for any rename or search-and-replace.** Tools restricted to file-edit + grep.
- **`researcher`** (Haiku) — read-only codebase exploration: "where is X defined", "what connects to signal Y", "which scenes reference resource Z". Returns a digested summary, not raw grep output. **Default for any exploration or audit question** before designing a feature.
- **`gdscript-refactor`** (Sonnet) — medium-scope GDScript work that needs reasoning but no architecture decisions: extract a method, thread a parameter through several call sites, add a save/load seam, write a small new autoload.

**Keep on Opus only when:**
- the file/files are already loaded in your context from an earlier turn in this conversation (Haiku would re-read from scratch, blowing the savings), OR
- the task needs MCP Pro editor tools (scenes, runtime, `play_scene`, `execute_game_script`), OR
- the user is iterating tightly with you and a subagent would break the loop, OR
- the work is genuinely architectural / ambiguous and needs your judgement.

When in doubt, delegate — overhead on a wasted dispatch is cheap; missed savings on Opus-doing-Haiku-work compound across the session.

**Report delegation in the final summary.** When you finish a task, briefly say which subagents you used and what for — e.g. *"Used `researcher` (Haiku) to locate the JobRunner call sites; did the refactor on Opus."* If you handled everything yourself, say *"No delegation — handled on Opus."* One short line at the end of the response is enough; the user wants to see whether the tiered-model system is actually firing.
