A Football Simulation Game built with Phaser 3, React, and Vite.
- Football simulation with offensive and defensive formations
- Drag-and-drop player positioning
- Run and Pass play types
- Touchdown scoring and possession changes
- Configurable defensive formations (4-3, 3-4, etc.)
Play it now: buzzbowl.org
Test in-progress features: brettkulp.github.io/buzzbowl
Join the Discord: buzz-bowl channel
Interested in contributing? Please read our Contributing Guide.
- Node.js v18 or higher (recommended: v20+)
- npm (comes with Node)
-
Clone the repository:
git clone https://github.com/BrettKulp/buzzbowl.git cd buzzbowl -
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser to the URL shown in the terminal (usually
http://localhost:5173)
npm test # unit + headless scene tests (Vitest)
npm run test:e2e # browser smoke tests (Playwright)npm run test:e2e needs a browser once: npx playwright install chromium. It starts its own dev
server, so you don't need npm run dev running.
The suite has three layers: unit tests for the game rules, a headless Phaser boot that checks the scene actually assembles, and Playwright smoke tests that click through the menus in a real browser. See CONTRIBUTING.md for what belongs in each.
The shared game logic lives in src/game/scenes/BaseGameScene.js. The two playable modes,
FreePlayScene and StandardGameScene, extend it.
src/game/scenes/BaseGameScene.js- Shared game scene (field, players, input, update loop)src/game/scenes/StandardGameScene.js- Standard mode (quarters and a game clock)src/game/scenes/FreePlayScene.js- Free play mode (manual possession, no clock)src/game/FormationManager.js- Manages offensive/defensive formationssrc/game/PlayStateManager.js- Handles play state (start, pause, tackle, etc.)src/game/Player.js- Player entity with physics and movementsrc/game/config.json- Game configuration (field dimensions, colors, formations)
Firebase is used only for hosting and testing deployments. You do not need Firebase to develop or contribute to the game. Simply run npm run dev and all game features will work locally.
This project is licensed under the PolyForm Noncommercial License 1.0.0. See LICENSE for details.
Noncommercial use (personal projects, education, hobby use, etc.) is free and encouraged.
Commercial use (selling, SaaS, revenue-generating products) requires a separate commercial license. If you're interested in a commercial license, please open an issue with details about your intended use.