A seguir está uma lista de tags comuns no MicroProfiler, agrupadas por categoria. As tags também são chamadas de tarefas, temporizadores, escopos, processos e rótulos. Qualquer que seja o nome, elas representam uma unidade de trabalho.
Entender essas tags pode ajudá-lo a identificar códigos problemáticos em seu jogo. As tabelas contêm rótulo da tag, descrições e conselhos para melhorar o desempenho e otimizar seu jogo.
Sono
Quando as threads não estão realizando tarefas ativamente, elas entram em um estado de sono, com tags para indicar quanto tempo a thread esteve dormindo. A qualquer momento, é extremamente comum que a maioria das threads de trabalho esteja em um estado de sono.
Navegação
| Rótulo | Descrição | Conselho de desempenho |
|---|---|---|
| rasterizeTile | Atualiza os tiles de navegação necessários para uma solicitação de pathfinding, geralmente seguido por computePath, que requer que esses tiles estejam atualizados. Segue NavigationJob/preprocess na thread principal. | Reduza o número de invalidações de tiles de pathfinding, pois isso faz com que esses caminhos precisem ser recalculados. Isso é causado por partes não navegáveis que se movem. |
| computePath | Calcula caminhos, tipicamente após rasterizeTile. | Reduza o número e a extensão mundial das chamadas Path:ComputeAsync(). Tente reutilizar caminhos para múltiplos agentes se eles forem esperados para começar/terminar de locais aproximadamente semelhantes. |
| preprocess/getPrimitivesOverlapping | Coleta a geometria do mundo para cada tile de pathfinding e agenda as tarefas de rasterização para serem executadas pela thread de pathfinding. | Reduza a contagem de partes. |
Animação e humanoides
| Rótulo | Descrição | Conselho de desempenho |
|---|---|---|
| Simulation/gameStepped | Processamento de objetos específicos do jogo, como Humanoids, Animations e callbacks de batimento cardíaco. | Veja os rótulos gameStepped abaixo. |
| Simulation/gameStepped/stepHumanoid | Alterações de estado e movimento de Humanoid. | Reduza a quantidade de Humanoids ou desative os estados de Humanoid em NPCs que não precisam deles, como Climbing ou Swimming. Reduza callbacks para Humanoid.StateChanged ou alterações de estado como Running ou Died. |
| Simulation/gameStepped/stepAnimation | Animators avançará nas animações atualmente em execução. | Reduza a quantidade de Animators ou articulações animadas para diminuir a carga de trabalho deste passo. Reduza o número de callbacks para eventos de animação, como AnimationTrack.KeyframeReached ou AnimationTrack.Ended. |
| Simulation/gameStepped/RunService.Stepped | Executa funções conectadas ao evento RunService.Stepped. | Reduza a quantidade ou carga de trabalho das funções conectadas a este evento. Considere atrasar ou substituir cálculos caros ou espalhar a computação por vários frames. |
Áudio
| Rótulo | Descrição | Conselho de desempenho |
|---|---|---|
| Sound | Processa simulação acústica e atualiza sons em reprodução ativa. | Veja os rótulos Sound abaixo. |
| Sound/stepInstances | Atualiza o volume dos sons ativos no espaço de trabalho. | Reduza a quantidade de sons em reprodução ativa. |
Rede
| Rótulo | Descrição | Conselho de desempenho |
|---|---|---|
| Net PacketReceive | Recebe pacotes de rede. Se muitos objetos ou eventos estão sendo replicados, este passo leva mais tempo. | Replicar menos objetos ou eventos. |
| Replicator/ProcessPackets | Processa o conteúdo dos pacotes de rede, como movimento, invocações de eventos e alterações de propriedades. | Reduza o número ou tamanho dos objetos sendo replicados, ou faça isso em etapas incrementais. Pode aumentar se o tamanho do mapa aumentar, pois mapas maiores tendem a ter mais atividade geral. |
| Allocate Bandwidth and Run Senders/Dispatch Physics Senders and TouchSenders | Envia dados sobre a atividade no jogo. | Reduza a quantidade de objetos em movimento e/ou toques. Veja as seções seguintes. |
| Allocate Bandwidth and Run Senders/Dispatch StreamJob | Envia regiões específicas correspondentes para clientes específicos na funcionalidade de streaming. | Reduza os raios de streaming mínimo e alvo. |
| Allocate Bandwidth and Run Senders/Dispatch Data Senders | Envia alterações de propriedades, invocações de eventos remotos, alterações de estado de Humanoid, alterações de estado de animação e replicação de novas instâncias. | Reduza o número de alterações replicadas no modelo de dados. |
| Replicator SendCluster | Envia dados de Terreno para clientes. | Reduza a quantidade ou tamanho das alterações de terreno. |
| ModelCompleteness Mega Job | Apenas no servidor: a completude é um conceito interno. Quando os modelos são enviados completamente, eventos de completude do modelo são enviados. | Adicionar ou remover menos instâncias. |
| deserializePacket | Processamento de pacotes de rede de baixo nível. Prepara para Replicator/ProcessPackets. | Envie menos ou menores atualizações. |
Renderização
| Rótulo | Descrição | Conselho de desempenho |
|---|---|---|
| Prepare | Informações são coletadas da thread principal e atualizam várias estruturas de dados usadas para renderização. | Veja os rótulos Prepare abaixo. |
| Prepare/Pass3dAdorn | Gerencia a renderização de vários adornos de objetos, como rótulos de texto acima dos objetos. Para rótulos de Humanoid com oclusão, este passo inclui raycasting para determinar se tais objetos são visíveis. Isso inclui partes não transparentes para facilitar visualizações de depuração. | Reduza o número de objetos adornados visíveis, como BillboardGuis, rótulos de nome/saúde de Humanoid, etc. Reduza o número de partes visíveis. |
| Prepare/Pass2d | Prepara a renderização de UI 2D (tanto da UI do jogador quanto da Roblox). | Reduza a quantidade ou complexidade dos elementos da UI. |
| Prepare/UpdatePrepare/updateInvalidParts | Atualiza partes que tiveram alguma propriedade alterada ou adicionada. | Reduza a quantidade de alterações de propriedades no mundo. Se um script atualiza um grande conjunto de propriedades de objetos, divida-o em frames. |
| Prepare/UpdatePrepare/updateInvalidatedFastClusters | Prepara geometrias "FastCluster" usadas para renderizar Humanoids e MeshParts esqueletizados. Rótulos especificam o número de partes, vértices e tamanho dos vértices. | Reduza as alterações visuais em modelos com Humanoids ou MeshParts esqueletizados. |
| Prepare/UpdatePrepare/updateDynamicParts | Prepara Beams, ParticleEmitters e Humanoids para renderização. | Reduza o número de Beams, ParticleEmitters e Humanoids visíveis. |
| Prepare/UpdatePrepare/updateInstancedClusters | Atualiza a geometria que usa renderização instanciada, como partes. Rótulos Clusters e Instances indicam o número atualizado. | Reduza o trabalho que atualiza implicitamente a caixa delimitadora da parte, como BasePart.CFrame, BasePart.Size ou Motor6D.Transform. Atualizações criativas de propriedades como Bone.Transform podem ajudar. |
| Perform | Quando os comandos de renderização reais são criados e emitidos. | Veja os rótulos Perform abaixo. |
| Perform/fillGuiVertices | Preenche buffers com vértices de UI para preparar a renderização. O rótulo gui count indica a quantidade de LayerCollectors visíveis no frame. | Se o custo for alto, reduza a quantidade, densidade e espaço ocupado pelos elementos da UI. Se houver muitos rótulos Process GuiEffect, considere reduzir o uso de UIGradient e UICorner em rótulos de texto. |
| Perform/Scene/queryFrustumOrdered | Aplica culling de frustum para que objetos não visíveis não sejam renderizados. | Se houver um custo alto, isso significa que há muitos elementos. Talvez use algumas malhas maiores onde uma única malha tenha mais detalhes em vez de muitas peças pequenas individuais. |
| Perform/Scene/computeLightingPerform | Cálculo de iluminação perto da câmera. | Manipule o número de fontes de luz ou mova a câmera menos para reduzir o tempo necessário para recalcular a iluminação. |
| Perform/Scene/computeLightingPerform/LightGridCPU | Atualiza a iluminação voxel, que é usada em níveis de qualidade mais baixos. | Se a atualização da ocupação do chunk levar muito tempo, considere usar geometria de menor resolução, reduzindo o número de partes ou ancorando partes. Se os outros rótulos demorarem muito, considere reduzir o número de luzes e usar geometria que não projete sombras para objetos que se movem e invalidam a ocupação. |
| Perform/Scene/computeLightingPerform/ShadowMapSystem | Atualiza mapas de sombras. Não é realizado em níveis de qualidade abaixo de 4. | Reduza o número de luzes. Você também pode usar Light.Shadows e BasePart.CastShadow para desativar a projeção de sombras em instâncias menos importantes. Veja Melhorar desempenho. |
| Perform/Scene/Glow, ColorCorrection, MSAA, SSAO, and SSAOApply | Renderização de pós-processamento. | Reduza o número de efeitos de pós-processamento. Normalmente, isso não é significativo. |
| Perform/Scene/UI | Renderização de UI. Em Id_Screen, há um rótulo com o número de lotes, materiais e triângulos usados. | Reduza o número de elementos de UI visíveis. Usar CanvasGroups pode ajudar, à custa de um aumento no uso de memória. |
| Perform/Scene/UpdateView/updateParticles, updateParticleBoundings | Atualiza a posição e limites das partículas. | Reduza o número de ParticleEmitters, taxas de emissão, durações, etc. Limite o movimento dos emissores. |
| Scene/Id_Opaque, RenderView/Id_Opaque | Partes na cena com uma transparência geral de 0.01 ou menor. | Reduza o uso e a densidade de partes. |
| Scene/Id_Transparent, RenderView/Id_Transparent | Partes na cena com uma transparência geral entre 0.01 e 1. | Reduza o uso de transparência parcial. |
| Scene/Id_Decals, RenderView/Id_Decals | Decais na cena. | Reduza o uso de decais em malhas complexas. |
| Scene/Shadows | Recalculo de sombras na cena, geralmente realizado em cenas dinâmicas e jogabilidade típica. Partes, independentemente da transparência, projetam sombras sob a suposição de que contêm decais. Não é realizado em níveis de qualidade abaixo de 4. | Se este passo levar muito tempo, considere desativar BasePart.CastShadow para malhas complexas, partes com alta transparência parcial e instâncias menos importantes. Partes totalmente transparentes que não têm decais ou não precisam de sombras de decais devem ter BasePart.CastShadow desativado. Veja Melhorar desempenho. |
| Perform/Present | Encaminha para a thread da GPU para executar comandos de renderização. | Reduza a complexidade da cena em geral. Se este passo estiver levando muito tempo, você pode estar limitado pela GPU. |
| Perform/Present/waitUntilCompleted | Espera a GPU terminar de renderizar o frame anterior. | Se isso estiver acontecendo com frequência, então a quantidade de coisas renderizadas é muito alta. O Gerenciador de Taxa de Quadros ajuda a equilibrar isso, mas se continuar alta, tente seguir os conselhos de desempenho das tags Scene individuais. |
| LoadImage | Processa imagens em um formato que o motor pode usar. | Reduza o uso de imagens grandes. |
Scripts
| Rótulo | Descrição | Conselho de desempenho |
|---|---|---|
| Render/PreRender/fireBindToRenderSteppedCallbacks | Executando funções vinculadas ao passo de renderização via RunService:BindToRenderStep(). | Certifique-se de que as funções conectadas a este evento façam o mínimo de trabalho possível. |
| Render/PreRender/RunService.RenderStepped | Executa funções conectadas ao evento RunService.RenderStepped. | Certifique-se de que as funções conectadas a este evento façam o mínimo de trabalho possível. |
| WaitingHybridScriptJob | Retoma scripts que estão esperando usando Instance:WaitForChild() ou Globals.Roblox.wait(). Geralmente realizado 30 vezes por segundo. Este passo tem um orçamento de tempo de execução para executar scripts que estão esperando. | Se você tiver muitos scripts esperando ou scripts com um longo tempo de execução antes de ceder, este passo é limitado e espera mais tempo antes de poder ser executado novamente. Reduza a quantidade de funções vinculadas ou cálculos longos neste passo. |
| GC | Ciclo de coleta de lixo do Luau. | Pool de tabelas e outros objetos coletáveis ou tente reduzir a criação de tabelas temporárias. |
| Heartbeat/RunService.Heartbeat | Executa funções conectadas ao evento RunService.Heartbeat. | Reduza a quantidade ou carga de trabalho das funções conectadas a este evento. Considere atrasar ou substituir cálculos caros ou espalhar a computação por vários frames. |
Simulação
| Rótulo | Descrição | Conselho de desempenho |
|---|---|---|
| Distributed Physics Ownership | Determina se o servidor ou um cliente tem autoridade sobre certas instâncias, como partes. | Reduza a quantidade de partes que frequentemente trocam de propriedade de rede, especialmente aquelas com interação comum. |
| Simulation/assemble | Atualiza uma árvore de objetos conectados (montagens) usados pelo motor de física. | Reduza a quantidade de juntas sendo criadas ou destruídas. |
| Simulation/physicsSteppedTotal/physicsStepped | Executa a simulação de física. | Reduza a quantidade e complexidade dos corpos simulados fisicamente. |
| Simulation/physicsSteppedTotal/physicsStepped/SpatialFilter/filterStep | Atualiza ilhas de simulação, organizando partes de acordo com a propriedade de rede, simulação local. Ilhas são grupos não interativos de partes que podem ser simuladas independentemente. | Evite definir a propriedade de rede com frequência. Mantenha grupos de partes longe o suficiente umas das outras para que possam ser simuladas separadamente. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepContacts | Atualiza contatos entre objetos. | Reduza a quantidade de corpos colidindo ao mesmo tempo, ou use caixas de colisão mais simples. Cubos são melhores do que malhas complexas. |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld OU stepWorldThrottled | Resolve equações de física relacionadas a conectores, flutuabilidade e Humanoids. Quando o motor está sobrecarregado e incapaz de simular tudo em tempo real, alguns passos podem ser limitados (stepWorldThrottled) e apenas "montagens em tempo real" como Humanoids são simuladas. | Depende de onde o tempo está sendo gasto com base nas seguintes três fases: stepContacts: testes de geometria de detecção de colisão de fase estreita. Solver step: integra o tempo e resolve colisões e outras restrições updateBroadphase: atualiza as posições das montagens no sistema de detecção de colisão e encontra pares de fase estreita que podem colidir. |
| notifyMovingAssemblies | Ajuda a rastrear quanto tempo os primitivos estiveram dormindo. | |
| Simulation/physicsSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | Interpolates montagens não controladas pelo jogador atual. | Defina o proprietário da rede das partes para o jogador atual para reduzir isso; embora isso geralmente cause mais trabalho de física a ser feito em outro lugar. |
| Simulation/handleFallenParts | Remove partes que caíram abaixo de Workspace.FallenPartsDestroyHeight. | Reduza a altura de destruição ou reduza a quantidade de partes que caem até a altura de destruição. |
| Heartbeat/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | Segunda parte de notifyMovingAssemblies. | |
| Heartbeat/RunService.Heartbeat | Executa funções conectadas ao evento RunService.Heartbeat para simulação e contatos de scripts. A descrição atual é genérica o suficiente para não estar errada. | Reduza a quantidade ou carga de trabalho das funções conectadas a RunService.Heartbeat. |
| worldStep/stepContacts | Ajuda a simulação de física a passar por muitos contatos de uma vez. | Reduza o número de objetos colidindo. |
| SolveBatch | Ajuda a simulação de física a resolver lotes de movimento de objetos. |
UI
| Rótulo | Descrição | Conselho de desempenho |
|---|---|---|
| Render/PreRender/UpdateInput | Atualiza e dispara todos os eventos relacionados à entrada do usuário se o usuário tiver realizado uma entrada desde o último frame. | Tente não fazer muito trabalho diretamente ao obter a entrada. Considere fazer uma quantidade mínima de processamento para a entrada, e cálculos maiores devem ser adiados para outra thread que ocorra mais tarde. |
| Render/PreRender/TweenService | Atualiza objetos sendo animados usando TweenService e chama callbacks de conclusão, como aqueles usados fornecidos para GuiObject:TweenSize() ou GuiObject:TweenPosition(). | Reduza o número de objetos sendo animados usando TweenService e certifique-se de que os callbacks façam o mínimo de trabalho possível. |
| Heartbeat/TweenService | No servidor, TweenService é executado em RunService.Heartbeat em vez de RunService.PreRender. | Reduza o número de objetos sendo animados usando TweenService e certifique-se de que os callbacks façam o mínimo de trabalho possível. |
| Render/PreRender/UpdateUILayouts | Atualiza a posição e o tamanho dos elementos da UI em todos os LayerCollectors habilitados. | Veja os rótulos UpdateUILayouts abaixo. |
| Render/PreRender/UpdateUILayouts/Rebuild Z-order list | Reconstrói a lista interna de ordem Z dos elementos da UI (não confundir com GuiObject.ZIndex) em um LayerCollector na primeira renderização ou quando um novo elemento é adicionado, removido ou teve seu GuiObject.ZIndex alterado. | Reduza o número de elementos da UI em LayerCollectors antes da primeira renderização e evite mudar frequentemente o pai e o GuiObject.ZIndex dos elementos da UI dentro deles. Quanto mais elementos um LayerCollector tiver, pior será seu desempenho. |
| Render/PreRender/UpdateUILayouts/Layout | Atualiza a posição e o tamanho dos elementos da UI em um LayerCollector individual. Pode conter um rótulo com informações sobre a UI relevante, juntamente com a quantidade de Relayouts, Atualizações e Redimensionamentos. | Reduza a quantidade de elementos da UI sendo redimensionados ou reposicionados, como aqueles gerenciados por UILayout e aqueles animados com TweenService, GuiObject:TweenSize(), ou GuiObject:TweenPosition(). Considere usar tamanhos fixos para BillboardGuis. |