Rättvisa tärningar, rent spel
Varje backgammonspelare som förlorar på en dubbel i sista kastet har undrat: är de här tärningarna rättvisa? Det är rätt fråga att ställa till vilken backgammonapp som helst. Här är exakt hur våra tärningar skapas, varför ingen, vi själva inräknade, kan snedvrida dem, och hur resten av spelet också hålls ärligt.
Verifiera vilket avslutat spel som helst själv
Prat är billigt, så här är den del du kan köra själv. När en match är slut avslöjar vi dess server-seed, det åtagande vi offentliggjorde före första kastet och varje länk som de båda sidorna publicerade under spelets gång. Klistra in avslöjningspaketet nedan, eller slå upp partiet på dess id: den här sidan härleder om varje enskild tärning ur den posten, exakt samma beräkning som våra servrar körde, och visar kast för kast om de sparade värdena stämmer. Ingenting av det kräver att du tar oss på orden, uträkningen ligger öppen och vem som helst kan göra om den. Det enda den här sidan medvetet inte gör är att dela ut ett grönt "bevisbart rättvist", för det kan den inte förtjäna ärligt. Den ser aldrig de värden som din egen enhet skrev ned och låste före första kastet, och en post vars kedja bytts ut i sin helhet mot en omsorgsfull förfalskning härleds om här precis lika felfritt. Bara en jämförelse byte för byte mot det din enhet låste kan utesluta det, och de värdena finns bara i din app. "Konsekvent" är därför det ärliga taket på den här sidan, och det starkaste utlåtandet är det Verifiera-vyn i appen kan ge dig.
Tärningarna: Bevisbart rättvisa, kastade på servern
Varje kast i ett avslutat onlineparti skapas på våra spelservrar, och det är bevisbart rättvist utan att du behöver ta oss på orden. Före första kastet offentliggör vi ett åtagande om det hemliga seed som tärningarna kommer ur, och båda spelarnas appar binder sig var för sig vid en egen kedja; allt fryses i en och samma post innan någon alls kastar. Sedan förbrukar varje kast en färsk länk ur vardera sidans kedja: den som står i tur publicerar sin i början av draget, motståndaren släpper sin först när den är låst, och tärningen härleds sist. Den sista okända ingången till en tärning ligger därför alltid på andra sidan brädet. Öppningstärningarna är inget undantag, ingen av dem finns förrän båda sidor har bidragit. Varje tärning är alltså ett deterministiskt resultat av värden som bundits i förväg: ingen, vi inräknade, kan välja en tärning, byta ut den mot en annan eller tyst kasta om den. Det är ett påstående om värdet på ett redan gjort kast och sträcker sig inte längre: om ett parti avbryts, om ett meddelande kommer fram och vems klocka som gick ut ligger utanför det. Verktyget ovan härleder om varje tärning i ett avslutat parti ur den offentliggjorda posten, en uträkning vem som helst kan göra om. Det verktyget inte kan är att bekräfta att posten är ditt parti: det kräver de värden din enhet låste före spelet, och dem har bara din app, så det sista steget sker i appens Verifiera-vy.
Lika viktigt är var kastet sker. Tärningarna skapas aldrig på din enhet, din telefon visar bara ett kast som servern redan har gjort. Just det designbeslutet undanröjer hela familjen av tärningsfusk: en modifierad app kan inte kasta om, en fördröjningstopp kan inte dubblera ett kast, och inget knep på klientsidan kan tjuvkika på nästa tal, för nästa tal ligger inte i din telefon att läsa av: det härleds på servern, och först när båda sidor har släppt sin länk för det draget.
Och kasten justeras aldrig. Det finns ingen ”engagemangskurva”, ingen comeback-mekanik, ingen skjuts för spelare i en förlustsvit. Generatorn varken vet eller bryr sig om vem som vinner.
Brädet: Verifierat vid varje enskilt drag
Rättvisa tärningar vore inte värda mycket om själva brädet kunde driva iväg eller manipuleras, så spelet körs enligt en strikt serverauktoritativ modell. Din enhet berättar aldrig för servern hur brädet ser ut, den skickar bara din avsikt (”flytta den här pjäsen från 13-punkten till 8-punkten”). Servern prövar draget mot de officiella reglerna och det officiella brädet; otillåtna drag avvisas helt enkelt, oavsett vad en modifierad klient påstår.
Sedan kommer dubbelkontrollen: vid varje tillståndsuppdatering sänder servern ett kompakt fingeravtryck (hash) av den sanna brädpositionen. Din enhet beräknar samma fingeravtryck från sitt lokala bräde och jämför. Om så bara en enda pjäs skiljer sig kasserar klienten sin kopia och synkroniserar om från servern. Båda spelarna tittar därför bevisbart på samma spel hela tiden, osynkade lägen läker sig själva på en enda tur och retur, och det finns inget fönster där ett inaktuellt eller manipulerat bräde kan spelas på.
Motståndarna: Glicko-2-matchning
Rättvisa handlar också om vem du möter. Placeringarna här använder Glicko-2, en modern efterföljare till Elo som följer både din spelstyrka och systemets tilltro till den uppskattningen, så att nya spelare snabbt närmar sig sin sanna nivå i stället för att vara språngbrädor i femtio spel. Matchningen parar dig med motståndare av jämförbar placering, och rankade resultat matas tillbaka efter varje spel.
Resultatet: när du vinner har du överspelat en jämlike. När du förlorar finns det något verkligt att lära, oftast i strategiguiderna.
Hur rättvisa tärningar faktiskt känns
Här är den obekväma sanningen: äkta slumpmässiga tärningar känns ryckigare än de flesta väntar sig. Äkta slump ger fyra dubblar i rad, förgäves inträden mot ett enpunktsbräde och mirakel i sista kastet, precis i de frekvenser som sannolikheten förutsäger. Att ett 17/36-kast missar två gånger i rad händer oftare än var fjärde gång. Minnet behåller skandalerna och kastar det rutinmässiga, och därför har varje erfaren onlinespelare en historia om ”riggade tärningar”, och ingen statistisk granskning har någonsin bekräftat en enda av dem här.
Vill du kalibrera din intuition lägger guiden till sannolikhetens grunder fram de riktiga siffrorna: 36 kombinationer, träffodds på varje avstånd, inträdeschanser från baren. Att veta att ett visst tal dyker upp 11 gånger av 36 förvandlar ”omöjlig otur” till ”en helt vanlig tisdag”.
Vill du ha den djupare tekniska versionen, generatorklasser, hur commit-reveal-beviset fungerar, och psykologin bakom ”riggade” sviter? Bloggen har den: hur server-side-RNG faktiskt fungerar.
Vårt löfte
- Servergenererade, bevisbart rättvisa tärningar: kastas aldrig på en enhet, justeras aldrig för någon spelare eller situation och härleds ur ingångar som båda sidor binder sig vid före första kastet; när partiet är slut kan varje tärning härledas om ur den offentliggjorda posten, och appen bekräftar att partiet var ditt.
- Regeltillämpning vid källan: varje drag valideras av servern; modifierade klienter vinner ingenting.
- Kontinuerlig brädverifiering: hash-kontrollerad vid varje uppdatering, självläkande vid varje avvikelse.
- Skickbaserad parning: Glicko-2-placeringar och placeringsbaserad matchning.
Rättvisa tärningar betyder att det enda försprång som återstår vid bordet är skicklighet, och skicklighet går att lära sig. Börja med reglerna, vässa den med strategi, och testa den live: bordet nedan är gratis, i din webbläsare, utan installation.