What the seed fixes
Species, type, name, shape, palette, rarity. Hash a barcode and you get the same creature anyone else gets. Reproducible, tradeable, offline-verifiable.
stats spend one shared tier-budget → only shapes differ, never totals
Deterministic · offline · free to play
Scan any real product and it decodes — the same way on every device, forever — into a creature that is uniquely, verifiably yours. No server to brick it. No AI bill per scan. And no “perfect barcode” to datamine: the code fixes who a creature is, never how strong.
try it below ↓ · scan your kitchen, identify your wilds
The one idea
Species, type, name, shape, palette, rarity. Hash a barcode and you get the same creature anyone else gets. Reproducible, tradeable, offline-verifiable.
stats spend one shared tier-budget → only shapes differ, never totals
Trained forms, battle scars, provenance, ranked standing. The 30-hour creature that's actually yours — the part worth bragging about — can never be googled.
this is the wall every barcode game died at. we built around it.
How it works
A real barcode — cereal, soda, a book — is canonicalized and hashed. One frozen integer-only path; the same input always lands the same creature.
Silhouette → type → palette → true-name → stats, choreographed. You're reading a name that was always encoded, not rolling a random blob.
Fresh scans enter unidentified; a first battle resolves them. Your collection persists locally — yours, with no account required.
A pure, deterministic auto-battler: all the skill is in who you bring and how you place them. A replay is just a re-run.
The non-negotiables
The scan → collect → battle loop is free and uncapped — no healing wall, no gacha. Money only ever buys flair and storage.
Every creature spends one shared tier-budget — enforced in tests, not hoped. A datamine finds a shape, never a strictly better creature.
Identity is offline and reproducible forever. If the servers vanish you still scan, collect, and replay every battle.
Live prototype · runs entirely in your browser
This is the real Phase-1 engine, not a mockup. Type a product code (or hit Surprise), watch it resolve, then explore forms, battle, and the territory metagame.
Awaiting a signal…
Play — not the seed — reshapes a creature into one of several forms. Every form spends the same stat budget, so forms are situational roles, never raw power. A creature's available branches are gated by its genotype (innate lean ★ first).
All skill is in the build. resolveBattle() is a pure
deterministic function — same squads + seed always replay the identical fight.
Auto-formations are drawn from your Codex; press play to animate the log.
Seasonal factions contest districts made of
nodes; a node is held by async defense — a squad snapshot garrisons it
until someone out-builds it. A siege is just resolveBattle() over
two snapshots. Mirrors npm run battle -- siege.
Be there at launch
No spam — one note when the build opens, and the occasional “scan an everyday object” clip.