Marathon
Activity, objective, encounter, and world-system design for large-scale PvPvE spaces.
Case study
Encounter Controller
Marathon needed ambient combat to feel unpredictable without becoming arbitrary. Across three surface zones and one endgame interior, every enemy drew from a shared performance budget. Independent encounters could consume too much of that budget in one area while leaving another empty. Sessions also needed to grow more dangerous over time without simply adding more AI. I authored every ambient encounter across all four destinations and worked with engineering on a system that could manage them against the same limits.
Instead of treating each placement as an isolated script, I defined reusable encounter prefabs. Each described a complete fight: squad composition, spawning, combat geometry, and a decision ladder for how squads occupied it. A placement added local context—where and when it could appear, its probability and priority, and whether it should yield to higher-priority content. Engineering built the tools and engine-level controller; I built, placed, and tuned the prefabs.
At the start of a session, the active zone created its controller. It tracked combatants and encounter types alongside priority, difficulty, location, and elapsed time, then told prefabs to start, stop, respawn, withdraw, or be replaced. Hard limits prevented overages, exclusions preserved room for required activities, and session time enabled harder combinations. Every AI spawn eventually passed through it.
Lockdown used that foundation for a complete activity. Once its time window opened, a security ship sealed a point of interest behind a damaging field. Players used a protective consumable to enter, disabled the field, inserted a portable drive into a locked reward cache, and defended it through three enemy waves while rival crews could intervene. Completion guaranteed loot and returned the drive for another, more dangerous site. At launch, the event had a 30% chance to appear. Up to three sites could chain across a run, increasing the risk and possible reward. Because it ran through the controller, it could claim the combatant budget it needed without pushing the rest of the zone over its limit.
The result was not procedural combat; every fight remained authored. What changed was when and where those fights appeared, and which encounters could coexist. Zones could feel different between sessions without overrunning performance or starving required content. Shared labels also let us rebalance groups of encounters between seasons or disable a problem through JSON rather than ship a patch. The controller eventually became the required path for every AI spawn in the game.