JER'S MEDIA // ENGINEERING
Every number has a file path
BREACH PROTOCOL runs on an engine built by one person, in the open, with the receipts kept: every engine decision has a written record, and every number on this page is either a constant you can go read or a measurement you can re-run. This is the short tour — six decisions and what they bought.
// SERVER AUTHORITY
Nothing the client says is trusted
Every byte a client sends is a claim, arriving from a JavaScript runtime the player can open a debugger on. Take those claims at face value and you have handed out a cheat toolkit: lie about position and you teleport; lie about fire timing and a 90-damage sniper fires eight rounds a second; claim a shot origin 40 metres from your body and you shoot through walls you were never behind.
So no rule lives in the browser. The server simulates at 30 Hz, snapshots at 30 Hz, and validates every claim against its own state — the browser renders the match; it does not get a vote in it. And bots walk through the same door as humans: one player record, one damage path, one scoring path, not a single branch on "is this real".
// DETERMINISM
The map is eight bytes
The server sends a seed and no geometry. Client and server grow the same arena from the same number and have to land on identical collision — 70 boxes at the default seed, measured — or the game would render cover that stops nothing. The package that guarantees it has zero dependencies — no DOM, no sockets, no filesystem — imported by both sides and allowed to depend on neither.
Determinism turned out to be the most load-bearing wall in the engine. It is what lets the whole game run headless at roughly ninety times real time per core — and that is the property that made the bots trainable.
// NETCODE
"My shots don't register" is a measurable quantity
The netcode benchmark spawns a throwaway server, connects two synthetic clients, and has one of them aim at exactly where it renders a sprinting target. Perfect aim should land about 100% of the time; everything short of that is netcode error — the thing a player reports as "my shots don't register", turned into a number.
Two controls run in CI, and both matter. A stationary target must always be hit — that catches a broken harness. A deliberately mis-aimed shot must always miss — because if a wrong shot still lands, that isn't lag compensation, that's an accidental aimbot.
// BOTS
People-shaped by constraint
The bot programme opened with a rule, stated in writing before any design work: bots must never become better shots. They may get harder to kill and more useful to their team — never more accurate, because accuracy is the dial that makes a bot feel unfair instead of skilled. Across the whole programme, rifle hits-per-kill moved from 6.99 to 7.07. Everything else about them changed.
They gained an awareness cone with notice latency, hearing, a wrist with a finite turn rate, an acquisition delay on every fresh contact, cover sampling, reloads taken behind something. Time-to-first-shot in a close contact went from 0.155 seconds to 0.474 — flanking now buys you the fight. And when the cone landed, the share of kills from behind fell from 15.5% to 13.2%: the number that says the change built a flanking window, not an assassination meta. The bots are now the most behaviour-pinned system in the game, and the test suite around them has grown past 2,500 green tests.
// REINFORCEMENT LEARNING
Thirty-six hours of self-play, one seat at the table
A learned policy is allowed to occupy the bots' goal layer and nothing below it. It picks one of eight macro-goals — an objective, the fight in front of it, health, home — and the hand-built tactical layer, human limits intact, executes. The reward is winning, and the constraint is structural: the network cannot reach the trigger, so it cannot learn to pull it better than a person could.
The production policies came out of a 36-hour self-play campaign across two machines, and they were gated the way they ship: a seated policy draws no randomness — it takes the argmax, every time — so every champion had to win as a deterministic player, not as a lucky sampler. One champion per side holds the production seats today.
The observation encoder is a frozen contract: a checkpoint whose schema doesn't match the build refuses to load, so old checkpoints die in batches, on purpose, never as a side effect. And the campaign's write-ups keep the dead ends — the recipe that produced a champion on one level collapsed to a zero-percent win rate on another, and the record says so, with the control run that proves it was the level and not the build.
// EVERYTHING IS DATA
Identity is a directory
Every sound in the game has a synthesised voice behind it; generated takes are an overlay, so the failure mode is "the game sounds like it did yesterday", never silence. The text-to-speech pipeline sits behind a server-side proxy, so the browser never holds an API key. The storyline is 28 beats of authored data, rebindable live. The boss's fight numbers are server-owned dials that edit the running match. And a complete second identity for the game — theme, strings, cast, voices, rules — is a directory of the game's own files with a manifest saying which are in the box: one pack installs it, deleting it restores the default byte-for-byte. That format is the groundwork for Steam Workshop: validated, data-only packs are what make user content safe to subscribe to.
// THE INTEL BOUNDARY
The wallhack that isn't
The commander's brief was "see where everyone is" — which, taken literally, is a live feed of sixteen positions to a player on voice chat with eight teammates: a permanent wallhack laundered through a human. The role had to be worth playing without being that. The fix is placement, not politeness: enemy positions are filtered out before broadcast and never reach a commander's connection at all. A client that was never sent the data has nothing to reveal, no matter how it is modified.
The proof runs in a browser tab
All of it is live at breach.jers.media. Flank a bot. Take the chair. Count the seconds the smoke telegraphs before it lands.