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

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

Größe des Eingabepuffers pro Spieler Per-player server input buffer (jitter buffer)

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

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Sammelt der Server pro Spieler ein paar Eingaben und entnimmt pro Tick eine, sieht es für andere flüssig aus. Die eigenen Aktionen werden auf dem Server aber entsprechend später bestätigt.

Warum Server sammelt die Eingaben des langsamen Spielers im Puffer und wendet pro Tick eine an → Folge Bei kleinem Puffer läuft er oft leer, der Charakter bleibt stehen oder der Server bewegt ihn per Schätzung anhand der letzten Eingabe weiter. Bei großem Puffer werden die eigenen Eingaben spät bestätigt → Auf dem Bildschirm Klein: Stocken auf fremden Bildschirmen, groß: eigene Skill-Ergebnisse kommen spät (Input-Lag)

Symptome
Ruckeln, Input-Lag
Faktoren
Jitter
Wer ist betroffen
Nur ein bestimmter Charakter wirkt seltsam, Nur ich
Wann
Immer
Zuständigkeit
Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Client-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Server: Puffergröße pro Spieler automatisch an den Leitungszustand anpassen, bei Rückstand zwei Eingaben auf einmal entnehmen und aufholen, Clients von Spielern, deren Puffer oft leerläuft, anweisen, Eingaben früher zu senden. Client: Eingaben nach Anweisung des Servers etwas früher senden (Anpassung der Client-Zeit).
Größenordnungen
Das hängt vom Spiel ab, meist sind es 1–3 Ticks. VALORANT hält den Serverpuffer auf seinen 128-Tick-Servern noch kürzer, im Mittel bei einem halben Frame (etwa 4 ms). Verbreitet ist eine adaptive Lösung, die den Puffer nur bei Spielern mit hohem Jitter vergrößert.
Im Graphen
Nur einzelne Ausreißer · Länge des Eingabepuffers und Leerläufe pro Spieler
Wo nachsehen
Auf dem Server pro Spieler und Tick die Zahl der im Eingabepuffer verbliebenen Eingaben, die Zahl der Fälle, in denen der Puffer leer war und per Schätzung anhand der letzten Eingabe aufgefüllt wurde, und die Zeit von Ankunft bis Anwendung einer Eingabe protokollieren
Spricht dafür
Spieler mit kleinem Puffer haben viele Leerläufe und stocken genau dann kurz auf fremden Bildschirmen, bei Spielern mit großem Puffer ist die Zeit von Eingabe bis Anwendung um die Pufferlänge verlängert
Spricht dagegen
Puffer läuft fast nie leer, und trotzdem ist auf fremden Bildschirmen Ruckeln zu sehen: Interpolationsproblem beim Betrachter. Großer Input-Lag trotz kurzem Puffer: die RTT selbst oder „Doppeltes Warten auf den Tick“
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig

Quellen

  1. Peeking into VALORANT's Netcode Riot Games
    Der Server passt die Zeitbasis des Clients so an, dass die Eingabe-Queue gerade groß genug ist, um ungleichmäßige Ankünfte bei minimaler Latenz abzufangen. Ziel der Pufferung auf dem Server: im Mittel ein halber Frame
  2. NetworkTimeSystem class (Netcode for GameObjects 2.5) Unity
    LocalBufferSec: Zeit, die der Server Client-Nachrichten puffert. Die Client-Zeit wird vorgezogen, damit Nachrichten früher beim Server ankommen
  3. NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
    Spieler mit schlechter Leitung können den Pufferwert erhöhen

Verwandte Ursachen

Gleiche Schicht: Probleme, die nur einige betreffen

Ursachen aus anderen Schichten mit demselben Symptom (Ruckeln)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen