Tricks in der Spielmechanik, um die Kompensation von Netzwerkverzögerungen zu vermeiden?

20

Die Implementierung einer Netzwerkverzögerungskompensation ist schwierig. Wie kann dies vermieden werden?

Vielleicht ist es möglich, Tricks anzuwenden und Spielmechaniken so zu entwickeln, dass Verzögerung als unkritischer oder sogar natürlicher Teil des Spiels wahrgenommen wird?

Was sind diese Techniken und gibt es irgendwelche vorhandenen Spiele (MMORPG, Strategien, ...), die solche Techniken verwenden?

AKTUALISIEREN:

Rundenbasierte Spiele erfordern keine Verzögerungskompensation, aber es wäre interessant, Ansätze in Echtzeit zu sehen (oder nur einen Eindruck von Echtzeit, dem wichtigen Teil - Benutzer sollten nicht blockiert und gezwungen werden zu warten).

Der Hauptgrund für mich, Verzögerungskompensation zu vermeiden, ist die Einfachheit.

Alexey Petrushin
quelle
1
Dieser Link könnte helfen: developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
John McDonald
6
Wenn Sie ein Spiel entwickeln möchten, bei dem Latenz keine Rolle spielt; Überlegen Sie sich, ob Sie etwas rundenbasiertes bauen möchten, bei dem einige Sekunden akzeptabel sind.
Vaughan Hilts
3
Bei dieser Ventilverbindung geht es um die recht komplexen Methoden, mit denen die Netzwerkverzögerungskompensation implementiert wird - das Gegenteil von dem, was in der Frage gefragt wird.
Kylotan
@JohnMcDonald Ja, ich kenne den Artikel von Valve und wie gesagt - es ist das Gegenteil von dem, was ich frage :).
Alexey Petrushin
Vielleicht möchten Sie auch einen Blick auf GGPO werfen: ggpo.net
Decency

Antworten:

16

Es ist üblich, dass der Kunde eine Art Feedback implementiert, um dem Spieler sofort mitzuteilen, dass die von ihm gewählte Aktion registriert wurde, z.

  • Interface Sound (zB Button Click)
  • In-World-Sound (z. B. ein Charakter, der sagt: "Sofort, Kommandant")
  • Animation (zB Schwert schwingen)

Diese können stattfinden, während die Informationen zum Server übertragen werden, sodass der Spieler nicht merkt, dass seine Aktion noch nicht gestartet wurde. Solange der Server umgehend antwortet und die Aktion bald beginnt, bemerkt der Player die Verzögerung möglicherweise nicht.

Diese Tricks funktionieren in Spielen, in denen die Eingaben der Spieler relativ selten sind, und daher ist die Zeit, die Sie darauf warten, dass eine Eingabe wirksam wird, ein relativ kleiner Teil der gesamten Spielzeit. Daher möchten Sie Möglichkeiten finden, das Spiel so zu strukturieren, dass der Spieler weniger Eingaben vornimmt. Dies bedeutet wahrscheinlich, Spieleraktionen abstrakter zu gestalten und das Spiel das Verhalten auf niedriger Ebene implementieren zu lassen. Beispiele:

  • Lenkmechanik durch Bahnmechanik ersetzen
  • Zielmechanik durch Zielauswahlmechanik ersetzen
  • Runde für Runde Kampfanweisungen durch taktischere oder strategischere Pläne ersetzen
  • Ersetzen Sie Echtzeit- / kontinuierliches Gameplay durch diskrete / rundenbasierte Systeme
Kylotan
quelle
1
Danke, Sie formalisieren, worum ich gebeten werde - verwenden Sie seltene, zurückgestellte Eingaben vom Player. Es wäre interessant, die tatsächlichen Spiele zu sehen, die das verwenden.
Alexey
2
Hunderte von Spielen verwenden solche Dinge in irgendeiner Weise, aber höchstwahrscheinlich wurde dies aus anderen Gründen durchgeführt, wobei eine Verzögerung einen vorteilhaften Nebeneffekt darstellte.
Kylotan
7

