English · Deutsch
A local two-player stick-figure fighting game built with TypeScript and Canvas 2D. It combines deterministic 60 Hz combat with keyboard and gamepad controls, CPU opponents, training tools, replays, and multiple arenas.
- Local versus, CPU, and CPU-versus-CPU modes
- 33 standing, crouching, airborne, spin, tornado, and combo attacks
- Blocking, jumping, best-of-three matches, and combat meters
- Training mode, hitbox display, frame stepping, and animation preview
- Deterministic replay recording, import, and export
- Configurable keyboard and gamepad controls
- English and German interface, light and dark themes, and three arenas
- Node.js 22.12+ (22.x), 24.x, or 26+
- npm
npm ci
npm run devOpen the address shown in the terminal, usually http://127.0.0.1:5173.
| Action | Player 1 | Player 2 | Gamepad |
|---|---|---|---|
| Movement | W / A / S / D | Arrow keys | D-pad / left stick |
| Light / medium / heavy punch | R / T / Y | Numpad 7 / 8 / 9 | X / Y / RB |
| Left low / middle / high kick | F / G / H | Numpad 4 / 5 / 6 | A / unassigned / RT |
| Right low / middle / high kick | V / B / N | Numpad 1 / 2 / 3 | unassigned / B / unassigned |
| Pause | P | P | — |
Directions are relative to the opponent: 6 forward, 4 back, 2 crouch, and 7/8/9 jump. Use Backspace to restart a match. Controls can be reassigned in the game.
| Command | Purpose |
|---|---|
npm run dev |
Start the development server |
npm run build |
Type-check and create a production build |
npm run preview |
Preview the production build |
npm test |
Run tests in watch mode |
npm run check |
Run the complete validation suite |
src/simulation/— deterministic combat and match logicsrc/render/— Canvas rendering and animationsrc/data/— moves, poses, rules, and configurationtests/— unit and integration testsscripts/— data generators and browser smoke tests
This project is licensed under the MIT License. See LICENSE for details.
Contributions are welcome.
