FusionStats
概要
Fusion Statsは、ネットワークテレメトリを監視するためのUIコンポーネント群から構成されています。FusionStats コンポーネントは、テレメトリUIエレメントの階層を生成、初期化、制御するための主要コンポーネントです。
Fusion Statsは、基本的なUnityEngine.UIコンポーネントを使用しており、ビルド時にスクリーンオーバーレイとして、あるいは3D空間のオブジェクトに貼り付けて統計情報を表示することができます。
基本的な使い方
FusionStatsをシーンに追加するには
- Unity Editorメニューで
Fusion > GameObject > Add Fusion Statsの順に実行する
または - Hierarchyで右クリックするか、Hierarchy内の
GameObjectで右クリックして、Fusion > Add Fusion Statsの順に選択する
- GameObjectが選択されている場合:
FusionStatsはデフォルトのStatsCanvasType.GameObjectとなり、統計はオブジェクトにアタッチされている3D空間でレンダリングされます。 - GameObjectが選択されていない場合:
FusionStatsはデフォルトのStatsCanvasType.Overlayとなり、統計はオブジェクトに画面空間でレンダリングされます。
このメニューオプションでは、FusionStatsBillboard コンポーネントも自動的にオブジェクトに追加されます。FusionStatsBillboard コンポーネントは、 FusionStats.CanvasType が GameObject に設定されている場合、GameObject をカメラに向かって自動的に回転させます。
ランタイムの機能
シミュレーションの実行中に、利用できる追加機能がいくつかあります。このセクションでは、実行中FusionGraphで利用できる様々な「シークレット」機能を紹介します。
表示オプション
FusionGraphのタイトルをクリックすると、そのグラフに対する表示オプションのドロップリストが表示されます(使用可能なものが複数ある場合)
平均化オプション
実行時に FusionGraph の値フィールドをクリックすると、現在のデータソースで利用可能な平均化オプションを順に表示することができます。
- Average per Second(秒ごとの平均);
- Average per Tick(ティックごとの平均);
- Average per Sample(サンプルごとの平均)
Ping送信
統計パネルの一番上にある NetworkRunner の名前をクリックすると、Hierarchyにある FusionStats コンポーネントにpingが送信されます。現在 GameObject が選択されていない場合、このアクションはインスペクタの FusionStats コンポーネントも選択することになります。
FusionStats コンポーネント
FusionStatsが全てのFusion Statsの主なルートコンポーネントです。子キャンバスとUIコンポーネントを生成し、実行時にこれらのテレメトリコンポーネントをNetworkRunnerやNetworkObjectのデータソースへの接続を管理します。
Redraw Interval(リドローインターバル)
UI の更新がこの値あたり 1 回を超えないように制限します。この値が大きくなると、パフォーマンスが向上します。
Layout Section(セクションのレイアウト)
レイアウトを管理します。全体的にFusionStatsキャンバスのレイアウトに影響します。
Canvas Types(キャンバスタイプ)
キャンバスモードには2通りあります。
GameObject:3D空間でキャンバスをレンダリングします。Overlay:画面空間でキャンバスをレンダリングします。
GameObject Rect / Overlay Rect
この2つのRectは編集可能で、UI.Canvas 上のどこに統計要素をレンダリングするかを定義し、グラフをキャンバスの特定の側面やコーナーにレンダリングすることができます。
CanvasTypeが GameObject に設定されている場合、 GameObjectRect が使用され、統計情報をオブジェクトの中心からオフセットさせることができます。
CanvasType が Overlay に設定されている場合、OverlayRect が使用され、画面上のどこに統計情報をレンダリングするかを指定することができます。FusionGraph コンポーネントは、Rect 領域を埋めるために必要なスケールを行います。
Rect は、インスペクタでシミュレーションされたキャンバス領域上をクリック&ドラッグすることで描くことができます。
角をドラッグする場合は、必ず「Rect」ドロワーを展開してください。
Fusion Graphs Layout Section(Fusionグラフのセクションのレイアウト)
レイアウトコントロールは、FusionGraph コンポーネント (Fusion Stats キャンバスの最下部) のレイアウトに特に影響を与えるものです。
Default Layout(デフォルトのレイアウト)
子コンポーネントの FusionGraph は、個々の設定が自動に設定されている場合、このレイアウト設定を使用します。Auto に設定されている場合、各グラフの現在の幅/高さに基づいてレイアウトが選択されます。
No Text Overlap(テキストのオーバーラップなし)
この設定により、グラフUIでFusion Graphレイアウトオプションが使用されないようにします。テキストはグラフシェーダー(垂直テレメトリバー)と重なります。テキストが文字化けしてしまうような場合に使用します。良くある例は、VRのように、キャンバスがカメラに向かって完全にビルボード化されていない場合です。
Graph Column Count(グラフのカラム数)
グラフのカラム数は FusionStats.GraphColumnCount 設定で手動で設定することができます。FusionStats.GraphColumnCount を 0 に設定すると、 FusionStats.GraphMaxWidth の値が使用され、キャンバス幅がその値を超えると自動的に新しいカラムが作成されます。
Graph Max Width(グラフの最大幅)
FusionGraphの要素が展開される最大幅。この幅を超えて展開されると、必要に応じて新しいカラムが追加されます。
Network Object Stats Section(ネットワークオブジェクトの統計セクション)
ルートのNetworkObjectコンポーネントに固有のオプション。
FusionStatsがGameObjectにNetworkObjectを使用して追加されている場合のみ有効です。
Enable Object Stats(オブジェクト統計の有効化)
ルートNetworkObjectコンポーネントのUI要素とテレメトリハンドリングを有効にします。
Object Title Height(オブジェクトタイトルの高さ)
GameObject名のラベル領域の高さ
Object Ids Height(オブジェクトIDの高さ)
NetworkObject IDとプレイヤー権限を表示する部分の高さ。
Object Meters Height(オブジェクトメートルの高さ)
水平方向のメートルバー部分の高さ。
Data Section(データセクション)
どのデータソースを使用するか、どのテレメトリを表示するかについてのオプション。
Runner(ランナー)
すべてのテレメトリデータには、NetworkRunnerの関連付けが必要です。これはネットワークランナーの起動時に自動的に検出されます。
Connect To(接続先)
Multi-Peerモードでは、複数のランナーが存在する可能性があるので、どのタイプのランナーが見つかるかを制御したい場合があります。これらの SimulationModes フラグと FusionStats.EnforceSingle を組み合わせると、何人のピアが動作していても、この FusionStats のインスタンスは1つしか存在しないことが確認できます。
Included Stats
各テレメトリ項目はレンダリングされる FusionGraph セットに含めたり、除外したりすることができます。利用可能なテレメトリデータはエンジンの3つの部分から提供され、それに応じてグループ化されています。
Net Stats:ラウンドトリップタイム(rtt)や送受信データの合計など、ネットワークトランスポートレイヤーの統計。Sim Stats: 再シミュレーション回数、スナップショットサイズ、補間/予測の仕様など、SimulationとNetworkRunnerの統計。Obj Stats: RPC カウントや、Networked 状態の値が使用する帯域幅など、NetworkObject固有のテレメトリ。
Life-Cycle Section
FusionStats GameObject インスタンスのシングルトンや自己破壊に影響を与えるオプション。
Auto Destroy
trueの場合、FusionStats GameObjectは、関連するNetworkRunnerが切断されたときに破棄されます。
Enforce Single
trueにすると、同じ FusionStats.GUID を持つ NetworkStats の GameObject インスタンスを繰り返し破壊します。これはMulti-Peerモードにおいて、1つの FusionStats オブジェクトのインスタンスが各ピアに1つではなく、1つだけ存在すべき場合に便利です。これは FusionStats.ConnectTo と組み合わせて、どのピアタイプを監視するかを制御するために使用します。
GUID
Multi-Peer モードで、同じStatsオブジェクトの複数のインスタンスを識別するために FusionStats.EnforceSingle と共に使用されます。