Late May 2026 — release in late June; handed over to the publisher with version 2.0
My scope
The whole product: code, content, art, sound, releases
Project team
Solo until release; after launch the Evrika Games team joined the game's development
Publisher
Evrika Games: balance and timeline reviews before release; later the publisher's artist reworked some screens
How a level gets into the game
800+ levels in 9 languages cannot be checked by hand. The content lives in its own database with an editor and reaches the game only through automated checks.
DBCategory and level database
A local editor on FastAPI and React: the difficulty curve, a level card, the category base with a similar-category search.
BUILDLevel assembly
Levels are assembled under constraints: category similarity by embeddings, word frequency and CEFR level, target difficulty. A word does not come back within 15 levels.
AUDITAudit with local models
bge-m3 embeddings flag stray words and weak names; an LLM in LM Studio reviews the flagged categories, and I make the call.
L10NLocalization into 9 languages
Translation with the category as context, then rule checks: duplicates, untranslated words, wrong script, bubble width.
CIExport and checks
Export to game assets. In CI a solver checks that every level can be completed, and a test compares the database with the shipped build.
SHIPDelivery
Levels ship in the build; content fixes go through a CDN with a SHA-256 manifest, without a store update.
Embeddings first, the LLM only for disputed cases
Embeddings go through every category, and only the flagged ones reach the LLM. The model is not spent on obvious cases, and I review only its verdicts.
Translation depends on the category
"Bat" in a baseball category is a bat, not the animal. Words are translated with the category as context, and wrong senses were fixed in each category separately.
What I did
Game logic, physics, special mechanics and boosters on Flame and Forge2D.
Content: 800+ levels, 15K+ unique words per language; the "Content and level history" tool — feed, per-version level history, version diff, search by words and categories.
After release — updates every 1–2 weeks.
AI pipeline
Claude Code and Codex: code, tests, localization, release routine.
Local models — embeddings and classifiers — to prepare and validate the word content.
Art: setting and mockups in GPT Image → Figma → the game; some assets re-rendered with Nano Banana. Music is generative.
By hand: screen layout and some of the sounds.
Outcome
12 days from the first commit to a TestFlight build, one month to release on iOS and Android.