Skip to content
← Back

SWARMGEDDON

A web-first survival shooter with a custom fixed-step simulation, pooled WebGL entities, and seeded Daily runs.

Live TypeScriptPixiJSWebGLCapacitorPWA
SWARMGEDDON: A web-first survival shooter with a custom fixed-step simulation, pooled WebGL entities, and seeded Daily runs.

Playable on the web. Native shells and a release runbook are in the public repository; store submission is not complete.

The idea

SWARMGEDDON began with a simple target: make a dense twin-stick survival game feel responsive in a browser, on desktop and touch devices, without handing the simulation to a general-purpose engine.

What I built

The game loop advances the simulation in fixed 60 Hz steps and renders once per frame with interpolation. A seeded PRNG drives gameplay randomness, while collisions use a spatial hash and short-lived entities come from reusable pools. This keeps gameplay reproducible under the same seed and inputs without adding avoidable allocation pressure during dense combat.

Weapons, enemies, perks, waves, pilots, and arenas are content definitions on top of the same engine. The current release includes 10 weapons, 15 enemies, 25 perks, Endless mode, and seeded Daily runs. Web Audio generates the soundscape at runtime, while Capacitor keeps haptics, safe areas, and native back-button behavior behind a platform boundary.

The hard parts

01

Separating simulation from cosmetics

Gameplay randomness must stay reproducible. Screen shake, audio variation, and share-card decoration can vary freely, but they cannot change the simulation sequence.

02

Making density affordable

Projectile-heavy survival games can spend their frame budget on bookkeeping. The spatial hash narrows collision candidates, and pools reuse the entities created and removed throughout a run.

03

One build, different platform edges

The game remains web-first, but native-specific behavior still needs a home. The platform layer contains those differences so gameplay code does not branch around each device.

What’s next

Finish on-device performance and balance sessions, then prepare the native store submissions.