ネットワーク プロファイラ は、Unreal Engine (UE) によってゲームの実行時に記録された、ネットワークのトラフィックとパフォーマンスの情報を表示するために使用されるスタンドアローン ツールです。このツールは、個々のアクタ、リモート プロシージャ コール (RPC)、およびプロパティが帯域幅の総量にどの程度寄与しているかを確認できるため、異常に高帯域幅を使用するマルチプレイヤー ゲームの領域を特定するのに適しています。
プロファイリング セッションを記録する
ネットワーク プロファイラを使用する前に、分析できるようにある程度のデータを記録する必要があります。そうするには、統計情報追跡が有効になっているエンジン バージョンを使用する必要があります。通常は、デバッグ ビルドを使用するか、エディタ ビルド (非デバッグ コンフィギュレーションの場合) を使用する必要があります。具体的には、STATS
マクロにゼロ以外の値を指定してコンパイルされたエンジンのことです。
統計情報追跡の詳細については、Stat コマンド のドキュメントを参照してください。
コマンドライン引数を使用する場合
networkprofiler=true
コマンドライン引数を渡すと、エンジンを起動時に記録が開始されます。
コンソール コマンドを使用する場合
ランタイム時に次のコンソール コマンドを使用して、ネットワーク プロファイラ データの記録を制御できます。
netprofile
:記録のオン/オフを切り替えますnetprofile enable
:記録中でなければ記録を開始しますnetprofile disable
:記録中であれば記録を停止します
ファイルの保存場所
プロファイリング セッション中に記録されるデータ ファイルは、「<PROJECT_DIRECTORY>/Saved/Profiling/<PROJECT_NAME>-<TIMESTAMP>.nprof
」として保存されます。同じディレクトリにある「NetworkProfiling.tmp
」というファイルを見ると、データ収集中にエンジンが使用する一時ファイルであることがわかります。現在のプロファイリング セッションが停止すると、このファイルは前述のスキームに従ってファイル名が変更され、スタンドアローンのネットワーク プロファイラ ツールで開くことができるようになります。
サーバーとクライアントでの考慮事項
プロファイリング データはクライアントとサーバーのどちらからでも記録できます。ただし、アクタとそのプロパティをレプリケートするのはサーバーのみであるため、クライアントで記録されたプロファイルを表示する場合に確認できるのは、そのクライアントから送信された RPC の詳細データのみであることに注意してください。
プロファイリング セッションを表示する
ネットワーク プロファイラは、「<UNREAL_ENGINE_ROOT>/Engine/Binaries/DotNET/NetworkProfiler.exe
」にあるスタンドアローン アプリケーションです。ウィンドウの上部にある [Open File (ファイルを開く)] ボタンをクリックして *.nprof
ファイルを選択すると、そのファイルに入っているデータが表示されます。
ユーザー インターフェース
デフォルトでは、[Chart, Filters, Details (チャート、フィルタ、詳細)] タブが選択されています。このセクションでは、ネットワーク プロファイラのユーザー インターフェースの概要を説明します。
表示タブ
表示タブ では、表示する情報を選択します。
Chart, Filters, Details
このタブでは、最も詳細な情報が表示されます。この表示モードでは以下のことができます。
All Actors
[All Actors] 表示モードでは、このセッションでプロファイリングされたすべてのアクタに関する情報が表示されます。このタブには、[All Properties]、[All RPCs]、[All Objects] タブと同様の機能があり、同様の情報が表示されます。これらの各タブでは、プロファイリング セッション全体でのそれぞれのレプリケーション データの概要が示されます。なお、これらの各タブで表示されるデータは、現在のフレームや、[Chart, Filters, Details] タブで選択されている時間指定の影響を受けません。
各タブにはそれぞれ、アクタ、プロパティ、RPC、オブジェクトのリストが表示されます。[Total Size (合計サイズ)] と [Average Size (平均サイズ)] の列には、個々の項目で必要とされた帯域幅が示され、[Count (回数)] 列は、個々の項目がプロファイリング セッション中にレプリケートされた回数を表します。以下の情報が表示されます。
ヘッダ名 | 説明 |
---|---|
Actor Class (アクタ クラス) | この行のアクタ クラスの数 |
Average Time (平均時間) | レプリケートされた情報の送信の平均所要時間 (ms 単位)。 |
Time (時間) | レプリケートされた情報の送信の所要時間の合計 (ms 単位)。 |
Average Size (平均サイズ) | レプリケートされた情報の平均サイズ (Bits 単位)。 |
Average Size (平均サイズ) | レプリケートされた情報の平均サイズ (Bytes 単位)。 |
Count (回数) | このアクタの情報がレプリケートされた回数。 |
Total Size (合計サイズ) | レプリケートされた情報の合計サイズ (KBytes 単位)。 |
列見出しをクリックすると、列の並べ替え順の昇順または降順を切り替えることができます。
All Properties
[All Properties] 表示モードでは、このセッションでプロファイリングされたすべてのプロパティに関する情報が表示されます。この表には [All Actors] セクションとほぼ同じヘッダがあり、違いは、[Actor Class] ヘッダが、指定された行のプロパティの名前を表す [Property (プロパティ)] ヘッダで置き換えられていることだけです。
All RPCs
[All RPCs] 表示モードでは、このセッションでプロファイリングされたすべての RPC に関する情報が表示されます。この表には [All Actors] セクションとほぼ同じヘッダがあり、違いは、[Actor Class] ヘッダが、指定された行の RPC の名前を表す [RPC] ヘッダで置き換えられていることだけです。
All Objects
[All Objects] 表示モードでは、このセッションでプロファイリングされたすべてのオブジェクトに関する情報が表示されます。以下の情報が表示されます。
ヘッダ名 | 説明 |
---|---|
Object Class (オブジェクト クラス) | この行のオブジェクト クラスの名前。 |
# Comparisons (比較の回数) | 行われた比較の回数。 |
# Replications (レプリケーションの回数) | 行われたレプリケーションの回数。 |
Comparison Time (比較の合計所要時間) | 比較の所要時間 (ms 単位)。 |
Average Time Per Compare (比較の平均所要時間) | 比較の平均所要時間 (ms 単位)。 |
この表示モードでは、プロパティ用の別の表もあり、以下の情報が表示されます。
ヘッダ名 | 説明 |
---|---|
プロパティ | この行のプロパティの名前。 |
# Comparisons (比較の回数) | 行われた比較の回数。 |
# Times Changed (変更の回数) | プロパティ値が変更された回数。 |
# Replications (レプリケーションの回数) | 行われたレプリケーションの回数。 |
Chart
これはメインのチャート表示です。他のプロファイリング アプリケーションでのチャートと類似していて、有効になっている統計情報の時間経過グラフが表示されます。特定のフレームをクリックしてそのフレームに関連するデータを他の表示に取り込むことや、グラフをクリックしてドラッグし、そのエリアを拡大し、その期間の概要を表示することができます。
チャート表示および下記のすべてのオプションを使用できるのは、[Chart, Filters, Details] 表示モードのみです。
統計情報リスト
これは、ネットワーク プロファイラによって追跡されたステータス情報のリストです。チェックボックスを使用して、グラフでの特定の統計情報の表示/非表示を切り替えることができます。ほとんどの統計情報では、未加工のカウント、1 秒あたりのカウント、バイト数、1 秒あたりのバイト数を選択できます。
詳細情報
詳細情報のタブでは、ネットワーク プロファイリング情報をより詳しく調べることができます。
Summary
これは、チャートで選択されている期間内にあるデータの概要であり、未加工の合計値および 1 秒ごとの情報が表示されます。なお、[Outgoing bandwidth (発信帯域幅)] の値には IP と UDP のヘッダ サイズの近似値も含まれているため、[Outgoing bandwidth] は [Game socket send size (ゲームソケットの送信サイズ)] よりも大きくなります。
Actors
グラフで 1 つのフレームが選択されている場合、この表示では、そのフレームの間にレプリケートされたアクタ タイプのリストが、レプリケーションに要した CPU 時間が長い順に表示されます。レプリケーションされた関連プロパティがあるアクタのツリー表示を展開すると、各プロパティが表示されます。アクタの行では、最初の列の数値は、そのアクタのレプリケーションの CPU 時間 (ミリ秒単位) です。2 番目の列は、グループでそのアクタを表すために使用されるバイト数であり、3 番目の列は、現在のフレームの間にレプリケートされた、指定されたタイプのアクタの数です。プロパティの行では、最初の列は、そのプロパティに使用されているバイト数であり、2 番目の列は、そのアクタに対してレプリケートされた、指定された名前のプロパティの数を表します。
Token Details
この表示では、現在選択されているフレームで送信されたデータの内訳が示されます。送信されたアクタ、プロパティ、リモート関数、およびそれぞれの送信バイト数を確認できます。なお、レプリケートされたアクタと RPC はどちらもまとめて含まれているため、[SendBunchSize
] セクションでの値には、送信元の RPC とレプリケート元のアクタからのバイト数も含まれています。そして、SocketSend
エントリでは、エンジンが発信ソケットに送信した正確なバイト数が示されます。なお、この値には、標準的な UDP パケットのオーバーヘッドは含まれていません。
Apply Filters
アクタ、プロパティ、RPC に対するフィルタを入力してから [Apply Filters] ボタンをクリックすると、フィルタ フィールドに入力されているテキストが含まれているアクタ、プロパティ、RPC に関連するデータだけが表示されるようにグラフが更新されます。フィルタが適用されている状態で、グラフにある 1 つのフレームまたはフレームの範囲を選択すると、概要およびそのフレームの詳細表示のデータも同様にフィルタ処理されます。