Detectando vitórias em jogos RTS ponto a ponto como Starcraft

8

Um jogo RTS típico é implementado com o modelo de rede padrão: passo a passo ponto a ponto.

Considere Starcraft 2, já que o Battle.net presumivelmente não sabe nada sobre o estado do jogo, uma vez que há apenas uma comunicação entre os dois jogadores em um modelo ponto a ponto, como o Battle.net sabe quem foi o vencedor no final . Confiar nos dois pares para não tentar trapacear e relatar resultados precisos é ingênuo.

user782220
fonte
2
"Confiar nos dois pares para não tentar trapacear e relatar resultados precisos é ingênuo." Por quê? Se os dois discordam, obviamente alguém está ferrado. E como apenas um jogador pode vencer, se estiver relatando a mesma coisa, o que isso importa? Duas pessoas podem trapacear, mas apenas uma delas pode vencer .
Nicol Bolas
11
Na verdade, fica ainda mais divertido. Como a @Nicol mencionou, desde que os dois jogadores concordem, o servidor não vai se dar ao trabalho de discutir. Você pode usar isso como uma linha de base para estabelecer o nível de habilidade básico de um jogador, bem como sua confiabilidade, que pode ser usada para determinar a probabilidade de quem a vitória disputada realmente pertence. O servidor também pode solicitar dados replay, embora desde que você também poderia mentir sobre isso ...
Clockwork-Muse

Respostas:

3

Se bem me lembro, o SC2 na verdade não é ponto a ponto; é cliente-servidor com o Battle.net (embora ainda seja um passo determinístico), então isso não é problema. No mundo real, no entanto, fazer com que todos os colegas concordem com algum estado ou o resultado de alguma operação ("vencedor" é certamente um estado compartilhado neste ponto) é comprovadamente impossível em um tempo limitado. Veja a prova formal do problema dos generais bizantinos e também o problema do consenso de Fischer. Este é um ponto de partida decente (veja as citações e leia as): Consenso (Ciência da Computação)

Jeff Tucker
fonte
0

Se todos os jogadores concordam, isso é obviamente preciso. Senão, o estado do jogo é inválido e ninguém "venceu". No entanto, observe que você pode usar o SSL para criptografar as comunicações entre a BNet e o cliente do jogo - o que obviamente deve existir; caso contrário, como podem existir recursos como o bate-papo no jogo? Não há razão para acreditar que os clientes não se comuniquem com o Battle.NET durante um jogo.

DeadMG
fonte