Passt die Arbeit eines Ticks nicht mehr ins Budget, dehnt sich das Tick-Intervall des Servers. Das ganze Gebiet läuft dann langsamer oder ruckelt.
Warum Arbeit für einen Tick (z. B. 50 ms) übersteigt das Budget → Folge Spielzustand, der 20-mal pro Sekunde berechnet werden soll, wird nur 8-mal berechnet → Auf dem Bildschirm Ganzes Gebiet in Zeitlupe (je nach Serverdesign Ruckeln), Skills reagieren verzögert
Teure Berechnungen reduzieren, den Tick auf mehrere Threads verteilen, Spieler verteilen (Kanäle), Tick-Verarbeitungszeit als Metrik erfassen.
Aufgaben Infrastrukturteam
Tick-Zeit und CPU-Auslastung pro Kern in Monitoring und Alarmierung aufnehmen, CPUs und Instanzen mit hoher Single-Core-Leistung (Takt) prüfen.
Größenordnungen
Bei einem Server mit 20 Ticks pro Sekunde beträgt das Budget 50 ms, bei 30 Ticks 33 ms, bei 60 Ticks 16,7 ms. Für plötzlichen Andrang ist es sicherer, im Normalbetrieb nur etwa die Hälfte des Budgets zu nutzen und den Rest als Reserve zu lassen.
Im Graphen
Steigt mit Spielerzahl und Last · Server-Tick-Zeit, Spieler pro Zone und Kanal, CPU des Game-Threads
Wo nachsehen
Vom Server erfasste Tick-Verarbeitungszeit (p99) und Zahl der Tick-Überschreitungen im selben Graphen wie die Spielerzahl pro Zone und Kanal darstellen. Ohne Tick-Metriken mit pidstat -t 1 die CPU-Auslastung des einzelnen Game-Threads prüfen
Spricht dafür
Zum Zeitpunkt des Andrangs überschreitet die Tick-Zeit das Budget (50 ms bei 20 Ticks), und die CPU-Auslastung des Game-Threads klebt währenddessen nahe 100 %
Spricht dagegen
Tick überschreitet das Budget, CPU des Game-Threads aber niedrig: Ursache liegt im Warten (GC-Pause, Locks, synchrone Aufrufe). Lange Run-Queue-Latenz in bcc runqlat: Threads bekommen keine CPU-Zeit, also eher CPU-Mangel oder zu viele Threads
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig
Mehr dazu
Wie sich ein verspäteter Tick zeigt, hängt vom Serverdesign ab. Rückt der Server den Spielzustand pro Tick um eine feste Zeitspanne vor (z. B. 50 ms), verlangsamt sich die Spielzeit selbst, und alles läuft in Zeitlupe. Rückt der Server um die tatsächlich vergangene Zeit auf einmal vor, bleibt die Spielgeschwindigkeit erhalten. Dafür kommen Pakete seltener, und Objekte springen jeweils weit, was als Ruckeln oder Teleportieren erscheint. In beiden Fällen reagieren Eingaben verzögert. Bedient ein einzelner Game-Thread den ganzen Server, wird der ganze Server langsamer. Hat jedes Gebiet einen eigenen Thread, trifft es nur dieses Gebiet. Manche Spiele wie EVE Online verlangsamen in großen Schlachten die Spielzeit absichtlich um bis zu den Faktor 10 (Time Dilation), damit die Berechnung hinterherkommt.
VALORANT's 128-Tick ServersRiot Games Ein Server mit 128 Ticks muss einen Frame in 7,8125 ms abschließen, die Server-Frame-Zeit wird pro Subsystem gemessen und das Budget aufgeteilt
HED-GP Technical Retrospective: What a HED-acheCCP Games EVE Online verlangsamt bei Überlast die Spielzeit per Time Dilation, Untergrenze 10 % (10-mal langsamer), Node-CPU im Normalbetrieb unter 80 %
Handling variation in timeUnity Gerät eine Simulation mit festem Zeitschritt in Rückstand, werden Aufholschritte gebündelt ausgeführt, Zeit über dem Limit wird verworfen, dadurch läuft die Spielzeit langsamer als die reale Zeit
pidstat(1) — Linux manual pagesysstat -t zeigt zusätzlich Statistiken pro Thread des Prozesses an (CPU-Auslastung u. a.)