The Undercroft

Four floors down, and the way out is at the bottom — and you don't have to go alone: a second player can DROP IN at any moment on WASD + F, coin-slot fashion, wearing the next class along. Pick your class — Knight (slow, shielded), Barbarian (steady, strong), Archer (fast, fragile) or Wizard (his potions detonate) — and descend. P1: arrows + Z/Space. P2: WASD + F. Everyone moves fast now — the shades had to be quickened to keep up. Monsters don't wander in: they pour from generators, and killing the source, not the stream, is the strategy. Your life force drains just for being here — food is time. Keys open gates, and the gates count: floor two's gate wants two keys. Treasure is score. The vault's stairs go up, into daylight.

What makes it Gauntlet

  1. The generators — the engine's new Generator entity: it pours Stalker hunters into the world every few ticks up to a cap, takes three hits, flashes as it weakens, and plays its death (the Outcomes layer) when it cracks. Its brood joins world.mobs directly, so shots, shoves and every other system see them like natural-born mobs.
  2. The drain — no timer, something worse: one shell point every six seconds, always. Food restores three. Every route decision is a food calculation, which is the whole Gauntlet feeling in one mechanic.
  3. A class is three choices — look (roster character) + feel (a top-down profile) + gun (cadence and shot), one table row each in main.js. The wizard's only "spell" is that his potion detonates generators outright — one if.
  4. Keys are arithmetic — the engine's cumulative gate demands (requires: { tag: 'key', count: n }) do dungeon-door duty unchanged. Keys carry across floors; the vault wants all four.
  5. Built for a party — and now it IS one — phase two shipped: the engine's World seats any number of players (world.addPlayer), hunters hunt whoever's nearest, any hero collects for the party, and a fallen partner respawns at the floor's entrance without resetting the room under the survivor. The shared screen follows the party's centre. Phase three — online rooms over deterministic lockstep — is next, and everything here already runs on the disciplines it needs.

Download & remix

Both files live in the SOURCE panel — edit and RUN ▶. Take them home: main.js · rooms.js · engine bundle. Remix ideas: a fifth floor (copy a builder, add an entry to FLOORS); crueller drain (DRAIN_EVERY = 150); a generator that spawns hoppers; or a pacifist run — raise every gate's key count and hide more keys.