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

Game-Lag-Whitepaper › L1 Spielprozess auf dem Client

Aufholspirale bei festem Zeitschritt Fixed-timestep catch-up / spiral of death

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

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Nach einem einzelnen Stillstand rechnet das Spiel die aufgelaufenen Schritte im Block nach und gerät genau dadurch erneut in Rückstand.

Warum Spielsimulation läuft in festen Abständen und bleibt einmal stehen → Folge Aufgelaufene Schritte werden in einem einzigen Frame nachgerechnet → Auf dem Bildschirm Lange Frames folgen in Serie aufeinander und schlagen aus, oder die Obergrenze greift und die Welt läuft langsamer

Symptome
Ruckeln, Zeitraffer, Zeitlupe
Faktoren
Stillstand
Wer ist betroffen
Nur ich
Wann
Gelegentlich, zufällig, Bei großem Andrang
Zuständigkeit
Hauptzuständig Client-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Obergrenze für das Aufholen pro Frame, Restzeit per Interpolation ausgleichen.
Im Graphen
Vereinzelte Spitzen ohne Muster · Frametime, Anzahl fester Zeitschritte pro Frame
Wo nachsehen
Im Profiler eines Development-Builds zusammen mit der Frametime prüfen, wie oft der feste Zeitschritt pro Frame lief (in Unity Anzahl der Marker der FixedUpdate-Phase wie FixedBehaviourUpdate)
Spricht dafür
Auf einen langen Frame folgen in Serie lange Frames mit mehreren Schritten. Ist die Obergrenze erreicht (in Unity Maximum Allowed Timestep), läuft die Spielzeit langsamer als die reale Zeit
Spricht dagegen
Bleibt es bei einem einzelnen langen Frame: „Frametime-Spikes“ oder „Garbage Collection auf dem Client“
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig
Mehr dazu
Die Physikberechnung von Unity (FixedUpdate) ist das typische Beispiel für einen festen Zeitschritt (Standard 0,02 s, 50-mal pro Sekunde). Die Obergrenze fürs Aufholen ist Maximum Allowed Timestep in den Time-Einstellungen (maximale Zeit, die in einem Frame aufgeholt wird, Standard etwa 0,33 s). Dauert ein Frame länger, wird die überschüssige Zeit verworfen, und die Spielzeit läuft entsprechend hinter der realen Zeit her.

Quellen

  1. Set fixed timestep to optimize physics simulation frequency Unity
    Standardwert Fixed Timestep 0,02 s (50-mal pro Sekunde). Bei langen Frames laufen mehrere Physikschritte in einem Frame, die Last steigt
  2. Handling variation in time Unity
    Standardwert Maximum Allowed Timestep 1/3 s (0,3333333). Selbst wenn das Spiel 1 s hängt, vergehen nur 0,333 s Spielzeit. Die Obergrenze verhindert den Teufelskreis, in dem die Aufholschritte alles weiter verlangsamen
  3. Profiler markers reference Unity
    FixedBehaviourUpdate: Ausführungsabschnitt von MonoBehaviour.FixedUpdate, die Physik-Marker werden in der FixedUpdate-Phase aufgerufen

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