A local multiplayer collect & survive game for 2–5 players. Built with TypeScript, Vite, and Canvas 2D — no frameworks or physics engines. Particle physics inspired by The Powder Toy.
Players compete in a 2D arena with rising lava, collecting gems, shooting fireballs, and trying to be the last one standing.
pnpm install # install dependencies
pnpm dev # dev server
pnpm build # production build → dist/
pnpm preview # preview production build- Objective: Collect the most gems before the round ends
- Round flow: Lava rises from the bottom, players collect gems, dodge hazards, and shoot fireballs at each other
- Death: One life per round — dead players drop all their gems
- Scoring: Gems accumulate across rounds; most total gems wins the match
- Water Bomb — Dumps water that solidifies lava into a temporary platform
- Ammo Crate — Refills fireball ammo
| Action | Input |
|---|---|
| Move left / right | Left stick or D-pad |
| Jump | Left stick up, D-pad up, or A button |
| Crouch / drop | Left stick down or D-pad down |
| Shoot | X button |
| Player | Left | Right | Up/Jump | Down | Shoot |
|---|---|---|---|---|---|
| P1 | A | D | W | S | F |
| P2 | ← | → | ↑ | ↓ | / |
| P3 | J | L | I | K | H |
| P4 | Num4 | Num6 | Num8 | Num5 | Num0 |
| P5 | B | M | G | V | N |
Controller input takes priority over keyboard when both are active for the same player slot.