Enemies & AI
One brain, data-driven
There are no per-enemy AI scripts. Every enemy runs the same generic intent brain; an archetype is authored purely as data — a statline, a movement profile, and a set of granted abilities. Scripted brains exist only as an escape hatch for bosses.
The intent loop: the highest-priority ready active ability drives behaviour — seek its firing range, fire when ready, follow its gated movement (flee, keep distance, hold still) while it cools down; otherwise fall back to the archetype’s default movement profile.
Movement profiles
Approach, Kite, Flee, Pursue, Orbit, Stationary (plus None for inert
bodies). Steering is faction-aware with separation, so packs spread instead of
stacking.
Enemy attacks are abilities
Melee strikes, ranged weapon bursts, charges, summons (egg-style hatchers), contact damage and death-loot bursts are all the same ability assets players use — telegraphs included. An enemy that fires a weapon literally holds a weapon from the weapon table (e.g. Mud Slinger firing a Sniper Rifle).
Scaling & spawning
- Per-wave growth and the spawn-weight lottery are documented with formulas on Mechanics; each enemy page shows its own scaling projection table.
- Enemies are gated by first appearing wave and grouped by planet — rosters live on the planet pages (Earth, Fire, Water, Wood).
- Spawns use indicators before the enemy appears; co-op lobbies scale enemy HP, damage, speed and wave time through the difficulty multipliers.
Archetype design guidelines
- Every roster needs its melee chaff (e.g. Pebble), a ranged kiter (e.g. Mud Slinger), and at least one special per planet that forces movement.
- An enemy’s danger must be readable from silhouette + telegraph, never from memorized stats.
🚧 TBD — boss design per planet; elite/champion variants; enemy density targets per wave band.