Building the Game — one site, the Builder, and the building blocks
repo: land-of-lor (site/, builder/, game/director for content schemas, tools/) — one repo since 2026-09-03 · depends on: world-map-and-portalsground-typeselement-tableserver-architecture · updated 2026-09-03
What this is
Kris, 2026-09-03, by voice and then in conversation: one central, live view of the game’s building blocks — the element table, the same 64 as ground types, the creatures, the world map, and each Area with its properties — with the existing editors linked together and zero duplication of data so nothing can drift. Then the ask grew into its real shape:
- The site is the view. Public and view-only for everyone; editable by Kris when signed in with his game account; later editable in specific parts (their own Areas) by other players, using the game’s own accounts to decide who may edit what.
- From every section, hand an agent a task via the AI Task Runner, with that section’s context (which files, which epic, the current values) already in the prompt. “This is the real launching pad for building the game.”
- One repo, one site. The workspace repo merged into
land-of-lor(workshop/andsite/); the site moved off the task-runner host onto the game droplet at spellgrove.com; the old host redirects. - The Builder is separate from the game. The admin/authoring API is its own service
(
builder/), its own process, port, path (/builder/) and database. The game’s director learns nothing about it; duplicating a little code between them is the price of the game standing alone one day, and it is worth paying. - The database is canonical for authored content; the
.json/.jsfiles in the repo are snapshots that every publish always writes. A staging game stack exists, the app gets a hidden dev option to point at it, and every publish shows two tick boxes — Staging and Live — both on by default, remembered per editor afterwards, and says plainly what goes where. - Nothing here may preclude later finessing of creature properties, ground types or Area properties through the same view: the content endpoints return whole objects, the editors bind by field name.
The architecture in short:
spellgrove.com (Caddy on the droplet, auto-TLS)
/ the static site, built on the droplet from site/ by lor-site-build.timer
/director/ the game (unchanged; lor-server.cocreations.com.au keeps working alongside)
/builder/ the Builder — admin API, own process, own database lor_builder
staging.spellgrove.com/director/ the staging game stack
The blocks and where each one lives
| Block | Source of truth today | Editor | Public view |
|---|---|---|---|
| Elements (64) | game/shell/elements.js (derived JSONs via game/sync-elements.sh) | game/shell/card-editor.html | coming (/building/elements) |
| Ground | the ground / groundVariant blocks in elements.js; rules in game/shell/ground_rules.mjs | the area editor’s palette | coming (same page) |
| Creatures | no data file — game/world/entity_factory.gd (kinds), pocs/object-gallery/scenes/creatures/ (models) | none | coming (/building/creatures) |
| World | game/content/spellgrove.world.json → the DB via npm run load-world | tools/hub-ui/ (local) | /world, live from the director |
| Areas | the area objects in the world file + game/content/areas/<slug>.ground.json | tools/hub-ui/area.html (local) | coming |
The local hub (tools/hub-ui/, npm run editor in game/director) already shows all
five from their canonical files on one page; it is the offline mirror of what the Builder
will serve.
The one exception to “the Builder serves everything”
The public world map stays the director’s /director/world-map.json. Fogging private Areas,
dropping hidden portals and adding only the caller’s own home are game rules the in-game map
already depends on; the Builder must not re-implement them. The Builder’s world.json is the
authoring view — the full graph for a signed-in admin.
Agent kickoff is browser-side
Kris’s call (the Moment pipeline pattern): the signed-in admin pastes their task-runner API key
once into the site (localStorage, never sent to the Builder) and the “Ask an agent” panel speaks
MCP straight to kris.ai-task-runner.com. The Builder only serves the section’s prompt frame.
No remote-code-execution credential lives on the droplet; non-admin users never see the panel.
Sequence
001 migration + domain → 002 the Builder’s read side and the hub pages → 003 sign-in → 004 publish with staging → 005 ask an agent → 006 other people’s areas. 007 is Kris’s own half-finished ask (Dirt and natural occurrence), waiting on the rest of his sentence.
Supersedes
workspace-dashboard/003 (authenticated control surface) and /004 (task kickoff) — their
intent lands here as 003 and 005. server-architecture/018 (the spellgrove.com domain) —
the domain is live as of 001; moving the game client’s base URL onto it is still that task.
Status
5 review1 needs-input1 backlog
Next: 001–005 built, live and in review. Kris: sign in on spellgrove.com with your game account (Papa), open Building the Game, try an edit on Staging, and paste your task-runner key into an Ask-an-agent panel for a first small task. 006 (other people's areas) is backlog; 007 waits on the rest of the Dirt sentence.
Tasks (7)
review (5)
-
building-the-game/002— The Builder's read side, and the hub pages that show every block live (priority 1, estimate L , blocked bybuilding-the-game/001) · review artifact:builder/README.md -
building-the-game/001— One repo, one site: the workspace merged into land-of-lor, the site on spellgrove.com (priority 1, estimate L ) · review artifact:workshop/epics/building-the-game/tasks/001-migration-and-domain.md -
building-the-game/003— Sign in on the site with a game account; Kris is admin (priority 2, estimate M , blocked bybuilding-the-game/002) · review artifact:builder/README.md -
building-the-game/004— Publish: the editors on the site, the database canonical, snapshots always written, a staging stack (priority 2, estimate L , blocked bybuilding-the-game/003) · review artifact:builder/README.md -
building-the-game/005— Ask an agent from any section — browser-side kickoff via the AI Task Runner (priority 3, estimate M , blocked bybuilding-the-game/003) · review artifact:site/src/components/AskAgent.astro
needs-input (1)
-
building-the-game/007— Dirt, and the things that naturally occur in an Area (priority 3, estimate S )
backlog (1)
-
building-the-game/006— Other people editing their own Areas (priority 3, estimate M , blocked bybuilding-the-game/004)
Ask an agent about this epic
Paste your AI Task Runner API key once. It stays in this browser and is sent only to kris.ai-task-runner.com.
Also available as raw markdown.