Reactive decisions · browser arena

Jev plays Doom.

Ten actions. One tiny decision at a time. Play the maze shooter, then hand the controls to Jev.

Sector 01 · maze shooter

Original mini-game
Who is in control?
JEV / SECTOR 01PAUSED · HUMAN
+A+A
HEALTH 100AMMO 32KILLS 0/5
Seed 7 · tick 0

Focus the arena: W/S move · A/D strafe · Q/E or ←/→ turn · Space shoot · F door · R item.

Changing controls or chaos starts a fresh run. The map shows the whole arena; Jev gets only the inspectable visibility features. No Doom assets or emulator are required.

Inside the decision

Your latest actionIdleNo model call
Decision latency (batch)
Classifications / second
Blink challenge200ms target

Throughput = valid classifications ÷ measured API time, including network. The 200ms target is a demo challenge, not a claim about human perception. One newest decision can control the arena per batch.

Switch to Jev control to watch live classification.

All ten allowed actions

Move forward
Move backward
Strafe left
Strafe right
Turn left
Turn right
Shoot
Open door
Use nearby item
Idle
Inspect exactly what Jev sees No request yet

Deterministic geometry supplies these features. Jev receives no pixels, source code, or hidden map. Visible targets must be within eight tiles, a 120° field of view, and an unobstructed line of sight.

enemy_visibletrue
enemy_distancemedium
enemy_bearingcenter
health_pct100
ammo_pct80
wall_aheadfalse
wall_leftfalse
wall_rightfalse
door_aheadfalse
item_visiblefalse
item_nearbyfalse
item_kindnone
item_bearingnone
last_actionidle
Current live features
{
  "enemy_visible": true,
  "enemy_distance": "medium",
  "enemy_bearing": "center",
  "health_pct": 100,
  "ammo_pct": 80,
  "wall_ahead": false,
  "wall_left": false,
  "wall_right": false,
  "door_ahead": false,
  "item_visible": false,
  "item_nearby": false,
  "item_kind": "none",
  "item_bearing": "none",
  "last_action": "idle"
}
Decision trace 0 batches

Only the newest frame may set the action, and only if at most two ticks old. Older frames demonstrate batched classification; they never execute delayed commands. Held actions expire after 8 ticks. The last eight batches are retained.

Same arena. Three controllers.

Kills0
Damage taken0
Time survived0.0s
Shot accuracy
ControllerKillsDamageSurvivalAccuracyJev decisions/s
Human No model call
Jev
Random No model call

Same seed, 200ms simulation ticks, 90s limit. Jev holds its latest valid action between batches; network delays can leave it idle. These are session observations, not a controlled model benchmark. Jev decisions/s counts valid frame classifications per second of API time, including network; only the newest frame can control the arena. Switching mode saves this run and resets the arena.