How it was built
A rebuilt three.js core
The renderer started as three.js and ended up heavily modified, with custom shaders written for the look and the frame budget the game needs. Nothing generic survives in the hot path.
Deterministic physics, twice over
A physics engine written from scratch so client and server step identically. The client predicts locally, the server stays authoritative, and the two agree — which is the whole reason the shooting feels honest.
Custom raycasting light
All of the lighting in the game runs through a raycasting engine I wrote for it. It's what lets the maps read clearly at a glance while still costing almost nothing to draw.
Node, WebSockets, Arbiter's maps
Frontend and backend are both JavaScript, with Node and WebSockets carrying every match. The maps were designed by Arbiter.
Grab a friend, pick a gun, see who's better.