以下は、MicroProfilerにおける一般的なタグのリストで、カテゴリごとにグループ化されています。タグは、タスク、タイマー、スコープ、プロセス、ラベルとも呼ばれます。名前に関係なく、これらは作業の単位を表します。
これらのタグを理解することで、ゲーム内の問題のあるコードを特定するのに役立ちます。テーブルには、タグラベル、説明、およびパフォーマンスを改善し、ゲームを最適化するためのアドバイスが含まれています。
すべてのMicroProfilerタグとその説明の完全なリストについては、LibMPドキュメントをGitHubでご覧ください。
スリープ
スレッドがアクティブにタスクを実行していないとき、スリープ状態に入り、スレッドがどのくらいの時間スリープしていたかを示すタグがあります。特定の時点で、ほとんどのワーカースレッドがスリープ状態にあることは非常に一般的です。
ナビゲーション
| ラベル | 説明 | パフォーマンスアドバイス |
|---|---|---|
| rasterizeTile | パスファインディングリクエストに必要なナビゲーションタイルを更新します。通常、これに続いてcomputePathがあり、これには最新のタイルが必要です。メインスレッドでNavigationJob/preprocessに従います。 | パスファインディングタイルの無効化の数を減らしてください。これにより、パスを再計算する必要が生じます。これは、ナビゲーション不可能な部分が移動することによって引き起こされます。 |
| computePath | 通常、rasterizeTileの後にパスを計算します。 | Path:ComputeAsync()呼び出しの数とワールドの範囲を減らしてください。複数のエージェントがほぼ同じ場所から開始/終了することが予想される場合は、パスを再利用してください。 |
| preprocess/getPrimitivesOverlapping | 各パスファインディングタイルのワールドジオメトリを収集し、パスファインディングスレッドによって実行されるラスタライズタスクをスケジュールします。 | パーツの数を減らしてください。 |
アニメーションとヒューマノイド
| ラベル | 説明 | パフォーマンスアドバイス |
|---|---|---|
| Simulation/gameStepped | Humanoids、Animationsなどのゲーム特有のオブジェクトやハートビートコールバックの処理。 | 以下のgameSteppedラベルを参照してください。 |
| Simulation/gameStepped/stepHumanoid | Humanoidの状態変更と移動。 | Humanoidsの数を減らすか、ClimbingやSwimmingなど、必要のないNPCのHumanoid状態を無効にしてください。Humanoid.StateChangedへのコールバックや、RunningやDiedなどの状態変更を減らしてください。 |
| Simulation/gameStepped/stepAnimation | Animatorsが現在再生中のアニメーションで前進します。 | Animatorsやアニメーションされたジョイントの数を減らして、このステップの作業負荷を軽減してください。AnimationTrack.KeyframeReachedやAnimationTrack.Endedなどのアニメーションイベントへのコールバックの数を減らしてください。 |
| Simulation/gameStepped/RunService.Stepped | RunService.Steppedイベントに接続された関数を実行します。 | このイベントに接続された関数の数または作業負荷を減らしてください。高価な計算を遅延させたり置き換えたりすることを検討するか、計算を複数のフレームに分散させてください。 |
オーディオ
| ラベル | 説明 | パフォーマンスアドバイス |
|---|---|---|
| Sound | 音響シミュレーションを処理し、アクティブな再生中のサウンドを更新します。 | 以下のSoundラベルを参照してください。 |
| Sound/stepInstances | ワークスペース内のアクティブなサウンドの音量を更新します。 | アクティブな再生中のサウンドの数を減らしてください。 |
ネットワーキング
| ラベル | 説明 | パフォーマンスアドバイス |
|---|---|---|
| Net PacketReceive | ネットワークパケットを受信します。多くのオブジェクトやイベントが複製されている場合、このステップは長くなります。 | 複製するオブジェクトやイベントの数を減らしてください。 |
| Replicator/ProcessPackets | モーション、イベントの呼び出し、プロパティの変更など、ネットワークパケットの内容を処理します。 | 複製されるオブジェクトの数またはサイズを減らすか、段階的に行ってください。マップサイズが増加すると、全体的なアクティビティが増える傾向があります。 |
| Allocate Bandwidth and Run Senders/Dispatch Physics Senders and TouchSenders | ゲーム内のアクティビティに関するデータを送信します。 | 移動するオブジェクトやタッチの数を減らしてください。次のセクションを参照してください。 |
| Allocate Bandwidth and Run Senders/Dispatch StreamJob | ストリーミング機能で特定のクライアントに特定の領域を送信します。 | 最小およびターゲットストリーミング半径を減らしてください。 |
| Allocate Bandwidth and Run Senders/Dispatch Data Senders | プロパティの変更、リモートイベントの呼び出し、Humanoidの状態変更、アニメーションの状態変更、新しいインスタンスの複製を送信します。 | データモデルへの複製された変更の数を減らしてください。 |
| Replicator SendCluster | クライアントにTerrainデータを送信します。 | 地形変更の数またはサイズを減らしてください。 |
| ModelCompleteness Mega Job | サーバーのみ: 完全性は内部の概念です。モデルが完全に送信されると、モデル完全性イベントが送信されます。 | インスタンスの追加または削除を減らしてください。 |
| deserializePacket | 低レベルのネットワークパケット処理。Replicator/ProcessPacketsの準備をします。 | 更新を少なくするか、サイズを小さくしてください。 |
レンダリング
| ラベル | 説明 | パフォーマンスアドバイス |
|---|---|---|
| Prepare | メインスレッドから情報を収集し、レンダリングに使用されるさまざまなデータ構造を更新します。 | 以下のPrepareラベルを参照してください。 |
| Prepare/Pass3dAdorn | オブジェクトの上にあるテキストラベルなど、さまざまなオブジェクトの装飾のレンダリングを処理します。Humanoidラベルがオクルージョンを持つ場合、このステップには、これらのオブジェクトが表示されるかどうかを判断するためのレイキャスティングが含まれます。デバッグ視覚化を促進するために、非透明なパーツも含まれます。 | BillboardGuis、Humanoidの名前/健康ラベルなど、可視の装飾オブジェクトの数を減らしてください。可視のパーツの数を減らしてください。 |
| Prepare/Pass2d | 2D UIレンダリングの準備をします(プレイヤーおよびRoblox UIの両方)。 | UI要素の数または複雑さを減らしてください。 |
| Prepare/UpdatePrepare/updateInvalidParts | プロパティが変更または追加されたパーツを更新します。 | ワールド上のプロパティ変更の数を減らしてください。スクリプトが大量のオブジェクトプロパティを更新する場合は、フレームに分割してください。 |
| Prepare/UpdatePrepare/updateInvalidatedFastClusters | HumanoidsやスキンメッシュのMeshPartsをレンダリングするために使用される「FastCluster」ジオメトリを準備します。ラベルは、更新されたパーツ、頂点、および頂点のサイズを指定します。 | HumanoidsやスキンメッシュのMeshPartsに対する視覚的変更を減らしてください。 |
| Prepare/UpdatePrepare/updateDynamicParts | レンダリングのためにBeams、ParticleEmitters、およびHumanoidsを準備します。 | 可視のBeams、ParticleEmitters、およびHumanoidsの数を減らしてください。 |
| Prepare/UpdatePrepare/updateInstancedClusters | パーツなどのインスタンスレンダリングを使用するジオメトリを更新します。ラベルClustersとInstancesは、更新された数を示します。 | BasePart.CFrame、BasePart.Size、またはMotor6D.Transformなど、パーツのバウンディングボックスを暗黙的に更新する作業を減らしてください。Bone.Transformなどのクリエイティブなプロパティ更新が役立つ場合があります。 |
| Perform | 実際のレンダリングコマンドが作成され、発行されるとき。 | 以下のPerformラベルを参照してください。 |
| Perform/fillGuiVertices | レンダリングの準備のためにUI頂点でバッファを埋めます。gui countラベルは、フレーム内で可視のLayerCollectorsの数を示します。 | コストが高い場合は、UI要素の数、密度、および占有スペースを減らしてください。Process GuiEffectラベルが多すぎる場合は、テキストラベルでのUIGradientやUICornerの使用を減らすことを検討してください。 |
| Perform/Scene/queryFrustumOrdered | フラスタムカリングを適用し、表示されないオブジェクトがレンダリングされないようにします。 | コストが高い場合は、多くの要素があることを意味します。おそらく、単一のメッシュがより多くの詳細を持つように、大きなメッシュを使用してください。 |
| Perform/Scene/computeLightingPerform | カメラ近くのライティングの計算。 | 光源の数を操作するか、カメラの移動を減らして、ライティングの再計算にかかる時間を短縮してください。 |
| Perform/Scene/computeLightingPerform/LightGridCPU | 低品質レベルで使用されるボクセルライティングを更新します。 | チャンクの占有を更新するのに時間がかかる場合は、低解像度のジオメトリを使用するか、パーツの数を減らすか、パーツを固定してください。他のラベルが長すぎる場合は、光源の数を減らし、移動して占有を無効にするオブジェクトには影を落とさないジオメトリを使用してください。 |
| Perform/Scene/computeLightingPerform/ShadowMapSystem | シャドウマップを更新します。品質レベル4未満では実行されません。 | 光源の数を減らしてください。また、Light.ShadowsやBasePart.CastShadowを使用して、重要度の低いインスタンスでの影の投影を無効にすることもできます。詳細はパフォーマンスの改善を参照してください。 |
| Perform/Scene/Glow, ColorCorrection, MSAA, SSAO, and SSAOApply | ポストプロセッシングレンダリング。 | ポストプロセッシング効果の数を減らしてください。通常、これは重要ではありません。 |
| Perform/Scene/UI | UIレンダリング。Id_Screenには、使用されるバッチ、マテリアル、三角形の数を示すラベルがあります。 | 可視のUI要素の数を減らしてください。CanvasGroupsを使用すると、メモリ使用量が増加する代わりに役立つ場合があります。 |
| Perform/Scene/UpdateView/updateParticles, updateParticleBoundings | パーティクルの位置と境界を更新します。 | ParticleEmitters、放出率、寿命などの数を減らしてください。エミッターの移動を制限してください。 |
| Scene/Id_Opaque, RenderView/Id_Opaque | 全体の透明度が0.01以下のシーン内のパーツ。 | パーツの使用と密度を減らしてください。 |
| Scene/Id_Transparent, RenderView/Id_Transparent | 全体の透明度が0.01から1の間のシーン内のパーツ。 | 部分的な透明度の使用を減らしてください。 |
| Scene/Id_Decals, RenderView/Id_Decals | シーン内のデカール。 | 複雑なメッシュ上のデカールの使用を減らしてください。 |
| Scene/Shadows | シーン内のシャドウ再計算。通常、動的シーンや典型的なゲームプレイで実行されます。透明度に関係なく、パーツはデカールを含むと仮定して影を落とします。品質レベル4未満では実行されません。 | このステップが長すぎる場合は、複雑なメッシュ、高い部分的透明度のパーツ、重要度の低いインスタンスに対してBasePart.CastShadowを無効にすることを検討してください。デカールがない完全に透明なパーツやデカールの影が必要ないパーツは、BasePart.CastShadowを無効にする必要があります。詳細はパフォーマンスの改善を参照してください。 |
| Perform/Present | レンダリングコマンドを実行するためにGPUスレッドに転送します。 | 一般的にシーンの複雑さを減らしてください。このステップが長すぎる場合、GPUに制限されている可能性があります。 |
| Perform/Present/waitUntilCompleted | GPUが前のフレームのレンダリングを完了するのを待ちます。 | これが一般的に多く発生している場合、レンダリングされるものの量が多すぎます。フレームレートマネージャーはこれをバランスさせるのに役立ちますが、高いままの場合は、個々のSceneタグからのパフォーマンスアドバイスに従ってください。 |
| LoadImage | 画像をエンジンが使用できる形式に処理します。 | 大きな画像の使用を減らしてください。 |
スクリプト
| ラベル | 説明 | パフォーマンスアドバイス |
|---|---|---|
| Render/PreRender/fireBindToRenderSteppedCallbacks | RunService:BindToRenderStep()を介してレンダー ステップにバインドされた関数を実行します。 | このイベントに接続された関数ができるだけ少ない作業を行うようにしてください。 |
| Render/PreRender/RunService.RenderStepped | RunService.RenderSteppedイベントに接続された関数を実行します。 | このイベントに接続された関数ができるだけ少ない作業を行うようにしてください。 |
| WaitingHybridScriptJob | Instance:WaitForChild()またはGlobals.Roblox.wait()を使用して待機しているスクリプトを再開します。通常、1秒間に30回実行されます。このステップには、待機スクリプトを実行するための実行時間の予算があります。 | 待機スクリプトが多すぎる場合や、長時間実行されるスクリプトがある場合、このステップは制限され、再実行までに長く待機します。このステップ内のバインドされた関数や長い計算の数を減らしてください。 |
| GC | Luauのガベージコレクションサイクル。 | テーブルやその他の収集可能なオブジェクトをプールするか、一時テーブルの作成を減らしてください。 |
| Heartbeat/RunService.Heartbeat | RunService.Heartbeatイベントに接続された関数を実行します。 | このイベントに接続された関数の数または作業負荷を減らしてください。高価な計算を遅延させたり置き換えたりすることを検討するか、計算を複数のフレームに分散させてください。 |
シミュレーション
| ラベル | 説明 | パフォーマンスアドバイス |
|---|---|---|
| Distributed Physics Ownership | サーバーまたはクライアントが、パーツなどの特定のインスタンスに対する権限を持っているかどうかを決定します。 | 特に一般的な相互作用を持つパーツのネットワーク所有権が頻繁に切り替わる数を減らしてください。 |
| Simulation/assemble | 物理エンジンによって使用される接続されたオブジェクトのツリー(アセンブリ)を更新します。 | 作成または破壊されるジョイントの数を減らしてください。 |
| Simulation/physicsSteppedTotal/physicsStepped | 物理シミュレーションを実行します。 | 物理的にシミュレートされるボディの数と複雑さを減らしてください。 |
| Simulation/physicsSteppedTotal/physicsStepped/SpatialFilter/filterStep | シミュレーションアイランドを更新し、ネットワーク所有権、ローカルシミュレーションに従ってパーツを配置します。アイランドは、独立してシミュレートできる非相互作用のグループです。 | ネットワーク所有権を頻繁に設定しないでください。パーツのグループを十分に離して、別々にシミュレートできるようにしてください。 |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepContacts | オブジェクト間の接触を更新します。 | 同時に衝突するボディの数を減らすか、より単純な衝突ボックスを使用してください。立方体は複雑なメッシュよりも優れています。 |
| Simulation/physicsSteppedTotal/physicsStepped/worldStep/stepWorld OR stepWorldThrottled | コネクタ、浮力、Humanoidsに関連する物理方程式を解決します。エンジンが過負荷になり、リアルタイムでシミュレートできない場合、一部のステップは制限され(stepWorldThrottled)、Humanoidsなどの「リアルタイムアセンブリ」のみがシミュレートされます。 | 時間がどこにかかっているかは、次の3つのフェーズに基づいています: stepContacts: ナローフェーズの衝突検出ジオメトリテスト。Solver step: 時間を統合し、衝突やその他の制約を解決します。updateBroadphase: 衝突検出システム内のアセンブリの位置を更新し、衝突する可能性のあるナローフェーズペアを見つけます。 |
| notifyMovingAssemblies | プリミティブがどのくらいの時間スリープしていたかを追跡するのに役立ちます。 | |
| Simulation/physicsSteppedTotal/physicsStepped/interpolateNetworkedAssemblies | 現在のプレイヤーによって制御されていないアセンブリを補間します。 | パーツのネットワーク所有者を現在のプレイヤーに設定して、これを減らしてください。ただし、これにより他の場所でより多くの物理作業が行われることが通常あります。 |
| Simulation/handleFallenParts | Workspace.FallenPartsDestroyHeightを下回ったパーツを削除します。 | 破壊高さを下げるか、破壊高さに落下するパーツの数を減らしてください。 |
| Heartbeat/heartbeatInternal/workspaceOnHeartbeat/updateVisuallySleeping | notifyMovingAssembliesの第2部。 | |
| Heartbeat/RunService.Heartbeat | シミュレーションとスクリプトの接触に接続された関数を実行します。現在の説明は一般的すぎて間違っていません。 | RunService.Heartbeatに接続された関数の数または作業負荷を減らしてください。 |
| worldStep/stepContacts | 物理シミュレーションステップで多くの接触を処理するのに役立ちます。 | 衝突するオブジェクトの数を減らしてください。 |
| SolveBatch | 物理シミュレーションがオブジェクトの動きを解決するのを助けます。 |
UI
| ラベル | 説明 | パフォーマンスアドバイス |
|---|---|---|
| Render/PreRender/UpdateInput | ユーザーが前のフレーム以降に入力を行った場合、すべてのユーザー入力関連イベントを更新し、発火します。 | 入力を取得する際にあまり多くの作業を行わないようにしてください。入力の最小限の処理を行い、大きな計算は後で発生する別のスレッドにプッシュすることを検討してください。 |
| Render/PreRender/TweenService | TweenServiceを使用して補間されているオブジェクトを更新し、GuiObject:TweenSize()やGuiObject:TweenPosition()に提供される完了コールバックを呼び出します。 | TweenServiceを使用して補間されているオブジェクトの数を減らし、コールバックができるだけ少ない作業を行うようにしてください。 |
| Heartbeat/TweenService | サーバーでは、TweenServiceはRunService.Heartbeatで実行され、RunService.PreRenderでは実行されません。 | TweenServiceを使用して補間されているオブジェクトの数を減らし、コールバックができるだけ少ない作業を行うようにしてください。 |
| Render/PreRender/UpdateUILayouts | すべての有効なLayerCollectorsのUI要素の位置とサイズを更新します。 | 以下のUpdateUILayoutsラベルを参照してください。 |
| Render/PreRender/UpdateUILayouts/Rebuild Z-order list | 最初のレンダリング時または新しい要素が追加、削除、またはGuiObject.ZIndexが変更されたときに、UI要素の内部Zオーダーリストを再構築します(GuiObject.ZIndexと混同しないでください)。 | 最初のレンダリング前にLayerCollectors内のUI要素の数を減らし、頻繁に親やGuiObject.ZIndexを変更しないでください。LayerCollectorが持つ要素が多いほど、パフォーマンスが悪化します。 |
| Render/PreRender/UpdateUILayouts/Layout | 個々のLayerCollector内のUI要素の位置とサイズを更新します。関連するUIに関する情報と、リレイアウト、更新、リサイズの数を含むラベルを含むことがあります。 | UILayoutによって管理されるものや、TweenService、GuiObject:TweenSize()、またはGuiObject:TweenPosition()で補間されるものなど、リサイズまたは再配置されるUI要素の数を減らしてください。BillboardGuisに固定サイズを使用することを検討してください。 |