Eu estava pensando em jogos ponto a ponto, considerando um simples jogo de lançamento de moedas.
Você abre sua versão do P2PCoinFlipping Beta 2.3 e ele exibe uma lista de servidores de nomes de jogadores. Depois de escolher o servidor mais próximo, um placar dos jogadores mais sortudos aparece. Você escolhe o jogador com a classificação mais alta e o jogo começa. Desde que você começou a batalha, o jogador adversário escolhe o lado da moeda, as cabeças e as caudas. Um belo pequeno gráfico aparece exibindo uma moeda caindo eventualmente caindo sobre as cabeças. Pena que você perde.
Mas como você sabe que o resultado é justo?
Se o resultado for escolhido no seu computador, você pode editar o programa para escolher vencer e o mesmo se aplica ao oponente. O jogo não é determinístico, então você não consegue validar o resultado.
É possível que vários agentes adversários independentes concordem com um evento não determinístico?
fonte
Respostas:
Este procedimento fará o trabalho:
o resultado do lançamento da moeda é o XOR do bit menos significativo de cada número, ou seja,
(a & 1) ^ (b & 1)
Uma solução alternativa:
Fiz essa pergunta no site de criptografia e estabeleci que é bastante seguro. Aparentemente, essa é uma variação do esquema de compromisso .
fonte
Acontece que não apenas os agentes adversários podem jogar moedas, mas os agentes adversários podem jogar pôquer .
Dito isto, tende a ser extremamente caro em termos de computação e bastante difícil de acertar. Provavelmente não vale a pena o esforço de implementação. Veja quantos protocolos multiplayer são hilariamente vulneráveis a um servidor mal-intencionado (a saber: todos eles que eu conheço) e quão populares eles ainda são, e isso simplesmente não parece um uso prático do tempo.
StarCraft II é um bom exemplo. É um jogo em que o escotismo é fundamental, e saber o que o inimigo está fazendo pode dar uma vantagem fenomenal, e prêmios de cinco dígitos ou mais regularmente se baseiam nos resultados. . . e, no entanto, ambos os computadores têm todo o estado do jogo armazenado o tempo todo! É trivial escrever um programa que permita assistir diretamente ao oponente e obter uma grande vantagem sobre ele.
Acontece que nenhum dos concorrentes sérios usa esses programas. É muito fácil de detectar ("ei, Jim, como você sempre sabe o que estou construindo no instante em que estou construindo?") E simplesmente não vale a pena.
Dito isto, se você quiser obter mais informações, deverá analisar detalhadamente a criptografia - isso não está realmente no domínio do desenvolvimento de jogos.
fonte