Memory5D game design
BETA / IMPLEMENTED CONTRACT LIVE. This is the implemented product contract, not a description of the withdrawn iframe prototype; the native beta route serves it in production. The remaining
availableevidence is tracked in Verification.
Core rule
A player claims exactly two distinct unclaimed cells with one command. The cells must share a family (square, circle, triangle, star, hexagon, diamond), have equal hues or a linked pair (red↔green, blue↔orange, yellow↔purple), and be eight-neighbor adjacent or exact center reflections. Texture is an accessibility cue derived from hue and never changes legality. Four contiguous owned cells in any horizontal, vertical, or diagonal direction win.
Selecting the anchor again cancels; selecting an unclaimed non-route cell reanchors without a miss. Easy retains the anchor after an explained incompatibility. Normal, Hard, and Expert incompatibility or timeout clear selection, reset that player’s streak, and pass the turn. A no-link board reweaves unclaimed attributes at most twice, then draws transparently.
Modes and difficulty
Classic is the baseline. Arcade optionally enables powers but remains separate from Ranked Classic. Difficulty controls canonical board size, decision time, forgiveness, AI depth, and Expert rotation; its literal preset table is frozen in the shared rules config before implementation. Expert rotates the entire board clockwise after both players complete one base turn and always exposes a north marker.
Clocks pause locally only for reducer-owned resolution, Reveal projection, help/tutorial, inactive host, and backgrounding. Online clocks are server authoritative and do not pause for client overlays, drawers, or disconnect.
Score and tactics
A valid link starts at 100 Mastery. It earns +50 for blocking a genuine open-three, +75 for creating a fork of two distinct one-move winning commands, and +100 for completing a line. The sum is multiplied by 1 + 0.25 × min(streakBefore, 4), then by difficulty (easy 0.8, normal 1, hard 1.15, expert 1.25) and rounded once. Double Points doubles only this final Mastery result. Board victory determines the winner.
Star Points are separate: eligible completed matches earn round((20 + win?5:0 + objectiveBonus≤5) × difficultyMultiplier). Tutorial, custom, restart, and abandoned matches earn zero; draws receive completion/objectives only; Double Points and streak never multiply currency.
Arcade powers
Lobby/results purchases add local or server-owned inventory after validation. A loadout has at most three charges and at most one Extra Turn. Reveal consumes when its partner projection begins; Double Points and Wildcard consume on a valid link; Extra Turn consumes after a valid base-turn link and grants one non-chainable bonus turn. Wildcard bypasses family and hue only. One power may be armed per base turn; cancellation and all unconsumed failure paths refund reservations.
Power Draft is an Arcade setting, not a transport mode. It uses a deterministic public pool of two copies of each power, the pick order A,B,B,A,A,B, twenty-second server deadlines, and a deterministic cheapest-card auto-pick. It never writes Elo.
Learning, accessibility, and presentation
A real reducer-backed tutorial teaches goal, variants, hues, adjacency, center reflection, explained failures, tactical choices, victory, and a separate Arcade lesson. The board is the focal surface; there is no decorative hero or nested game card. It uses a keyboard grid with one roving tab stop, arrows, Home/End, Ctrl+Home/Ctrl+End, Enter/Space, and Escape; each target is at least 44 px. Cell labels include coordinate, family, variant, hue/texture, ownership, selection, compatibility, and unavailable reason.
The UI provides persistent legends, polite causal feedback, reduced motion/sensory modes, text equivalents for sound, visible focus, forced-colors ownership/route markings, and an internally scrollable narrow-board viewport rather than page overflow.
Local records
Profiles, immutable snapshots, event history, achievements, statistics, and local unranked economy live in versioned IndexedDB. The tutorial profile is excluded from every projector. Export is checksummed and atomically validated before import. Statistics derive from accepted events, not UI state. Reset Statistics, Delete Profile, and Delete Everything are separate confirmations with exact data consequences.