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
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).
Acquiring high-resolution time stampsMicrosoft 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
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