a teammate can revive you
drag to move · right-drag onto another node to link/unlink · wheel to zoom
arrows nudge the whole node 1px · shift+arrows nudge just the icon
[ ] resize the icon · shift+[ ] resize the whole node
Every number in the game. Edits apply live and are saved to
src/tuning.overrides.json — tuning.js is never rewritten,
so your comments and defaults survive. restart
means it's cached at boot; next spawn means it
applies to things created from now on.
The level, as rooms. A room owns its pieces, spawners and triggers; anything
outside a room is a separate room. Saved to src/layers.json and pushed
live to everyone connected. No level at all is the normal state — the
arena is not a room.
1–5 tools · H hitboxes · Ctrl+Z/Ctrl+Shift+Z undo, redo · Ctrl+C/V/D copy, paste at the cursor, duplicate · Ctrl+A everything on this layer · Ctrl+[ Ctrl+] move it a storey · Ctrl+S save · shift-click or drag a box to take several · shift+arrows nudges 10 · hold ALT to ignore every snap.
Your wave GROUPS. Each is a preset — its enemies, and the waves it may spawn on
(7, 3-7, 10+, all). A wave draws one of the groups
allowed on it, by weight. A balanced group is pushed to the wave's target threat
for whoever is in the arena — swapping some bodies for harder ones (or easier) and adding or removing
— while an unbalanced one spawns exactly as written. roll shows you what it would do. A wave no
group covers falls back to the endless formula. Saved to src/waves.json, live.