A browser-based 8-bit soccer game built with TypeScript, Vite, and Canvas.
Live game: https://dialmasterorg.github.io/SoccerGame/
Harrison's Road to the Cup is an arcade-style football game with pixel-art presentation, match flow, progression, career mode, boss encounters, save/profile systems, and unlockable upgrades.
This project is built around a modular architecture:
src/game/— match logic, AI, tuning, players, and world rulessrc/scenes/— menus, match screens, career screens, and UI flowsrc/meta/— saves, progression, and profile datasrc/art/— sprites, kits, venues, and rendering helperssrc/audio/— music and sound cuesdocs/superpowers/— design specs and feature plans
- 8-bit pixel-art presentation
- Match-based soccer gameplay
- Career / ladder progression
- Boss fights and special opponents
- Save/profile tracking
- Shop and upgrade systems
- Audio cues and music
- Test coverage via Vitest
The game is built for browser play and supports keyboard and gamepad input. On-screen prompts are the best guidance for exact controls in each screen.
Use the controls shown in-game for each screen, especially:
- Arrow keys / WASD for navigation and movement
- Enter / Space for confirm / start
- Esc for back / pause / cancel
Gamepad support is included in the input system. In the built-in sprite viewer, the repo documents debug controls as:
- A animation
- X kit
- B power form
- Y expression
- D-pad facing
For the main game, follow the prompts shown on screen.
The app includes a sprite viewer mode with the ?viewer query parameter. It shows a small on-screen HUD with the current animation and art controls.
Viewer controls:
- Keys: 1–5 animation · K kit · G power form · F facing · E expression
- Gamepad: A animation · X kit · B power form · Y expression · D-pad facing
This repo uses Vite 8, which requires Node.js 20.19+ or 22.12+.
- Node.js 20.19+ or 22.12+
- npm
npm installnpm run devThen open the local URL printed in the terminal.
npm run buildnpm testnpm run typechecknpm run dev— start the Vite dev servernpm run build— run TypeScript checks and create a production buildnpm run typecheck— type-check without buildingnpm test— run Vitestnpm run keepers— run keeper-oriented tooling or checksnpm run tryouts— run tryout-related tooling or checksnpm run sheet— run sprite sheet generation tooling
.
├── docs/
│ └── superpowers/
│ ├── plans/
│ └── specs/
├── src/
│ ├── art/
│ ├── audio/
│ ├── engine/
│ ├── game/
│ ├── meta/
│ ├── scenes/
│ ├── viewer/
│ ├── main.ts
│ └── ...
├── tools/
├── index.html
├── package.json
├── package-lock.json
├── tsconfig.json
├── vite.config.ts
├── .gitignore
└── README.md
The repository includes extensive planning docs under docs/superpowers/, including feature specs and plans for progression, save slots, stamina, boss fights, and career flow. These documents describe the broader design of the game and the implementation roadmap.
This project is organized around modular game systems and clean separation of concerns:
src/game/holds gameplay rules and AIsrc/scenes/handles screen flow and menu logicsrc/meta/covers save state and progressionsrc/art/covers rendering and sprite generationsrc/audio/handles cues and music
No explicit license file was found in the repository snapshot. Please confirm licensing terms before reusing, redistributing, or commercializing the project.
Contributions are welcome. Keep changes focused and validate with the relevant tests before submitting.