Skip to content

Enemy & boss design — playtester Toby (from "The Chasm")

Enemy & boss design — playtester Toby (from “The Chasm”)

Section titled “Enemy & boss design — playtester Toby (from “The Chasm”)”

Toby’s enemy roster from a similar game, captured for our adaptation. Our game differs: one-stick movement + auto-fire/auto-target (the player does NOT manually aim or dash), deterministic sim (no engine physics). So “dodging” here means kiting/positioning the swarm, and threats must be readable while you’re not aiming. Everything below is expressible as plain deterministic sim logic.

Toby’s load-bearing principles (adopt these)

Section titled “Toby’s load-bearing principles (adopt these)”
  1. Mix types — never send one alone (except the basic Zombie). A single type is dodged by just circling; the fun is in how types interact. → spawn waves should blend types.
  2. Perfect skill = zero damage. Every threat must be dodgeable or killable. (We already half-hit this — the perfect-kiting auto-player takes no damage.) → no undodgeable hits; telegraph everything.
  3. Telegraph hard. Charge-ups, silhouettes at dash/teleport endpoints, growing tells. Fairness comes from readability.
  4. Bosses on an otherwise-empty map (can be adapted to keep some adds).

Reusable primitives to build FIRST (each unlocks several enemies)

Section titled “Reusable primitives to build FIRST (each unlocks several enemies)”
  • ★ Dash movement — charge (telegraph) → fast straight-line lunge → stop → recharge. Optional very slight homing. The single most reused pattern (Witch, Slime, Spider, Accumulator, Ghost, several bosses). Build this as a per-enemy movement behavior with a small state machine (charge timer → dash vector → cooldown). Foundational.
  • Telegraphed teleport — a silhouette appears (and tracks the player), charges, then the real enemy teleports there and dashes. (Ghost.)
  • Trail/zone left behind — an enemy drops a persistent area as it moves. We already have this primitive (Sim.zones / reaction terrain) — Spider webs and FunZo zones reuse it.
  • Killable projectiles — projectiles that are themselves low-HP enemies (Tank missiles). Reuses the enemy pool with a “projectile” behavior + homing.
  • Predictive aim — fire at where the player will be (lead the target). (The Eye.)
  • Grows with state — bigger/faster as it charges or as HP drops (Accumulator, FunZo).
  • Gravity pull — periodically add a pull vector toward the enemy on top of player input. This is literally our novelty-backlog “Void reaction = gravity well”. (Graviton.)
Toby enemy Adapts to us as Notes
Zombie = our Swarmer slow swarm, the baseline. Keep.
Skeleton swarm until ~1.5–2× orbit range, then circle + throw (killable bones) distinct “kiter” — forces you to break the circle. Great fit.
Skeleton 2 / 3 variants: low-freq spread vs high-freq single cheap variety once Skeleton exists.
Witch dasher, high damage first dash enemy; pure telegraph-and-dodge.
Slime = our Splitter but moves in small dashes give Splitter dash movement; Toby found it “not as interesting” — low priority.
Ghost slow swarm + telegraphed teleport-dash (tracking silhouette) the standout fairness/skill enemy. Silhouette holds position relative to player.
Spider fast tiny-hitbox dasher that leaves a slowing web trail (stacking slow) reuses our zone system for the web; the trail is the threat, not the spider.
Accumulator dasher that grows bigger+faster each dash — must kill fast a priority target that punishes ignoring it.
Tank = our Tank + fires homing missiles that are killable enemies makes the otherwise-undodgeable missile fair. Reuses killable-projectile primitive.

Bosses (empty-map set pieces, build later)

Section titled “Bosses (empty-map set pieces, build later)”
  • Giant Zombie — high-frequency low-accuracy bone cone (effective bullet-hell) + summons 1-hit nerfed adds as a shield to corral the player into the cone.
  • FunZo — summons growing fuchsia damage zones (DoT, very small per-zone because it stacks; tint stacks to show overlap density) only directly under itself; alternates slow↔fast-dash every ~5–10s; grows as HP drops; zones shrink+vanish on death. Strategy: bait it onto already-full ground. Zones reuse our terrain primitive.
  • Graviton — slow approach, fires dark blobs in all directions, every ~3s pulls the player toward it (pull strength scales with missing HP; player still steers, vectors add). Skill = line up the pull so it doesn’t drag you into a blob. Reuses gravity-pull primitive.
  • The Eye — lazy dash (stays near off-screen), predictive-aim lasers (laser speed, not frequency, rises as HP drops); dash does huge damage if it connects. Confusing-but-fair.
  1. Dash movement primitive (per-enemy behavior state machine) + convert our elite (already “charger”) into a real telegraphed Dasher/Witch. Foundational + immediate payoff.
  2. Spider (dash + web trail) — reuses dash + our zone system; introduces stacking slow.
  3. Skeleton (approach → circle → throw killable bones) — the ranged “kiter”.
  4. Ghost (telegraphed teleport-dash) — the skill-expression enemy.
  5. Killable missiles on Tank.
  6. Accumulator, then Skeleton 2/3 variants.
  7. Bosses — start with FunZo (zones reuse terrain) and Graviton (gravity pull), which both reuse primitives we’ll already have.

Toby’s mix-types rule means wave composition matters as much as the enemies: pair a kiter (Skeleton) with a rusher (Witch/Spider) so circling one walks you into the other.