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

Game-Lag-Whitepaper › Synchronisationsdesign

Trefferabfrage ohne Lag-Compensation Server-now hit validation

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

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Prüft der Server Treffer nur gegen die „aktuelle Position auf dem Server“, weicht die Trefferabfrage von dem ab, was man auf dem eigenen Bildschirm gesehen hat.

Warum Gegner auf dem eigenen Bildschirm an seiner Position von vor etwa 0,2 s (bei 150 ms Ping und 100 ms Interpolation) → Folge Server prüft gegen die aktuelle Position, an der anvisierten Stelle ist der Gegner schon weg → Auf dem Bildschirm Eindeutig getroffen und trotzdem daneben. Auf bewegte Ziele muss man vorhalten

Symptome
Verschluckte Aktion / Rollback
Faktoren
Latenz
Wer ist betroffen
Nur ich
Wann
Bei bestimmten Aktionen
Zuständigkeit
Hauptzuständig Server-Entwicklung (Entwicklungsteam) · Beteiligt Client-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Server: auf den Zeitpunkt zurückspulen, den der Angreifer gesehen hat, und dann prüfen (Lag-Compensation), oder auf Zielauswahl (Tab-Targeting) umstellen. Client: beim Angriff den selbst gesehenen Zeitpunkt (die gerade interpolierte Serverzeit) mitschicken.
Im Graphen
Nur einzelne Ausreißer · Trefferquote auf bewegte Ziele (nach Ping-Bereich)
Wo nachsehen
Im Log der Trefferabfrage auf dem Server Angriffszeitpunkt, Zielposition auf dem Bildschirm des Angreifers (vom Client gemeldeter Wert), für die Trefferabfrage verwendete Zielposition auf dem Server und RTT des Angreifers gemeinsam protokollieren. Zeichnet ein Entwicklungs-Build die vom Server verwendete Position über das Client-Bild, ist es sofort zu sehen
Spricht dafür
Bei Fehlschüssen beträgt der Abstand der beiden Positionen etwa Zielgeschwindigkeit × (RTT des Angreifers + Interpolationszeit), und mit steigendem Ping sinkt nur die Trefferquote auf bewegte Ziele
Spricht dagegen
Auch stehende Ziele werden verfehlt: Problem mit Hitbox oder Kollisionsprüfung. Abweichung trotz Zurückspulen: prüfen, ob der Client dem Server eine falsche Interpolationszeit meldet
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig

Quellen

  1. Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization (Yahn W. Bernier, GDC 2001) Valve
    Ohne Lag-Compensation muss man um die Latenz vorhalten. Bei der Lag-Compensation spult der Server um Latenz und Interpolationszeit zurück und prüft dann den Treffer
  2. Peeking into VALORANT's Netcode Riot Games
    Der Server spult für die Trefferabfrage auf den Spielzustand zurück, den der Spieler im Moment des Schusses gesehen hat, der Client schickt die gesehene Simulationszeit mit
  3. Source SDK 2013: player_lagcompensation.cpp Valve
    Zurückgespulte Zeit in der Source-Engine = Netzwerklatenz + Interpolationszeit

Verwandte Ursachen

Gleiche Schicht: Synchronisationsdesign

Ursachen aus anderen Schichten mit demselben Symptom (Verschluckte Aktion / Rollback)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen