Dados justos, jogo justo
Todo jogador de gamão que perdeu para uma dupla no último lançamento já se perguntou: estes dados são justos? É a pergunta certa a se fazer a qualquer aplicativo de gamão. Aqui está exatamente como nossos dados são gerados, por que ninguém, nem nós, pode incliná-los, e como o resto do jogo também é mantido honesto.
Verifique você mesmo qualquer jogo finalizado
Falar é fácil, então aqui está a parte que você mesmo pode executar. Quando uma partida termina, revelamos a sua semente do servidor, o compromisso que publicamos antes do primeiro lançamento e cada elo que os dois lados publicaram ao longo do jogo. Cole abaixo esse pacote de revelação, ou consulte o jogo pelo seu ID: esta página re-deriva cada dado a partir desse registro, exatamente o mesmo cálculo que nossos servidores executaram, e mostra lançamento a lançamento se os valores guardados batem. Nada disso exige acreditar na nossa palavra: a conta é aberta e qualquer pessoa pode refazê-la. A única coisa que esta página se recusa a fazer é conceder um selo verde «comprovadamente justo», porque não teria como merecê-lo com honestidade. Ela nunca vê os valores que o seu próprio aparelho anotou e travou antes do primeiro lançamento, e um registro cuja cadeia foi inteiramente trocada por uma falsificação caprichada re-deriva aqui com a mesma perfeição. Só uma comparação byte a byte com o que o seu aparelho travou consegue descartar isso, e esses valores só o seu aplicativo guarda. Por isso «consistente» é o teto honesto desta página, e o veredito mais forte é o que a tela «Verificar» do aplicativo pode lhe dar.
Os Dados: Comprovadamente Justos, Lançados no Servidor
Cada lançamento de uma partida on-line concluída é produzido nos nossos servidores de jogo e é comprovadamente justo sem que você precise acreditar na nossa palavra. Antes do primeiro lançamento publicamos um compromisso com a semente secreta de onde sairão os dados, e os aplicativos dos dois jogadores se comprometem cada um com uma cadeia própria; tudo isso é congelado em um único registro antes que alguém lance. Depois, cada lançamento gasta um elo novo da cadeia de cada lado: quem está na vez publica o seu no início do turno, o adversário só libera o dele depois que aquele fica travado, e o dado é derivado por último. Assim, a última entrada desconhecida de qualquer dado está sempre do outro lado do tabuleiro. Os dados de abertura não são exceção: nenhum dos dois existe enquanto os dois lados não contribuírem. Cada dado é, portanto, o resultado determinístico de valores comprometidos de antemão: ninguém, nós inclusive, pode escolher um dado, trocá-lo por outro ou relançá-lo em silêncio. Essa é uma afirmação sobre o valor de um lançamento já concluído e para por aí: se uma partida é cancelada, se uma mensagem chega e de quem foi o tempo esgotado ficam de fora dela. A ferramenta acima re-deriva cada dado de um jogo terminado a partir do registro publicado, uma conta que qualquer pessoa pode repetir. O que ela não faz é confirmar que esse registro é a sua partida: para isso são precisos os valores que o seu aparelho travou antes do jogo, e só o seu aplicativo os guarda, então esse último passo acontece na tela «Verificar» do aplicativo.
Igualmente importante é onde o lançamento acontece. Os dados nunca são gerados no seu dispositivo, o seu telefone apenas exibe um lançamento que o servidor já fez. Essa única decisão de projeto elimina toda a família de trapaças com dados: um aplicativo modificado não pode relançar, um pico de lag não pode duplicar um lançamento, e nenhum truque do lado do cliente pode espiar o próximo número, porque o próximo número não está no seu telefone para ser lido: ele é derivado no servidor, e só depois que os dois lados liberam o seu elo para aquele turno.
E os lançamentos nunca são ajustados. Não há «curva de engajamento», não há mecânicas de virada, não há impulso para jogadores em série de derrotas. O gerador não sabe nem se importa com quem está vencendo.
O Tabuleiro: Verificado a Cada Jogada
Dados justos significariam pouco se o próprio tabuleiro pudesse desviar ou ser adulterado, por isso o jogo roda em um modelo estrito de autoridade do servidor. O seu dispositivo nunca diz ao servidor como o tabuleiro está, ele apenas envia a sua intenção («mover esta pedra do ponto 13 para o ponto 8»). O servidor confere essa jogada com as regras oficiais e o tabuleiro oficial; jogadas ilegais são simplesmente rejeitadas, não importa o que um cliente modificado alegue.
Depois vem a dupla checagem: a cada atualização de estado, o servidor transmite uma impressão digital compacta (hash) da posição verdadeira do tabuleiro. O seu dispositivo calcula a mesma impressão digital a partir do seu tabuleiro local e compara. Se uma única pedra diferir, o cliente descarta a sua cópia e se ressincroniza a partir do servidor. Assim, fica comprovado que ambos os jogadores estão olhando o mesmo jogo o tempo todo, as dessincronizações se curam sozinhas em uma só ida e volta, e não há janela em que um tabuleiro velho ou manipulado possa ser jogado.
Os Adversários: Emparelhamento Glicko-2
A imparcialidade também tem a ver com quem você enfrenta. As classificações aqui usam Glicko-2, um sucessor moderno do Elo que acompanha tanto a sua força de jogo quanto a confiança do sistema nessa estimativa, de modo que novos jogadores convergem rapidamente para o seu nível real em vez de passar cinquenta jogos servindo de degrau para os outros. O emparelhamento coloca você contra adversários de classificação parecida, e os resultados válidos para classificação realimentam o sistema após cada jogo.
O resultado: quando você vence, superou um igual. Quando perde, há algo real a aprender, geralmente nos guias de estratégia.
Como os Dados Justos Realmente Parecem
Aqui está a verdade incômoda: dados genuinamente aleatórios parecem mais instáveis do que a maioria das pessoas espera. A aleatoriedade real produz quatro duplas seguidas, danças de entrada contra um tabuleiro de um ponto, e milagres no último lançamento, exatamente nas frequências que a probabilidade prevê. Um lance de 17/36 falhar duas vezes seguidas acontece em mais de um quarto das vezes. A memória guarda os absurdos e descarta a rotina, e é por isso que todo jogador online experiente tem uma história de «dados viciados» e nenhuma auditoria estatística jamais confirmou uma sequer aqui.
Se quiser calibrar seus instintos, o guia de noções básicas de probabilidade apresenta os números reais, 36 combinações, chances de acerto em cada distância, chances de entrada a partir da barra. Saber que qualquer número específico aparece 11 vezes em 36 transforma o «azar impossível» em «uma terça-feira comum».
Quer a versão técnica mais profunda, as classes de geradores, como funciona a prova de compromisso e revelação, e a psicologia das sequências «viciadas»? O blog tem: como o RNG do lado do servidor realmente funciona.
O Nosso Compromisso
- Dados gerados no servidor e comprovadamente justos: nunca lançados em um aparelho, nunca ajustados para nenhum jogador ou situação e derivados de entradas que os dois lados comprometem antes do primeiro lançamento; terminado o jogo, cada dado se re-deriva do registro publicado, e o aplicativo confirma que a partida foi sua.
- Aplicação das regras na origem: cada jogada é validada pelo servidor; clientes modificados não ganham nada.
- Verificação contínua do tabuleiro: conferência por hash a cada atualização, cura automática em qualquer divergência.
- Pareamento baseado em habilidade: classificações Glicko-2 e emparelhamento por classificação.
Dados justos significam que a única vantagem que resta na mesa é a habilidade, e habilidade se aprende. Comece com as regras, aprimore-a com estratégia, e teste-a ao vivo: a mesa abaixo é gratuita, no seu navegador, sem instalação.