Skip to content

jev-doom-agent

Browser Doom experiment where two WebAssembly engines play from the same start and Jev picks tactical macros from structured state.

Serviceprototype

Overview

PROMPT FPS runs two isolated instances of the real Chocolate Doom 3.1.1 engine compiled to WebAssembly, playing the same Freedoom map from the same initial state. Each step, a Jev Choice (or a clearly labelled deterministic offline policy) selects a tactical macro, and a local motor controller turns it into movement, turning, firing, weapon or use inputs. Jev receives structured game state such as health, ammo, coordinates and visible monsters and pickups, not pixels.

The server validates choice, probabilities and confidence; failed or low-confidence calls are visibly marked FALLBACK and never silently replaced, and offline mode permanently shows 'OFFLINE SIMULATED POLICY — NOT JEV'. The TypeSafe key is sent once to the local server, kept only in memory and removed on disconnect. It ships only Freedoom, and includes unit, schema, policy and controller tests, a Chromium smoke test and video capture.

What the decision model decides

TypeQuestionAnswers
ChoiceWhich tactical macro should the player execute next?—

How it works

  1. Engine bridge exposes health, armour, ammo, position and visible entities
  2. Browser converts observations to a bounded tactical schema
  3. Jev chooses a macro; validate confidence or mark FALLBACK
  4. Motor controller executes the macro as Doom inputs

Strengths

  • Same-start comparison of two players
  • Honest labelling of fallback and offline modes
  • Key held only in memory

Caveats

  • Experiment, not a game AI product
  • Live play requires a TypeSafe key

Getting started

`npm install && npm run dev`, open http://127.0.0.1:5173/compare, click Connect Jev and paste a TypeSafe key.

At a glance

Type
Service
Status
prototype
Language
TypeScript
Runtime
Browser (Chocolate Doom WASM) with Node/Vite server
Has code
yes
Has tests
yes

Use cases and integrations

How curated lists describe it

  • Browser-native Doom with Chocolate Doom WASM, spatial state, and live decision telemetry.

    AnotiaWang/awesome-decision-models
  • A browser Doom experiment comparing Jev-controlled players from the same initial state.

    logicrw/awesome-jev-projects
  • A browser-native Doom agent experiment with structured spatial state, composable AI controls, live decision telemetry, and a Chocolate Doom WebAssembly runtime.

    hellogumbo/awesome-jev

Frequently asked questions

What does Jev decide?

Which tactical macro the player should run next.

Does Jev see the screen?

No, it receives structured state from the engine, not pixels.

What if Jev fails?

The step is visibly marked FALLBACK; it is never disguised as a Jev decision.

Related projects

  • Observable browser stealth game where Jev supplies guards' typed threat, suspicion and intent judgments while code owns the world.

    AppprototypeTypeScript
  • Local dashboard to watch Jev play Freedoom via ViZDoom, showing choices, probabilities, latency and cost with spending bounds.

    ServiceprototypePython
  • AI life-and-civilization simulation where Jev makes every person's next action as an auditable Choice and LLMs only plan.

    ProjectprototypeJavaScript
  • Source for browser chess and Chess960 where code computes each legal move's facts and Jev picks one per turn as a typed Choice.

    ProjectproductionTypeScript
  • Browser 1v1 sniper arena where Jev reads match state about 9 times a second and chooses movement, aim, ADS, firing and jumping.

    ServicebetaTypeScript
  • Instrumented 2048 web lab where every move is a Jev Choice over four directions, with probabilities, latency and cost shown live.

    ProjectbetaTypeScript