Imaginatio · Games · glyphgrid.online

The board that would not stay a board.

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.

Play GLYPH ↗

3v3 arcade soccer · bots fill seats

TRIAD — chip over the tackle

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.

Play TRIAD ↗

O vs D shootout · routes and returns

KICKOFF — cover the route

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.

Play KICKOFF ↗

1v1 basketball · king of the court

CROWN — make it, take it

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.

Play CROWN ↗

Open-hand blackjack · count the shoe

EDGE — raise when tens are left

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.

Play EDGE ↗

1v1 darts · called targets

QUILL — hold the follow

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.

Play QUILL ↗

1v1 pickleball · kitchen law

RALLY — serve past the kitchen

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.

Play RALLY ↗

Co-op duel · planet defense

ORBIT — last core standing

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.

Play ORBIT ↗

Co-op duel · three lanes

GRAVE — hold the street

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.

Play GRAVE ↗

1v1 space racers · auto-accel

NOVA — drift the sweet spot

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.

Play NOVA ↗

1v1 assassin · incomplete information

SHADE — stay quiet or they hear you

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.

Play SHADE ↗

1v1 pit · slap, do not catch

GAGA — bank the octagon

Armed ball hits you, they score. Charge the slap, dump it with a feint, dash the rebound. First to 7, win by 2.

Programmed as billiard geometry in a regular octagon: english on the slap, wall normals, no catch. Charge is analog; release is the shot.

Play GAGA ↗

Pitcher vs batter · mixed strategy

BANGERS — work the zone

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.

Play BANGERS ↗

1v1 mini golf · match play

PUTT — read the grain

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.

Play PUTT ↗

1v1 fighter · yomi

CLASH — punch, kick, jump, squat

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.

Play CLASH ↗

1v1 sniper · opposite ridges

SCOPE — glass the far lip

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.

Play SCOPE ↗

1v1 rock hero · write and hit

RIFF — write the bar, take the stage

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.

Play RIFF ↗

Sandbox · unranked · this device

CROFT — walk until you faint

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.

Play CROFT ↗

Shared canvas · export PNG

INK — two brushes, one paper

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.

Play INK ↗