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

Game-Lag-Whitepaper › Synchronisationsdesign

Wiedergabe bei Ankunft ohne Zeitstempel Events played on arrival (no timestamps)

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

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Bekommen Server-Events keinen Entstehungszeitpunkt und werden sofort bei Ankunft abgespielt, überträgt sich der Netzwerk-Jitter direkt auf das Timing der Darstellung.

Warum Events wie „Angriff beginnt“ oder „Effekt abspielen“ sofort bei Ankunft ausgeführt → Folge Jedes Paket kommt zu einer anderen Zeit an, Abstände unregelmäßig → Auf dem Bildschirm Angriffsketten mal schneller, mal langsamer, Timing der Bossmuster jedes Mal anders

Symptome
Ruckeln, Zeitraffer
Faktoren
Jitter
Wer ist betroffen
Nur ich
Wann
Immer
Zuständigkeit
Hauptzuständig Client-Entwicklung (Entwicklungsteam) · Beteiligt Server-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Client: Events zum mitgelieferten Zeitpunkt abspielen (zeitgeplante Events, Interpolationspuffer). Server: Events mit dem Entstehungszeitpunkt (Serverzeit) versehen und senden.
Im Graphen
Vereinzelte Spitzen ohne Muster · Abstand der Event-Wiedergabe, Ankunftsabstand der Pakete
Wo nachsehen
Entstehungszeitpunkt der Events im Server-Log und Ankunfts- und Wiedergabezeitpunkt im Client-Log über die Event-Nummer zuordnen und die Abstände vergleichen. In einem Entwicklungs-Build mit hinzugefügtem Jitter nachstellen (Jitter-Wert von tc netem, minimale und maximale Latenz der Unreal-Netzwerkemulation)
Spricht dafür
Entstehungsabstände auf dem Server gleichmäßig, Wiedergabeabstände folgen unverändert den unregelmäßigen Ankunftsabständen
Spricht dagegen
Ankunftsabstände gleichmäßig, aber Wiedergabe unregelmäßig: Frame-Problem im Client („Frametime-Spikes“). Schon die Entstehungsabstände auf dem Server schwanken: „Überschrittenes Tick-Budget“
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
    Jedes Update bekommt die Serverzeit, gezeichnet wird die Position zur Zielzeit, also aktuelle Zeit minus Interpolationszeit (100 ms)
  2. Snapshot Interpolation Gaffer On Games
    Empfangene Snapshots sofort zu zeichnen, ruckelt wegen Jitter. Sammelt man sie kurz im Interpolationspuffer und zeichnet dann, wird die Darstellung flüssig
  3. NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
    Beispiel, in dem ein RPC den Sendezeitpunkt mitführt und die Empfangsseite den Effekt passend zur Serverzeit abspielt
  4. tc-netem(8) — Linux manual page iproute2
    Testwerkzeug, das ausgehenden Paketen Latenz und Jitter (delay TIME JITTER) sowie Verlust (loss random PERCENT) hinzufügt, um reale Netze nachzubilden
  5. Using Network Emulation in Unreal Engine Epic Games
    Tests mit minimaler und maximaler Latenz sowie Paketverlustrate auf Server und Client, in der Konsole etwa über NetEmulation.PktLag einstellbar

Verwandte Ursachen

Gleiche Schicht: Synchronisationsdesign

Ursachen aus anderen Schichten mit demselben Symptom (Ruckeln)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen