# memory — rimlike Durable memory for this project. Read at session start, update before session end. Date format: `YYYY-MM-DD`. A 2D, tile-based **cute-farming-RPG-meets-colony-sim** — Rimworld DNA, Going Medieval × Stardew lodestars — shaped for mobile and handheld. Promoted from `~/claude/ideas/rimlike` on 2026-05-10 after a single deep brainstorm session. Realistic MVP timeline: **3–6 months solo**. ## How to read this project `memory.md` is the index of decisions and open questions. The deep specs live alongside in `docs/`: | File | Contents | |---|---| | [`docs/design.md`](./docs/design.md) | Game design — core loop, simplifications, skills, statuses, mood, weather, stockpiles, production, combat, death/burial, storyteller corpus | | [`docs/architecture.md`](./docs/architecture.md) | Tech — pawn AI / job system, time/tick model, Godot 4 engine layout, TileMap split, all subsystems (mood, lighting, rooms, hauling, production, combat, storyteller) | | [`docs/ui.md`](./docs/ui.md) | Touch UX — work-priority matrix, stockpile/container screens, mood/lighting/rooms cues, combat banners, storyteller event UI, screens still to design | | [`docs/art.md`](./docs/art.md) | Owned assets (ElvGames bundle primary, Ventilatore secondary), license, autotile gotcha, audit list, candidates kept for record | | [`docs/implementation.md`](./docs/implementation.md) | **Phased build plan** — 21 phases (audit → P0 scaffold → … → P20 export). Checklists, acceptance demos, scope-cut levers, de-risking spikes. Track progress here. | When working on a feature, read `memory.md` first, then the relevant `docs/` file(s). For "what do I build next?" check the **Status** row at the top of `docs/implementation.md`. ## Decisions & rationale Distilled from the brainstorm. Each lock has a "why" — change with deliberate intent. ### Pillars | Decision | Choice | Why | |---|---|---| | **View** | Top-down, grid-aligned tilemap | Closest to Rimworld feel; matches owned tilesets. | | **Primary platforms** | iOS + Android touch, then Steam Deck / ROG Ally gamepad. Desktop falls out for free. | Mobile is the hard constraint; Deck inherits. | | **Ambition** | itch.io + TestFlight release. Real artifact, small audience. | Drives engine choice; no app-store polish-tax. | | **Engine** | Godot 4 (GDScript) | 2D-first, free, exports everywhere we need, fast iteration. | | **Tile size / style** | 16×16 pixel art, **cute-farming-RPG primary** (ElvGames bundle), Ventilatore as medieval accent | ElvGames "Ultimate Farming RPG" Humble bundle owned (~2.8 GB, 70+ packs). Tone: Stardew × Going Medieval × Rimworld. | | **Setting** | Medieval fantasy with cute palette | Owned-art alignment + clearer scope (no electricity / hydroponics / energy weapons) + underexplored on mobile. | | **Run shape** | Open-ended sandbox, autosave, persistent world | Player picks up where they left off. | | **Session length** | 5–15 min target | Drives every UI and pacing choice. | | **Default speed** | Fast (5×), with auto-pause on event | 1 in-game day ≈ 5 min real time. Solves the "watch a pawn walk for 60s" problem; 1× exists for combat / fine work. | | **Goal scaffolding** | Light storyteller prompts | Soft, dismissible nudges give each short session shape without forcing scenarios. | | **Combat** | Realtime with auto-pause on threat | Rimworld-feel; touch-friendly. | | **Health** | Single HP per pawn + status effects (Bleeding/Sick/Tired/Hungry/Wet/Cold/Downed/...) | ~80% of the drama for ~5% of Rimworld's health-system code. | | **Scale** | 3–6 pawns, **80×80** MVP map (architecture sized to ~120² ceiling) | Roughly Stardew-farm size; readable when zoomed in, doesn't fit a phone screen — forces the world-view camera (pinch / pan / jump-to-alert) rather than strategic-overview-on-phone. | | **Priority levels** | 5 (Critical / High / Normal / When idle / Off) | Matches Rimworld + Going Medieval contract. | | **Failure state** | Ghost colony — no game over; storyteller drops wanderer in 3–5 days | Mobile-friendly; preserves player investment. | ### Architecture (tech) - **Sim tick 20 Hz, render 60 Hz, decoupled.** Pawn positions lerp between sim ticks. (`docs/architecture.md` Time / tick model) - **Pawn AI: 5-layer pipeline** (Decision → WorkProvider → Job + JobRunner → Status interrupts → Player overrides). Slimmer than Rimworld's ThinkTree. ~800–1500 LOC GDScript for full MVP. - **TileMap layers**: 0 Terrain · 1 Floor · 2 Wall · 3 Designation · 4 Roof · 5 Fog. Furniture / Pawn / Item / EffectFX as scene-instanced entities (not TileMap). - **Pathfinding**: `AStarGrid2D` (built-in), updated on wall/door/furniture changes. - **No background simulation** — app backgrounded = sim paused. Avoids "lost colony to a raid while at work." - **Save format**: between sim ticks only; JobRunner mid-toil state round-trips from day one. ### Game design - **5 skills** (Manual Labor / Crafting / Cooking / Medicine / Combat), 0–10 each, level by use, multiplicative speed/quality bonus. Skills modify duration and quality, never permission. - **9 work categories** (Construction / Mining / Hauling / Cleaning / Crafting / Cooking / Plant / Doctor / Combat). 5-level priority matrix per pawn. - **Storage**: floor zones AND independent crate furniture (4 stacks each), unified by `StorageDestination` interface. **16 filter chips** (Wd/St/Ir/Cu/Ag/Au/Cl/Veg/Mt/Gr/Ck/Md/Tl/Wp/Ar/Co), 5 priorities with Rimworld flow semantics. One stack per tile, one type per tile. - **Production**: 2-step where medieval-sense (Iron→Ingot→Weapon, Grain→Flour→Bread); 1-step otherwise. 5 workbenches (Carpenter, Smelter, Smithy, Cooking hearth, Millstone), ~22 recipes. Full Rimworld bill semantics (one-shot count / forever / until-N + ingredient-quality filter + skill threshold). - **Quality system** (Shoddy/Normal/Excellent/Masterwork/Legendary) on every crafted item; multiplicative stat bonus. Quality from crafter skill + RNG only (inputs are just resources). - **Mood**: ~13 thoughts (data-driven registry, mix persistent + event-driven). Soft breaks at sustained mood < 25 for 30 in-game min — Sulking or Wandering, recover at mood ≥ 35. - **Lighting** (real shader at night), **auto-detected rooms** (named by furniture, scored for beauty + dirtiness), **dirtiness + Cleaning** (8th work category), **beauty score** with Quality multiplier. - **Roofing**: indoor = Layer-4 Roof flag, sim-data only (no rendering, just an indoor tint on floors). Auto-roof when walls enclose ≤8 cells (BFS); No-Roof designation for courtyards. Plants don't grow indoors. - **Weather**: 4 types (Clear / Rain / Storm / Cold snap), daily roll, season-weighted. Wet status accumulates outside in rain, decays indoors. 4 seasons × 12 days = 48-day year. - **Combat**: 3 weapons (sword/axe/bow), 3 armor slots (helm/cuirass/boots). Walls + trees provide cover. Two-roll resolution (hit, then damage with armor reduction). Downed-then-rescue death model; doctors auto-prioritize. Combat=Off "defends if cornered, won't volunteer." Friendly fire ON. - **Death / corpses**: Both burial AND cremation. Graveyard = special stockpile (Corpses-only); pawns dig graves, place permanent grave markers (tap → deceased pawn-detail). Cremation pyre = furniture with single recipe (1 corpse + 5 wood). Corpses decay 0–50 fresh / 50–100 rotting (no butcher) / 100 rotted. - **Storyteller**: 25 prompts written in `docs/design.md`. Daily 6am roll, weighted pool, per-category cooldowns, tension model alternates quiet/threat per Tynan Sylvester pacing. Ambient banner for low-stakes, modal auto-pause for choice events. ### Touch UX - **Bottom-sheet menus** instead of right-side panels. **Long-press** = inspect/context. **Tap world** = select. Speed/pause buttons fixed top. - **Work-priority matrix**: 9 columns × N pawns, sticky pawn-name column, horizontal scroll on phone. Tap-to-cycle priority, long-press for 5-chip picker, swipe column for bulk-set. Per-pawn and per-job views layered on top. - **Stockpile/container UI**: 4×4 chip grid for the 16 filter categories; same UI for floor zones and crates. - **Storyteller events**: ambient banners for nudges/seasonal/lore; modal auto-pause for wanderer/threat/disease/milestone. Events log + "while you were away" digest at resume. - **Indoor tint** marks "this is inside" without needing roof rendering — matches Stardew/Rimworld convention. - **World-view camera**: pinch-zoom + drag-pan + double-tap-to-center; selected pawn does **not** force-follow. Storyteller alerts/banners include a *Go there* tap that pans the camera to the event tile. **No minimap in MVP** — revisit if playtest shows people getting lost on the 80² map. ### Art strategy - **ElvGames "Ultimate Farming RPG" Humble bundle** is the primary art (`/mnt/d/godot/assets/humble set new/`, ~2.8 GB, 70+ packs, all 16×16, ElvGames license: commercial OK with credit). - **Ventilatore Fantasy Tileset Complete Bundle** stays as medieval accent for biome variety / decorative props / animated water. - Mana Seed series considered but **dropped** from buy plan (the bundle covers what we'd planned). - **Authoring still required**: designation overlays (~2 hrs custom), possibly autotile bits on bundle wall sheets, possibly wolf sprite, possibly grave marker. ## Open questions / TODOs ### Audit / unblock-the-prototype action items These are concrete checks to run before serious construction begins. Total ~75 min. - [ ] **Aesthetic harmony test** — open one tile from ElvGames Forest 4 Seasons + one from Ventilatore + view side-by-side. Decide whether they mesh (use both) or clash (drop Ventilatore from active use). ~15 min. - [ ] **ElvGames autotile audit** — count corner / T-junction / cap pieces in `Houses Tileset 2 Seasons/FG_Houses.png` and `Fortress Tileset 2 Seasons/FG_Fortress.png`. ≥16 wall variants per material → autotile is solvable; <8 → fall back to Mana Seed Iconic Homestead ($19.99) or custom-author. ~15–30 min. - [ ] **Wolf sprite source** — bundle's Animal Sprites pack lacks wolves. Browse EvoMonster Packs 01–15 or Turn-Based RPG Monster packs for a suitable predator. Or plan custom (~few hours pixel art). ~15 min. - [ ] **Grave marker source** — Retro Graveyard 16×16 (Tier 3) probably has it; verify. ~10 min. - [ ] **License compilation** — maintain credits string for every pack used (ElvGames + Ventilatore + any others). Display in game's credits screen. Confirm specific terms per pack before any commercial release. ### Design topics still open - [ ] **Auto-roof big-room UX**: the ≤8-cell BFS cap silently fails on rooms larger than 8×8. Decide whether to (a) keep the cap and surface "this area is too large to roof — split with an interior wall" hint when the player encloses one, (b) bump the cap to ~16 with the same hint at the new threshold, or (c) detect any enclosed area regardless of size. Affects `EnclosureDetector` + a new room-feedback UI. - [ ] **Onboarding / first 60 seconds**: mobile-specific. Don't copy Rimworld's tutorial. - [ ] **Touch UI for non-priority screens**: world view, build drawer, alerts, day-summary, pawn detail. See `docs/ui.md` "Screens still to design." - [ ] **Background time / "while you were away" mechanic** — locked to no background simulation in MVP; revisit if it feels bad in playtest. - [ ] **Audio direction** — who/where for SFX + ambient track? Bundle has 11 music + 8 SFX packs covering most needs. - [ ] **Steam Deck input parity** — gamepad-driven cursor, or full menu navigation by D-pad? Probably both. - [ ] **Localization stance** — English-only for MVP, but architect strings for i18n (already locked in CLAUDE.md). - [ ] **Pawn name/backstory generation** — hand-curated list vs simple generator. - [ ] **Naming the game** — "rimlike" is a working title. - [ ] **Monetization stance** — free? PWYW? Premium? - [ ] **Tech / research progression** — medieval tech tree shape. - [ ] **Map / world generation** — fixed seed for slice; procgen later. ### Tunable in prototype (not real "open Qs", just numbers to playtest) - Sleep mood gradient values (`+5/+0/−2/−5/−8`) - Wet status thresholds (25 / 60) and accumulation rates - Season weather weights (Spring/Summer/Autumn/Winter distributions) - Hit-chance bonuses (skill ×5%, range ×5%, cover 40/20%) - Bleed-out timer (6 in-game hours) - Various mood thought magnitudes and decay times ## Vertical slice (MVP target) Same scope as locked in `~/claude/ideas/rimlike/plan.md`. Realistic timeline 3–6 months solo for an MVP this rich. - **1 biome** (temperate forest, ElvGames Forest Tileset 4 Seasons; Ventilatore foliage accents). - **1 map**, **80×80 tiles**, fixed seed for now. - **3 starting pawns** ("settlers" / "villagers"), each with name + portrait + one-sentence backstory. - **Verbs**: chop wood, mine stone & ore, build walls/floors/furniture/crates, plant/harvest crops (3–4 types), cook meals (recipes), haul, repair, clean. - **Needs**: hunger, sleep, mood (~13 distinct thoughts, soft breaks at sustained mood < 25). - **Status effects**: Hungry, Tired, Bleeding, Sick, Downed, Wet (Damp/Soaked), Cold. - **Storage**: floor zones AND containers, 16 filter chips, 5 priorities. - **Quality system** on all crafted items. - **Lighting** — torches + hearths emit light; visual darkness at night. - **Rooms** — auto-detected, named by contents, beauty + dirtiness scored. - **Cleaning** as 8th work category. - **Day/night cycle**, ~5 min per day at default speed. **Seasons** (Spring/Summer/Autumn/Winter, 12 days each). - **Weather**: Clear / Rain / Storm / Cold snap. - **One disaster type**: wolves at night (bandit raids deferred). - **One storyteller**: random quiet/threat alternation, 25 prompt corpus. - **Save/load**, autosave on suspend, single slot. - **Touch UI** end-to-end (no desktop-only gestures). - **Sound**: minimal — UI clicks, ambient day/night loop, alert sting. ## Session log ### 2026-05-10 - Promoted from `~/claude/ideas/rimlike/` (single multi-hour brainstorm session). - Scaffolded `projects/rimlike/` from `_templates/project/`. Customized `CLAUDE.md`. Distilled `plan.md` into this `memory.md`. Moved companion files (design / architecture / ui / art) into `docs/`. `git init`, first commit "Initial scaffold". Created Forgejo repo `rimlike` (private), set HTTPS remote, pushed `main`. Archived idea folder to `~/claude/archive/ideas/rimlike/`. - Wired Godot MCP Pro: `.mcp.json`, `.claude/settings.local.json` allowlist, three project-local subagents (`quick-edit`, `researcher`, `gdscript-refactor`). Added the MCP-Pro and tiered-delegation sections to `CLAUDE.md`. Editor plugin / `addons/godot_mcp/` re-copy still pending Godot project scaffold. - Reviewed `docs/` against `memory.md` and `CLAUDE.md`. Decisions made: - **Map size bumped from 40² → 80²** for the MVP slice; architecture sized to ~120² ceiling. Pawn count stays at 3 start / 6 cap (frontier feel was rejected in favor of "split-the-difference" sizing — Stardew-farm scale, not Going-Medieval scale). - **World-view camera** = pinch-zoom + drag-pan + double-tap-to-center; storyteller alerts include a *Go there* tap. No minimap in MVP. No follow-cam (avoids fighting the player when issuing build orders across the map). - Storyteller cooldown semantics: **per-event AND per-category, both gates must pass** (resolves the design.md vs architecture.md disagreement). - `MAX_STACKS_PER_THOUGHT = 5` (was named-but-unset). - Hauling-loop fallback: items that fail to find any valid destination after 3 retry passes drop on the floor and surface as a passive "No stockpile accepts X" alert. - Cleaned up doc rot in `docs/design.md` and `docs/architecture.md` — both had stale "8 work categories" intermediate sections still next to the canonical "9" lists. Removed the (8) snapshots. - Updated `docs/architecture.md` perf assumptions (60² → 80² with 120² ceiling). - `docs/ui.md` got a new **World view camera (locked)** section; removed the world-view bullet from "Screens still to design". - Open: auto-roof big-room UX (added to TODOs above) — the ≤8-cell BFS cap silently fails on bigger rooms; player feedback path needs a decision before EnclosureDetector lands. - Wrote `docs/implementation.md` — 21-phase build plan with checkboxes, acceptance demos, scope-cut levers, and de-risking spikes. Status row at the top of that file is the canonical "where are we now" pointer; current value is **Phase 0 — Project scaffold & foundations** (gated by the 75-min pre-implementation audit). Wired into the index table above. ## External references - **Forgejo repo:** https://git.rdx4.com/megaproxy/rimlike (private) - **Owned art bundle (primary):** ElvGames "Ultimate Farming RPG" Humble bundle, local at `/mnt/d/godot/assets/humble set new/`. License: ElvGames terms (). Commercial OK with credit; no NFT/crypto/resale. - **Owned art bundle (secondary):** Ventilatore Fantasy Tileset Complete Bundle — - **Mana Seed catalog (fallback if bundle gaps surface):** - **Iconic Homestead (autotile-ready wall fallback, $19.99):** - **Lodestars:** Rimworld (Tynan Sylvester / Ludeon Studios), Going Medieval (Foxy Voxel), Stardew Valley (ConcernedApe). - **Original brainstorm history:** archived to `~/claude/archive/ideas/rimlike/` after promotion. The session log there captures every decision's rationale. - **Brainstorming-mode preference:** see `~/.claude/projects/-home-megaproxy-claude-ideas/memory/brainstorm-ask-dont-decide.md` (not directly applicable to projects but captures interaction style).