Networking Insights

ネットワーク パフォーマンス プロファイリング ツール Networking Insights の概要

Unreal Insights には、ネットワーク トラフィックの解析、最適化、デバッグを行う Networking Insights が含まれています。以下の機能を使って、トレース情報を記録してネットワークの挙動を視覚化することができます。

  • 記録されているネットワーク セッション中に表示可能なマシンを画面に出力する Game Instance (ゲーム インスタンス) コントロール

  • 発信または着信データを視覚化する Connection Mode (接続モード) コントロール

  • ゲーム中に送受信されるパケットのタイムライン (およびサイズ) を表示するパケット概要パネル

  • パケット コンテンツ パネルは、レプリケートされたオブジェクト、プロパティ、リモート関数コールなどパケットのコンテンツを表示します。

  • Net Stats パネルは、パケットの合計サイズ、最大サイズ、平均排他 (または包括) パケットサイズに関する統計など、選択されたパケットのトレース イベントを表示します。

設定

次に進む前に、Unreal Insights を実行していることを確認してください。

Networking Insights を使用する

データを解析するには、以下のコマンドライン オプションでプロジェクトのインスタンスを開始します。

    -NetTrace=[VerbosityLevel] -trace=net

VerbosityLevel はゼロより大きい値に設定します。たとえば、ゲーム インスタンスが -NetTrace=1 で始まる場合、Unreal Insights は Unreal Instights でセッションを開きて、解析用にネットワーク トレース データを収集およびレポートします。

エディタはトレース データ用に独自のデータ ストアを実行します。つまり、エディタでの実行中にネットワーク トレース データを収集するために、トレースホストを指定する必要があります。トレースホストを指定するには、-NetTrace=1 -tracehost=localhost -trace=net を使用します。

UE_NET_TRACE_PACKET_STATSCOUNTER マクロと UE_NET_TRACE_FRAME_STATSCOUNTER マクロを使用して、ネットワーク トレース データに関連付けられたシンプルな統計情報をトレースできるようになりました。これらのいずれかのマクロを使用してトレースされたデータは [NetStatsCounters (ネット統計カウンタ)] タブに表示されます。

Networking Insights ウィンドウ

Networking Insights ウインドウでネットワーク セッション データを見つけることができます。

その他のコマンドやヒント、Unreal Insights の他のウィンドウの情報については、「Unreal Insights のリファレンス」ドキュメントを参照してください。

パケット概要パネル

パケット概要パネルには、送受信される各パケットのサイズ (ビット) を示すバー グラフが表示されます。詳細な調査が必要な大きいパケットの特定に便利です。バーを左クリックしてパケットを選択します。

各パケットのレポート サイズは圧縮前のサイズなので、通信上の実際のデータはレポートの値よりも小さくなる場合があります。

パケット上にマウスをかざすと情報が表示されます。以下の情報が表示されます。

  • パケット インデックス (Packet Index)

  • シーケンス番号 (Sequence Number)

  • ビット単位でのコンテンツ サイズ (Content Size)

  • 未使用のビット数を含む、バイト単位の合計サイズ (Total Size)

  • パケット送受信時のタイムスタンプ (Timestamp)

  • パケットの現在の配信済み/未配信ステータス (Status)

  • パケットを受信した接続のステート (Connection State)

  • パケット送受信時のエンジン フレーム番号 (Engine Frame Number)

選択解除したパケットは赤色で表示されます。複数のパケットを選択するには、最初のパケットをクリックして選択し、Shift キーを押しながら他のパケットをクリックします。パケット ビュー内のイベントを強調表示できるようになり、パケット内で特定のイベントが使用しているビット数を確認しやすくなりました。 これにより、他のデータと比較してイベントがどれくらいの帯域幅を使用しているかをすばやく確認できるようになりました。

以下のいずれかを強調表示するよう選択できます。

  • イベントのすべてのインスタンスの集計ビットカウント

  • 単一イベントで使用され最大ビットカウント

パケット コンテンツ パネル

パケット コンテンツ パネルには、現在選択されているパケットの中身が表示されます。パケットの中身は、左側からビット 0 で始まる階層のイベント グラフとして表示されます。このメイン ツールを使って、各パケットに含まれるデータ内容をプロパティ レベルまで調査します。

PacketContentPanel.png

パケットに含まれる一連のデータを表示するパケット コンテンツ パネル。これには、レプリケートされたオブジェクトとプロパティに関する情報が含まれます。

最初のレベルには、パケットに含まれるグループが表示されます。それぞれのグループには、属するチャンネルの名前が付いています。報告されたグループにデバッグ名が設定されている場合は channelname ではなく debugname を使って追加コンテンツ (あれば) の指定をします。

2 番目のレベルには通常、そのブループに含まれるレプリケートされたオブジェクトが表示されます。イベントに割り当てられた NetId(NetGUID) がある場合は、その ID も表示されます。

イベント階層の下の方には、レプリケートされたプロパティ (書き込みバイト数など) が表示されます。

イベント上にマウスを当てると、イベントのすべての情報が表示されます。

パネルは、パケットの検索、または特定の NetId に属するイベントの検索も制御します。

