Auf langsamen Datenträgern wie HDDs kommt das Einlesen von Texturen und Modellen in einer Open World der Bewegung nicht hinterher. Objekte erscheinen spät, oder das Spiel ruckelt, während es auf Lesevorgänge wartet.
Warum Schnelle Fortbewegung per Reittier oder Teleport oder Betreten eines belebten Orts, viele neue Texturen und Modelle auf einmal nötig → Folge Langsamer Datenträger wie eine HDD liest nicht schnell genug, Leseanfragen stauen sich, bei manchen Ladevorgängen wartet der Main-Thread bis zum Ende → Auf dem Bildschirm Texturen bleiben eine Weile unscharf, Gebäude und Charaktere erscheinen spät, Ruckeln oder Freeze, während auf Lesevorgänge gewartet wird
Asynchrones Streaming, bei dem der Main-Thread nicht auf Lesevorgänge wartet, vorausschauendes Laden anhand von Bewegungsrichtung und Tempo, zuerst niedrige Auflösung (Mipmaps) und einfache Modelle zeigen und später austauschen, bei Streaming-Rückstand während schneller Fortbewegung das Tempo kurz begrenzen oder einen Ladebildschirm zeigen, in Mindest- und empfohlenen Systemanforderungen angeben, ob eine SSD nötig ist.
Aufgaben Extern
Spielern empfehlen, das Spiel auf einer SSD zu installieren, und sie prüfen lassen, ob auf demselben Laufwerk Downloads oder Virenscans laufen.
Größenordnungen
Laut Microsoft lesen ältere Festplatten einige Dutzend MB pro Sekunde, NVMe-SSDs mehrere GB pro Sekunde. Spiele der vorigen Generation nutzten fürs Streaming etwa 50 MB pro Sekunde. Läuft ein Spiel, das auf SSD-Geschwindigkeit ausgelegt ist und weit mehr liest, auf einer HDD, hält das Lesen mit der Bewegung oft nicht Schritt.
Im Graphen
Nur einzelne Ausreißer · Anzahl der Frametime-Spikes (nach Datenträgertyp), Disk-Leselatenz
Wo nachsehen
Beim schnellen Fortbewegen in der Windows-Leistungsüberwachung PhysicalDisk\Avg. Disk sec/Read (durchschnittliche Dauer eines Lesevorgangs) und Current Disk Queue Length zusammen mit der Frametime aus PresentMon aufzeichnen. In Development-Builds unter Unreal stat Streaming und stat AsyncLoad, unter Unity die Profiler-Warnung AssetBundle.asset/allAssets prüfen (Ergebnis vor Ende des Ladevorgangs angefordert, Main-Thread wartet)
Spricht dafür
Beim schnellen Fortbewegen schießen Disk-Leselatenz und Warteschlange hoch, gleichzeitig schlägt die Frametime aus oder Texturen und Objekte erscheinen spät. Dieselbe Szene läuft auf einer SSD ohne das Problem
Spricht dagegen
Datenträger untätig, Texturen trotzdem unscharf: „Zu wenig Grafikspeicher (VRAM)“. Ab dem zweiten Besuch am selben Ort in Ordnung: „Synchrones Laden und Shader-Kompilierung im Main-Thread“
Prüfmittel
Prüfung in der Umgebung des Spielers
Mehr dazu
Hakt es nur beim ersten Mal und danach nicht mehr, passt eher „Synchrones Laden und Shader-Kompilierung im Main-Thread“. Wiederholt es sich bei jeder Bewegung und nur auf PCs mit langsamem Datenträger, ist es diese Ursache. Auch „Zu wenig Grafikspeicher (VRAM)“ führt zu unscharfen Texturen, weil Texturen aus dem Grafikspeicher entfernt und wieder geladen werden. Deshalb sind die Wartezeit beim Lesen vom Datenträger und die Auslastung des Grafikspeichers gemeinsam zu prüfen. Auch der Echtzeitschutz eines Virenscanners kann sich bei jedem Öffnen einer Spieldatei einschalten und das Lesen weiter verzögern.
Quellen
DirectStorage is coming to PCMicrosoft Ältere Festplatten lesen einige Dutzend MB pro Sekunde, NVMe-SSDs mehrere GB pro Sekunde, das Asset-Streaming-Budget von Spielen der vorigen Generation lag bei etwa 50 MB pro Sekunde, Open-World-Spiele lesen ferne Landschaft während der Bewegung in Echtzeit ein und verwerfen sie wieder
Texture and mesh loadingUnity Synchroner Upload liest und überträgt im Main-Thread innerhalb eines Frames und verursacht ein sichtbares Stocken, asynchroner Upload streamt über mehrere Frames
Texture Streaming Overview for Unreal EngineEpic Games Der Streamer erhöht und senkt die Texturauflösung (Mip) passend zum Blickpunkt, rechnet größtenteils in asynchronen Worker-Threads und lädt zuerst die sichtbaren Mips
Profiler markers referenceUnity Warnung AssetBundle.asset/allAssets: Ergebnis vor Ende des Ladevorgangs angefordert, der Main-Thread hält an und wartet
Stat Commands in Unreal EngineEpic Games stat Streaming (Speicher und Anzahl gestreamter Texturen), stat AsyncLoad (Statistik zum asynchronen Laden)
Windows Performance Monitor Disk Counters ExplainedMicrosoft Avg. Disk sec/Read ist die durchschnittliche Dauer eines Lesevorgangs (I/O-Latenz), Current Disk Queue Length die Länge der Disk-Warteschlange im Moment der Messung