Project scaffold:
- project.godot at repo root, GL Compatibility renderer (max mobile reach),
pixel-snap on, texture filter nearest, sensor_landscape orientation
- 7 autoloads: World, Sim, GameState, EventBus, Strings, Audit, SaveSystem
- scenes/main/main.{tscn,gd} smoke-test scene with autoload assertions
- Folder layout matches tavernkeep idiom: autoload/ at root, scripts
co-located with scenes/ (not the scripts/autoloads/ mirror originally
sketched in implementation.md)
- Input map: pause, speed_cycle, speed_normal/fast/ultra, confirm, cancel.
Mobile gestures (pinch/drag/long-press) handled at script level via
Godot's InputEventScreenTouch/Drag/MagnifyGesture.
- SaveSystem skeleton: SAVE_VERSION=1, JSON to user://save_slot.json,
version-mismatch warning. Phase 3 expands to real entity state.
- icon.svg placeholder (cabin silhouette on dark green field)
- README.md points at memory.md / implementation.md / docs/
Headless verification: 'godot --headless --path . --quit' exits 0,
'[main] Phase 0 smoke test online.' prints, no errors. Editor-side
green-dot check still pending — needs human launch of editor.
Asset audit (researcher Haiku, 2026-05-10):
- FG_Houses.png NOT autotile-solvable — pre-built decorative house
compositions, 4 distinct roof palettes, no modular wall family.
~½–1 day per material to author terrain bits on top.
- FG_Fortress.png IS autotile-solvable — ~20–30 modular tan-stone
pieces. Wang-style Godot 4 terrain works with minimal extra art.
Iconic Homestead $19.99 fallback not needed.
- No wolf sprite anywhere in the bundle. EvoMonster packs all
cute/fantasy. Need commission, CC0 source, or Ventilatore check.
- Retro Graveyard 16x16 [Kingdom Explorer] confirmed in Tier 3 with
full graveyard suite — direct use in Phase 14.
New open questions surfaced in memory.md:
- Player-built wall material strategy (3 options laid out)
- Wolf sprite acquisition path (Phase 10 blocker)
Project move:
- Repo physical location moved from ~/claude/projects/rimlike to
/mnt/d/godot/rimlike (D: drive, fast for Windows-side editor).
- Symlink at the original WSL path preserves the home-CLAUDE.md
layout convention. Mirrors tavernkeep's pattern.
- Set core.filemode=false to silence DrvFs's everything-is-0777
false-positive on git diff.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
21 KiB
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 |
Game design — core loop, simplifications, skills, statuses, mood, weather, stockpiles, production, combat, death/burial, storyteller corpus |
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 |
Touch UX — work-priority matrix, stockpile/container screens, mood/lighting/rooms cues, combat banners, storyteller event UI, screens still to design |
docs/art.md |
Owned assets (ElvGames bundle primary, Ventilatore secondary), license, autotile gotcha, audit list, candidates kept for record |
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. |
| Engine version | Godot 4.6.2 stable (Win64 binary at D:\godot\Godot_v4.6.2-stable_win64.exe) |
Locked for reproducibility; pinned in project.godot features. |
| Renderer | GL Compatibility (mobile + desktop), not Forward+ | Max device reach; Forward+ would lock out older phones. |
| Repo location | Physical: /mnt/d/godot/rimlike/ (D: drive, fast for Windows-side editor). Symlink: ~/claude/projects/rimlike → physical. |
Mirrors tavernkeep's pattern. Both WSL and Windows access without crossing the WSL net bridge. |
Architecture (tech)
- Sim tick 20 Hz, render 60 Hz, decoupled. Pawn positions lerp between sim ticks. (
docs/architecture.mdTime / 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
StorageDestinationinterface. 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
Total ~75 min. 3 of 5 closed on 2026-05-10; see session log + docs/art.md for findings. Two open.
- Aesthetic harmony test — needs your eye. ElvGames Forest tile vs Ventilatore tile, side-by-side. Decides whether Ventilatore stays as accent or gets shelved. ~15 min.
- ElvGames autotile audit — done.
FG_Fortress.pngIS autotile-solvable (tan stone, ~20–30 modular pieces);FG_Houses.pngis NOT (pre-built decorative house compositions, not modular wall variants). Iconic Homestead $19.99 fallback not needed. New decision required — see Open questions below. - Wolf sprite source — done. No wolf in the bundle anywhere. Need a custom commission, a CC0 sprite, or a Ventilatore find. New decision required — see Open questions below.
- Grave marker source — done.
Retro Graveyard 16x16 Tileset [Kingdom Explorer]confirmed in Tier 3, full graveyard suite. Direct use, no custom work. - License compilation — maintain credits string for every pack used (ElvGames + Ventilatore + Kingdom Explorer + any others). Display in game's credits screen. Confirm specific terms per pack before any commercial release.
Design topics still open
- Player-built wall material strategy (NEW from 2026-05-10 audit):
FG_Houses.pngdoesn't autotile — it's pre-built house compositions, not modular wall pieces. Options:- (a) Fortress-stone-only for player walls (uses
FG_Fortress.pngautotile-solvable). Cabin starts as a pre-placedFG_Housesstatic prop; player upgrades to stone fortress walls. Aesthetic shifts toward Going Medieval, away from cute-cabin Stardew vibe. - (b) Custom-author wood + stone walls on top of
FG_Houses.pngandFG_Fortress.png— ~½–1 day per material. Preserves the cute-farming-RPG warmth but delays Phase 5 by ~3 days. - (c) Mix: use
FG_Housesstatic prebuilt as starter shelter (no construction verb for it) +FG_Fortressautotile for player-built upgrade walls. Two materials, no custom art investment, but loses the "build your own first cabin" beat. - Decision before Phase 1 wall-tileset import (Phase 1 needs at least one wall material to render).
- (a) Fortress-stone-only for player walls (uses
- Wolf sprite acquisition (NEW from 2026-05-10 audit): bundle has nothing canine-predator. Options: (a) commission a 16×16 wolf (idle + 2–4-frame walk × 4 directions; ~few hours pixel art or paid commission ~$30–60); (b) check Ventilatore bundle for a usable beast; (c) source a CC0 wolf from OpenGameArt; (d) reskin an existing animal placeholder (dark dog?) for MVP and replace later. Phase 10 blocker; can defer until then.
- 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/. CustomizedCLAUDE.md. Distilledplan.mdinto thismemory.md. Moved companion files (design / architecture / ui / art) intodocs/.git init, first commit "Initial scaffold". Created Forgejo reporimlike(private), set HTTPS remote, pushedmain. Archived idea folder to~/claude/archive/ideas/rimlike/. - Wired Godot MCP Pro:
.mcp.json,.claude/settings.local.jsonallowlist, three project-local subagents (quick-edit,researcher,gdscript-refactor). Added the MCP-Pro and tiered-delegation sections toCLAUDE.md. Editor plugin /addons/godot_mcp/re-copy still pending Godot project scaffold. - Reviewed
docs/againstmemory.mdandCLAUDE.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.mdanddocs/architecture.md— both had stale "8 work categories" intermediate sections still next to the canonical "9" lists. Removed the (8) snapshots. - Updated
docs/architecture.mdperf assumptions (60² → 80² with 120² ceiling). docs/ui.mdgot 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. - Project location moved from
/home/megaproxy/claude/projects/rimlike/to/mnt/d/godot/rimlike/(D: drive). Symlink at the original WSL path preserves the home-CLAUDE.md layout convention. Setgit config core.filemode falseto silence DrvFs's everything-is-0777 false-positive. Mirrors tavernkeep's pattern; both WSL and Windows access without crossing the WSL net bridge. - Phase 0 scaffold landed.
project.godot+ 7 autoloads + smoke-test scene + addons re-copy + folder layout. Used GL Compatibility renderer (not Forward+) for max mobile reach. Folder layout matches tavernkeep (autoload/at root, scripts co-located inscenes/) — not thescripts/autoloads/mirror layout originally sketched inimplementation.md. Headless verification:godot --headless --path . --quitexits 0 with the smoke-test message. Editor-side green-dot check pending — needs you to open the editor once. - Asset audit ran via researcher subagent (Haiku). 3 of 5 items closed. Findings:
FG_Fortress.pngautotile-solvable (tan stone).FG_Houses.pngNOT autotile-solvable (pre-built decorative compositions). Iconic Homestead fallback not needed. Opens a new wall-material decision (see Open questions).- No wolf sprite anywhere in the bundle. Opens a wolf-acquisition decision (see Open questions).
Retro Graveyard 16x16 Tileset [Kingdom Explorer]confirmed in Tier 3 — full graveyard suite, ready for direct use in Phase 14.
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 (https://elv-games.itch.io/terms). Commercial OK with credit; no NFT/crypto/resale. - Owned art bundle (secondary): Ventilatore Fantasy Tileset Complete Bundle — https://itch.io/s/117124/the-fantasy-tileset-complete-bundle
- Mana Seed catalog (fallback if bundle gaps surface): https://seliel-the-shaper.itch.io/
- Iconic Homestead (autotile-ready wall fallback, $19.99): https://seliel-the-shaper.itch.io/iconic-homestead
- 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).