キーボードを使ってパケット コンテンツ パネルとパケット概要パネルに移動することができます。上下の矢印キーでレベル間を移動します。左右の矢印キーで同じレベルのイベント間を移動します。CTRL キーと CMD キーを押したまま、左右の矢印キーを押すと、パケット間を移動します。

接続選択パネル

パケット概要パネルの上の部分でユーザーを表示日付を選択できます。

connection-drop-down-list

接続ドロップダウン リストはパケット概要パネルの上部にあります。この例では、受信データが選択された状態の、サーバー ゲーム インスタンスにおけるプレイヤー 0 の接続を示しています。

接続選択パネルでは 3 種類のドロップダウン リストを使用することができます。

ドロップダウン リスト

説明

Game Instance (ゲームインスタンス)

記録セッション中に観察されたそれぞれの一意の NetDriver に対して作成されたゲーム インスタンスを表示します。たとえば PIE を使用する場合は、サーバーと各クライアント用のインスタンスは別々になります。

Connection (接続)

特定の接続を選択し、選択したゲームインスタンスのセッション中に観察された各接続を表示します。

Connection Mode (接続モード)

送受信データを可視化するかどうかを指定します。

Net Stats パネル

Net Stats パネルには、Packet Overview パネルで選択されたパケット範囲に対するすべてのトレース イベントがリスト表示されます。

このリストは、選択範囲に基づいてデータを集計するだけでなく、アクティブな列の値で昇順または降順にソートすることもできます。並べ替え順序を変更したり、列をアクティブまたは非アクティブにするには、リスト内の任意の場所を右クリックします。 以下の列を利用できます。

  • Type (型)

  • Level (レベル)

  • Instance Count (インスタンス数)

  • Total Inclusive Size (bits) (ビット単位での総包括サイズ)

  • Max Inclusive Size (bits) (ビット単位での最大包括サイズ)

  • Total Exclusive Size (総排他サイズ)

  • Max Exclusive Size (最大排他サイズ)

名前でフィルタリングするには、「search net events or groups (ネットイベントまたはグループを検索)」と表示された検索フィールドを使用します。これらのイベント タイプごとにグループ分けできます。

グループ名

説明

Level (レベル)

各レベルに 1 つのグループを作成します。

Flat (フラット表示)

単一のグループを作成します。すべてのネット イベントが含まれます。

Name (名前)

1 文字につき 1 つのグループを作成します。

レベルごとにグループ化すると、同じ名前が別々のレベルに表示されるため、データを把握しやすくなります。以下の表では、これらのレベルについて説明しています。

レベル

説明

0

通常は、チャンネル名を使用するデータ グループをすべて表示するチャンネル情報です。

1

レプリケートされたオブジェクト (アクタ)。このレベルのほとんどのイベントでは、シリアル化されたオブジェクトが表示されます。

2

プロパティ レプリケーションまたは RPC に由来するイベントを報告します。

3

プロパティのシリアル化の際にイベントを報告します。

4

プロパティや配列コンテンツなどをシリアル化する際に追加のイベントを報告します。

[Net Stats] パネルには、選択範囲にデータのないイベントをフィルタリングする !0 トグルが備わっています。

NetStatsCounters

[NetStatsCounters (ネット統計カウンタ)] タブには、選択したパケット、または指定した範囲内のパケットのレプリケーション システムに関連する統計カウンタが表示されます。

統計には、次の 2 つの異なるカテゴリがあります。

  • FrameStats (フレーム統計):フレーム全体の統計カウンタ。これは通常、ネットワークの構築に関連する統計カウンタを報告するために使用されます。これは、すべての接続間で共有される処理が対象となります。たとえば、このフレームで現在更新されているオブジェクトの数です。

  • PacketStats (パケット統計):特定の各パケットに関連する統計カウンタ。たとえば、シリアライズするようスケジュール設定されたオブジェクトの数や、そのパケットに実際に該当した数です。

サンプル データ

ネットワーク パケット コンテンツ トレース マクロについては、「Unreal Insights のリファレンス」を参照してください。

Networking Insights によって視覚化されるデータに関して理解を深めるために、以下の例を用意しています。

レプリケートされたオブジェクト

Initial replication of a new Actor

新しいアクタ、ReplicationGraphDebugActor、NetGUID 10 の最初のレプリケーションです。

新しいアクタを含むグループの前に、新しいアクタからエクスポートされたすべてのリファレンス (NetGUIDS など) を含む NetGUID グループがあります。

RPC

Example of an RPC called ClientAckGoodMove, which is part of a Character's movement system

これは ClientAckGoodMove という名前の RPC で、NetGUID 14 で PlayerPawn_C をターゲットとしています。

GUID はマッピングされている必要があります。

データ グループを分割する

分割されたデータ グループの送信によって生成されたイベント データは、最初の部分を報告します。分割されたデータ グループを受け取ると、最初にその他の部分が報告され、すべての部分を受け取ると、イベントが最後の部分とともに報告されます。

次のいくつかのパケットは以下のようになります。

Example of a packet providing the rest of the data for the split bunch.

分割された受信データ グループでは逆のパターンを示します。この場合、イベントは最後の部分的なデータ グループとともに報告されます。

SubObjects

Example of sub-objects sharing the same bunch as their owner

SubObject (サブオブジェクト) の例です。BotPawn_C の後の 2 つ目のアクタが同じデータ グループを共有することに留意してください。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル