El juego se detiene para leer archivos y crear shaders justo antes de dibujar zonas, monstruos o efectos que aparecen por primera vez.
Por qué Entrar en una zona nueva o ver por primera vez una habilidad, un equipamiento o un monstruo → Efecto El hilo principal espera a que terminen la lectura de archivos y la compilación de shaders → En pantalla Se detiene 0.1–1 s solo la primera vez; a partir de la segunda va bien
Al moverse o cambiar de zona, Al hacer ciertas acciones
Responsable
Responsable principal Desarrollo de cliente (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Carga asíncrona, precarga (prewarming), compilar los shaders por adelantado en la pantalla de carga o en la primera ejecución, aprovechar las pantallas de carga.
Cifras de referencia
Compilar un shader lleva decenas de ms, y a veces más de 100 ms. Cargar una textura lleva de decenas a cientos de ms según la velocidad del almacenamiento.
En el gráfico
Avalancha tras la apertura · Número de picos de frametime (justo después de un parche o una actualización de drivers)
Dónde mirar
Grabar con PresentMon dos veces el mismo recorrido y comparar la primera visita con la segunda. En una build de desarrollo, en Unreal activar r.PSOPrecache.Validation y revisar stat PSOPrecache y “PSO PRECACHING MISS” en el log; en Unity, los tramos de carga y de shaders de los frames con pico en la vista Timeline del Profiler
Se confirma si
Picos de 0.1–1 s solo en sitios nuevos o con habilidades usadas por primera vez, que desaparecen la segunda vez. Los reportes se concentran justo después de un parche o de una actualización del driver gráfico y luego bajan
Se descarta si
Si hay picos en el mismo sitio cada vez, el problema no es la caché de shaders. Si se repiten en cada desplazamiento solo en PC con almacenamiento lento: “Almacenamiento lento que retrasa el streaming de assets”; si la memoria dedicada de la GPU está llena: “Falta de memoria gráfica (VRAM)”
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego
Para saber más
En PC, el driver gráfico guarda en la caché de shaders cada shader que compila y luego lo reutiliza. Por eso, justo después de actualizar el driver gráfico o de un parche del juego, esa caché se invalida y hasta quien jugaba bien vuelve a tener tirones durante un tiempo. El reporte típico es “después del parche se traba la primera vez que voy a cada sitio”.
Fuentes
Shader loadingUnity La primera vez que se usa una variante de shader, el driver gráfico la compila para la GPU y puede provocar una pausa visible; lo ya compilado queda en caché y no vuelve a provocar pausas
Direct3D 12 Return CodesMicrosoft D3D12_ERROR_DRIVER_VERSION_MISMATCH: una caché de PSO creada con otra versión del driver no se puede reutilizar (hay que recompilar tras actualizar el driver)
PSO Precaching for Unreal EngineEpic Games Al activar r.PSOPrecache.Validation, stat PSOPrecache muestra estadísticas de los PSO que no se precargaron y el log registra “PSO PRECACHING MISS”; si crear un PSO en tiempo de ejecución supera los 20 ms (valor predeterminado), cuenta como tirón (hitch)