マルチピアモード
概要
マルチピアモード(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のサンプルあり)