Skip to content

Repository files navigation

Chairman's Rise

A retro-styled football club ownership simulation for PC. Take over any of 1,719 real English pyramid clubs — Premier League to Step 7 county football — or found your own. Appoint the right people, set the budgets, grow the commercial side, keep the town on your side, and climb all eleven levels.

Club and league names are real (2025-26/2026-27 memberships, compiled in src/game/data/pyramid/). Everything else — finances, people, badges, kits, sponsors — is generated from researched per-level averages (docs/economy-research.md), not real clubs' data. Player names are fictional.

Run it

npm install
npm run dev        # development server on http://localhost:5173
npm run build      # production build in dist/
npm run preview    # serve the production build

Optimised for a 16:9 desktop display (1280×720 or larger). Saves live in the browser's localStorage: three manual slots plus a weekly autosave.

Playing

  • Advance Week (bottom-left) plays the next week: match, money, news, decisions. Everything else is preparation.
  • Decisions arrive in the Inbox and wait until you answer them.
  • Insolvency or a collapse in supporter trust ends your ownership.
  • A short in-game introduction covers the first five minutes.

Testing

npx tsx scripts/simtest.ts

Runs a headless soak: three full seasons for each starter club through the real reducer (hiring, sponsors, events, promotion/relegation, save-roundtrip determinism, forced-insolvency game over) and asserts invariants.

Architecture

src/game/types.ts        All state types + the Action union (single contract)
src/game/engine/         Pure game logic — no React
  newgame.ts             State factory for presets & custom clubs
  week.ts                The advance-week orchestrator
  match.ts               Match simulation & commentary
  finance.ts             Weekly ledger processing
  eventsEngine.ts        Decision events (static + dynamic)
  reducer.ts             All player actions (clone-then-mutate)
  season.ts, save.ts, selectors.ts, constants.ts (all balance tuning)
src/game/data/           Content — people, sponsors, campaigns,
                         events (eventsCore + packs A/B/C), headlines
src/game/data/pyramid/   The real English pyramid: 99 divisions, 1,719 clubs
                         (one file per level group + lane-routing helpers)
src/game/engine/levelEconomy.ts  Researched per-level money & rules tables
src/state/               React context (game state + navigation)
src/ui/theme.css         The retro-broadcast design system
src/ui/art/              Procedural SVG: badges, kits, portraits, stadiums,
                         sponsor logos, trophies
src/ui/screens/          One file per screen

Adding content

  • Events: add an EventDef to any pack in src/game/data/eventsPack*.ts.
  • Clubs/leagues: extend the pools in src/game/data/clubs.ts.
  • Campaigns/sponsors: campaignsData.ts / sponsorsData.ts.
  • Balance: nearly every number lives in src/game/engine/constants.ts.

Packaging for Windows

The game is a self-contained static build (dist/), so it wraps cleanly with Tauri (small binaries) or Electron. No server, accounts, API keys or network access required at runtime.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages