Legacy Projects

This is everything that isn’t in the live Arcade — some of it shipped and playable elsewhere, some of it built but never deployed, some of it a two-day concept fork that never went further. Sorted honestly by maturity, not by ambition.

Shipped & Playable

Real, finished, playable right now, just not on the shared RFDGameStudio engine.

rpgCore — the ECS-based genetics and dispatch engine that most of the later work builds on.

OPERATOR: A Dispatch Simulator — built on rpgCore’s patterns, with real (if dormant) itch.io presence.

TurboShells — the full project page, not the shorter Arcade-catalog blurb.

AntSim — a Wa-Tor-style ant colony simulation.

PyPongAI — a NEAT-based neuroevolution Pong AI, with a multiprocessing training pipeline that hit a verified 7x speedup.

RogueAsteroid — an arcade roguelike built early in this whole arc.

Orbling Conquest — a conquest/strategy title from the same period as OPERATOR.

Built (AI Studio), Not Yet Deployed

Real code, built and playable inside Google AI Studio’s own environment, but not shipped anywhere on my own infrastructure. Some of these are structurally incompatible with the RFDGameStudio engine as it currently exists — that’s an open problem, not a decision to leave them there permanently.

Trinity Siege / Combat — a lane-based wave-defense game on a hex ring map, with a Circle/Square/Triangle combat triangle modified by Orc/Elf/Human race bonuses. This one got real engineering rigor: six formal directive phases, and an independent Python simulation written specifically to verify the combat math before trusting the coding agent’s own claims about it — which was the right call, since that audit process caught a hardcoded static summary panel standing in for real output, a raw threshold check dressed up as combat resolution, and a FIFO-array bug that misattributed which unit’s health was being tracked. Still stuck on the same structural gap as the others below: it’s a plain React/TypeScript/Vite SPA, and RFDGameStudio’s shared engine expects a four-file Lua contract. Reconciling those two shapes is unresolved.

BREWFIELD — a turn-based potions-brewing roguelike drawing on Magicka, Noita, and Slay the Spire, built around an Element × Component brewing system, a “Residue Field” mechanic, and Wa-Tor-inspired trophic chemistry governing what reacts with what.

LEDGER — a Dutch-auction trading and appraisal simulator in the vein of Dope Wars, Dealer’s Life, and Schedule 1, with compounding debt, volatile resale markets, and soft lockout consequences for overextending.

SHOAL — a Wa-Tor-inspired toroidal reef sandbox: fish, sharks, radial algae hubs, flesh-chunk scavenging, lineage tagging, age-visible rendering, and direct click-to-place/cull interaction with the ecosystem.

Slime Conquest — a separate TypeScript demo that predates rpgCore and the rest of the Python-era work. Distinct from SlimeGarden’s in-game “Conquest” tab, which is a different, unrelated feature that happens to share a name.

Trials & Experiments

Real, working code, explicitly built and treated as exploration rather than a primary ship vehicle.

GreenGap — an early web-game prototype/concept, not a Chrome extension.

SlimeBreeder — a multi-tank breeding and genetics system pulling from the SlimeGarden core loop, built in React, TypeScript, and Vite, with Tailwind v4, Vitest, Dexie for local persistence, and a “Stitch Protocol Slime-X” design system. A real, working trial — never intended as the primary vehicle for the slime-breeding concept.

Concepts

Public repos, real starting points, not developed far enough to demo.

ai-shop — a fork of the open-source AI Town project, aimed at a single-location shop with one persistent shopkeeper.

operator_game_flutter — a Flutter port attempt of OPERATOR. How far this actually got is genuinely unclear even to me at this point.

Stub Only

PyBag-Endless-Shooter — exactly what it sounds like: a stub, nothing more.


This page gets updated as things move between tiers — the whole point of splitting it this way is that “concept” and “shipped” shouldn’t carry the same weight just because they’re both on a portfolio site.