Skip to content

Monsters Stats and Elements

Dominik Burger edited this page Jun 10, 2026 · 4 revisions

Monsters, Stats and Elements [CURRENT]

Monsters

Monsters are AI-generated as data (stats, scaling, attacks, element, lore, and a visual model) and procedurally rendered as canvas shapes (no PNGs). The live pool is server-authoritative — generated monsters are persisted and served to every client.

Generation is a multi-agent pipeline (server/genStages.js): an Idea agent gives a 2–4 word concept, a Designer agent turns it into the full MonsterType (element, rarity, stats + scaling, four signature attacks, a passive & active effect, a description, and a visual description), and a Builder agent that draws the creature from scratch. Each stage uses structured output; an authoritative element hint keeps a batch varied across the element wheel.

Each MonsterType carries: typeName, element, rarity (1–5), size, base stats + two scaling coefficients per stat, four AI-authored attacks, a passive & active effect, a description, and a model (the Builder's authored shapes).

Procedural visuals: the Builder agent composes each creature FROM SCRATCH — it places the whole monster itself as a list of 2D shape primitives (ellipses, polygons, limbs, eyes) on a 128×128 frame, with no template and no preset body type. The renderer (src/systems/modelRender.js) just executes those authored shapes, so every monster is a unique, AI-built form rather than a variation on a fixed silhouette. The single 128×128 sprite is reused at every size (HUD icon, combat portrait, bestiary art), so a monster looks identical everywhere. (Legacy seed monsters with no authored model fall back to a procedural archetype renderer in spritegen.js.)

Stats & Scaling

Seven stats: health, strength, defense, speed, power, energy, luck.

A stat at a given level:

stat(level) = floor( base + scaling1 * level ^ scaling2 )

Each stat has its own base, scaling1, and scaling2 from the monster's data row. Example (Flamepaw Lynx speed: base 95, s1 1.5, s2 1.2) at level 3: floor(95 + 1.5 * 3^1.2)floor(95 + 5.6) = 100.

Elements

Monsters and their attacks carry an element (free-form, AI-generated — Fire, Water, Venom, Storm, …), used purely for flavour: it themes the creature and its moves. There is no fixed set of elements — the generation agent invents them freely and the fight judge interprets them freely; the UI gives them no colour coding (every monster uses one neutral accent).

There is no type-effectiveness — elements give no combat bonus or penalty (the old Fire/Nature/Water matchup triangle was removed 2026-06-10). Damage comes from stats, the move, and crits; the AI judge resolves the rest. See Combat and Taming.

Clone this wiki locally