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

Game-Lag-Whitepaper › Probleme, die nur einige betreffen

Drosselung von Hintergrundfenstern Background window throttling

Ursachen-ID pt-background · Hauptzuständig Client-Entwicklung (Entwicklungsteam) · Beteiligt Extern (Extern)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Bei einem Client im Hintergrundfenster reduzieren Spiel, Engine und OS Frames und Verarbeitung. Empfangene Pakete werden nicht rechtzeitig verarbeitet, stauen sich oder laufen über.

Warum Hintergrund-Framelimit in Spieloptionen oder Grafiktreiber (z. B. beim NVIDIA-Treiber zwischen 20 und 200 pro Sekunde einstellbar), Energiesparmodus, Engine-Einstellung zum Pausieren im Hintergrund. Auch das OS teilt dem Fenster im Vordergrund bevorzugt CPU und GPU zu → Folge Pro Frame werden weniger Pakete verarbeitet, die Warteschlange wächst, und läuft der Empfangspuffer über, werden Pakete verworfen → Auf dem Bildschirm Holt man das Fenster nach vorn, erscheint alles auf einmal, oder einige NPCs bleiben dauerhaft unsichtbar

Symptome
Unsichtbar / Geisterobjekte, Zeitraffer, Verbindungsabbruch
Faktoren
Stillstand, Paketverlust
Wer ist betroffen
Nur ein Client auf demselben PC
Wann
Nach Inaktivität, Immer
Zuständigkeit
Hauptzuständig Client-Entwicklung (Entwicklungsteam) · Beteiligt Extern (Extern)
Aufgaben Entwicklungsteam
Netzwerkempfang in einem von der Game-Loop getrennten Thread weiterlaufen lassen, auch im Hintergrund einen Mindestdurchsatz garantieren, Einstellung der Engine für Ausführung im Hintergrund aktivieren (Unity: runInBackground).
Aufgaben Extern
Hinweis an Spieler: Hintergrund-Framelimit im Grafiktreiber und Energiesparmodus des PCs deaktivieren.
Größenordnungen
Ist in Unity runInBackground deaktiviert, hält die Game-Loop an, sobald das Fenster den Fokus verliert. Läuft der Empfang nur in dieser Loop, werden in der Zeit überhaupt keine Pakete verarbeitet.
Im Graphen
Lücke, dann alles auf einmal · Frame-Abstand im Client, verarbeitete Pakete pro Frame
Wo nachsehen
Auf demselben PC ein Fenster im Vordergrund und das andere im Hintergrund platzieren und mit vertauschten Rollen vergleichen. Mit PresentMon den Frame-Abstand beider Prozesse messen, gibt es spielseitige Logs, Fensterfokus und verarbeitete Pakete pro Frame prüfen
Spricht dafür
Nur als Hintergrundfenster steigt der Frame-Abstand stark (bei Treiberlimit flach auf dem Abstand, der der eingestellten Framerate entspricht) oder die Verarbeitung stoppt, und beim Fensterwechsel wandert das Problem zum anderen Client
Spricht dagegen
Tritt im Vordergrundfenster genauso auf: nicht die Hintergrunddrosselung. Unabhängig von der Fensterlage immer derselbe Client: „Unterschiedliche Anzeigeoptionen“ oder „Abweichende Client-Version oder Spieldaten“
Prüfmittel
Prüfung in der Umgebung des Spielers

Quellen

  1. Application.runInBackground Unity
    Standardwert von runInBackground ist false, die App pausiert dann im Hintergrund
  2. Manage 3D Settings (reference) — NVIDIA Control Panel Help NVIDIA
    Background Application Max Frame Rate: begrenzt die maximale Framerate von Spielen im Hintergrund auf 20–200 pro Sekunde
  3. Priority Boosts Microsoft
    Windows hebt die Priorität des Prozesses im Vordergrundfenster auf mindestens das Niveau von Hintergrundprozessen an
  4. PresentMon README Intel
    Werkzeug, das CPU-, GPU- und Display-Frametimes von Windows-Grafikanwendungen pro Anwendung erfasst

Verwandte Ursachen

Gleiche Schicht: Probleme, die nur einige betreffen

Ursachen aus anderen Schichten mit demselben Symptom (Unsichtbar / Geisterobjekte)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen