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

Game-Lag-Whitepaper › Synchronisationsdesign

Niedrige Snapshot-Senderate Low snapshot / update rate

Ursachen-ID sy-low-send-rate · Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Client-Entwicklung (Entwicklungsteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Sendet der Server Positionsupdates (Snapshots) nur wenige Male pro Sekunde, muss der Interpolationspuffer entsprechend lang sein, und andere Charaktere erscheinen weiter in der Vergangenheit.

Warum Um Datenvolumen zu sparen, nur 5–10 Positionsupdates pro Sekunde → Folge Für eine flüssige Darstellung muss der Puffer das Doppelte des Paketabstands (200–400 ms) betragen, ist er kürzer, bleibt die Darstellung schon bei einem einzigen verlorenen Paket stehen → Auf dem Bildschirm Richtungswechsel des Gegners erscheinen verspätet und passen nicht zur Trefferabfrage. Bei kurzem Puffer Ruckeln, bei Paketverlust Teleportieren

Symptome
Ruckeln, Teleportieren, Verschluckte Aktion / Rollback
Faktoren
Latenz, Paketverlust
Wer ist betroffen
Ganzer Server
Wann
Immer
Zuständigkeit
Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Client-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Server: nahe oder kämpfende Objekte häufig senden, entfernte selten, nur Änderungen senden (Delta-Kompression), um die Größe pro Update zu senken und die Rate zu erhöhen. Client: Länge des Interpolationspuffers automatisch an den Paketabstand anpassen.
Größenordnungen
Bei 10 Updates pro Sekunde beträgt der Paketabstand 100 ms, der Puffer 200 ms. Mit 75 ms Latenz pro Richtung bei 150 ms Ping sieht man den Gegner etwa 0,3 s in der Vergangenheit.
Im Graphen
Von Anfang an dauerhaft hoch · Ankunftsabstand der Pakete pro Client, Länge des Interpolationspuffers
Wo nachsehen
Im serverseitigen Paketmitschnitt nur den Datenstrom zu einem Spieler filtern und mit den I/O Graphs von Wireshark Pakete pro Sekunde und Abstände ansehen. Gibt es spielseitige Logs, zusätzlich Update-Abstand pro Objekt und Reserve im Interpolationspuffer des Clients (verbleibende Zeit bis zum nächsten Snapshot) prüfen
Spricht dafür
Positionsupdates durchgehend selten mit 5–10 pro Sekunde (Abstand 100–200 ms), Interpolationspuffer auf über 200 ms eingestellt oder Pufferreserve häufig bei 0
Spricht dagegen
Updates gehen dicht hinaus, nur die Ankunftsabstände schwanken: eher Jitter oder Paketverlust. Nur entfernte Objekte werden bei Gedränge selten aktualisiert: „Sendebudget und Priorität pro Verbindung“
Prüfmittel
Mit Infrastruktur-Tools prüfbar (ohne Spielcode)

Quellen

  1. Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization (Yahn W. Bernier, GDC 2001) Valve
    Bei 10 Updates pro Sekunde übersteht eine Interpolation von 200 ms einen einzelnen Ausfall. Standard bei Half-Life: 20 Updates pro Sekunde, 100 ms Interpolation
  2. Snapshot Interpolation Gaffer On Games
    Bei 10 pro Sekunde sind 350 ms Verzögerung nötig, um bis zu zwei aufeinanderfolgende Verluste zu überstehen, bei 30 pro Sekunde sinkt das auf 150 ms
  3. State Synchronization Gaffer On Games
    Über akkumulierte Prioritäten werden wichtige Objekte häufiger gesendet, die übrigen reihum innerhalb des Bandbreitenlimits
  4. 8.8. The “I/O Graphs” Window Wireshark
    Stellt Anzahl der Pakete und Bytes, die zum Anzeigefilter passen, als Graph pro Zeitintervall dar

Verwandte Ursachen

Gleiche Schicht: Synchronisationsdesign

Ursachen aus anderen Schichten mit demselben Symptom (Ruckeln)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen