En un almacenamiento lento como un HDD, la lectura de texturas y modelos de un mundo abierto no sigue el ritmo del desplazamiento, así que las entidades aparecen tarde o el juego da tirones mientras espera la lectura.
Por qué Moverse rápido en montura o teletransportarse, o entrar en un sitio con mucha gente, hace que se necesiten muchas texturas y modelos nuevos a la vez → Efecto Un almacenamiento lento como un HDD no lee a la velocidad necesaria, las solicitudes de lectura se acumulan y algunas cargas hacen esperar al hilo principal hasta que terminan → En pantalla Texturas borrosas durante un rato, edificios y personajes que aparecen tarde, y tirones o congelamientos mientras se espera la lectura
Al moverse o cambiar de zona, Cuando se junta mucha gente
Responsable
Responsable principal Desarrollo de cliente (Equipo de desarrollo) · También Externo (Externo)
Tareas (Equipo de desarrollo)
Streaming asíncrono que no haga esperar al hilo principal, precarga según la dirección y la velocidad de desplazamiento, mostrar primero una resolución baja (mipmaps) o modelos simples y sustituirlos después, limitar brevemente la velocidad de desplazamiento o usar una pantalla de carga si el streaming se retrasa durante un desplazamiento rápido, indicar en los requisitos mínimos y recomendados si hace falta un SSD.
Tareas (Externo)
Indicar a los jugadores que instalen el juego en un SSD y que revisen si en el mismo disco hay descargas o análisis del antivirus en curso.
Cifras de referencia
Según Microsoft, los discos duros antiguos leen decenas de MB por segundo y los SSD NVMe, varios GB por segundo, y los juegos de la generación anterior dedicaban al streaming unos 50 MB por segundo. Si un juego pensado para la velocidad de un SSD, que lee mucho más que eso, se ejecuta en un HDD, es fácil que la lectura no siga el ritmo del desplazamiento.
En el gráfico
Alto solo en algunos · Número de picos de frametime (por tipo de almacenamiento), latencia de lectura del disco
Dónde mirar
Registrar a la vez, durante un desplazamiento rápido, PhysicalDisk\Avg. Disk sec/Read (tiempo medio de una lectura) y Current Disk Queue Length del Monitor de rendimiento de Windows, junto con el tiempo de frame de PresentMon. En una build de desarrollo, stat Streaming y stat AsyncLoad en Unreal, y la advertencia AssetBundle.asset/allAssets del Profiler de Unity (se pide el resultado antes de que termine la carga y el hilo principal espera)
Se confirma si
Al desplazarse rápido, la latencia de lectura y la cola del disco se disparan, y en ese mismo momento hay picos de frame o texturas y entidades que aparecen tarde. Con la misma escena en un SSD, desaparece
Se descarta si
Si el disco está desocupado y las texturas se ven borrosas: “Falta de memoria gráfica (VRAM)”. Si desde la segunda visita al mismo sitio todo va bien: “Carga síncrona y compilación de shaders en el hilo principal”
Se verifica con
En el entorno del jugador
Para saber más
Si solo se detiene la primera vez y después va bien, se parece más a “Carga síncrona y compilación de shaders en el hilo principal”; si se repite en cada desplazamiento solo en PC con almacenamiento lento, es esta causa. “Falta de memoria gráfica (VRAM)”, en la que las texturas se descargan y se vuelven a subir porque falta memoria gráfica, también produce texturas borrosas, así que hay que mirar a la vez la espera de lectura del disco y el uso de memoria gráfica. El análisis en tiempo real del antivirus también puede intervenir cada vez que se abre un archivo del juego y retrasar aún más la lectura.
Fuentes
DirectStorage is coming to PCMicrosoft Los discos duros antiguos leen decenas de MB por segundo y los SSD NVMe, varios GB por segundo; el presupuesto de streaming de assets de los juegos de la generación anterior rondaba los 50 MB por segundo; los juegos de mundo abierto leen y descartan en tiempo real el paisaje lejano mientras el jugador se desplaza
Texture and mesh loadingUnity La subida síncrona a la GPU lee y sube los datos en un solo frame en el hilo principal y causa una pausa visible; la subida asíncrona hace el streaming a lo largo de varios frames
Texture Streaming Overview for Unreal EngineEpic Games El streamer sube y baja la resolución de las texturas (mips) según el punto de vista; la mayor parte del cálculo se hace en hilos de trabajo asíncronos y se cargan primero los mips visibles en pantalla
Profiler markers referenceUnity Advertencia AssetBundle.asset/allAssets: se pide el resultado antes de que termine la carga y el hilo principal se detiene a esperar
Stat Commands in Unreal EngineEpic Games stat Streaming (memoria y número de texturas en streaming), stat AsyncLoad (estadísticas de carga asíncrona)
Windows Performance Monitor Disk Counters ExplainedMicrosoft Avg. Disk sec/Read es el tiempo medio que tarda en completarse una lectura (latencia de E/S); Current Disk Queue Length es la longitud de la cola del disco en el momento de la medición