Zaruri corecte, joc corect
Fiecare jucător de table care a pierdut la o dublă în ultima aruncare s-a întrebat: sunt aceste zaruri corecte? Este întrebarea potrivită pentru orice aplicație de table. Iată exact cum sunt generate zarurile noastre, de ce nimeni, inclusiv noi, nu le poate înclina, și cum este ținut cinstit și restul jocului.
Verifică singur orice joc încheiat
Vorbele sunt ieftine, așa că iată partea pe care o poți rula chiar tu. Când o partidă se termină, dezvăluim sămânța serverului, angajamentul pe care l-am publicat înainte de prima aruncare și fiecare verigă pe care cele două părți au publicat-o pe parcurs. Lipește pachetul de dezvăluire mai jos sau caută partida după identificatorul ei: pagina redetermină fiecare zar din acea înregistrare, exact același calcul pe care l-au făcut serverele noastre, și îți arată aruncare cu aruncare dacă valorile păstrate se potrivesc. Nimic din toate acestea nu-ți cere să ne crezi pe cuvânt: calculul este la vedere și oricine îl poate reface. Singurul lucru pe care pagina refuză intenționat să îl facă este să acorde o insignă verde „demonstrabil corect”, fiindcă nu ar putea să o merite cinstit. Ea nu vede niciodată valorile pe care propriul tău dispozitiv le-a scris și le-a blocat înainte de prima aruncare, iar o înregistrare al cărei lanț a fost înlocuit în întregime cu un fals îngrijit se redetermină aici la fel de curat. Doar o comparație octet cu octet față de ceea ce a blocat dispozitivul tău poate exclude asta, iar acele valori le are numai aplicația ta. De aceea plafonul onest al acestei pagini este „consistent”, iar verdictul cel mai puternic ți-l poate da ecranul „Verifică” din aplicație.
Zarurile: demonstrabil corecte, aruncate pe server
Fiecare aruncare dintr-o partidă online încheiată este produsă pe serverele noastre de joc și este demonstrabil corectă, fără să fie nevoie să ne crezi pe cuvânt. Înainte de prima aruncare publicăm un angajament față de sămânța secretă din care vor ieși zarurile, iar aplicațiile ambilor jucători se angajează fiecare față de un lanț propriu; totul este înghețat într-o singură înregistrare înainte ca cineva să arunce. Apoi fiecare aruncare consumă câte o verigă proaspătă din lanțul fiecărei părți: jucătorul aflat la rând o publică pe a lui la începutul turei, adversarul o eliberează pe a lui abia după ce aceea este blocată, iar zarul se derivă ultimul. Astfel, ultima intrare necunoscută a oricărui zar se află întotdeauna de partea cealaltă a tablei. Zarurile de deschidere nu fac excepție: niciunul dintre ele nu există până când ambele părți nu contribuie. Prin urmare fiecare zar este rezultatul determinist al unor valori angajate dinainte: nimeni, nici noi, nu poate alege un zar, nu îl poate înlocui cu altul și nu îl poate arunca din nou pe tăcute. Aceasta este o afirmație despre valoarea unei aruncări încheiate și se oprește acolo: dacă o partidă este anulată, dacă un mesaj ajunge și cui i s-a scurs timpul rămân în afara ei. Instrumentul de mai sus redetermină fiecare zar al unui joc încheiat din înregistrarea publicată, un calcul pe care oricine îl poate reface. Ce nu poate face este să confirme că acea înregistrare este partida ta: pentru asta sunt necesare valorile pe care dispozitivul tău le-a blocat înainte de joc, iar acestea se află doar în aplicația ta, așa că ultimul pas se face pe ecranul „Verifică” din aplicație.
La fel de important este unde are loc aruncarea. Zarurile nu sunt niciodată generate pe dispozitivul tău, telefonul tău doar afișează o aruncare pe care serverul a făcut-o deja. Această singură decizie de proiectare elimină întreaga familie de trișări la zaruri: o aplicație modificată nu poate arunca din nou, un vârf de întârziere nu poate dubla o aruncare, și niciun truc din partea clientului nu poate trage cu ochiul la următorul număr, fiindcă următorul număr nu se află pe telefonul tău ca să fie citit: el este derivat pe server și abia după ce ambele părți își eliberează veriga pentru tura aceea.
Iar aruncările nu sunt niciodată ajustate. Nu există nicio „curbă de implicare”, nicio mecanică de revenire, niciun avantaj pentru jucătorii aflați pe o serie de înfrângeri. Generatorul nici nu știe, nici nu îi pasă cine câștigă.
Tabla: verificată la fiecare mutare
Zarurile corecte ar însemna puțin dacă tabla însăși ar putea aluneca sau ar putea fi alterată, așa că jocul rulează pe un model strict de autoritate a serverului. Dispozitivul tău nu-i spune niciodată serverului cum arată tabla, trimite doar intenția ta („mută această piesă de pe punctul 13 pe punctul 8”). Serverul verifică acea mutare față de regulile oficiale și tabla oficială; mutările nepermise sunt pur și simplu respinse, indiferent ce pretinde un client modificat.
Apoi vine dubla verificare: la fiecare actualizare de stare, serverul difuzează o amprentă compactă (hash) a poziției reale de pe tablă. Dispozitivul tău calculează aceeași amprentă din tabla sa locală și compară. Dacă diferă chiar și o singură piesă, clientul își aruncă propria copie și se resincronizează de la server. Astfel, ambii jucători privesc în orice moment, în mod demonstrabil, același joc, desincronizările se vindecă singure într-un singur schimb, și nu există nicio fereastră în care să se poată juca pe o tablă învechită sau manipulată.
Adversarii: potrivire Glicko-2
Corectitudinea ține și de cine înfrunți. Clasamentele folosesc aici Glicko-2, un succesor modern al lui Elo care urmărește atât forța ta de joc, cât și încrederea sistemului în această estimare, așa că jucătorii noi converg rapid către nivelul lor real, în loc să petreacă cincizeci de jocuri fiind trepte pentru alții. Potrivirea te împerechează cu adversari de clasament comparabil, iar rezultatele clasate se întorc în sistem după fiecare joc.
Rezultatul: când câștigi, ai depășit un egal. Când pierzi, este ceva real de învățat, de obicei în ghidurile de strategie.
Cum se simt de fapt zarurile corecte
Iată adevărul incomod: zarurile cu adevărat aleatoare par mai pline de serii decât se așteaptă majoritatea. Aleatorietatea reală produce patru duble la rând, dansuri de intrare împotriva unei table cu un singur punct și miracole în ultima aruncare, exact la frecvențele pe care le prezice probabilitatea. O aruncare cu șansă de 17/36 ratează de două ori la rând mai des decât într-un sfert din cazuri. Memoria păstrează scandalurile și aruncă rutina, de aceea fiecare jucător online experimentat are o poveste cu „zaruri trucate”, iar niciun audit statistic nu a confirmat vreodată una aici.
Dacă vrei să-ți calibrezi instinctele, ghidul de bazele probabilității așază numerele reale: 36 de combinații, șansele de lovire la fiecare distanță, șansele de intrare de la bară. A ști că orice număr anume apare de 11 ori din 36 transformă „ghinionul imposibil” în „o zi de marți”.
Vrei versiunea tehnică mai profundă, clasele de generatoare, cum funcționează dovada commit-reveal și psihologia seriilor „trucate”? Blogul o are: cum funcționează de fapt RNG-ul de pe server.
Angajamentul nostru
- Zaruri generate pe server, demonstrabil corecte: nu sunt aruncate niciodată pe un dispozitiv, nu sunt ajustate pentru niciun jucător sau situație și se derivă din intrări pe care ambele părți le angajează înainte de prima aruncare; la finalul jocului, fiecare zar se redetermină din înregistrarea publicată, iar aplicația confirmă că partida a fost a ta.
- Aplicarea regulilor la sursă: fiecare mutare validată de server; clienții modificați nu câștigă nimic.
- Verificare continuă a tablei: verificată prin hash la fiecare actualizare, autovindecare la orice nepotrivire.
- Împerechere bazată pe pricepere: clasamente Glicko-2 și potrivire după clasament.
Zarurile corecte înseamnă că singurul avantaj rămas la masă este priceperea, iar priceperea se poate învăța. Începe cu regulile, ascute-o cu strategie și testeaz-o live: masa de mai jos este gratuită, în browserul tău, fără instalare.