Esta guía muestra cómo usar el MicroProfiler para encontrar un aspecto problemático de un juego e identificar la causa raíz. Descarga el juego, Abrir desde archivo en Studio, y sigue las instrucciones.
Identificar el problema
Después de abrir el juego en Studio, comienza a probarlo con F5 o el botón Jugar.
La tasa de fotogramas se siente decente, pero no tan suave como debería para un juego de este tamaño y alcance. Presiona CtrlShiftF5 (⌘ShiftF5) para mostrar la superposición de Resumen de rendimiento.

Ten en cuenta que la tasa de fotogramas está por debajo de 60 fotogramas por segundo (FPS).
Abre el MicroProfiler presionando CtrlAltF6 (⌘⌥F6).

Ten en cuenta que los tiempos de fotograma son consistentes—las barras son aproximadamente de la misma altura—por lo que lo que está causando la baja tasa de fotogramas se está ejecutando cada fotograma en lugar de ejecutarse ocasionalmente y causar picos en el tiempo de fotograma.
Pausa el MicroProfiler presionando CtrlP (⌘P). Pausar con el atajo de teclado abre el modo detallado.
Haz clic y arrastra para desplazar el gráfico. Nota cómo una tarea en particular en los hilos de trabajo parece estar utilizando mucho tiempo de procesamiento en comparación con el hilo principal. Coloca el cursor sobre RunService.Stepped y nota cuánto tiempo está tomando renderizar.

Las barras apiladas en la línea de tiempo indican una jerarquía de código, así que sigue pasando el cursor sobre capas inferiores para intentar identificar el problema.


Nota la etiqueta LocalScript, que indica el nombre del script, y la etiqueta Raycast, que indica que el problema podría estar relacionado con el raycasting.
Crear etiquetas de solución de problemas
Ahora que el MicroProfiler ha proporcionado un punto de partida, puedes solucionar el código problemático.
Detén la prueba de juego y filtra la ventana del Explorador por localscript para encontrar el archivo.

Una búsqueda de raycast indica que esta parte del código es probablemente la culpable del mal rendimiento del juego:
local RAYS_PER_SECOND = 1500local function onStepped()for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)endendRunService.Stepped:Connect(onStepped)Específicamente, puedes ver que el código está lanzando 1,500 rayos por segundo en direcciones aleatorias.
Para verificar que esta parte del código está causando la demora en el renderizado, envuelve el contenido de la función con debug.profilebegin() y debug.profileend():
local function onStepped()debug.profilebegin("Raycast Spam")for _ = 1, RAYS_PER_SECOND dolocal startPosition = getRandomPosition()local endPosition = getRandomPosition()local direction = endPosition - startPositionWorkspace:Raycast(startPosition,endPosition)enddebug.profileend()end
Confirmar y solucionar el problema
Comienza a probar el juego y abre el MicroProfiler nuevamente.
Nota cómo el MicroProfiler ahora muestra la etiqueta personalizada, indicando que esta función era de hecho la causa raíz.

Detén la prueba de juego.
Elimina o comenta la función onStepped() y la conexión RunService.Stepped:Connect(onStepped).
Comienza a probar el juego nuevamente y revisa el Resumen de rendimiento otra vez.

Nota la gran mejora en la tasa de fotogramas y la correspondiente disminución en los tiempos de fotograma en el gráfico de MicroProfiler.