02Case study

Jev Arena

Write a fighter in plain English and let a model pilot it in real time.

Role
Solo: engine, protocol, UI, CI
Year
2026
Type
Open-source game · npm package
License
MIT
Jev Arena: two bots fighting in real time with each action's probability shown
  • 230 msmedian decision latency
  • ≈3.7 / sdecisions per fighter
  • 2–3¢model cost of a 60-second fight
  • $0.49model cost of the whole 30-fight ladder

The problem

LLMs think well and react slowly. By the time a chat model has written "I should raise my shield", the heavy shot has already landed.

Jev is a different kind of model: it reads a state and returns typed decisions with calibrated probabilities in roughly 70 to 500 ms by its vendor's numbers, fast enough to be a fighter's reflexes. Jev Arena asks: if a person writes the strategy and the model supplies the reflexes, how strong a fighter can one paragraph make?

How one decision works

The engine does the geometry and turns it into facts the model can read, such as enemy charging heavy shot: YES, fires in 0.4 s. Then one request asks three kinds of question in parallel: how to move, what to do with the weapons, and whether each reflex condition is true right now.

Jev Arena decision loop ONE REQUEST, IN PARALLELapplied on the next tickDeterministic engine20 ticks / secondseeded RNG · exact replaysFight factsheavy shot in 0.4 s6.2 m · shield readyMove · ChoiceAction · ChoiceReflexes · yes/no × NBrainJev · System OneLLM · mockDecisionfired reflex winsthen confidenceelse fallback
A fired reflex wins its slot; otherwise the top choice is used if it is confident enough; otherwise the fighter's fallback.

Every probability shows live in each fighter's "mind panel", so you can see why it did what it did.

Key design decisions

01

Two fight modes

Real-time never waits, so it measures speed and judgement; lockstep freezes every 0.2 s until both brains answer, so it measures judgement only.

02

Exact replays

One seeded RNG and only exact floating-point operations mean a fight is fully determined by its seed and the tick each decision landed on; verify re-simulates a replay and checks it.

03

A ladder you join with a pull request

CI smoke-tests the fighter with an offline brain and posts a results table on the PR; on merge a workflow re-runs the ladder with Jev, updates the leaderboard and republishes the site. Round robin up to 16 fighters, Swiss above.

04

Fair-play limits

Strategy up to 700 characters and at most 4 reflexes; every fighter gets the same ladder brain and prompt budget.

05

Swappable brains

Any System One model, chat LLMs through a JSON adapter, or an offline mock brain for CI and for people without a key.

06

Built to be streamed

A 1920×1080 broadcast view generates live commentary from the model's probabilities and drops straight into OBS; the UI also speaks Traditional Chinese.

Results

Season one's 30 real Jev fights all ended in a KO:

#FighterEloW-D-LStyle
1Trickster10638-0-2circles, baits, dashes away
2Zen10628-0-2one sentence, zero reflexes
3Tortoise10397-0-3shoots from behind pillars
4Berserker9945-0-5rushes in, punches
5Glass Cannon9382-0-8heavy shots, paper armour
6Sniper9050-0-10long range

The most interesting result: Zen is a single line, "Win the fight. Do whatever a wise, calm fighter would do in this exact moment.", with no reflexes at all. It finished 2nd, one Elo point behind the leader, while the carefully tuned Sniper went 0-10.

A decision is about 1,400 input tokens, roughly $0.00006; both fighters decide about 3.7 times a second at a 230 ms median latency.

Stack

  • JavaScript (ES modules)
  • Node.js
  • Canvas 2D
  • npm CLI
  • GitHub Actions
  • GitHub Pages
  • YAML
  • node:test
  • System One API