← all epics

Tag — one game of chasey across the whole world

client

repo: land-of-lor (game/ — director, world, client; tools/hub-ui; builder/; site/) · depends on: mini-gamesworld-map-and-portalsconnection-and-sync

Where this stands (2026-09-13)

Signed off by Kris on 2026-09-11 (“that is excellent”) — the line in the sand at APK v30. The six pieces from his voice prompt were built in order that day: the opt-in, the director’s game, the Area’s sensor, the glove and the heart, Areas without tag, the verifier and the deploy (docs/handoff/tag.md). Ideas held, not started: a tag-only Area, sounds for the tag and the pick, a wider “who is online” list on the account page. No open issues. Past task files (to 2026-09-13): workshop/historic-docs/epics/tag/tasks/.

What this is

Kris, by voice, 2026-09-11 — one prompt, planned in full before a line was written (the plan is the six tasks here). His words, lightly ordered:

My kids Willow and Rah have been playing it lots already, and what we love to play in it already is tag — we just manually run up to each other and go “you’re it”. The girls love that so much that I want to make it completely core. And architecturally it should be very decoupled from everything else.

It’s opt-in, on the accounts page — when they create their account, a final question: do you want to play tag with everyone? And if you’re logged in and go to the account page, we now have our first account setting: a toggle that makes that really clear, and under it how many people are playing tag now.

The icon is a hand — really a big white mitten. Make a 3D object of it, shown as a still. Everyone playing tag has a green one above their head, about half the size of their head. The person who is it has a larger white one. Under the health bar the white glove, and next to it “you are it”, or the name of who is. Tap the glove and it says how many are playing.

If you’re it and you’re in a cell adjacent to another player, that player becomes it. And you can’t get the butcher back for twenty seconds. If someone goes offline, “such and such is offline”, then “choosing a new player to be it”, then randomly pick one — they get a message, “you’ve been selected to be it in tag”. One game for all players across the whole world, across portals — with a flag on Areas that says whether the tag game continues there. And keep a log somewhere of who tagged whom, when.

Also, unrelated: the health bar has a little diamond on it — change that to a heart.

Vocabulary

The rules, as built

The two ways of being gone

Tag’s offline rule hooks into what the game already does when a player’s connection goes, so here is that, in one place (Kris asked for it, 2026-09-11). “Online” means a game socket is bound to your body in some Area.

What When What everyone sees
The client notices a stall 6 s without a frame “Reconnecting…”, and it re-joins for up to 15 s
Away the socket is gone — at once on a clean close, after 90 s of silence for a phone that simply vanished the body stands where it was, no longer blocking a cell; it starts to fade at 60 s and is gone from the wire at 80 s; it is back the instant its player is
Gone from the Area nobody bound: at once on a deliberate leave, after a 60 s grace on a drop the Area shuts down; the body lives in the saved state; where you reopen is the last Area within ten minutes (or always, where “comes back where they were” is on), else home
The director’s own socket pinged every 30 s, cut after a missed one nothing — the game socket is what a player feels

Tag’s offline rule: the it player is gone when no Area has reported them bound for 60 s (TAG_OFFLINE_MS, env-overridable) — the same moment their body starts to fade, so what the kids see agrees with the game. Worst case for a vanished phone: 90 s of silence plus 60 s. Until the Area notices the silence, that body still counts, can still be tagged, and can still tag. The count of “people playing now” reads presence with a 15 s grace, so a walk through a door never moves it.

Decisions taken without asking (assumptions)

Non-goals (for now)

Teams, scores, a leaderboard, tag across several servers, a tag-only Area, sounds.

Where it lives

game/director/src/tag.ts (the game), game/world/tag_rules.gd + area_server.gd (the sensor and the mirror), game/world/client/ (humanoid_node.gd the gloves, ui/hud.gd the strip and the heart, client_main.gd the countdown and the door, ui/account_flow.gd the question and the setting), tools/hub-ui/editor.js (the Area flag). The handoff is docs/handoff/tag.md; the game’s own notes are in game/README.md, “Tag”.

Deliverables (1)

Work on this epic

The granular work is GitHub Issues, one label per epic: epic:tag (private repository — sign-in required). The dated Where this stands section above names the open ones. The task files that carried this epic until 2026-09-13 are kept in the repo: task files to 2026-09-13 .

Ask an agent about this epic

    Also available as raw markdown.