Network Profiler は、ゲームの実行中に Unreal Engine (UE) が記録するネットワークのトラフィックとパフォーマンスの情報を表示するスタンドアロンのツールです。これはマルチプレイヤー ゲームで異常に高い帯域幅を使うエリアを特定するのに便利です。個々のアクタ、RPC、プロパティが全体に対してどれくらいの帯域幅を使っているかがわかるからです。
プロファイリング セッションを記録する
Network Profiler を使用する前に、分析するために何らかのデータを記録しなければなりません。これを行うには、統計トラッキングが有効なエンジンのバージョンを使用する必要があります。通常、デバッグのビルドまたは non-debug 設定、エディタのビルド (具体的に STATS マクロをゼロ以外の値に定義してエンジンをコンパイル) を意味します。
networkprofiler=true
コマンドライン引数をエンジン起動後すぐに渡すことができますが、以下のコンソール コマンドをランタイムに使って Network Profiler データの記録を制御することもできます。
-
netprofile: 記録のオン、オフを切り替えます。
-
netprofile enable: まだの場合は記録を開始します。
-
netprofile disable: 現在記録中の場合、記録を停止します。
データ ファイルは <project directory>/Saved/Profiling/<project name>-<timestamp>.nprof
に保存されます。同じフォルダに NetworkProfiling.tmp という名前のファイルがある場合、これはエンジンがデータ収集中に使う単なるテンポラリ ファイルです。現在のプロファイリング セッションが停止したら、このファイルは上のスキームに従い、名前変更されます。これで、スタンドアロン ツールで開けるようになります。
Network Profiler のアプリケーションでプロファイル セッションを見る
Network Profiler は、<UE install directory>/Engine/Binaries/DotNET/NetworkProfiler.exe
にあるスタンドアロンのアプリケーションです。
ウィンドウ上部で [Open File] ボタンをクリックして.nprof ファイルを選択し、中に入っているデータを見ます。

[Chart, Filters, Details] タブ
デフォルトで [Chart, Filters, Details] タブが選択されます。このタブについて以下のセクションで説明します。

チャート ビュー
これはメインのチャート ビューです。他のプロファイリング アプリケーションのチャートと同様に時間経過に伴い有効になったグラフを表示します。特定のフレームをクリックしてそれに関連するデータを他のビューに入れることができます。また、グラフでクリックしてドラッグしてそのエリアをズームインしたり、その時間間隔のサマリーを見ることができます。
統計情報リスト
以下は Network Profiler がトラックするすべての統計情報のリストです。チェックボックスを切り替えると、グラフ内で特定の統計情報の表示、非表示が切り替わります。ほとんどの統計情報で raw カウント、カウント/ 秒、バイト数、バイト数 / 秒の表示を選ぶことができます。
概要ビュー
チャートで選んだ時間間隔のデータの概要です。Raw の合計と毎秒の情報を示します。"Outgoing bandwidth" は "Game socket send size" よりも大きくなります。"Outgoing bandwidth" には IP と UDP ヘッダ サイズの近似も含まれるからです。
フレームの詳細
現在選択されているフレームで送られたデータの内訳を示します。どのアクタ、プロパティ、リモートの関数が送られたか、それぞれどれくらいのバイト数であるかがわかります。レプリケートされたアクタや RPC は両方とも一緒に入っています。そのため、"SEND BUNCH" セクションの "NumBytes" フィールドには "SEND RPC" と "REPLICATE ACTOR" セクションのバイトが含まれます。最終的に "SOCKET SEND TO" エントリに、送信ソケットにどれくらいのバイト数をエンジンが送信したかが表示されます。標準 UDP パケットのオーバーヘッドは含まれていないことに注意してください。
フィルタ
アクタ、プロパティ、RPC のフィルタを入力し、 [Apply Filters (フィルタ適用)] ボタンをクリックするとグラフが更新し、フィルター欄に入力したテキストを含むアクタ、プロパティ、RPC に関連があるデータだけが表示されます。フィルタ適用後にグラフでひとつのフレームまたはフレーム範囲を選択すると、概要ビューとフレーム詳細ビューのデータもフィルタリングされます。
パフォーマンス ビュー
グラフでひとつのフレームが選択されている場合、このビューにはそのフレーム中にレプリケートされたアクタの種類のリストとが、レプリケーションに費やした CPU 時間別にソートして表示されます。アクタに関連するレプリケートされたプロパティがある場合、アクタのツリー ビューを展開すると各プロパティが表示されます。アクタの最初の列の数字は、アクタの CPU レプリケーション時間をミリ秒単位で表したものです。2 列めは複数ある中で特定のアクタのバイト数です。3 列めは現在のフレーム中にレプリケーションされた任意のタイプのアクタの数です。プロパティの行では、一列めはプロパティに使われたバイト数で 2 列めは任意の名前を持つプロパティがアクタに対してレプリケートされたかを示します。
[Actors] タブ、 [Properties] タブ、 [RPCs] タブ

こうした各タブは、プロファイリング セッション全体に対する個々のレプリケーション データの概要を表します。こうしたタブに表示されるデータは、 [Chart, Filters, Details] タブのチャートで選択した現在のフレームや時間間隔の影響は受けないことに注意してください。
これらのタブには、アクタ、プロパティ、RPC のそれぞれのリストが表示されます。"Total Size" 列と "Average Size" 列には、特定のアイテムに対してどれくらいの帯域幅が必要であったか、"Count" 列にはプロファイリング セッション中に特定のアイテムが何回複製されたかが表示されます。列の見出しをクリックして昇順または降順でソートを切り替えることができます。
サーバーとクライアントについて考慮事項
クライアントとサーバーの両方からプロファイリング データを記録することができます。ただし、サーバーだけがアクタとそのプロパティをレプリケートするため、クライアント側で記録されたプロファイルを見る場合、クライアントから送信された RPC の詳細データのみが表示されることに注意してください。