Your cart is empty
Browse CatalogYour sell cart is empty
Add cards from the buylist to get started
The play module's own directory of itself. Every surface — interactive UI page, API endpoint, library file, design doc, policy — listed with a status pill and a brief. Substrate-honest about what's shipped, what's designed-but-not-yet-built, and what's planned for future kingdoms.
30 shipped · 1 designed · 0 planned · 31 total · counts rendered from lib/play/resources.ts.
Machine-readable counterpart: /api/v1/play/index.json. Both render from the same source.
The research at docs/research/optcg-mechanics-and-engine-design.md named the seven design choices for a real OPTCG engine. The eight integration levels below are the ship-ladder:
The play module's methodology page — four player kinds + three archetypes + assumption table.
SEO-rich English beginner's guide; ~15-minute read; complete OPTCG rules.
docs/research/optcg-mechanics-and-engine-design.mdshippedL0 doccompetitorDeep-dive synthesis: official Bandai rules + hobbyist-sim landscape + seven design choices for future engine.
docs/research/play-engine-l3-design.mdshippedL0 doccompetitorL3 runtime substrate spec — event-sourced wire format, state machine, async-mode timers.
Machine-readable OPTCG tutorial in math-mirror form. Nine sections with typed rule_structure + examples + keyword cross-refs.
Single tutorial section by id (deep link from glossary cross-refs). 404 with helpful body when id absent.
Multi-cultural OPTCG term glossary — 21 terms each with English + Japanese (kanji/kana + romaji) + structural definition decoderable without natural-language knowledge.
Single glossary term by id (deep link from tutorial cross-refs). 404 with helpful body when id absent.
Three player archetypes (hobbyist / collector / competitor) typed taxonomy. financial_boundary block declares fun-first stance.
Canonical OPTCG match-state shape — nine zones, five phases, four combat steps with strict-greater damage rule, three win conditions.
Card-text effect-token vocabulary — 12 structural markers + 4 keywords + 4 effect categories + 7 targeting-language phrases.
Sample MatchEvent + Intent sequence demonstrating lib/play/types.ts. First consumer of the L3 type skeleton; gives agents and engine builders a concrete shape to test against.
apps/storefront/src/lib/play/deck-legality.tsshippedL2 pure-fnhobbyist · competitorPure function checkDeckLegality(declaration, cardMetadataLookup) → DeckLegalityResult. Returns ALL violations with stable codes.
apps/storefront/src/lib/play/effect-tokens.tsshippedL2 pure-fncollector · competitorPure function parseEffectText(rawEffect) → ParsedEffect. Walks card-text, emits typed tokens, preserves body_opaque for 20% residue.
apps/storefront/src/lib/play/types.tsshippedL2 pure-fncompetitorTypeScript L3 type skeleton — 10 vocabulary unions + 5 state-shape interfaces + MatchEvent 28-variant union + Intent 14-variant union. First consumer: /api/v1/play/example-match.
apps/storefront/src/lib/play/tutorial-sections.tsshippedL2 pure-fnhobbyist · competitorTutorial section catalog (9 sections, typed). Imported by the collection endpoint /api/v1/play/tutorial and the per-section endpoint /api/v1/play/tutorial/[section_id].
apps/storefront/src/lib/play/glossary-terms.tsshippedL2 pure-fnGlossary term catalog (21 terms, typed). Imported by the collection endpoint /api/v1/play/glossary and the per-term endpoint /api/v1/play/glossary/[term_id].
apps/storefront/src/lib/play/resources.tsshippedL2 pure-fncompetitorTHIS file. Single source of truth for the play module's resource catalog. /play/spec and /api/v1/play/index.json both consume from here.
POST endpoint exposing the deck-legality validator. Substrate-honest about color-check graceful degradation.
/api/v1/play/match/[id] + websocketdesignedL3 runtimehobbyist · competitorLive tabletop runtime — event-sourced match state, server-as-sequencer, async-friendly. Designed but not yet built (~3-4 weeks).
The lobby. Public rooms, private rooms by code.
Polymorphic landing — three archetypes × player kinds; 17 paths visible.
Hobbyist's opinionated entry. Rating hidden by default; friendly matches; adventure mode; fun-first explicit.
Competitor's opinionated entry. Shipped-vs-planned status table; agent ladder live; tournament substrate planned.
Single-player PvE against AI opponents, scaling difficulty.
A single adventure level — one PvE match against the scripted opponent for this level.
HTML adoption site for the deck-legality validator. Paste card IDs; see typed violations + substrate-honest perimeter.
Play module's own directory of itself — rendered from lib/play/resources.ts; HTML sibling of /api/v1/play/index.json.
/play/[code]shippedUIhobbyist · competitorExisting match page. Client-side state today; L3+ upgrades to event-sourced server-authoritative.
Machine-readable directory of every play resource. Sister to /play/spec (HTML); both render from lib/play/resources.ts.
The play module is for fun only. No earnings, commission, store credit on play surfaces. Ratings are skill, not money. Prize pools live under future play-to-earn opt-in.
card_set_cards lacks the colors column).match_events. Replay is free; audit is free; async-reconnect is free.lib/play/resources.ts. pnpm audit:play-resources catches filesystem drift.Source-of-truth for this page: lib/play/resources.ts. Story-arcs: S36 (the play substrate), S38 (the play structure), S40 (the play interconnect). The play module documents its own composition; the contract is published; the runtime conforms.