The Game Itself
Phaser 3 and TypeScript, around 17,000 lines across 54 modules: two-camera HUD, isometric projection maths, projectile ballistics with tile-ring blast falloff, wave generation, boss abilities, save system, procedural audio. A type-check gate has to pass before every single commit.
- Game invariants written down as rules the AI must not break
- Balance lives in data files, never in ad-hoc scene logic
- Every hard-won gotcha recorded so it isn't relearned
140 Unique Paths
Every level gets its own funnel, generated by a script and frozen into the build. Entrances rotate across all four edges, a minimum-corner count rises as you progress, and length is bounded to what that market can afford to defend. The build aborts if any level misses its floor.
600+ Assets, One Pipeline
Towers, users, bosses, decor, tiles, UI icons and comic panels – all generated, then background-removed by a segmentation model, trimmed to content, logged and installed. The prompt, seed, resolution and model for every generation sit in a JSON file in the repo, so any asset can be reproduced or reverted.
- The whole process is written as a reusable skill, not a habit
- Colour-keying dropped for AI segmentation – it stopped eating teal furniture
- Four-directional characters derived from one flat image, for cents
Seven Worlds, Seven Rulesets
USA, Europe, China, Africa, Earth, Space and Rogue. Each market applies a lens that rewrites what a good answer is worth – Europe makes privacy king with a red-tape floor, China's firewall censors cheap answers. Same towers, completely different puzzle.
The Jokes
Satirical breaking-news interstitials between levels, taunts from thinly-veiled tech-titan bosses, and a chatbot tower that pops a different smug reply on every hit. Written to a tone spec, then filtered by a human for the ones that actually landed.
Sound Without a Sound Library
Music and effects are synthesized in code rather than sampled – menu theme, UI clicks, serve hits, explosions. Nothing to license, nothing to download, and it tunes like any other data file.
Runs on a Phone
Wrapped for Android with orientation locking and a splash screen, after a performance pass that found the frame budget going to a HUD redrawing itself sixty times a second – not to the game.