Twelve games with working code — from a 2013 Rails site to a 2026 card game with a live LLM opponent. Filter by what interests you.
🥷
Ninja Tanks
2013 · Rails + jQuery · shipped at deevgames.com
Shipped
Theme: dueling tanks in the dark — every move might be a lie
A two-player simultaneous-action artillery duel on a 3-zone track. Cards play as Move, Feint, or Fire; after any maneuver your opponent sees translucent ghost tanks for both possible positions. Even overheating damage can be faked. Wrapped in a full community site with matchmaking, guest accounts, and a chat thread that doubles as the game's narrated action log.
move/feint decoysfake damage tokensposition-gated shotssimultaneous resolutionserver-side dry-run validation
Why it's interestingDeception is threaded through every subsystem, not bolted on — the earliest and purest statement of the portfolio's hidden-information obsession.
🃏
FORGE
React/TS · playable hot-seat · 82 cards, 7 factions, 2 full art sets
Playable
Theme: dark cosmic horror with alchemical symbolism — or, one toggle away, a kids' cartoon
Two players bid astrological symbols from a closed, non-renewable budget on cards in an unbounded grid that expands wherever cards are bought. Every purchase can be contested: counter-bid at cost+1, final-bid at cost+2 — and if you're outbid, you keep your turn. Burn cards for free to leave permanent adjacency-blocking ruins. Nearly all victory points are conditional and scored only at game end.
counter-bid auctionexpanding market gridburn-to-ruins denialclosed 16-symbol economyend-game conditional VPfull reskin architecture
Why it's interestingThe retained-turn auction makes efficient cards tax themselves — a validated balance triangle (efficiency ↔ contesting ↔ synergy) emerges from one rule. And the horror↔cartoon skin swap reskins the entire game without touching mechanics.
⚔️
Muju Hono Tanka
React/TS · full rules + AI + balance lab · vs-AI, pass-play, AI-vs-AI
Playable
Theme: six elemental cultures — Japanese fire, Swahili lightning, Norse water, Turkish shadow, Andean plants, Lakota metal
Go × Chess × StarCraft on a 10×10 grid. Each turn: place units, spend six action steps moving/fighting/mining, then secretly queue new units. Your spawn zone stretches from your corner to any unit you anchor it on — but a single enemy inside blocks it entirely. Cells hold five resource layers; a unit's mining stat is its rope length. Its AI plays hidden information honestly: belief particles over your secret queue, re-determinized Monte Carlo search, and a public "AI recap" of its reasoning.
place → act → queue turnsspawn-denial territorywell/rope miningdamage as defense erosionhidden queue, public incomeISMCTS belief AIheadless balance lab
Why it's interestingThe deepest systems game here, and the most scientifically studied: its balance lab (probe bots, confidence intervals, judgment log) proved the element graph is load-bearing and found two real engine bugs the tests had missed.
🗡️
Oracle of Delve
React/TS · V0 combat prototype + spec through V3
Prototype
Theme: fast portrait-mode dungeon dives — die or win in ten rooms
A mobile-first roguelike designed for 5–10 minute runs: elemental combat, draft one gem of three between rooms, choose hard paths for better rarity, boss at room ten. Enemies show when they'll act on a visible timeline but never what they'll do — behaviors are learned by observation. Only the V0 combat core is built, but its real legacy is a rigorous layout-invariance testing methodology (pixel-level geometry assertions, reserved space for conditional content) now used portfolio-wide.
visible timeline, hidden intentpath-gated raritystat-mods-first gem ladderpure-function combat enginelayout-invariance tests
Why it's interestingA case study in shipping the smallest version that answers a real question — and in a prototype whose testing discipline outlived its gameplay.
🏰
Might & Magic: Spire
TS monorepo PWA · 3 factions, 3 acts, 42 creatures, 68 spells, 67 artifacts
Playable
Theme: HoMM3 with the serial numbers filed off — one hero, no town, an endless spire
A roguelite where your army of creature stacks is your life bar: no per-fight HP resets, just attrition across a seeded run. Climb a calendar-structured map (one node = one day, acts = weeks, the weekly reinforcement Muster always lands right before a Monday boss). Two-rank battles with the classic attack/defense damage curve, budgeted retaliation, and a stat trinity where speed becomes dodge, luck becomes crit, and morale becomes extra actions — unless your undead army locks morale to zero and leans on luck instead.
army-as-life-barcalendar mapnecromancy compoundingspeed→dodge / luck→crit / morale→actionsno-restack rulehonest telegraphsseeded determinism
Why it's interestingBuilt by retiring a working Slay-the-Spire clone mid-project — and balanced by document: a LIGHT/MEDIUM/HEAVY redesign budget, an S–F audit of imported content, and named-lever constants where one number (max boss dragons: 2) moved win rates from 4% to 59%.
🧬
Lution
Vanilla TS + Anthropic API + Agent SDK · 47 cards and growing
Playable
Theme: a card game as a living legal system — "every law you write will someday be enforced against you"
The deck designs itself. After each inner game, both players — you and a live Claude opponent — blind-design one new card each; an agent then writes the card's code into the running game, gated by tests. The loser decides the round's fate: KEEP (both designs survive) or STEAL (a two-pick raid where spurned designs are destroyed, stealing back your own creation executes it, and up to four cards can go extinct at once). Every effect ever designed is claimed forever, so simple ideas are land-grabbed early and late rounds turn baroque.
self-expanding deckextinction-engine keep/stealdesign-space land-grabLLM judge (semantic dupes, no-deixis)atoms → new atom → bespoke code ladderdeterministic replay persistence
Why it's interestingThe most original game in the portfolio: the card game is just the scoreboard — the design round is the game. It's also a working laboratory for LLM-native play: prompt-injected sabotage was caught and refused, agent guardrails were learned the hard way, and the whole card language is a validated AST an LLM compiles against.
🌱
Mythgarden
Django + React · deployed at mythgarden.ashkie.com
Live
Theme: Stardew Valley × Groundhog Day — the same quirky week, forever
A time-loop farming RPG: farm, fish, mine, and befriend villagers through one repeating Monday-to-Sunday week. Score is money times hearts — lopsided runs can't win. When the loop resets, your knowledge, achievements, and boost level persist; and if you fail to beat your high score, your luck stat rises instead, improving the odds of finding the rule-bending magical mytheggs. The whole world — 182 items, 205 dialogue lines, villager schedules — lives in versioned CSV snapshots.
time-loop meta-progressionmultiplicative score (koin × hearts)loss-compensating luckknowledge unlocksopt-in difficulty multipliersCSV world database
Why it's interestingThe portfolio's first fully deployed, server-authoritative game — and its kindest design: losing literally makes the next run luckier.
🧚
Leyline Garden
Phaser 3 + TS · core loop complete, ~225 tests, all-procedural pixel art
Playable
Theme: a fairy, a garden, and the quiet satisfaction of a well-drawn supply line
A cozy idle/automation game on a two-layer isometric world — sunlit surface, crystal-veined underground, connected by holes you dig. You can carry exactly one thing at a time, which is the whole point: the game is graduating from hand-delivery to drawing leylines along which resource motes flow to source plants, transmute plants, and an endgame portal. Day/night lighting, weather that feeds crops, and a full idle simulation that greets you back after time away.
carry-one constraintleyline mote routingsource → transmute chainstwo-layer iso worldidle/away simulationprocedural pixel art
Why it's interestingMini-Factorio in a cozy skin: the player's physical limitation is what makes automation the core verb — and the sim/render split keeps a pure engine under the Phaser shine.
🪨
Rock Stars
React · offline, no backend · five decks + a periodic-table mode
Playable
Theme: geology facts as collectible mastery — closed sets a kid can fully conquer
A tablet-friendly quiz app for kids: Mohs hardness, mineral formulas, geologic time, rock families, ores & metals — each deck playable as flip-card training or multiple-choice tests with same-deck distractors and a review list. Best scores persist per deck and direction; perfection earns a crown. Quietly grew an entire periodic-table gauntlet mode beyond the original scope.
data-driven decksreversible cardstraining vs test modesmastery crownsWikimedia image pipeline
Why it's interestingThe household-utility lane, shipped cheap and disciplined — proof the portfolio's data-driven content patterns scale down as well as up.
🔦
LUMENGRID
Jul 2026 · single-file React artifact · 2 worlds × 10 levels
Shipped
Theme: light as logic — route, split, filter, and mix beams to exact colors
A laser-routing puzzle where color is a bitmask: red OR green reads yellow, on-screen and in the engine alike. World 1 teaches mirrors, splitters, filters, and linked toggles; World 2 inverts the problem with composite glass (subtractive logic) and poison beams — overfed sockets fail, so the solve becomes diverting the surplus. All twenty levels are machine-verified solvable-but-not-pre-solved by a standalone Node script.
bitwise-OR color engineSVG screen-blend beamsexact-match targetsexcess-as-hazardautomated solvability verifier
Why it's interestingThe verifier pattern — prove every shipped level honest by machine — generalizes to any deterministic puzzle or procedural content, and belongs in every future game's CI.
💡
Lumen Works
Jun 2026 · single-file React artifact · 5 levels + sandbox
Superseded
Theme: a miniature Factorio about the primary colors of light, in synthwave-lab neon
LUMENGRID's predecessor: grid-based live beam simulation with mirrors, prisms, and a multi-input combiner, targeting exact colors where over-mixing fails. Mechanically superseded, but its sandbox mode and combiner never carried forward — a documented reminder that successor games shed good ideas unless you audit the predecessor.
live beam simulationmulti-input combinersandbox modeexact-color solves
Why it's interestingThe portfolio's cautionary tale about iteration loss — and the seed that Leyline Garden later grew into a full cozy-automation game.
⬡
Hexagon Maze
Sep 2024 · small React component
Sketch
Theme: a honeycomb, a sequence, a start
A honeycomb grid where you click cells in numbered sequence. Mechanically thin, but historically significant: the origin of the "code me up a puzzle in React" collaboration pattern, and the axial-coordinate hex rendering code still waiting for a hex tactics game to claim it.
axial hex coordinatessequence puzzles
Why it's interestingEvery portfolio has a first sketch; this one left reusable hex math behind.