Coopgame — kooperativní stolní hra a laboratoř
Hratelný prototyp kooperativní stolní hry s laboratoří pro ověřování pravidel. Existuje jediný engine a jediná aplikace. Téma a jazyk (čeština, angličtina) se přepínají v hlavičce. Všechno, co hra umí, jde zahrát s tištěnou sadou: nejvýše 50 karet, 6 figurek, 12 žetonů úsilí a 24 dalších žetonů. Konfiguraci, která se do sady nevejde, engine odmítne. Digitální jsou jen nástroje analýzy: boti, externí agenti, metriky a inspektory.
Zadání a dodatky jsou v docs/spec/: 00 původní zadání, 01 simulace a experimenty, 02 fyzický model, 03 průzkum a skryté informace. Dodatky zadání rozšiřují, nenahrazují.
Spuštění
Vyžaduje Node.js 22.22.2+, 24.15.0+ nebo 26+. Hra ani server nemají běhové závislosti; npm ci instaluje jen jsdom pro testy.
npm ci
npm run dev # http://localhost:5173
npm run check # syntaxe a všechny testy
npm run simulate -- 100 ring6 output/batch.json --strategy=cooperative
npm run experiment -- examples/tabletop/holdout.json output/experiments/holdout.json
npm run print -- output/print/data.json # data pro PDF, viz docs/game.md
npm run build && npm run preview # web jako na Cloudflare Pages, viz docs/deploy.md
Server naslouchá jen na 127.0.0.1; port změníte proměnnou PORT. Aplikace je statické HTML, CSS a ES moduly; soubor index.html otevřený přímo z disku nespustí workery laboratoře.
Co najdete na stránce
- Stůl: mapa z karet míst, figurky, situace, společné úsilí, karta kol a cíle, prostory postav a transportu. Akce jsou dvoukrokové: vyberete ji a zaplatíte až potvrzením. Figurky lze přetahovat. K dispozici je Vrátit a Znovu.
- Téma a jazyk: Piráti, Společná výprava a Neutrální laboratoř (bez příběhu, kódování A● B■ C▲ D◆ E★), vše česky i anglicky. Přepnutí přehraje stejnou partii s jinými názvy.
- Nová hra: scénáře (tři herní a pět laboratorních), mapa, rozpočet, role, typy karet, balíček Výprava a varianty průzkumu.
- Hráči a boti: každou postavu hraje člověk nebo strategie. Tah bota a „Boti dohrají kolo“ platí stejné úsilí a vidí jen to, co jejich postava.
- Externí agent: kontext vybrané postavy se zkopíruje pro LLM nebo jiný program a jeho odpověď
{actionId, reason}se ověří a provede. Zdůvodnění se ukládá mimo stav hry a exportuje se s trajektorií. - Audit a tisk: fyzická reprezentace každého pole stavu i nastavení, počty komponent a tisk celé sady.
- Návrh karty: JSON nové karty se ověří proti gramatice obsahu i tištěné sadě a zobrazí se tištěný líc. Karta se do hry nepřidá.
- Laboratoř: předvolby experimentů, strategie, sweepy parametrů, párová porovnání a metriky průzkumu.
- Rozhodnutí a trajektorie: odhad pokračování, rozehrání od libovolného kroku, ověřitelné trajektorie v JSON nebo JSON Lines.
Architektura
| Modul | Úloha |
|---|---|
src/engine.js |
stav, legální akce, přechody, pozorování, replay, invarianty |
src/knowledge.js |
znalost týmu, signály, odhalování, varianty průzkumu |
src/content.js, src/scenarios.js, src/map.js |
mechanický obsah, balíčky, scénáře, grafy map |
src/audit.js |
fyzický audit, rozpočet komponent, metriky |
src/themes/index.js |
témata s úplnými jmény v obou jazycích |
src/i18n.js, src/locales/ |
texty rozhraní, pravidel, tisku a chyb (cs, en) |
src/rules.js, src/print.js, src/table-view.js, src/ui.js |
pravidla, tisková sada, stůl, stránka |
src/simulation.js, src/assist.js, src/agents.js |
strategie, boti u stolu, kontext a běh externích agentů |
src/design.js |
kontrola návrhu karty |
src/lab/ |
experimenty, statistika, inspektor rozhodnutí, trajektorie, worker, UI laboratoře |
scripts/ |
server, simulace, experimenty, souhrny, export tisku a PDF |
Dokumentace
- Hra, laboratoř a průzkum
- Experimenty a agenti
- Výsledky vyvážení
- Lidské ověření
- Přidání tématu
- Nasazení na Cloudflare Pages
Původní klasický model
Do verze 0.3 existoval vedle stolní hry abstraktní „klasický“ model se zdroji, pokrokem a zátěží a s vlastní laboratoří. Neměl fyzickou reprezentaci, proto jsme ho odstranili a jeho obecné nástroje (boti u stolu, redo, externí agent, JSONL, sweepy, dvojjazyčnost) přenesli do stolní hry. Zůstává v gitu pod tagem classic-0.3.