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

Game-Lag-Whitepaper › L1 Spielprozess auf dem Client

Fehler bei der Uhrensynchronisation Clock sync error

Ursachen-ID cg-clock · Hauptzuständig Client-Entwicklung (Entwicklungsteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Liegt die vom Client geschätzte Serverzeit daneben, stimmen Interpolationszeitpunkt und Cooldown-Prüfung nicht mehr.

Warum Serverzeit wird nur einmal beim Login abgeglichen und bleibt so, auch wenn sich der Ping ändert → Folge Interpolationszeitpunkt und Ende des Cooldowns weichen vom Server ab → Auf dem Bildschirm Gegner stockt gelegentlich, Skill wird abgelehnt, obwohl der Cooldown abgelaufen ist

Symptome
Ruckeln, Verschluckte Aktion / Rollback
Faktoren
Latenz
Wer ist betroffen
Nur ich
Wann
Je länger es läuft, Gelegentlich, zufällig
Zuständigkeit
Hauptzuständig Client-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Zeit regelmäßig synchronisieren (Umlaufzeit messen, dann korrigieren), allmählich angleichen, ohne abrupt umzustellen, verstrichene Zeit mit einer Monotonic Clock messen (die PC-Uhrzeit ist dafür ungeeignet).
Im Graphen
Langsamer Anstieg · Fehler der geschätzten Serverzeit
Wo nachsehen
Regelmäßig die Differenz zwischen der vom Client geschätzten Serverzeit und der vom Server im Paket mitgeschickten Serverzeit (Tick-Nummer) aufzeichnen
Spricht dafür
Der Fehler wächst mit der Zeit seit dem Login oder springt auf einen Schlag, wenn die PC-Uhr gestellt wird, und um diese Zeit häufen sich Meldungen über abgelehnte Skills und Stocken
Spricht dagegen
Fehler bleibt klein, Skills werden trotzdem abgelehnt: Ursache eher bei der Entscheidung des Servers oder bei der Latenz
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig
Mehr dazu
Misst man die verstrichene Zeit an Datum und Uhrzeit des PCs (Wall Clock), springt die Spielzeit, sobald Windows die Uhr mit der Internetzeit abgleicht oder der Nutzer die Uhr umstellt. Verstrichene Zeit gehört deshalb auf eine Monotonic Clock, die nie zurückläuft (etwa Stopwatch).

Quellen

  1. RFC 5905: Network Time Protocol Version 4: Protocol and Algorithms Specification IETF
    Verfahren, das aus den vier Zeitstempeln von Anfrage und Antwort Umlaufverzögerung und Uhrabweichung berechnet
  2. Acquiring high-resolution time stamps Microsoft
    QueryPerformanceCounter (von Stopwatch genutzt) ist eine Uhr für verstrichene Zeit ohne Synchronisation mit externer Zeit. Systemzeit nur verwenden, wenn UTC-Zeit benötigt wird
  3. Time synchronization (Netcode for Entities 6.5) Unity
    Serverzeit aus der Umlaufzeit schätzen und angleichen, indem der Gang der Uhr leicht beschleunigt oder gebremst wird, ohne die Zeit sprunghaft zu ändern

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