Files
super-auto-pets-board-game/README.md
T
2026-07-22 23:07:29 -04:00

2.8 KiB
Raw Blame History

Super Auto Pets: The Board Game — Online

A web app for playing the Super Auto Pets board game remotely. 1v1 for now; the engine is built to grow to more players.

Stack

  • Backend: Go (stdlib-first). Pure game engine in internal/game, WebSocket sync via coder/websocket, persistence as JSON blobs in SQLite (modernc.org/sqlite, no cgo).
  • Frontend: React + Vite + TypeScript in web/. DOM/CSS card rendering and battle animations.
  • Tasks: mise (mise.toml).

Quick start

mise run install-web   # once: npm install
mise run serve         # build frontend + server, run on :8080

Open http://localhost:8080, host a game, and join from another browser (or incognito window) with the 5-letter code.

Development

mise run dev           # Go server on :8080 + Vite hot reload on :5173
mise run test          # Go tests (game engine)
mise run check         # go vet + frontend type-check

During development open the Vite URL (http://localhost:5173); it proxies /api (including the WebSocket) to the Go server.

Configuration

Set via environment or a .env file (see .env.example):

Variable Default Purpose
DATA_DIR data Directory holding the SQLite DB
PORT 8080 HTTP port
STATIC_DIR web/dist Built frontend to serve

Rules implemented

Six rounds, each with its own shop tier deck. Per round:

  1. Shop — each player has 3 coins and players alternate actions, 1 coin each: buy one of 4 face-up cards; discard any number of hand cards (each becomes an 🍎 apple, +1 power food); or trade in 3 same-suit pets to pick 1 of the top 2 cards of the next tier's deck (the other goes under that deck). Passing forfeits remaining coins.
  2. Cleanup — anyone holding more than 5 pets must discard down to 5 (discards become apples).
  3. Arrange — players secretly order their decks. Food cards apply to the next pet after them; trailing foods are wasted.
  4. Battle — automatic. Front pets simultaneously deal their full power to each other as damage markers; a pet with markers ≥ power dies (attack power never drops while wounded). Last player with pets standing wins the round: 1 trophy for rounds 15, 2 trophies for round 6. Draws award nothing.

Most trophies after round 6 wins. Pet effects are not yet implemented (the card model carries an effect field for when they land).

Layout

cmd/server/          entrypoint
internal/game/       rules engine (pure, fully tested)
internal/server/     HTTP + WebSocket rooms
internal/store/      SQLite persistence
internal/env/        .env loading
web/                 React frontend