Skip to content
achimbarczokPublic

About

๐Ÿ’ฃ Retro pixel-art arena game for 2โ€“4 players on a shared keyboard. Pure HTML5 Canvas + JavaScript โ€” one file, zero dependencies, just open and play.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’ฃBoomerboy

Retro Pixel Multiplayer Arena
A local multiplayer game for 2โ€“4 players on a shared keyboard. Pure HTML5 Canvas โ€” one file, zero dependencies.
Built with Kiro
๐Ÿ‡ฉ๐Ÿ‡ช Deutsche Version


Boomerboy Gameplay

Table of Contents

Features

  • ๐ŸŽฎ 2โ€“4 players on a single keyboard (local multiplayer)
  • ๐Ÿ’ฃ Bombs, chain explosions and destructible walls
  • โšก Power-ups (extra bombs, bigger range, speed boost)
  • ๐ŸŽจ Pixel-art retro graphics with HTML5 Canvas
  • ๐Ÿ“ฆ Zero dependencies โ€” a single HTML file
  • ๐Ÿ”„ Randomly generated maps for every round
  • ๐ŸŒ Bilingual โ€” German and English UI (auto-detected, switchable)

Note: The game auto-detects browser language (DE/EN). A toggle button is available on the start screen.

Quick Start

# Option 1: Just open the file
open index.html

# Option 2: Clone and open
git clone https://github.com/achimbarczok/boomerboy.git
cd boomerboy
open index.html

No server, no build, no installation. Works in any modern browser.

Controls

Player Move Bomb
๐Ÿ”ด Player 1 W A S D Space
๐ŸŸก Player 2 โ†‘ โ† โ†“ โ†’ Enter
๐ŸŸข Player 3 I J K L U
๐Ÿ”ต Player 4 Num8 Num4 Num5 Num6 Num0

Note: Player 4 requires NumLock to be enabled.

How to Play

  1. Select player count on the start screen (2, 3, or 4)
  2. Place bombs to destroy walls and eliminate opponents
  3. Collect power-ups hidden under destructible walls:
Power-Up Symbol Effect
Extra Bomb B (purple) +1 bomb capacity
Bigger Explosion E (orange) +1 explosion range
Speed S (cyan) +0.3 movement speed
  1. Last player standing wins the round
  2. Simultaneous elimination of all remaining players โ†’ draw

Architecture

Component Technology
Rendering HTML5 Canvas (pixel-art, imageSmoothingEnabled: false)
Game logic Vanilla JavaScript (ES Modules)
Game loop requestAnimationFrame with delta-time
Testing Vitest + fast-check (property-based)
Architecture Single-file (inline) + modular test version

Project Structure

โ”œโ”€โ”€ index.html              # Complete game (playable without build)
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ game.js             # Game logic as ES module (for tests)
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ board.test.js       # Board generation tests
โ”‚   โ”œโ”€โ”€ bomb.test.js        # Bomb & explosion tests
โ”‚   โ”œโ”€โ”€ player.test.js      # Player movement tests
โ”‚   โ”œโ”€โ”€ powerup.test.js     # Power-up tests
โ”‚   โ”œโ”€โ”€ input.test.js       # Input handling tests
โ”‚   โ”œโ”€โ”€ gamestate.test.js   # Game state tests
โ”‚   โ””โ”€โ”€ generators.js       # Shared fast-check generators
โ”œโ”€โ”€ screenshot/
โ”‚   โ””โ”€โ”€ gameplay.png
โ”œโ”€โ”€ package.json
โ””โ”€โ”€ vitest.config.js

Development

npm install              # Install dev dependencies
npm test                 # Run all tests
npm run test:watch       # Watch mode

Tests

165 tests including 18 property-based tests validating universal correctness properties.

npm test
 โœ“ tests/board.test.js (20)
 โœ“ tests/bomb.test.js (28)
 โœ“ tests/gamestate.test.js (22)
 โœ“ tests/input.test.js (40)
 โœ“ tests/player.test.js (31)
 โœ“ tests/powerup.test.js (15)
 โœ“ tests/setup.test.js (9)

 Test Files  7 passed (7)
      Tests  165 passed (165)

Property-based tests verify:

  • Board structure invariants (dimensions, borders, grid pattern)
  • Start zone placement for 2/3/4 players
  • Movement exactly one cell per step
  • Collision blocking (walls, bombs)
  • Explosion calculation with wall blocking
  • Chain explosion propagation
  • Player elimination on explosion cells
  • Power-up spawn validity and effect application
  • Simultaneous input independence
  • Win condition correctness

Built with Kiro

This project was developed using Kiro, an AI-powered IDE. Development followed the Spec-Driven Development methodology:

  1. Requirements as user stories with acceptance criteria
  2. Technical design with correctness properties
  3. Implementation plan with referenced requirements
  4. Property-based tests (fast-check) for verification

Spec documents are in .kiro/specs/.

License

MIT

About

๐Ÿ’ฃ Retro pixel-art arena game for 2โ€“4 players on a shared keyboard. Pure HTML5 Canvas + JavaScript โ€” one file, zero dependencies, just open and play.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages