Document debug console in help manual and README
This commit is contained in:
1 parent
3f76998fab
commit
a7e48a0465
6 files changed
+42
-33
No files matched your search
+10
-6
@@ -14,12 +14,7 @@ MeatSlicer is an endless top-down arena roguelite. You are the Butcher, descendi
|
||||
| [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 |
|
||||
|
||||
For developers:
|
||||
|
||||
| Doc | Contents |
|
||||
|---|---|
|
||||
| [Debug Console](dev-debug.md) | Hidden dev-only cheat/inspection toolset (backtick `` ` `` key, `--dev` flag): all 8 tabs, run tainting, stat-rebuild internals |
|
||||
| [Debug Console](dev-debug.md) | In-game cheat/inspection toolset (backtick `` ` `` key, `--dev` flag): all 8 tabs, run tainting, stat-rebuild internals |
|
||||
| [Changelog](CHANGELOG.md) | Release history by version |
|
||||
|
||||
### Quick numbers
|
||||
@@ -64,6 +59,15 @@ 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.
|
||||
|
||||
+4
-3
@@ -1,7 +1,8 @@
|
||||
# Debug Console (dev only)
|
||||
# Debug Console
|
||||
|
||||
A hidden in-game cheat / inspection toolset. Not linked from the player-facing
|
||||
help manual — it is meant to stay undiscovered in normal play.
|
||||
An in-game cheat / inspection toolset. It is gated behind a dev launch flag so
|
||||
it doesn't interfere with normal play, and it's documented here because the
|
||||
game is still in development — testers and players are welcome to use it.
|
||||
|
||||
## Enabling it
|
||||
|
||||
|
||||
+22
-22
@@ -6,32 +6,32 @@
|
||||
<meta name="theme-color" content="#0a0305">
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 64 64%22><text y=%2252%22 x=%2250%22 text-anchor=%22middle%22 dominant-baseline=%22middle%22 font-size=%2252%22>🔪</text></svg>">
|
||||
<title>MEATSLICER</title>
|
||||
<link rel="stylesheet" href="css/style.css?v=49">
|
||||
<link rel="stylesheet" href="css/style.css?v=51">
|
||||
</head>
|
||||
<body>
|
||||
<div id="wrap">
|
||||
<canvas id="game" width="960" height="640"></canvas>
|
||||
</div>
|
||||
<script src="js/utils.js?v=49"></script>
|
||||
<script src="js/state.js?v=49"></script>
|
||||
<script src="js/input.js?v=49"></script>
|
||||
<script src="js/sfx.js?v=49"></script>
|
||||
<script src="js/sfxbank.js?v=49"></script>
|
||||
<script src="js/audio.js?v=49"></script>
|
||||
<script src="js/sprites.js?v=49"></script>
|
||||
<script src="js/particles.js?v=49"></script>
|
||||
<script src="js/weapons.js?v=49"></script>
|
||||
<script src="js/bullets.js?v=49"></script>
|
||||
<script src="js/pickups.js?v=49"></script>
|
||||
<script src="js/items.js?v=49"></script>
|
||||
<script src="js/perks.js?v=49"></script>
|
||||
<script src="js/enemies.js?v=49"></script>
|
||||
<script src="js/bosses.js?v=49"></script>
|
||||
<script src="js/rooms.js?v=49"></script>
|
||||
<script src="js/player.js?v=49"></script>
|
||||
<script src="js/hud.js?v=49"></script>
|
||||
<script src="js/help.js?v=49"></script>
|
||||
<script src="js/debug.js?v=49"></script>
|
||||
<script src="js/main.js?v=49"></script>
|
||||
<script src="js/utils.js?v=51"></script>
|
||||
<script src="js/state.js?v=51"></script>
|
||||
<script src="js/input.js?v=51"></script>
|
||||
<script src="js/sfx.js?v=51"></script>
|
||||
<script src="js/sfxbank.js?v=51"></script>
|
||||
<script src="js/audio.js?v=51"></script>
|
||||
<script src="js/sprites.js?v=51"></script>
|
||||
<script src="js/particles.js?v=51"></script>
|
||||
<script src="js/weapons.js?v=51"></script>
|
||||
<script src="js/bullets.js?v=51"></script>
|
||||
<script src="js/pickups.js?v=51"></script>
|
||||
<script src="js/items.js?v=51"></script>
|
||||
<script src="js/perks.js?v=51"></script>
|
||||
<script src="js/enemies.js?v=51"></script>
|
||||
<script src="js/bosses.js?v=51"></script>
|
||||
<script src="js/rooms.js?v=51"></script>
|
||||
<script src="js/player.js?v=51"></script>
|
||||
<script src="js/hud.js?v=51"></script>
|
||||
<script src="js/help.js?v=51"></script>
|
||||
<script src="js/debug.js?v=51"></script>
|
||||
<script src="js/main.js?v=51"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -105,6 +105,10 @@ function drawHelpControls(ctx, px, py) {
|
||||
'ENTER / SPACE / CLICK — START RUN · R / ENTER — RESTART AFTER DEATH',
|
||||
'PICKUPS ARE COLLECTED BY WALKING OVER THEM — NO INTERACT KEY',
|
||||
] },
|
||||
{ head: 'DEBUG CONSOLE (DEV BUILD)', lines: [
|
||||
'` / ~ — CHEAT & INSPECTION PANEL · ENABLE WITH --dev OR ?dev=1',
|
||||
'SET STATS / ITEMS / PRESSURE, SPAWN ENEMIES & BOSSES — SEE docs/dev-debug.md',
|
||||
] },
|
||||
], HELP_PANEL.w - 80);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -111,7 +111,7 @@ const SfxBank = {
|
||||
if (this.buffers.has(name) || this.pending.has(name) || this.failed.has(name)) return;
|
||||
const file = this.FILES[name];
|
||||
if (!file || !this.ctx || typeof fetch !== 'function') return;
|
||||
const job = fetch('/assets/sfx/' + encodeURIComponent(file) + '?v=49')
|
||||
const job = fetch('/assets/sfx/' + encodeURIComponent(file) + '?v=51')
|
||||
.then(r => { if (!r.ok) throw new Error('HTTP ' + r.status); return r.arrayBuffer(); })
|
||||
.then(bytes => this.ctx.decodeAudioData(bytes))
|
||||
.then(buffer => this.buffers.set(name, this.trim(buffer)))
|
||||
|
||||
+1
-1
@@ -86,7 +86,7 @@ const Sprites = {
|
||||
const img = new Image();
|
||||
img.onload = () => { this.imgs[name] = img; if (--pending === 0) G.imagesLoaded = true; };
|
||||
img.onerror = () => { if (--pending === 0) G.imagesLoaded = true; };
|
||||
img.src = 'assets/' + name + '.png?v=49';
|
||||
img.src = 'assets/' + name + '.png?v=51';
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in new issue
Block a user