Published by KnownBetter Studios → This page is the engineering case study.
Marjorie's Manor
In developmentA 2.5D Godot management game where tenant relationships, departures, rent, decoration, and observations shape a Victorian rooming house.
At a glance
- Outcome: Manages an inherited manor, its debts and tenants. KnownBetter Studios hosts product and Sarah’s art direction.
- Status: Replaced the 3D prototype with 2.5D isometric Godot by September 3, 2026. Includes schedules, talk/gifts, tutorial and three save slots. Co-creator Sarah replaces blockouts with hand-drawn art; a 2027 Kickstarter follows the playable vertical slice.
- Role: Designed systems, data model, save format and verifier discipline; reviewed AI-assisted implementation.
- Stack & libraries: Uses Godot 4.6/GDScript, Dialogic 2.0 alpha, TileMapLayer floors/Y-sorted Node2D props/AStarGrid2D pathing in physics-free 2:1 dimetric. Eleven autoload managers read content.
- Source: Private.
- Validation: One shell script runs 6,173 checks/35 headless verifiers after clean boot. All passed the September 11, 2026 commit; verifiers are 11,385/25,971 GDScript lines. A six-month balance simulation drives real managers for four archetypes; verdicts set economy constants.
- Limitations: Lacks art/title screen/builds; surfaces remain gray prisms. Fresh-save in-engine playthrough remains unchecked. As of September 11, uncommitted local co-op adds a second actor/workstation jobs/save v6; rent/bills/observation thresholds/Iris’s birthday remain GDScript constants.
Economy and tenants
Charges $300 monthly per live tenant against $600 flat bills; rent accrues in mailbox. One daily odd job pays $25–$50. Relationships advance quest beats; 3/22 cause departures without a move-out system.
Gives furniture weighted style tags; rooms score style points/share. Exiting build mode moves the first eligible unhoused tenant into a vacancy. tenant_data.json requires Jasper half-room/six vintage points, Zoe half-room/six minimalist points and Iris three any-style points. Prototype thresholds were constants; new tastes are rows.
Observation system
Tracks 21 room-and-tenant subjects, each with 3–5 facets gated by hour/place/finished objective/another subject’s tier. Standing earns one point/chunk; watch spots or tenant-menu Pay Attention spend it marking facets. Points/facets raise Noticed, Familiar and Understood. Loading retains the permanent floor but resets the session tier one lower.
observation_tier triggers 4/22 beats. Tiers stage 21 journal entries with 68 manager-derived draw-time lines, never copied. They drive if branches in 13/37 Dialogic timelines for tiers or waiting observations. is_facet_in_window governs both rates.
Verification
Uses SceneTree scripts to boot real autoloads, drive real hooks and print N checks, M failures. The runner parses it because two verifiers running real Dialogic timelines crash on add-on teardown afterward. Verifiers accompanied roadmap steps across four phases.
Runs g4_acceptance_verify from a new game through the unforced featured arc using the week’s thrift rotation, tree-selected gift, attic-box items and 16 days standing in a hallway. It requires 19 game days, connects debug_command_executed, records zero events and scans its source for 10 named shortcuts. g4_prose_verify runs every timeline twice: nothing noticed, then all subjects Familiar, covering branches/speakers. Save checks migrate v1–v4 stepwise to v5, checking seeded/preserved fields.
Content model
Nine JSON files store rooms/palettes/tenants/quests/objectives/attic-items/forage/journal/observations/furniture. They define 21 rooms, 55 props, doors and 11 type values from mailbox to story_door, including one-way endgame doors and walk-in triggers. Adding a room needs one registry entry plus bare scene. A fourth tenant arc uses four existing triggers; a fifth trigger type needs code.
Retained prototype managers plus tenant/beat/furniture schemas. Replaced scenes, camera and asset packs; git filter-repo purged them from history.