Helldrop gameplay: Doom Guy fighting through an isometric E1M1 while demons rain down

Helldrop

Reverse-Doom — he fights toward the exit, you drop the demons that stop him

An AI Doom Guy storms real Doom levels, rendered isometrically. Your job is the other side of the slaughter: rain down zombies, imps, barons and arch-viles and spend his souls to slam the doors — kill him before he hits the exit switch.

WebAssembly raylib 6 / C Freedoom WAD isometric Doom
▶ Play in browser Source

Runs entirely client-side · the full 35 Hz native sim, compiled to wasm

Doom, played from Hell's side

Helldrop inverts Doom. The marine is the AI — he routes the level like a speedrunner, plays the door and lift triggers, loots ammo off the corpses, and grinds toward the exit switch on a threat ledger that ranks every monster by how badly it can hurt him.

You are the invasion. Demons cost souls — a tithe that drips faster the closer he gets to the exit, and spikes by one per point of damage you land on him. Drop a squad in his path, detonate a barrel under his feet, or recall a lift out from under him with Hell's Hand. Drop into his line of sight and it costs extra and telegraphs; drop in the dark and it's instant and cheaper. Unaided, he clears the map and exits. Your drops are the only thing that put him in the ground — and the mugshot bloodying on his status bar is your progress bar.

It runs right here

The entire native engine — WAD decoding, the deterministic sim, the A* navigation, the authentic Doom sprites and status bar — is compiled to WebAssembly with Emscripten and runs at 60 fps in your browser. No install, nothing to download but the page. A single fully-unlocked level (E1M1) with the whole bestiary and both Hell's Hand verbs ready to go.

▶ Descend into E1M1

The systems you're fighting

The Threat Ledger

His targeting brain. Class weights (arch-vile 4×), time-to-melee, charging lost souls spike, live projectiles bump their owner, infighting pairs get deprioritized — “let them work.”

The Pain Tithe

4 → 10 souls/s

Drops cost souls. The drip ramps with his progress to the exit, +1 per point of damage you deal. Drops in his sight cost ×1.5 and telegraph; hidden drops are instant.

Hell's Hand

F slams/holds a door or recalls a lift; V detonates the nearest barrel — live, shootable, chain-reacting entities. Each on a 12-second cooldown.

The Corpse Bank

Corpses persist as a resource. The arch-vile raises non-gibbed bodies at half HP — so overkill past -spawnhealth gibs them beyond raising, the vanilla rule, now a counterplay hook.

Darkness is terrain

Monsters under light 120 are spotted at half range and score lower on his ledger. Spectres carry their own darkness anywhere. Ambush him from the shadows.

The Doomcam

C opens a 320×200 first-person feed from his eyes — the same render pass with a perspective camera. On his death it takes the screen, drops to the floor, and fades red.

Authentic everything

Every sprite, sound, mugshot and digit decodes from the WAD via the Doom picture format. Point it at id's IWAD and it looks exactly like Doom; ships on the BSD Freedoom base.

A full bestiary

Zombieman through spectre — vanilla-ish dice, hitscan tracers, projectiles, the real infighting retarget rule, corpses and clip-drop looting. Ten fiends a keypress away.

How you play it

Pick a fiend (zombieman … spectre)1 – 9, 0
Drop it at the cursorLMB
Slam a door / recall a liftF
Detonate the nearest barrelV
Toggle the doomcamC
Know-Your-Enemy codexTAB
Pan / zoom / rotate the viewdrag · scroll · Q E
Restart the run (deterministic)G

The browser build runs a single fully-unlocked level so every fiend and both Hell's Hand verbs are live from the first second. The native build adds the full Knee-Deep in His Blood campaign (E1M1→E1M8) with a per-level bestiary unlock.

Under the hood

Engineraylib 6.0, built from source · pure C11
Web buildEmscripten → WebAssembly + WebGL 2, ~470 KB wasm
Geometryfloors tessellated from sector loops (libtess2) — no NODES/SEGS
Simfixed 35 Hz deterministic tick; render lerps between tics
NavigationA* over convex floor triangles, self-healing around stuck edges

Kill him before the exit switch

No install. The whole engine is in the page — click and drop.

▶ Play Helldrop Source on GitHub