glyphgrid.online
started as a Friday daydream: a 5×5 duel with as many positions as possible and as few pieces as
possible. That game still sits at the center. Around it is now a live arcade — seventeen ranked
titles, a farm you can walk forever, and a two-brush studio that writes the same PNG to both of you.
No app store. No download. Guest queue or an account. The host keeps the clock.
Live
17 ranked
Independent Elo ladders. Winning soccer does not raise your sniper rating.
Stack
Host clock
One Node process. WebSockets. SQLite. Engines that run in the browser and on the server.
Feel
One pad
Left hand moves. Right hand is four face buttons. Phone stick or WASD plus K/J/L/I.
Open
No paywall
Quick Match vs bots offline. Ranked writes the ladder. Exhibition is unranked online.
How the arcade is programmed
The site is a Node HTTP server plus a WebSocket layer (ws), not a React SPA and not a
Unity WebGL dump. Auth uses bcrypt. Persistence is SQLite via better-sqlite3. Guests
get a resume token so a refresh does not orphan a match. Manticore Technologies publishes it.
Every realtime title shares the same contract. An engine owns a world. An
InputFrame is stick plus four buttons. The host ticks at 60 Hz and sends
snapshots at 30 Hz (arcade-loop.js). The same engine file is a UMD module: Node
requires it for ranked matches; the browser runs it for Quick Match against a bot. That is why a
local TRIAD game feels like a ranked one — it is the same physics, just without the socket.
GLYPH is the exception that proves the rule. It is turn-based, SVG, and validated as discrete
moves. A 100 ms clock loop burns the 5-minute total. Arcade titles share canvas renderers plus
a second compositing pass (GlyphGfx: contact shadows, haze, vignette) and
PlayFeel (phone vs desktop, reduced motion, save-data, haptics).
Ranked games get their own Elo table. GLYPH uses K=32; the arcade ladders use K=20, with an upset
bonus when the lower rating wins. Bots fill empty seats from a shared difficulty profile. Tests
live next to each engine. If it cannot be ticked in Node, it does not ship.
Every game, and how it was written
Play any of these from the
arena lobby.
Ranked titles queue 1v1. Sports with extra bodies fill the rest with bots.
Ranked 1v1 · turn-based · perfect information
GLYPH — the artifact duel
This is the original. 5×5. One Core, three Shards, five rotating glyphs. Capture the Core or seal
Resonance. The fiction is still true: recovered from an artifact of non-human origin. Zero
randomness after the opening shuffle.
Programmed as a shared rules file (game-state.js) on client and
server. The server is authority for legal moves, clocks, and win checks. The board is pure SVG —
isometric skew, glyph icons generated in code, no sprite sheets. Fisher–Yates shuffles the five
glyphs once at kickoff; after that the position is public and deterministic. Full walkthrough:
the Friday post.
Street soccer in a box. First to 5, or most goals when the two-minute clock dies. Pass to a
teammate and you swap onto them. No fouls. No offside. Do not fly the bar.
Programmed as a circle-physics world at 1/60 s: run, dash, charge-shot,
catch speed, wall bounce. Faithful port of an earlier Java core (Rules, World, BotBrain,
InputFrame) into one JS engine that Node and the browser both load. Ranked TRIAD is still 1v1
humans; four bots complete the 3v3.
American football compressed to a possession machine. Kickoff return, then 1st and 10. Juke until
your legs gas. First to 28.
Programmed as a downs state machine on top of the same arcade loop. Stick
direction before the snap is the play call (pass, run, sweep). Primary remaps by phase: SNAP,
THROW, JUKE, HIT. Stamina is a ring; contact without legs is a tackle. Completing a pitch swaps
control onto that body.
Half-court. Check it up at the top of the key. One inside the arc, two beyond. First to 11, win by
2, hard cap 15.
Programmed as a two-body timing game: charge the jumper, contest with HANDS,
steal on the dribble, CLOSE on the shooter. Possession state (check / live / board) is explicit.
Quick Match is you versus one bot, same engine, no socket.
True 1v1 on a single 52-card shoe. Hands face up. Hi-lo in your head. Bust the other bankroll.
Programmed as a sequential card engine, not a 60 Hz sim. The remaining shoe
is host state. Buttons are LOCK/HIT, STAND, RAISE/DOUBLE. Chance is the deck; skill is the count.
Separate Elo so a card-counter is not mixed into soccer.
Each visit calls BULL, INNER, OUTER, or a wedge. Wind, air, pressure. First to 21.
Programmed as a ballistic throw: charge grows sway, SETTLE fights wind, LOFT hangs
in the air. A gold ghost shows impact before release. Weather rolls per visit. Sequential seats —
three darts, then the other thrower.
Rally scoring to 11. Serve and return must bounce. Volleys in the NVZ are always a fault.
Programmed as paddle–ball collision with charge, lob, and lunge. Contact height
on the paddle steers. Kitchen geometry is a hard rule, not a suggestion. Simultaneous inputs on
the host tick.
You own a hemisphere. Inbound craft leak onto your shield. Help the other sky — or farm the bounty.
That tension is the game.
Programmed as a pad-select tower defense: BUILD / CYCLE / SELL on a shared tick.
Kits (PULSE, FLAK, LANCE, DOME) have overheat budgets. FLAK and DOME can cover the partner. Not
zero-sum: waves score both of you; the duel is who holds.
Walkers moan before the door. Torch the other lane if you want. Last house standing after eight
waves.
Programmed as the same duel-manager pattern as ORBIT with a different kit: SPIKE,
NAPALM, RIFLE, FENCE. Three lanes, four pads a side. Shared napalm is the knife in the co-op.
You do not gas. You steer. Hold DRIFT for turbo or spin out. Items: boost, plasma, mine, shield,
shock. First to three laps.
Programmed as a racing-line sim with slipstream, hop, and rearward plasma. Item
boxes are the only stochastic spice. Same 60/30 host loop as the sports titles.
SET picks the kit: GHOST cloak, HEX orb, RAZOR lunge. Cloak vanishes unless someone catches the
shimmer. First to 4.
Programmed as a stealth duel: noise from sprint, cover blocking traces, class
abilities as cooldowns. Information is imperfect on purpose — the engine knows both positions; the
renderer lies until you give yourself away.
Five pitches a half, three innings. FAST / CURVE / CHANGE / SLIDER versus a swing you have to hold
through the pitch. First to 8 bombs.
Programmed as a matching-pennies duel with a timing window. Stick aims the zone or
the barrel. Late, early, and off-location are outs. The interesting loop is pitch selection, not
a full nine-inning sim.
Nine holes. Lowest strokes wins the hole. First to five holes, or the card. Water is a penalty
back to the last lie.
Programmed as a charged stroke on a 2D green: grain, sand speed kill, wall banks,
cup drain. Both balls live on the same surface. Sequential shots, still host-authoritative for
ranked.
Best of three. Throws beat block. Lows beat stand-block. Jump attacks are overheads. Super when
the meter pops. Skins are cosmetic.
Programmed as AABB hurtboxes on a ground line, with cancel routes (jab into kick
into upper), damage scaling, and chip that cannot close a round alone. Bots read spacing, anti-air,
and punish. Six skin packs, twelve looks — renderer only.
You are HAWK or OWL. Hold SCOPE to peek. Hold BREATH to kill sway. Wind still drifts the round. A
scoped rifle glints. First to 4.
Programmed as a first-person aim model: hip FOV versus scoped FOV, yaw/pitch
rates, bolt cycle, cover fraction, head/body traces. Unscoped stick strafes; scoped stick looks.
Glint is an information leak on purpose.
Dual composer duel. WRITE a bar on piano and drums, then HIT the shared highway. Face buttons are
C, E, G, high C. Stick is kick, snare, hat, crash. Perfect multiplies. Highest score after four bars
wins.
Programmed as a host-authoritative rhythm sim: quantized write clock, seeded groove,
hit windows, combo multiplier. The same engine ticks in the browser against a bot and on the server
for ranked. Audio is client-only Web Audio. Elo is its own ladder.
Infinite meadow. Punch trees, pick berries, till, water, sow. Eat or you wake at the hearth. No
combat. No ladder.
Programmed as a single-agent survival engine that saves locally. Hunger is a
drain, water adjacency keeps soil wet, rain soaks the field. It is the one title that does not
need a second seat.
Paint freestyle with a partner, or solo. When either of you hits EXPORT, both of you get the same
1600×1000 PNG.
Programmed as a quantized stroke store (max 600 strokes, 48 points per packet) so
the host can replay the sheet identically on both seats. Eraser paints paper back. Undo is
per-author. Not ranked — a studio, not a ladder.