Zufällige Gedanken:

  1. betrügen: Raketen benutzen . Raketen explodieren in einem Radius und verbergen jegliche Verrücktheit.
  2. betrügen: Bestimmen Sie das Ergebnis und zwingen Sie die Bedingung, visuell zu geschehen
  3. cheat: angriffe brauchen zeit , latenz in der atk + anim + resultatdiskontinuität verstecken
  4. Cheat: Trenne lokales Feedback vom Netzwerk
  5. Cheat: Viel VFX oder Bildschirmaktivität, die jede Verrücktheit überdeckt.
  6. Verwenden Sie ein Aktions-Reaktions-Design , das eine Lösung erfordert, bevor Sie fortfahren

Also ja, viel schummeln.

Patrick Hughes
quelle
4

Die Antwort ist ganz einfach - baue einfach Spiele, die keine zeitkritischen Abschnitte haben. Sie möchten diese Art von Interpolation aus einem bestimmten Grund vermeiden, den ich für richtig halte. Das bedeutet, dass Sie sich nicht um ein nervöses und schnelles Gameplay sorgen. Dies ist perfekt für viele Spiele, einschließlich Civilization (ein Strategiespiel). Verstehen Sie jedoch, dass dies für ein ECHTZEIT- Strategiespiel NICHT akzeptabel ist, bei dem Sie viele Daten zu variablen Zeiten über das Netzwerk übertragen müssen. Wenn Sie ein Spiel für ein Netzwerk mit sehr hoher Latenz entwerfen möchten, sollten Sie Folgendes berücksichtigen:

  1. Erstellen Sie rundenbasierte Spiele. In diesen Spieltypen ist keine Eingabe des Status in Echtzeit erforderlich, und der andere Spieler kann den Status des Spiels einfach in seinen Client verschieben, wenn er an der Reihe ist. Dies reduziert den Druck auf das Netzwerk und ermöglicht Verzögerungen von bis zu einigen Sekunden, wenn man dies wünscht. Civilization ist ein auf Runden basierendes Spiel, das sehr beliebt und strategisch ist.
  2. Halten Sie die Auswirkungen der Entscheidungen der anderen Spieler auf ein Minimum. Wenn Ihr Spiel strategisch ist und nicht rundenbasiert gespielt werden kann, sollten Sie die Auswirkungen verzögerter Pakete reduzieren. Kann der Kunde den größten Teil der Simulation durchführen? Ein Beispiel ist ein Strategiespiel, das für eine Weile alleine gespielt wird und dann nach etwa 16 Minuten gegen einen anderen Spieler simuliert wird (vielleicht ein Kampfspiel, bei dem die Spieler alle x Intervalle Truppen entsenden und alle y Intervalle Bericht erstatten.

Ich hoffe das hilft wenigstens ein bisschen; Ohne genaue Spielideen zu kennen, ist es schwierig. Ich gehe davon aus, dass Sie Ihre Gründe dafür haben, Ihr Spiel nach einem solchen Muster zu erstellen (Einfachheit, Einsparung von Bandbreite, Reduzierung der Netzwerkkomplexität).

Vaughan Hilts
quelle
4

Du könntest auch dafür sorgen, dass Lag aus "realistischen" Gründen Teil deines Gameplays wird. Angenommen, Ihre Spieler sollen einige Roboter aus der Ferne steuern. Sie könnten eine Verzögerung von mindestens 500 ms oder 1 s erzwingen (Sie müssten ein dynamisches Verzögerungspolstersystem implementieren).

Arkh
quelle
Dies ist eine schöne Wendung
o0' .
0

Es ist auch ein schöner Trick, die Aktionen der Spieler einfach zu verbergen. Viele FPS-Spiele machen genau das. Sie zeigen keine visuellen Elemente der meisten Kugeln, sondern es werden nur Geräusche abgespielt, und Sie erhalten das Ergebnis in Form von Schaden, der den Spielern zugefügt wird.

Ich habe einige FPS-Spiele gespielt, bei denen hochpräzise Waffen (Scharfschützen und dergleichen) sehr deutliche visuelle Effekte aufwiesen, und Sie konnten tatsächlich sehen, dass der andere Spieler hinter Ihnen schoss, aber Sie wurden wegen der Verzögerungskompensation getötet.

VSZM
quelle