Estaba pensando en los juegos entre pares al considerar un simple juego de lanzamiento de monedas.
Abre su versión de P2PCoinFlipping Beta 2.3 y muestra una lista de servidores de nombres de jugadores. Después de elegir el servidor más cercano aparece un marcador de los jugadores más afortunados. Eliges al jugador de más alto rango y comienza el juego. Desde que comenzaste la batalla, el jugador contrario elige el lado de la moneda, las caras y se te asignan colas. Aparece un pequeño gráfico que muestra una moneda que cae finalmente en las cabezas. Lástima que pierdas.
Pero, ¿cómo sabes que el resultado es justo?
Si el resultado se elige en su computadora, puede editar el programa para elegir ganar y lo mismo se aplica al oponente. El juego no es determinista, por lo que parece que no puedes validar el resultado.
¿Es posible tener múltiples agentes adversarios independientes de acuerdo en un evento no determinista?
fuente
Respuestas:
Este procedimiento hará el trabajo:
el resultado del lanzamiento de la moneda es el XOR del bit menos significativo de cada número, es decir
(a & 1) ^ (b & 1)
Una solución alternativa:
He hecho esta pregunta en el sitio de criptografía y he establecido que es bastante segura. Aparentemente, esta es una variación del esquema de Compromiso .
fuente
Resulta que no solo los agentes adversarios pueden lanzar monedas, sino que los agentes adversarios pueden jugar al póker .
Dicho esto, tiende a ser extremadamente costoso desde el punto de vista informático y bastante difícil de corregir. Probablemente no valga la pena el esfuerzo de implementación. Mire cuántos protocolos multijugador son hilarantemente vulnerables a un servidor malicioso (a saber: todos los que conozco), y cuán populares siguen siendo, y simplemente no parece un uso práctico del tiempo.
StarCraft II es un buen ejemplo. Es un juego donde la exploración es crítica, y saber lo que está haciendo el enemigo puede brindar una ventaja fenomenal, y los premios de cinco cifras o más se basan regularmente en los resultados. . . ¡Y sin embargo, ambas computadoras tienen todo el estado del juego almacenado en todo momento! Es trivial escribir un programa que te permita ver al oponente directamente y obtener una gran ventaja sobre ellos.
Resulta que ninguno de los competidores serios usa estos programas. Es demasiado fácil de detectar ("hey, Jim, ¿cómo sabes siempre lo que estoy construyendo en el instante en que lo estoy construyendo?") Y simplemente no vale la pena.
Dicho esto, si quieres más información, querrás examinar la criptografía en detalle; esto no está realmente en el ámbito del desarrollo de juegos.
fuente