c5de95fade79bb8d5e7e6e9987c3003d1c7eb2ee
🎲 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
node server.js # lytter på port 3000 (PORT=… for anden port)
Åbn http://localhost:3000 (eller http://:3000) i browseren – en pr. spiller. Alle ser samme bord live.
Spillet
- Skriv dit navn → gå til lobbyen.
- 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).
- Værten trykker Start (min. 2 spillere).
- 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.
- Næste spiller kan trø på dig eller løfte øllerne.
- Sandt → de drikker. Bluff → du drikker.
- Stangen (sidste sagte slag) bliver liggende – spillet klatrer, indtil nogen bustes.
- Slag er for lavt? Rul igen (uden at kigge) og send videre, eller send videre uden at sige noget.
- 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
myDicekun 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)
Languages
JavaScript
70.1%
CSS
21.2%
HTML
8.7%