マルチピアモード
概要
マルチピアモード(Multi-Peer Mode)によって、完全に独立した複数のNetworkRunnerインスタンスと、そのNetworkRunnerに関連するシミュレーション・物理シーン・ネットワーク接続・Unityエディター内のシーンを生成できます。
UnityエディターのトップメニューからFusion > NetworkProjectConfigを選択し、PeerModeをMultipleにすると、マルチピアモードが有効になります。
Unityで複数のピア(NetworkRunner)を実行できると、
- ビルドを作成して実行することなく、エディター上で複数のクライアントをテストできる
- 専用サーバーで、複数のゲームセッションを作成できる
- クライアントは、複数のゲームセッションに同時に接続できる
NetworkRunnerの可視性
NetworkRunnerの可視性は、マルチピアモードにのみ適用されます。デフォルトでは、すべてのピアが表示されます。シーンをロードしたりオブジェクトをスポーンすると、それらの可視性に影響するコンポーネント(RendererやAudioSourceなど)が、NetworkRunnerの可視性システムに自動的に登録されます。
RunnerEnableVisibility コンポーネント
重要: 可視性を制御するには、NetworkRunnerのゲームオブジェクトにRunnerEnableVisibilityコンポーネントを追加する必要があります。このコンポーネントがNetworkRunnerに存在する時、すべてのネットワークオブジェクト(シーンオブジェクトを含む)と、シーン上にある(動的にインスタンス化していない)すべての通常のゲームオブジェクトの、表示関連のコンポーネントがスキャンされ、NetworkRunnerに関連付けられたリストに追加されます。それらのコンポーネントは、NetworkRunner.SetVisibility(bool)メソッドで、表示/非表示を切り替えることができます。
GetVisible() / SetVisible(bool)
マルチピアモードでは、NetworkRunnerに関連付けられたコンポーネント(描画や音響)の有効/無効を、NetworkRunner.SetVisible(bool)で切り替えることができます。そのため、NetworkRunnerの動作に影響を与えることなく、開発者はゲームオブジェクトの表示/非表示を切り替えることができます。
EnableOnSingleRunner コンポーネント
このコンポーネントは、Componentsリストの各コンポーネントに、RunnerVisibilityLinkコンポーネントを自動的に追加します。マルチピアモードでは、それらのコンポーネントは、1つのインスタンスのみが有効になるように制限されます。Unityからシングルトンが想定されているコンポーネント(AudioListenerやEventSystemなど)では、特に重要です。
Preferred Runner
複数のNetworkRunnerがアクティブな場合に、どのピアのNetworkRunnerを優先して表示するかを選択します。
Components
「インスタンスは1つのみ」フラグが設定されているコンポーネントです。ここに列挙されたコンポーネントのインスタンスは、1つ以外がすべて無効になります。
Runner Visibility Controls ウインドウ
Runner Visibility Controlsウィンドウは、Tools > Fusion > Windows > Network Runner Controlsメニューから開くことができます。ここでは、NetworkRunnerの表示/非表示や、どのNetworkRunnerがユーザーの入力を収集するかを制御できます。また、アクティブなNetworkRunnerに新しいFusionStatsを追加する、クイックアクセス用のボタンもあります。
NetworkRunnerの名前をクリックすると、シーン上のNetworkRunnerインスタンスを選択できます。
NetworkRunner.PlayerRef.PlayerIdは、NetworkRunner名の横に表示されます。PlayerObjectがNetworkRunnerに設定されている場合、これをクリックすると、シーン上のプレイヤーオブジェクトを選択できます。
マルチピア実装例
- Hathora(Simple FPSのサンプルあり)