| status | draft |
|---|---|
| scope | meta |
- PITCH.md - the game pitch
- rules/ - the rules, the source of truth
- meta/ - the [[Backlog]], reviews and playtest procedure
- ideas/ - ideas out of the rules
- lore/ - [[LoreVariants|Lore variants]] and their stories
- games/ - [[games|Played games]] and the playtest report
- [[Docs]] - how the docs are kept: frontmatter, scopes, statuses and review items
- AGENTS.md - how to write and check the docs
A 4X strategy card game, see PITCH. The rules live in
rules/, the source of truth; the code follows them, see
ADR 0001.
npm install
npm run dev # client at http://localhost:5173
npm run server # game server at ws://localhost:2567, for online play
npm test # engine tests
make site # the site in dist/: game, pp/, legacy/, docs.html- Hot seat: two players at one screen, the screen is covered
between turns;
open handsplays without secrets - Online:
Create gamegives an invite link for the rival, the server holds the game, every player sees only their view ?seed=Nin the URL starts a reproducible hot-seat gameVITE_LOOK=ppbuilds the pixel perfect legacy look, served at/pp/, see ADR 0002VITE_SERVER_URLpoints the client to another server, a path like/colyseusis on the page host, as on the site
The board follows the look of the legacy prototype: your [[Home]] along the bottom with your [[Laboratory]] and [[Factory]] on the right, the rival's along the top and on the left; card colors and borders tell the players apart, the [[Field]] turns so that your [[Home]] [[Star]] is at the bottom.
The pixel perfect look at /pp/ is the legacy board as it was: the
first player's [[Home]] at the bottom right, hover a card to see it in
the Show box, hover a pile to fan it out, the panels show up at the
top right when needed.
- Click a card in your [[Hand]]: take it off to a [[Star]] you control, or start an action
- The action panel shows what is missing: pick the destination,
click participants on the [[Field]] or in [[Hand]], then
Perform - [[Play]] at least one card, then
End turn Undotakes back moves of the current turn that revealed nothingTablemode makes free moves for what the engine doesn't handle yet, every one is logged for both players
packages/engine: pure TypeScript rules, no DOM:apply(state, player, move)returns a new state or the broken rule,viewFor(state, player)hides what a player may not seepackages/client: Vue 3 + Vite, renders a view, sends movespackages/server: Colyseus room that runs the enginepackages/engine/src/data/deck.jsonis generated fromrules/Cards/Deck.md: runnpm run cardsafter editing the deckpackages/engine/src/scenario.tsholds the first duel setup, values the docs don't set yet are markedASSUMPTIONlegacy/is the previous prototype, kept for reference, with its own deps:cd legacy && npm ci && npx vite, served at/legacy/, its pages are listed there
This project is released under the terms of the CC BY-NC-ND license. Read more about the license.
Copyright ©2021-2024, Andrii Vasyliev (sol@hiqdev.com)
