A retro browser-based 6v6 soccer scrimmage game. Clone it, configure your team, and play.
Two teams of 6. You control one player at a time; all others are AI. Formations, auto-switching, and a hidden dice mechanic keep things interesting.
- Clone this repo
- Edit
src/team.config.js— set your team names, colors, and players (see Config Reference below) - Serve locally — ES modules require a server (opening
index.htmldirectly won't work):Then opennpx serve .http://localhost:3000in your browser. - Play — pick a player, pick a formation, kick off
Everything you need to change lives in src/team.config.js. No other files need editing.
export const TEAM_NAMES = {
HOME: 'Sharks', // your team name
AWAY: 'Jets', // opponent team name
};export const TEAM_COLORS = {
HOME: 0xFF0000, // red (hex number)
AWAY: 0xDDDDDD, // light grey
};Note: Away team color should be light (grey, yellow, white) for jersey numbers to be legible.
export const COACHES = [
{ name: 'Coach Riley', teamColor: TEAM_COLORS.HOME },
{ name: 'Coach Sam', teamColor: TEAM_COLORS.AWAY },
];Exactly 12 players required. Available hair styles: 'ponytail', 'long-down', 'pixie'. Hair colors: 'blond', 'brown'. Set shoe to a hex string for a fixed boot color, or null for a random color from the palette.
export const PLAYERS = [
{ name: 'Riley', hair: { color: 'brown', style: 'ponytail' }, shoe: '#FF0000' },
{ name: 'Sam', hair: { color: 'blond', style: 'pixie' }, shoe: null },
// ... 10 more players
];There's no build step — the game is plain HTML + ES modules. Any static host works:
- GitHub Pages — push to a repo and enable Pages in Settings
- Netlify / Vercel — drag the folder into their dashboard, or connect the repo
- Cloudflare Pages — connect the repo, no build command, output directory
/ - Anywhere else — upload the files; the only requirement is that the host serves ES modules with correct MIME types (any modern static host does)
Open tests/index.html in a browser via a local server.
| Key | Action |
|---|---|
| Arrow keys / WASD | Move controlled player |
| Space | Pass or shoot |
| Tab | Switch to next teammate |
| M | Toggle sound |
| Esc | Pause / timeout |