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

Game-Lag-Whitepaper › Probleme, die nur einige betreffen

Verlorener Basis-Snapshot Lost baseline for delta compression

Ursachen-ID pt-baseline · Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Client-Entwicklung (Entwicklungsteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Sendet der Server nur „Änderungen seit dem letzten Mal“, lassen sich spätere Änderungen nicht anwenden, wenn die einmalig gesendete Gesamtinformation (Basis) verloren geht.

Warum Paket mit der Gesamtinformation eines Objekts (Basis) geht verloren oder wird vor der Verarbeitung verworfen → Folge Client hat kein Objekt, auf das er spätere Änderungen anwenden kann, und ignoriert sie → Auf dem Bildschirm Das Objekt ist unsichtbar oder taucht erst viel später plötzlich auf

Symptome
Unsichtbar / Geisterobjekte, Teleportieren
Faktoren
Paketverlust
Wer ist betroffen
Nur ein Client auf demselben PC, Nur ich
Wann
Gelegentlich, zufällig
Zuständigkeit
Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Client-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Server: Basis unbedingt erneut senden, bis eine Empfangsbestätigung (ACK) kommt, Änderungen nur relativ zu einer vom Client bestätigten Basis erzeugen. Client: ACK für die Basis erst senden, wenn sie tatsächlich angewandt ist, bei Änderungen für unbekannte Objekte erneut beim Server anfordern.
Im Graphen
Vereinzelte Spitzen ohne Muster · Empfangene Änderungen für unbekannte Objekte
Wo nachsehen
Anzahl und Objekt-IDs der Änderungen, die der Client ohne Basis empfangen und verworfen hat, mit den Zeitpunkten abgleichen, zu denen der Server die Basis dieses Objekts gesendet und das ACK erhalten hat. In der Entwicklungsumgebung mit hinzugefügtem Paketverlust nachstellen (loss bei tc netem, Paketverlustrate der Unreal-Netzwerkemulation)
Spricht dafür
Für das unsichtbare Objekt hat der Server die Basis gesendet, aber kein ACK erhalten und trotzdem weiter nur Änderungen geschickt, die der Client verworfen hat
Spricht dagegen
Basis mit ACK bestätigt und im Client angewandt, trotzdem unsichtbar: „Verlorene Despawn-Meldung (Geisterobjekt)“ oder „Verwechslung durch wiederverwendete Objekt-IDs“
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig

Quellen

  1. Snapshot Compression Gaffer On Games
    Änderungen dürfen nur relativ zu einer Basis (baseline) erzeugt werden, deren Empfang die Gegenseite bestätigt hat (ack), der Anfangszustand wird separat gesendet
  2. Quake III Arena source: code/server/sv_snapshot.c id Software
    Delta-Kompression relativ zu dem vom Client bestätigten Snapshot, ist die Basis zu alt, wird ein vollständiger Snapshot gesendet
  3. tc-netem(8) — Linux manual page iproute2
    Testwerkzeug, das ausgehenden Paketen Latenz und Jitter (delay TIME JITTER) sowie Verlust (loss random PERCENT) hinzufügt, um reale Netze nachzubilden
  4. Using Network Emulation in Unreal Engine Epic Games
    Tests mit minimaler und maximaler Latenz sowie Paketverlustrate auf Server und Client, in der Konsole etwa über NetEmulation.PktLag einstellbar

Verwandte Ursachen

Gleiche Schicht: Probleme, die nur einige betreffen

Ursachen aus anderen Schichten mit demselben Symptom (Unsichtbar / Geisterobjekte)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen