Erkennen von Gewinnen in Peer-to-Peer-RTS-Spielen wie Starcraft

8

Ein typisches RTS-Spiel wird mit dem Standardnetzwerkmodell implementiert: Peer-to-Peer-Lockstep.

Betrachten Sie Starcraft 2, da Battle.net vermutlich nichts über den Stand des Spiels weiß, da nur Kommunikation zwischen den beiden Spielern in einem Peer-to-Peer-Modell besteht. Woher weiß Battle.net, wer am Ende der Gewinner war? . Es ist naiv, sich darauf zu verlassen, dass die beiden Kollegen nicht versuchen, zu schummeln und genaue Ergebnisse zu melden.

user782220
quelle
2
"Es ist naiv, sich darauf zu verlassen, dass die beiden Kollegen nicht versuchen, zu schummeln und genaue Ergebnisse zu melden." Warum? Wenn die beiden Kollegen nicht einverstanden sind, ist offensichtlich jemand durcheinander. Und da nur ein Spieler gewinnen kann, was ist wichtig, wenn er dasselbe meldet? Zwei Leute können schummeln, aber nur einer von ihnen kann gewinnen .
Nicol Bolas
1
Eigentlich macht es noch mehr Spaß. Wie @Nicol erwähnt hat, wird sich der Server nicht die Mühe machen, sich zu streiten, solange die beiden Spieler einverstanden sind. Sie können dies als Grundlage für die Ermittlung der grundlegenden Fähigkeiten eines Spielers sowie seiner Vertrauenswürdigkeit verwenden, anhand derer die Wahrscheinlichkeit bestimmt werden kann, wem der umstrittene Gewinn tatsächlich gehört. Der Server kann auch nach Wiederholungsdaten fragen, obwohl Sie auch darüber lügen könnten ...
Clockwork-Muse

Antworten:

3

Wenn ich mich richtig erinnere, ist SC2 eigentlich kein Peer-to-Peer. Es ist ein Client-Server mit Battle.net (allerdings immer noch deterministischer Lockstep), daher ist dies kein Problem. In der realen Welt ist es jedoch nachweislich unmöglich, alle Peers dazu zu bringen, sich auf einen Zustand oder das Ergebnis einer Operation zu einigen ("Gewinner" ist in diesem Punkt sicherlich ein gemeinsamer Zustand). Schauen Sie sich den formalen Beweis für das Problem der byzantinischen Generäle und auch das Fischer-Konsensproblem an. Dies ist ein anständiger Ausgangspunkt (siehe Zitate und lesen Sie diese): Konsens (Informatik)

Jeff Tucker
quelle
0

Wenn alle Spieler einverstanden sind, ist das offensichtlich richtig. Andernfalls ist der Status des Spiels ungültig und niemand "hat gewonnen". Beachten Sie jedoch, dass Sie SSL verwenden können, um die Kommunikation zwischen BNet und dem Spieleclient zu verschlüsseln. Dies muss natürlich vorhanden sein. Wie können sonst Funktionen wie der Chat im Spiel vorhanden sein? Es gibt keinen Grund zu der Annahme, dass die Clients während eines Spiels nicht mit Battle.NET kommunizieren.

DeadMG
quelle