Files
2026-08-16 20:50:31 +02:00

66 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🎲 Meyer – drikke terningespil
Et komplett multiplayer-Meyer (drikke-terningespil) til browseren, bygget til selskaber
hvor alle allerede snakker sammen på voicechat. Ingen npm-pakker – ren Node.js.
## Sådan kører man
```bash
node server.js # lytter på port 3000 (PORT=… for anden port)
```
Åbn **http://localhost:3000** (eller http://<server-IP>:3000) i browseren –
en pr. spiller. Alle ser samme bord live.
## Spillet
1. Skriv dit navn → gå til lobbyen.
2. Se listen over borde, **sæt dig** ved ét, eller **opret dit eget** (opretter automatisk en
robot-spiller, så bordet ikke står tomt, mens folk samler sig).
3. Værten trykker **Start** (min. 2 spillere).
4. Din tur: **Rul** under dine to øller → klik begge øller, så løfter de sig og du
kigger → sig hvad du har (⭐) **eller bluf** og sig højere → øllerne sendes videre.
5. Næste spiller kan **trø på dig** eller **løfte øllerne**.
- Sandt → de drikker. Bluff → du drikker.
6. Stangen (sidste sagte slag) bliver liggende – spillet klatrer, indtil nogen bustes.
7. Slag er for lavt? **Rul igen** (uden at kigge) og send videre, eller **send videre**
uden at sige noget.
8. Taber = ét øje ned. Ved 0 øjne er man **drækket ud**. Sidste ved bordet vinder. 🏆
### Hierarchy (højest → lavest)
Meyer (1+2) > Lille-Meyer (1+3) > Par 6 > Par 5 > Par 4 > Par 3 > Par 2 > Par 1 > 6+5 > 6+4 >
63, 62, 54, 53, 52, 43, 42, 32
## Funktioner
- **Live-sync** via Server-Sent Events (ingen websocket-afhængigheder)
- **Lobbyer** med opdateringsstatus (Ventende / Spiller / Fuld, max 4)
- **Privat terning**: kun aktive spiller, der har kigget, ser sit slag (serveren sender
`myDice` kun i dennes snapshot)
- **Robots** der ruller, bluffer, løfter øller og drikker – bordet kan køre, selv mens
folk finder sammen på voicechat
- **Chat** til bordet (fx "jeg bluffer ikke, edderma…")
- **Afkørsel**: fraværende spillere får turen passeret automatisk; genstart = "Spil igen"
- Værten kan starte nyt spil; alle øjne nulstilles
- Flere tabs samme spiller = samme session (SSE-multiplexing)
## Filstruktur
```
meyer/
├── server.js # alt: HTTP, SSE, rum, spilleregler, bots (uden afhængigheder)
├── public/
│ ├── index.html # navne-skrærm, lobby, spil, regel-modal
│ ├── style.css # mørk brikbar-tema, øller, terninger, animationer
│ └── app.js # klient: SSE-sync, rendering, handlinger
└── flow.js / smoke.js / endgame.js # API-smoke-tests
```
## API (POST /api)
`create {roomName, addBot}` · `join {roomId}` · `rejoin {roomId, uid}` · `leave` ·
`start` · `restart` · `roll` · `peek` · `declare {rank}` · `reroll` · `sendForward` ·
`challenge` · `pass` · `chat {text}`
GET: `/api/rooms` · `/api/state?room=…&uid=…` · `/api/events?uid=…` (SSE)