한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Game-Lag-Whitepaper › Synchronisationsdesign

Warten auf den langsamsten Spieler im Lockstep Lockstep waits for the slowest peer

Ursachen-ID sy-lockstep · Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Client-Entwicklung (Entwicklungsteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Berechnen alle gemeinsam denselben Zug, müssen alle warten, sobald die Eingabe eines Einzelnen zu spät kommt.

Warum Berechnung eines Zugs erst möglich, wenn die Eingaben aller Spieler da sind → Folge Eingabe eines Spielers kommt durch Jitter oder Paketverlust zu spät → Auf dem Bildschirm Alle stocken gleichzeitig, im schlimmsten Fall erscheint das Fenster „Warte auf Spieler“

Symptome
Freeze, Ruckeln, Input-Lag
Faktoren
Jitter, Paketverlust, Stillstand
Wer ist betroffen
Bestimmter Ort oder Kanal
Wann
Gelegentlich, zufällig
Zuständigkeit
Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Client-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Server: Input-Delay automatisch an den Ping anpassen, nur den Nachzügler kurz abkoppeln, damit die anderen ohne Warten weiterspielen. Client: festgelegtes Input-Delay anwenden, bei P2P ohne Relay-Server übernimmt der Host-Client auch die Anpassung des Input-Delays und den Umgang mit Nachzüglern.
Größenordnungen
Ist das Input-Delay kürzer als „Zeit, bis die Eingabe beim Gegenüber ankommt, + Jitter“, stockt das Spiel häufiger. Diese Zeit beträgt bei direktem Austausch den halben Ping, über einen Relay-Server etwa die Hälfte der Summe beider Pings.
Im Graphen
Vereinzelte Spitzen ohne Muster · Wartezeit pro Zug, Ankunftsverzögerung der Eingaben pro Spieler
Wo nachsehen
Pro Zug die Ankunftszeit der Eingaben jedes Spielers und die Wartezeit des Zugs protokollieren und bei angehaltenen Zügen prüfen, auf wessen Eingabe gewartet wurde. Mit Relay-Server ist das auch im serverseitigen Paketmitschnitt an den Ankunftsabständen der Eingabepakete pro Spieler zu sehen
Spricht dafür
Bei jedem angehaltenen Zug kam die Eingabe derselben Person erst nach Ablauf des Input-Delays an, und genau dann schlagen Jitter oder Paketverlust dieser Person aus
Spricht dagegen
Alle Eingaben pünktlich da und trotzdem Stillstand: Rechenzeit des langsamsten PCs oder Serververarbeitung. Kein Stillstand, aber unterschiedliche Ergebnisse auf zwei Bildschirmen: auseinanderlaufende Berechnung (Desync), also „Abweichende Pfadberechnung bei Befehlssynchronisation“ prüfen
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig

Quellen

  1. Deterministic Lockstep Gaffer On Games
    Frame n lässt sich erst berechnen, wenn alle Eingaben da sind, sonst wird gewartet. Ist der Playout-Puffer, der Jitter abfängt, zu klein, stockt es
  2. 1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond Game Developer
    Befehle werden zur Ausführung zwei Züge später eingeplant, die Zuglänge passt sich an den langsamsten Rechner und den Ping an (Speed Control)
  3. A Survey and Taxonomy of Latency Compensation Techniques for Network Computer Games (ACM Computing Surveys, 2022) ACM
    Input-Delay (incoming delay) in Höhe der Latenz „A→Server + Server→B“, damit alle die Eingaben im selben Moment anwenden

Verwandte Ursachen

Gleiche Schicht: Synchronisationsdesign

Ursachen aus anderen Schichten mit demselben Symptom (Freeze)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen