# MeatSlicer: A Butcher's Descent **Clear, harvest, descend.** MeatSlicer is an endless top-down arena roguelite. You are the Butcher, descending floor by floor through an infinite meat-locker hell: clear rooms of flesh-hungry horrors, draft mutations, stack grotesque passive items into a broken build, kill the boss, take the stairs. The descent never ends — the only question is how deep you get before you're butchered, and whether your score becomes the new best cut. ## Documentation index | Doc | Contents | |---|---| | [Gameplay Guide](gameplay.md) | Core loop, controls, player stats, rooms & floors, pickups, leveling, scoring, pressure/difficulty systems, HUD | | [Weapons](weapons.md) | All 16 weapons with exact stats, drop tiers, and damage math | | [Items](items.md) | All 46 passive items, stacking/tier rules, proc numbers, synergies | | [Perks](perks.md) | All 23 Mutation Draft perks, XP curve, draft mechanics | | [Enemies](enemies.md) | All 11 enemy types, elites, drops, wave and scaling formulas | | [Bosses](bosses.md) | All 9 bosses: rotation, scaling, full attack patterns, counters | | [Debug Console](dev-debug.md) | In-game cheat/inspection toolset (backtick `` ` `` key, `--dev` flag): all 8 tabs, run tainting, stat-rebuild internals | | Development Guide | Architecture, build/test workflow, Electron packaging, asset and audio pipelines, versioning, releases, and Git practices — maintained in Serena memory (`.serena/memories/meatslicer-development.md`), not this repo | | [Changelog](CHANGELOG.md) | Release history by version | ### Quick numbers - **16 weapons** (1 infinite-ammo sidearm + 15 special weapons across 4 tiers) - **46 passive items** (stacking, tier cap IX) - **23 perks** (draft 1 of 3 per level-up) - **11 enemy types** (+ elite variants) - **9 bosses** (fixed rotation, one per floor) - **∞ floors** (permadeath, endless descent, high-score chase) ## Running the game ### Browser (quickest) ``` play.bat ``` Serves the game locally at and opens it. Close the minimized server window to stop. ### Electron (desktop app) ``` npm install npm start ``` ### Build a distributable ``` npm run dist ``` Packages a Windows zip via electron-builder into `dist/`. ### Tests ``` npm test ``` Runs the smoke test (`test/smoke.js`). ### Debug console An in-game cheat/inspection panel is available in dev builds. Launch with the dev flag — `MeatSlicer.exe --dev`, `npm start -- --dev`, or `play-dev.bat` / `http://localhost:8123/?dev=1` in a browser — then press the **backtick `` ` ``** key in play or pause. Eight tabs cover health, weapons, items, perks, pressure, spawning enemies/bosses, timescale, visualizers, and a live stats readout. Using mutating actions voids the run's best score. See [Debug Console](dev-debug.md). ## Tech overview - **Stack:** plain JavaScript + HTML5 canvas, no framework. Electron wrapper for desktop. - **Entry:** `index.html` loads `js/main.js` and the game modules directly (no bundler). - **Code layout** (`js/`): `main` (loop, screens), `state` (global state), `rooms` (floor gen), `player`, `input`, `weapons`, `bullets`, `items`, `perks`, `pickups`, `enemies`, `bosses`, `hud`, `sprites`, `particles`, `audio`, `sfx`, `sfxbank`, `utils`. - **Persistence:** `localStorage` only (best score, volumes, auto-draft setting). ## The fantasy in one paragraph Rooms lock behind you. The meat waves come in threes. Elites gleam gold and drop the good stuff. Set the Pressure Dial before you descend — the gauge climbs the longer you stay flawless, and every point of score rides it. Every boss — saw, crown, mother, flenser, choir, father, auger, scald — cycles back around, deeper and meaner, until the meat finally wins. Take the meat. Take the stairs.