La siguiente es una lista de etiquetas comunes en el MicroProfiler, agrupadas por categoría. Las etiquetas también se llaman intercambiablemente tareas, temporizadores, ámbitos, procesos y etiquetas. Cualquiera que sea el nombre, representan una unidad de trabajo.
Entender estas etiquetas puede ayudarte a identificar código problemático en tu juego. Las tablas contienen la etiqueta de la etiqueta, descripciones y consejos para mejorar el rendimiento y optimizar tu juego.
Sueño
Cuando los hilos no están realizando tareas activamente, entran en un estado de sueño, con etiquetas que indican cuánto tiempo estuvo durmiendo el hilo. En cualquier momento dado, es extremadamente común que la mayoría de los hilos de trabajo estén en un estado de sueño.
Navegación
| Etiqueta | Descripción | Consejo de rendimiento |
|---|---|---|
| rasterizeTile | Actualiza los mosaicos de navegación necesarios para una solicitud de búsqueda de caminos, generalmente seguido de computePath que requiere que esos mosaicos estén actualizados. Sigue a NavigationJob/preprocess en el hilo principal. | Reduce la cantidad de invalidaciones de mosaicos de búsqueda de caminos, ya que esto provoca que esos caminos necesiten ser recalculados. Esto es causado por partes no navegables que se mueven. |
| computePath | Calcula caminos, típicamente después de rasterizeTile. | Reduce la cantidad y los extensiones del mundo de las llamadas a Path:ComputeAsync(). Intenta reutilizar caminos para múltiples agentes si se espera que comiencen/terminen desde ubicaciones aproximadamente similares. |
| preprocess/getPrimitivesOverlapping | Recoge la geometría del mundo para cada mosaico de búsqueda de caminos y programa las tareas de rasterización para ser ejecutadas por el hilo de búsqueda de caminos. | Reduce la cantidad de partes. |
Animación y humanoides
| Etiqueta | Descripción | Consejo de rendimiento |
|---|---|---|
| Simulation/gameStepped | Procesamiento de objetos específicos del juego como Humanoids, Animations y callbacks de latido. | Consulta las etiquetas gameStepped a continuación. |
| Simulation/gameStepped/stepHumanoid | Cambios de estado y movimiento de Humanoid. | Reduce la cantidad de Humanoids o desactiva los estados de Humanoid en NPCs que no los necesitan, como Climbing o Swimming. Reduce los callbacks a Humanoid.StateChanged o cambios de estado como Running o Died. |
| Simulation/gameStepped/stepAnimation | Animators avanzará en las animaciones que se están reproduciendo actualmente. | Reduce la cantidad de Animators o articulaciones animadas para disminuir la carga de trabajo de este paso. Reduce la cantidad de callbacks a eventos de animación como AnimationTrack.KeyframeReached o AnimationTrack.Ended. |
| Simulation/gameStepped/RunService.Stepped | Ejecuta funciones conectadas al evento RunService.Stepped. | Reduce la cantidad o carga de trabajo de las funciones conectadas a este evento. Considera retrasar o reemplazar cálculos costosos o distribuir la computación a través de múltiples fotogramas. |
Audio
| Etiqueta | Descripción | Consejo de rendimiento |
|---|---|---|
| Sound | Procesa la simulación acústica y actualiza los sonidos en reproducción activa. | Consulta las etiquetas Sound a continuación. |
| Sound/stepInstances | Actualiza el volumen de los sonidos activos en el espacio de trabajo. | Reduce la cantidad de sonidos en reproducción activa. |
Redes
| Etiqueta | Descripción | Consejo de rendimiento |
|---|---|---|
| Net PacketReceive | Recibe paquetes de red. Si se están replicando muchos objetos o eventos, este paso toma más tiempo. | Replica menos objetos o eventos. |
| Replicator/ProcessPackets | Procesa el contenido de los paquetes de red, como movimiento, invocaciones de eventos y cambios de propiedades. | Reduce la cantidad o tamaño de los objetos que se están replicando, o hazlo en pasos incrementales. Puede aumentar si el tamaño del mapa aumenta, ya que los mapas más grandes tienden a tener más actividad en general. |
| Allocate Bandwidth and Run Senders/Dispatch Physics Senders and TouchSenders | Envía datos sobre la actividad en el juego. | Reduce la cantidad de objetos en movimiento y/o toques. Consulta las secciones siguientes. |
| Allocate Bandwidth and Run Senders/Dispatch StreamJob | Envía regiones específicas a clientes específicos en la función de streaming. | Reduce los radios de streaming mínimos y objetivos. |
| Allocate Bandwidth and Run Senders/Dispatch Data Senders | Envía cambios de propiedades, invocaciones de eventos remotos, cambios de estado de Humanoid, cambios de estado de animación y replicación de nuevas instancias. | Reduce la cantidad de cambios replicados al modelo de datos. |
| Replicator SendCluster | Envía datos de Terreno a los clientes. | Reduce la cantidad o tamaño de los cambios en el terreno. |
| ModelCompleteness Mega Job | Solo en el servidor: la completitud es un concepto interno. Cuando los modelos se envían completamente, se envían eventos de completitud del modelo. | Agrega o elimina menos instancias. |
| deserializePacket | Procesamiento de paquetes de red de bajo nivel. Se prepara para Replicator/ProcessPackets. | Envía menos o actualizaciones más pequeñas. |
Renderizado
| Etiqueta | Descripción | Consejo de rendimiento |
|---|---|---|
| Prepare | Se recopila información del hilo principal y se actualizan varias estructuras de datos utilizadas para el renderizado. | Consulta las etiquetas Prepare a continuación. |
| Prepare/Pass3dAdorn | Maneja el renderizado de varios adornos de objetos, como etiquetas de texto sobre objetos. Para etiquetas de Humanoid con oclusión, este paso incluye raycasting para determinar si tales objetos son visibles. Esto incluye partes no transparentes para facilitar visualizaciones de depuración. | Reduce la cantidad de objetos adornados visibles, como BillboardGuis, etiquetas de nombre/salud de Humanoid, etc. Reduce la cantidad de partes visibles. |
| Prepare/Pass2d | Prepara el renderizado de UI 2D (tanto de jugador como de Roblox). | Reduce la cantidad o complejidad de los elementos de UI. |
| Prepare/UpdatePrepare/updateInvalidParts | Actualiza partes que tuvieron alguna propiedad cambiada o añadida. | Reduce la cantidad de cambios de propiedades en el mundo. Si un script actualiza un gran conjunto de propiedades de objetos, divídelo a través de fotogramas. |
| Prepare/UpdatePrepare/updateInvalidatedFastClusters | Prepara geometrías de "FastCluster" utilizadas para renderizar Humanoids y MeshParts esqueléticos. Las etiquetas especifican la cantidad de partes, vértices y tamaño de los vértices. | Reduce los cambios visuales en modelos con Humanoids o MeshParts esqueléticos. |
| Prepare/UpdatePrepare/updateDynamicParts | Prepara Beams, ParticleEmitters y Humanoids para el renderizado. | Reduce la cantidad de Beams, ParticleEmitters y Humanoids visibles. |
| Prepare/UpdatePrepare/updateInstancedClusters | Actualiza la geometría que utiliza renderizado instanciado, como partes. Las etiquetas Clusters y Instances indican la cantidad actualizada. | Reduce el trabajo que actualiza implícitamente el cuadro delimitador de la parte, como BasePart.CFrame, BasePart.Size o Motor6D.Transform. Actualizaciones de propiedades creativas como Bone.Transform pueden ayudar. |
| Perform | Cuando se crean y emiten comandos de renderizado reales. | Consulta las etiquetas Perform a continuación. |
| Perform/fillGuiVertices | Llena los búferes con vértices de UI para preparar el renderizado. La etiqueta gui count indica la cantidad de LayerCollectors visibles en el fotograma. | Si el costo es alto, reduce la cantidad, densidad y espacio ocupado por los elementos de UI. Si hay demasiadas etiquetas Process GuiEffect, considera reducir el uso de UIGradient y UICorner en etiquetas de texto. |
| Perform/Scene/queryFrustumOrdered | Aplica culling de frustum para que los objetos no visibles no sean renderizados. | Si hay un alto costo, significa que hay muchos elementos. Quizás usa algunas mallas más grandes donde una sola malla tiene más detalles en lugar de muchas piezas individuales pequeñas. |
| Perform/Scene/computeLightingPerform | Cálculo de iluminación cerca de la cámara. | Manipula la cantidad de fuentes de luz o mueve la cámara menos para reducir el tiempo que toma recalcular la iluminación. |
| Perform/Scene/computeLightingPerform/LightGridCPU | Actualiza la iluminación de voxel, que se utiliza en niveles de calidad más bajos. | Si la actualización de la ocupación de chunks toma demasiado tiempo, considera usar geometría de menor resolución, reducir la cantidad de partes o anclar partes. Si las otras etiquetas tardan demasiado, considera reducir la cantidad de luces y usar geometría que no proyecte sombras para objetos que se mueven e invalidan la ocupación. |
| Perform/Scene/computeLightingPerform/ShadowMapSystem | Actualiza mapas de sombras. No se realiza en niveles de calidad por debajo de 4. | Reduce la cantidad de luces. También puedes usar Light.Shadows y BasePart.CastShadow para desactivar la proyección de sombras en instancias menos importantes. Consulta Mejorar rendimiento. |
| Perform/Scene/Glow, ColorCorrection, MSAA, SSAO y SSAOApply | Renderizado de post-procesamiento. | Reduce la cantidad de efectos de post-procesamiento. Por lo general, esto no es significativo. |
| Perform/Scene/UI | Renderizado de UI. En Id_Screen, hay una etiqueta con la cantidad de lotes, materiales y triángulos utilizados. | Reduce la cantidad de elementos de UI visibles. Usar CanvasGroups puede ayudar a expensas de un mayor uso de memoria. |
| Perform/Scene/UpdateView/updateParticles, updateParticleBoundings | Actualiza la posición y límites de las partículas. | Reduce la cantidad de ParticleEmitters, tasas de emisión, vidas útiles, etc. Limita el movimiento de los emisores. |
| Scene/Id_Opaque, RenderView/Id_Opaque | Partes en la escena con una transparencia general de 0.01 o menor. | Reduce el uso y la densidad de partes. |
| Scene/Id_Transparent, RenderView/Id_Transparent | Partes en la escena con una transparencia general entre 0.01 y 1. | Reduce el uso de transparencia parcial. |
| Scene/Id_Decals, RenderView/Id_Decals | Decals en la escena. | Reduce el uso de decals en mallas complejas. |
| Scene/Shadows | Recalculo de sombras en la escena, generalmente realizado en escenas dinámicas y en el juego típico. Las partes, independientemente de la transparencia, proyectan sombras bajo la suposición de que contienen decals. No se realiza en niveles de calidad por debajo de 4. | Si este paso toma demasiado tiempo, considera desactivar BasePart.CastShadow para mallas complejas, partes con alta transparencia parcial y instancias menos importantes. Las partes completamente transparentes que no tienen decals o no necesitan sombras de decals deben tener BasePart.CastShadow desactivado. Consulta Mejorar rendimiento. |
| Perform/Present | Reenvía al hilo de GPU para realizar comandos de renderizado. | Reduce la complejidad de la escena en general. Si este paso está tardando mucho, podrías estar limitado por la GPU. |
| Perform/Present/waitUntilCompleted | Espera a que la GPU termine de renderizar el fotograma anterior. | Si esto está sucediendo con frecuencia, entonces la cantidad de cosas renderizadas es demasiado alta. El Administrador de Tasa de Fotogramas ayuda a equilibrar esto, pero si sigue siendo alto, intenta seguir los consejos de rendimiento de las etiquetas individuales de Scene. |
| LoadImage | Procesa imágenes en un formato que el motor puede usar. | Reduce el uso de imágenes grandes. |
Scripts
| Etiqueta | Descripción | Consejo de rendimiento |
|---|---|---|
| Render/PreRender/fireBindToRenderSteppedCallbacks | Ejecuta funciones vinculadas al paso de renderizado a través de RunService:BindToRenderStep(). | Asegúrate de que las funciones conectadas a este evento hagan el menor trabajo posible. |
| Render/PreRender/RunService.RenderStepped | Ejecuta funciones conectadas al evento RunService.RenderStepped. | Asegúrate de que las funciones conectadas a este evento hagan el menor trabajo posible. |
| WaitingHybridScriptJob | Reanuda scripts que están esperando usando Instance:WaitForChild() o Globals.Roblox.wait(). Generalmente se realiza 30 veces por segundo. Este paso tiene un presupuesto de tiempo de ejecución para ejecutar scripts en espera. | Si tienes demasiados scripts en espera o scripts con un tiempo de ejecución largo antes de ceder, este paso se limita y espera más tiempo antes de poder ejecutarse nuevamente. Reduce la cantidad de funciones vinculadas o cálculos largos en este paso. |
| GC | Ciclo de recolección de basura de Luau. | Agrupa tablas y otros objetos coleccionables o intenta reducir la creación de tablas temporales. |
| Heartbeat/RunService.Heartbeat | Ejecuta funciones conectadas al evento RunService.Heartbeat. | Reduce la cantidad o carga de trabajo de las funciones conectadas a este evento. Considera retrasar o reemplazar cálculos costosos o distribuir la computación a través de múltiples fotogramas. |
Simulación
| Etiqueta | Descripción | Consejo de rendimiento |
|---|---|---|
| Distributed Physics Ownership | Determina si el servidor o un cliente tiene autoridad sobre ciertas instancias como partes. | Reduce la cantidad de partes que cambian frecuentemente de propiedad de red, especialmente aquellas con interacción común. |
| Simulation/assemble | Actualiza un árbol de objetos conectados (ensamblajes) utilizados por el motor de física. | Reduce la cantidad de juntas que se crean o destruyen. |
| Simulation/physicsSteppedTotal/physicsStepped | Ejecuta la simulación de física. | Reduce la cantidad y complejidad de cuerpos simulados físicamente. |
| Simulation/physicsSteppedTotal/physicsStepped/SpatialFilter/filterStep | Actualiza islas de simulación, organizando partes según la propiedad de red, simulación local. Las islas son grupos no interactuantes de partes que pueden ser simuladas independientemente. | Evita establecer la propiedad de red con frecuencia. Mantén grupos de partes lo suficientemente alejados entre sí para que puedan ser simulados por separado. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepContacts | Actualiza contactos entre objetos. | Reduce la cantidad de cuerpos que colisionan a la vez, o usa cajas de colisión más simples. Los cubos son mejores que las mallas complejas. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld O stepWorldThrottled | Resuelve ecuaciones de física relacionadas con conectores, flotabilidad y Humanoids. Cuando el motor está sobrecargado y no puede simular todo en tiempo real, algunos pasos pueden ser limitados (stepWorldThrottled) y solo se simulan "ensamblajes en tiempo real" como Humanoids. | Depende de dónde se esté yendo el tiempo basado en las siguientes tres fases: stepContacts: pruebas de geometría de detección de colisiones de fase estrecha. Solver step: integra el tiempo y resuelve colisiones y otras restricciones updateBroadphase: actualiza las posiciones de los ensamblajes en el sistema de detección de colisiones y encuentra pares de fase estrecha que posiblemente colisionen. |
| notifyMovingAssemblies | Ayuda a rastrear cuánto tiempo han estado durmiendo los primitivos. | |
| Simulation/physicsSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | Interpolates ensamblajes no controlados por el jugador actual. | Establece el propietario de red de las partes al jugador actual para reducir esto; aunque esto generalmente causará que se realice más trabajo de física en otros lugares. |
| Simulation/handleFallenParts | Elimina partes que han caído por debajo de Workspace.FallenPartsDestroyHeight. | Baja la altura de destrucción o reduce la cantidad de partes que caen a la altura de destrucción. |
| Heartbeat/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | Segunda parte de notifyMovingAssemblies. | |
| Heartbeat/RunService.Heartbeat | Ejecuta funciones conectadas al evento RunService.Heartbeat para contactos de simulación y scripts. La descripción actual es lo suficientemente genérica como para no estar equivocada. | Reduce la cantidad o carga de trabajo de las funciones conectadas a RunService.Heartbeat. |
| worldStep/stepContacts | Ayuda a la simulación de física a procesar muchos contactos a la vez. | Reduce la cantidad de objetos que colisionan. |
| SolveBatch | Ayuda a la simulación de física a resolver lotes de movimiento de objetos. |
UI
| Etiqueta | Descripción | Consejo de rendimiento |
|---|---|---|
| Render/PreRender/UpdateInput | Actualiza y activa todos los eventos relacionados con la entrada del usuario si el usuario ha realizado una entrada desde el último fotograma. | Intenta no hacer demasiado trabajo directamente al recibir la entrada. Considera hacer una cantidad mínima de procesamiento para la entrada, y los cálculos más grandes deben ser trasladados a otro hilo que ocurra más tarde. |
| Render/PreRender/TweenService | Actualiza objetos que están siendo animados usando TweenService y llama a callbacks de finalización, como los utilizados en GuiObject:TweenSize() o GuiObject:TweenPosition(). | Reduce la cantidad de objetos que están siendo animados usando TweenService y asegúrate de que los callbacks hagan el menor trabajo posible. |
| Heartbeat/TweenService | En el servidor, TweenService se ejecuta en RunService.Heartbeat en lugar de RunService.PreRender. | Reduce la cantidad de objetos que están siendo animados usando TweenService y asegúrate de que los callbacks hagan el menor trabajo posible. |
| Render/PreRender/UpdateUILayouts | Actualiza la posición y tamaño de los elementos de UI en todos los LayerCollectors habilitados. | Consulta las etiquetas UpdateUILayouts a continuación. |
| Render/PreRender/UpdateUILayouts/Rebuild Z-order list | Reconstruye la lista interna de orden Z de los elementos de UI (no confundir con GuiObject.ZIndex) en un LayerCollector en el primer renderizado o cuando se agrega, elimina o cambia el GuiObject.ZIndex de un nuevo elemento. | Reduce la cantidad de elementos de UI en LayerCollectors antes del primer renderizado y evita cambiar frecuentemente el padre y el GuiObject.ZIndex de los elementos de UI dentro de ellos. Cuantos más elementos tenga un LayerCollector, peor será su rendimiento. |
| Render/PreRender/UpdateUILayouts/Layout | Actualiza la posición y tamaño de los elementos de UI en un LayerCollector individual. Puede contener una etiqueta con información sobre la UI relevante, junto con la cantidad de Relayouts, Actualizaciones y Redimensiones. | Reduce la cantidad de elementos de UI que están siendo redimensionados o reposicionados, como aquellos gestionados por UILayout y aquellos animados con TweenService, GuiObject:TweenSize(), o GuiObject:TweenPosition(). Considera usar tamaños fijos para BillboardGuis. |