Skip to content

Drone System Overhaul — Design (EVE-inspired)

Drone System Overhaul — Design (EVE-inspired)

Section titled “Drone System Overhaul — Design (EVE-inspired)”

Status: draft for review · Date: 2026-06-28 Sequence: AFTER (1) biomass wave spawning and (2) the dash/web/regen follow-up ship. This is the big one — its own multi-cycle project. Replaces: the current decoy system (DecoyState + the 5 decoy types + decoy shop unlocks/upgrades).

The decoy becomes one of several drone classes. Drones are a full, EVE-style combat layer: you fit a loadout from a shared bandwidth budget, deploy a mix, and each class hard-counters a different enemy threat. Upgrading drones is as deep as upgrading weapons or the player — and there’s no single correct build: how you spend shop currency (weapons vs player vs drones) is the strategic core, and as the biomass spawns get nastier you lean on the counters that fit your style.

Mid-run, the drone button pauses the game and opens the Drone Bay — a comprehensive configure + launch screen (loadout, targeting priorities, deploy).

Five classes (mapping the existing decoy variants where they fit):

Class EVE analogue Role Counters (enemy threats)
Sentinel (Decoy) Defender/tank drone Taunts — pulls enemy aggro to itself; tanky, little/no damage. Configurable aggro priority (which enemy types it taunts hardest). Melee/walker swarms, boss-adds, being surrounded
Bomber (Heavy) Heavy attack drone Big damage (bonus vs armored/heavy), slow, short-lived, fragile (dies fast). Brute/tank/pyromancer, dense clusters
Interceptor (Light) Light scout drone Fast, moderate damage, catches small/fast enemies that outrun other answers. Spider/zapper/rusher, skirmishers, the dash swarm
Disruptor (EWar) Webifier / ECM / dampener Area disruption: slows, suppresses enemy fire, and/or weakens them. Little direct damage. Ranged threats — shooter/lancer/bomber/orbiter, elites’ attack patterns
Logistics (Mender) Logistics drone Repairs the player (and nearby drones). Maps the current healer decoy. Attrition / chip-heavy spawns

Each class is unlocked in the shop, then its attributes are upgraded there.

Drone slots & loadout (decided: flat slots)

Section titled “Drone slots & loadout (decided: flat slots)”
  • The player has a number of drone slots (shop-upgradeable, starts at 1). Each fielded drone takes ONE slot regardless of class — field any mix up to your slot count. Early game = 1 drone; late game = a small wing. (Chose flat max-N slots over an EVE bandwidth budget for clarity.)
  • A dronebay of owned/unlocked classes; the fielded loadout = the classes assigned to slots + their targeting. Persisted in MetaState. A global “+1 drone slot” shop upgrade raises the cap.
  • Deployed drones expire after their Endurance, then recharge (per-class cooldown) and redeploy — deployment is a timed, tactical decision, not fire-and-forget. (decided: expire + recharge.)

Per-class upgradeable attributes (shop trees)

Section titled “Per-class upgradeable attributes (shop trees)”

Shared axes (every class): Durability (HP), Speed, Endurance (lifespan), Recharge ↓, Targeting range. Plus a global “+1 drone slot” upgrade. Class-specific:

  • Sentinel: taunt radius, taunt strength, damage-reflect, shield-pulse on expire.
  • Bomber: blast radius, armor-penetration, raw damage, payload (multi-bomb).
  • Interceptor: speed, “catch” (bonus vs small/fast), multi-target chaining, crit.
  • Disruptor: disruption strength, radius, duration, and effect unlocks (slow → fire-suppress → weaken/scramble).
  • Logistics: repair rate, repair radius, also-repairs-drones, overcharge burst.

This gives each class a real upgrade tree — comparable depth to a weapon’s threshold path.

Per fielded drone (or a global default), a targeting policy: auto (nearest/role-appropriate) or a priority list of enemy types (e.g. Sentinel: “taunt brutes first”; Bomber: “hit heavies first”; Interceptor: “chase spiders/zappers”). This is the “choose which enemies it counters” knob. Set in the Drone Bay.

In-game Drone Bay (the pause-menu launch system)

Section titled “In-game Drone Bay (the pause-menu launch system)”

Press the drone buttonpauses the sim → opens the Drone Bay overlay:

  • Left: owned drone classes + their fitted stats (from shop upgrades).
  • Centre: the fielded loadout — assign classes up to your bandwidth; see total bandwidth used.
  • Right: targeting policy per drone (auto / priority list).
  • Deploy → unpause → drones launch with the config.
  • Quick-deploy (decided): a tap of the drone button re-launches your saved loadout without pausing; hold opens the Drone Bay to reconfigure. So you only pause when you want to.
  • tvOS-safe focus nav (mirrors the existing pause/level-up panels).

Drones become a third major upgrade column alongside Weapons and Player (the meta shop already has the grid + persistence). Per class: an Unlock node, then attribute upgrades. Replaces the current decoy unlock/upgrade entries. MetaState grows a drones section (unlocked classes, per-class attribute levels, saved loadout + targeting).

  • Generalize DecoyState → a DroneState (class, pos, vel, hp, lifespan, target, resolved attributes) and a Sim.drones: Array[DroneState] pool (replaces the single decoy).
  • Per tick: each drone runs its role behaviour (Sentinel taunt / Bomber lob / Interceptor chase / Disruptor field / Logistics repair), takes damage, expires, recharges.
  • Loadout is INPUT, not sim state authored in /sim: the resolved loadout (classes + numeric attributes + targeting) is built render-side from MetaState and handed to Sim.deploy_drones(loadout) — the sim just runs the deterministic numbers, exactly like upgrades today. Keeps /sim pure + netcode-ready.
  • Aggro hook: the existing “enemies target the nearest decoy” branch generalizes to “nearest taunting Sentinel,” honoring the targeting policy.

Drones are opt-in (nothing deployed unless the player launches) — the determinism baseline never deploys a drone, so it stays byte-identical, same as the current decoy. The drone tick flows through Sim.rng where it needs randomness. Verify on each chunk.

  • The decoy button becomes the drone button; the current single decoy becomes the Sentinel class (its taunt/pulse behaviour is the starting point).
  • Existing decoy types map: basic/tank → Sentinel; damage(Striker) → Bomber + Interceptor; healer (Mender) → Logistics; ultimate(Swarm) → a Sentinel “carrier” capstone or a bandwidth boost.
  • Existing decoy shop entries are replaced by the drone trees; selected_decoy/owns_decoy migrate to the loadout model.

Suggested phasing (each its own plan + deploy)

Section titled “Suggested phasing (each its own plan + deploy)”
  1. Framework: DecoyState → DroneState pool + deploy_drones(loadout); port the current decoy as the Sentinel class (parity). Bandwidth stat. No new classes yet.
  2. Classes: Bomber, Interceptor, Disruptor behaviours (+ Logistics if kept).
  3. Drone Bay UI: the pause-menu configure/launch screen + quick-deploy + targeting policies.
  4. Shop trees: per-class unlock + attribute upgrades; MetaState drones section; migrate decoy entries.
  5. Counter-tuning: balance each class’s effectiveness vs the biomass enemy taxonomy.
  1. Logistics class: KEPT → 5 classes (Sentinel/Bomber/Interceptor/Disruptor/Logistics).
  2. Flat max-N drone slots (shop-upgradeable), not an EVE bandwidth budget.
  3. Drone button: tap = deploy saved loadout (no pause); hold = open the Drone Bay.
  4. Drones expire after Endurance, then recharge (timed/tactical), not persist-until-destroyed.
  5. Roster open for later additions (e.g. a salvage/utility drone that boosts gold/XP pickup) — not in the initial five.