DOOM E1M1 — real id geometry, rendered by p‑bits

Not an arena — the actual E1M1 "Hangar" map from doom1.wad (467 vertexes, 475 linedefs, 85 sectors). Each screen column is cast as a ray against the real linedefs and walked front‑to‑back through a clip window, so real per‑sector floor/ceiling heights, steps and windows appear. That framebuffer is the bias field of a Potts lattice; chromatic block‑Gibbs relaxes into the image. Click the screen and walk id's real level.
sampler verified vs THRML
Δenergy 0.00 (behavioural equiv.)
real geometry → p‑bit denoise
render β 4.5
HEALTH
100
ARMOR
0
AMMO
50
WEAPON
PISTOL
KILLS
0/0
click to enter — WASD move · arrows turn · Space fire
SAMPLER — live chromatic block‑Gibbsthe picture above is this, read out
β inverse‑temp4.50
sweep #0
cells updated / sweep0
state transitions / sweep0
system energy E
ΔE / sweep
even / odd block0 / 0
readout match100%
H = data — + coupling — = —
xᵢ ← argmaxₖ [ β·rewardₖ + Gumbel ]  ·  rewardₖ = −bias(k) + J·Σⱼ[xⱼ=k]  ·  J=0.32, K=64 (Potts, categorical)
probe …

      
Every number is read straight out of the running sampler each frame — not invented UI metrics. Drop β and watch state transitions explode and energy climb as the lattice boils; raise it and it descends back. Hit Show changed cells to see exactly which p‑bits the sampler is still moving. This Gibbs conditional is the one verified against Extropic’s THRML in tsu_engine.py (Δenergy 0.00).

Controls

WS move · /AD turn · QE strafe
Space fire · R open door · Shift run
1234 — select weapon (once picked up)
Render temperature — β4.50
🔥 β=0 pure noiselock ❄
Geometry certainty — βvis (raycast‑as‑inference)12.0
🌊 walls boilcrisp raycast ■
Brightness — display gain1.40×
🌑 dimbright ☀️
NPC intelligence — hunt βcunning
⏹️ off · feralnightmare / optimal
Monster move speed1.00×
🐌 crawlblitz ⚡
render sweeps/s
readout match
fps
p-bits
Developer / proof mode: Show bias field = the raycast target the p‑bits relax toward; changed cells = the p‑bits the sampler moved last sweep; Freeze + Step to advance one Gibbs sweep at a time; Inspect then click any pixel to read its live conditional P(k). Drop β→0 and the world dissolves into pure categorical noise; drop βvis and even the geometry boils — which wall you see is sampled too. A static image can't do either.