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).
Vision
Section titled “Vision”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).
Drone classes (EVE roles → our enemies)
Section titled “Drone classes (EVE roles → our enemies)”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.
Targeting / priorities
Section titled “Targeting / priorities”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 button → pauses 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).
Shop integration
Section titled “Shop integration”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).
Sim architecture
Section titled “Sim architecture”- Generalize
DecoyState→ aDroneState(class, pos, vel, hp, lifespan, target, resolved attributes) and aSim.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/simpure + netcode-ready. - Aggro hook: the existing “enemies target the nearest decoy” branch generalizes to “nearest taunting Sentinel,” honoring the targeting policy.
Determinism
Section titled “Determinism”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.
Migration from the current decoy
Section titled “Migration from the current decoy”- 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_decoymigrate to the loadout model.
Suggested phasing (each its own plan + deploy)
Section titled “Suggested phasing (each its own plan + deploy)”- Framework: DecoyState → DroneState pool +
deploy_drones(loadout); port the current decoy as the Sentinel class (parity). Bandwidth stat. No new classes yet. - Classes: Bomber, Interceptor, Disruptor behaviours (+ Logistics if kept).
- Drone Bay UI: the pause-menu configure/launch screen + quick-deploy + targeting policies.
- Shop trees: per-class unlock + attribute upgrades; MetaState
dronessection; migrate decoy entries. - Counter-tuning: balance each class’s effectiveness vs the biomass enemy taxonomy.
Decisions (resolved 2026-06-28)
Section titled “Decisions (resolved 2026-06-28)”- Logistics class: KEPT → 5 classes (Sentinel/Bomber/Interceptor/Disruptor/Logistics).
- Flat max-N drone slots (shop-upgradeable), not an EVE bandwidth budget.
- Drone button: tap = deploy saved loadout (no pause); hold = open the Drone Bay.
- Drones expire after Endurance, then recharge (timed/tactical), not persist-until-destroyed.
- Roster open for later additions (e.g. a salvage/utility drone that boosts gold/XP pickup) — not in the initial five.