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

Game-Lag-Whitepaper › L1 Spielprozess auf dem Client

Renderlast durch große Spielermengen Render/animation cost of crowds

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

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Sind wie bei Belagerungen oder Weltbossen Hunderte Spieler auf einem Bildschirm, ist schon das Zeichnen selbst nicht mehr zu bewältigen.

Warum Hunderte Spieler und Effekte gleichzeitig auf einem Bildschirm → Folge Kosten für Animationen, Schatten, Namensschilder und Effekte steigen mit der Spielerzahl → Auf dem Bildschirm FPS fallen (60 → 15), jede Bewegung ruckelt, auch Eingaben kommen verzögert an

Symptome
Ruckeln, Input-Lag
Faktoren
Stillstand
Wer ist betroffen
Bestimmter Ort oder Kanal, Nur ich
Wann
Bei großem Andrang
Zuständigkeit
Hauptzuständig Client-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
Vereinfachung nach Entfernung (LOD), Obergrenze für angezeigte Spieler, Option für vereinfachte Effekte, Animationen seltener aktualisieren.
Größenordnungen
Selbst 0,02–0,1 ms pro Charakter ergeben bei 300 Charakteren 6–30 ms. Bei 60 FPS beträgt das Frame-Budget 16,7 ms; das allein verbraucht also mehr als 1/3 davon und sprengt es im ungünstigen Fall.
Im Graphen
Steigt mit Spielerzahl und Last · Frametime, Anzahl der Charaktere im Bild
Wo nachsehen
Frametime sowie CPUBusy und GPUBusy aus PresentMon vor und nach Belagerungen oder Weltbossen vergleichen. In Development-Builds stat Unit in Unreal (Zeiten von Game-Thread, Render-Thread und GPU)
Spricht dafür
Mit der Zahl der Spieler im Bild steigt auch die Frametime. Eine Begrenzung der angezeigten Spieler oder vereinfachte Effekte bringen sofort Besserung
Spricht dagegen
Ausschläge unabhängig von der Spielerzahl: „Frametime-Spikes“ oder „Garbage Collection auf dem Client“. FPS in Ordnung, aber nur die Bewegungen anderer hinken hinterher: „Engpass bei der Paketverarbeitung im Main-Thread“
Prüfmittel
Prüfung in der Umgebung des Spielers

Quellen

  1. Introduction to level of detail Unity
    Ohne LOD werden auch klein dargestellte Objekte in voller Komplexität gezeichnet, LOD senkt die Zeichenlast
  2. Animation Budget Allocator in Unreal Engine Epic Games
    Animations-Updates (Ticks) von Skeletal Meshes dynamisch reduzieren und so die Animationszeit im Budget halten
  3. PresentMon Capture Application (README-CaptureApplication.md) Intel
    FrameTime, CPUBusy und GPUBusy zeigen, ob CPU oder GPU den Frame bremst
  4. Stat Commands in Unreal Engine Epic Games
    stat Unit: gesamte Frametime sowie Zeiten von Game-Thread, Render-Thread und GPU

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