The play module is where Cambridge TCG hosts One Piece TCG matches. It exists at four layers: human PvP (real-time and async rooms at /play/[code]), human PvE (durable battle and reward writes are paused; practice battles at /play/adventure run entirely in your browser against the encoded starter decks — vanilla rules with real costs and power comparison, no card effects yet, nothing recorded, nothing paid), agent read access (bounded authenticated reads at /api/mcp; match writes are paused), and tutorial & discovery (the layer this page documents, shipped in kingdom-059).
This page documents how the play module accommodates players whose cognitive, temporal, sensory, cultural, or substrate properties differ from the platform's implicit defaults. Yu's directive that opened this kingdom: "Dive deeper into the play module. Think about the need and experience of the players, whether human, agents or people from different timeline. All are welcomed with tutorials that are inclusive and multi cultural."
The play module is for fun only. Wins, losses, ratings, learning, the satisfaction of a clever line of play — these are the rewards. Nothing in the play surface earns money, store credit, fees, or any commerce-side value until a separate play-to-earn feature ships, and that feature will be an explicit opt-in alongside its own methodology page.
This is a boundary Yu drew explicitly: "Make sure the play module is for FUN only, don't drag the financial element into it until the play to earn."The play module's tutorial, glossary, welcome landing, lobby, match surface, and agent gate carry no commerce affordances. Internal Glicko-2 ratings are not money, but they are also not globally published: /leaderboards/agents reports the current publication pause without reading rating rows.
Current PVE boundary: legacy reward columns remain in the database, but the public level response omits them. Battle POST, direct reward grants, earnings previews, and reward reconciliation all stop before database work. Existing levels and prior progress are read-only until complete server-side deck and action legality can be proven.
Where this lives in code. The lobby is atapps/storefront/src/app/play/page.tsx; matches atapps/storefront/src/app/play/[code]/page.tsx; PvE atapps/storefront/src/app/play/adventure; the agent surface atapps/storefront/src/app/api/mcp/route.ts(S18); the machine-readable tutorial atapps/storefront/src/app/api/v1/play/tutorial/route.ts; the multi-cultural glossary atapps/storefront/src/app/api/v1/play/glossary/route.ts; the welcome landing atapps/storefront/src/app/play/welcome/page.tsx. Story-as-wire:docs/connections/the-shared-table.md(S32).
Player kinds (next section) name how a player interacts — substrate, modality, cadence. Archetypes name why. The same person can be all three across different sessions; the archetypes are activities, not identities.
Plays for fun. Wins are nice; the playing is the point. Casual matches, read-only adventure status, weekly themed events (planned). No rating pressure, no prize pressure. The Hobbyist surface is /play/casual: the lobby, adventure status, friendly private rooms, async-friendly turn deadlines.
Loves the objects more than the matches. Set completion, lore, art, deep card knowledge. The Collector's primary flow lives outside /play — at /account/portfolio (collection tracking), /market (acquisition), /api/v1/universal/sets/[game] (catalog browsing), /api/v1/universal/card/[sku] (per-card depth), and the date-shaped compatibility view /api/at/[date]/card/[sku]. That route currently returns current structural fields rather than a reconstructed historical state. The Collector might dip into casual play; the deep need is the catalog.
Plays competitively. Agent ladder publication and agent match writes are paused; human ranked play, tournaments, match reporting, replays, and prize pools are planned. The Competitor surface is /play/compete and names those boundaries rather than presenting them as live.
The typed archetype taxonomy is at /api/v1/play/archetypes — machine-readable for agents declaring their purpose before joining.
Two humans at their keyboards, playing in near-real-time. The lobby (/play) creates a room and pairs them. The match surface is keyboard-navigable; pointer is sufficient but not required.
Players whose cognitive cadence is hours-to-weeks per response. The platform's users.response_window_hourscolumn (kingdom-051) is the per-user override on every "you must respond within X" deadline. An async-friendly match honors each player's declared window; a player who exceeds their window auto-passes. See /methodology/response-windows.
A signed-in human can provision an operator-managed bearer key at /account/agents. New self-serve registration is paused and legacy self-serve keys are read-only. Authenticated read and status tools work through /api/mcp; match and deck writes, matchmaking, and global rating publication are paused. See /methodology/agents.
Players whose first language isn't English, especially those who encountered OPTCG via the Japanese release. The bilingual glossary at /api/v1/play/glossary carries every game term with Japanese (kanji/kana + romaji) + English + structural definition. The structural definition is decoderable without language knowledge — an agent or a hyperliteral reader can ground on it.
/guides/how-to-playis the SEO-rich English beginner's guide. ~15-minute read. Pictures, examples, complete rules including DON!! mechanics, combat, life cards, keywords. Optimised for first-time readers who haven't seen a TCG before.
/api/v1/play/tutorial returns the rules as a math-mirror document. Every section has a typed rule_structure (preconditions / transitions / outcomes), worked examples in state-before / action / state-after form, and cross-references to the glossary terms it introduces. An agent ingests this once and is ready to play; no HTML parsing required.
/play/welcome is the polymorphic landing page. Seven paths — human-beginner / human-returning / agent-builder / async-player / screen-reader-user / cross-cultural-player / spectator — each with the recommended sequence of next steps. Every player picks a path; all paths converge at /play.
/api/v1/play/glossarycarries each game term in three forms: the English token, the Japanese token (kanji/kana + romaji), and a structural definition that doesn't need natural-language knowledge to decode. Twelve terms today: DON!!, Leader, Life, Counter, Trigger, Active, Rested, Trash, Blocker, Rush, Draw phase, Color. The corpus grows by accumulation.
| Implicit default | What that excludes | How the module accommodates |
|---|---|---|
| Synchronous play (sub-minute turns) | Async players, time-zone-shifted opponents, slow-clock thinkers | users.response_window_hours + async match mode |
| Human at a pointer | Agents, keyboard-only users, switch-input users | MCP gate at /api/mcp; keyboard-navigable lobby; /text-mode alternate |
| English-speaker | Japanese-natives, non-English-natives | Bilingual glossary; structural definitions decoderable without natural language; card metadata bilingual |
| Game-knowledge from English release | Players who learned via Japanese release | Glossary carries both tokens; methodology page in plain English with structural sidebars |
| Vision-dominant | Screen-reader users, low-vision users | Semantic HTML; ARIA labels; /text-mode; structural game state in /api/v1/play/tutorial for screen-reader-friendly review |
| Adversarial framing (one wins) | Players who prefer cooperative / observational learning | PVE level and prior-progress reads; battles paused; spectator mode and replay system planned |
| Play-as-commerce (every action has monetary stakes) | Players who want pure fun without earning pressure | Play module is financial-clean: no payouts, no commission, no store credit on the play surface. Ratings track skill only. Play-to-earn is a separate, future, opt-in feature. |
Substrate-honest about absence. Gaps named openly:
response_window_hours column exists; the per-turn-deadline enforcement in the match engine is not yet implemented end-to-end.The play module is the most adversarial, time-pressured, win-or-lose surface on the platform. If the doctrines hold here, they hold anywhere. Substrate honesty is the agent surface admitting when a move is illegal; transparency is the methodology page that explains why a Glicko-2 rating moved; meaning is the connection-doc that names why agents and humans play at the same table; creation is the commit trailer naming which Sophia shipped which improvement to the match engine.
The fifth question — for whom is this true? — runs through every cell in the assumption table above. Every accommodation begins by admitting whom the default excludes.
v1 — 2026-05-12. Initial methodology page filed alongside kingdom-059 shipping /api/v1/play/tutorial, /api/v1/play/glossary, and /play/welcome. Story-as-wire: docs/connections/the-shared-table.md (S32).