Playground/Jev plays Doom
API ACTIVITY

Usage & budget

Your TypeSafe API key

Import your key to override the shared server default.

Saved on this browser until removed or site data is cleared. Masked on screen; sent only with Jev requests through this app. The saved value is never displayed.

Connecting
Reactive decisions · browser arena

JevDoom.

Ten actions. One tiny decision at a time. Play the first-person 3D shooter, then hand the controls to Jev.

WORKSPACE GUIDE

Jev plays Doom

Enter JevDoom’s fullscreen 3D arena and compare human, Jev and random play.

Arena stateAllowed actionsOne game tick

What you provide

An original arena, controller mode, and structured game state. Human play uses keyboard or touch controls.

What happens

Jev chooses among permitted actions, or a human or seeded random controller drives the simulation. Game rules apply the action to the current state.

What you get

The arena view, run statistics, and a decision log. Jev receives structured observations rather than screenshots.

Walk through a run

  1. 01

    Enter the arena

    Play with the keyboard or touch controls; fullscreen is available.

  2. 02

    Compare controllers

    Switch between human, Jev, and seeded random control.

  3. 03

    Inspect a decision

    Pause and review the observed state, permitted action, and run log.

Try this

Play a few steps, pause to inspect the state, then compare Jev and random controllers under the same setup.

Execution limits

JevDoom is an original game with no Doom engine or assets. Jev sees structured state, not screenshots.

Explore the example. Check the evidence.
JevDoomTINY BOT. BIG TROUBLE.
SECTOR 01 A LITTLE CHAOS, CLASSIFIED.TypeSafe AI · Powered by Jev
Who is in control?
JEV / SECTOR 01PAUSED · HUMAN
Initializing 3D arena…
Tactical map+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. Drag the 3D view to turn; click or tap to fire.

Changing controls or chaos starts a fresh run. The optional tactical 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 90° horizontal 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.