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

Game-Lag-Whitepaper › L1 Spielprozess auf dem Client

Fehlender oder zu kurzer Interpolationspuffer Missing/short interpolation buffer

Ursachen-ID cg-no-buffer · Hauptzuständig Client-Entwicklung (Entwicklungsteam) · Beteiligt Server-Entwicklung (Entwicklungsteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Zeichnet der Client Serverpakete sofort nach dem Empfang, wird der Jitter (Schwankung der Ankunftsabstände) direkt auf dem Bildschirm sichtbar.

Warum Empfangene Position wird sofort gezeichnet, oder der Puffer ist kürzer als der Jitter → Folge Stillstand, solange ein Paket zu spät ist, Sprung, wenn Pakete gebündelt nachkommen → Auf dem Bildschirm Andere Charaktere bewegen sich stockend, Ruck für Ruck

Symptome
Ruckeln
Faktoren
Jitter
Wer ist betroffen
Nur ich
Wann
Immer
Zuständigkeit
Hauptzuständig Client-Entwicklung (Entwicklungsteam) · Beteiligt Server-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Client: Interpolationspuffer einführen, Pufferlänge automatisch an die Verbindungsqualität anpassen. Server: Lag-Compensation (Zurückspulen bei der Trefferabfrage) einsetzen, damit Treffer auch dann stimmen, wenn auf den um die Pufferlänge älteren Zustand gezielt wird.
Größenordnungen
Üblich ist ein Puffer von etwa dem Doppelten des Sendeintervalls des Servers (bei 20 Paketen pro Sekunde 100 ms).
Im Graphen
Von Anfang an dauerhaft hoch · Paket-Ankunftsabstände, Anzahl leergelaufener Interpolationspuffer
Wo nachsehen
Im Client die Verteilung der Ankunftsabstände von Serverpaketen aufzeichnen sowie die Zahl der Frames, in denen mangels nächstem Snapshot die Bewegung stehen blieb oder auf Extrapolation umgeschaltet wurde
Spricht dafür
Die Schwankung der Ankunftsabstände übersteigt häufig die Länge des Interpolationspuffers, der Puffer läuft dann jedes Mal leer und andere Charaktere stocken. Ein längerer Puffer verringert das
Spricht dagegen
Stockt es trotz ausreichendem Puffer: prüfen, ob schon das Sendeintervall des Servers unregelmäßig ist (Tick-Verzögerung)
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig
Mehr dazu
Ein längerer Puffer glättet die Bewegung, dafür sieht man den Gegner entsprechend weiter in der Vergangenheit. Deshalb kommt für die Trefferabfrage Lag-Compensation dazu: Der Server spult auf die Vergangenheit zurück, die dieser Spieler gesehen hat, und prüft den Treffer dort.

Quellen

  1. Interpolation and extrapolation (Netcode for Entities 6.5) Unity
    Puffer-Interpolation zeichnet absichtlich verzögert, um auf späte Pakete warten zu können. Ein größerer Puffer ist genauer, erhöht aber entsprechend die Latenz
  2. Struct ClientTickRate (Netcode for Entities 6.5) Unity
    Standardwert des Interpolationspuffers InterpolationTimeNetTicks = 2 (zwei Server-Sendungen)
  3. Physics (Netcode for Entities 6.5) Unity
    Lag-Compensation: Der Server sucht die Kollisionswelt, die der Client in diesem Tick gesehen hat, und entscheidet dort über Treffer

Verwandte Ursachen

Gleiche Schicht: L1 Spielprozess auf dem Client

Ursachen aus anderen Schichten mit demselben Symptom (Ruckeln)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen