Our work
Game · 3D FPS
Overrun
A wave shooter that runs in a browser tab
The demo is a recreation of the system, with made-up data: the original belongs to the client and is not published. No sign-up needed.

The context
A game is the one thing in this portfolio that can't be explained with a screenshot: either it responds to the mouse without lag or it doesn't exist. Overrun is here to show that what runs in the browser is no longer a limitation —there's a sixty-frame loop, collisions, enemies that hunt the player and an ending— and that you can get there without downloading anything: not a 3D model, not a texture, not an audio file.
What the system does
- In-house engine on three.js: a 60 fps loop, collisions against the map solved axis by axis, ramps and platforms, and hitscan fire landing in the same frame
- Three weapons that win in different places —the pistol never runs out, the SMG is for the pack, the shotgun kills in one shot at a meter and does nothing at ten—, each with its model in hand, walk sway, recoil and a reload animation
- Enemies drop loot: ammo, medkits and modules that level up the weapon in your hands. Four levels per weapon, and each one changes the model's shape —muzzle brake, extended mag, sight— so the upgrade is seen and not just a number
- Three enemies that ask for three things: moving, managing ammo and using cover
- Nine hand-written waves and then a formula: difficulty rises through composition and not by multiplying health, which is what feels unfair
- One upgrade chosen from three at random after each wave, with a cap per upgrade, so two runs are never the same
- All the sound is synthesized with oscillators and white noise: zero audio files, and it starts silent
- The game state doesn't live in React: the HUD is written straight to the DOM, because a render per frame drags the game down


