ソーシャルハブ
概要
Fusion Social Hubは、1つのプロジェクトで複数のトポロジーを利用する方法と、それぞれのトポロジーに固有の違いを考慮しながら異なるロジックを実行する方法を示す技術サンプルです。また、複数の NetworkRunner を管理し、セッション間の移行を行う方法も紹介します。
このサンプルでは、以下の組み合わせを使用しています。
- 初期状態で多くのプレイヤーが集まり、NPCと交流するソーシャルハブにはShared Mode。
-ソーシャルハブから少人数でダンジョンに入ることができるHost Mode。ダンジョン内では、箱の破壊が可能です。
コントロール
- ホストのみ:LMB を攻撃する。
- 両方のトポロジー:E はインタラクトする。
はじめる前に
サンプルを実行するには、まず、PhotonEngine Dashboard でFusion AppIdを作成し、リアルタイム設定(Fusionメニューからアクセス可能)のApp Id Fusionフィールドにペーストします。
ダウンロード
| バージョン | リリース日/th> | ダウンロード | ||
|---|---|---|---|---|
| 1.1.6 | Apr 12, 2023 | Fusion Social Hub 1.1.6 Build 169 | ||
接続マネージャーシステム
接続マネージャーは接続リクエストを処理します。両方のトポロジーを処理するために複数の NetworkRunner が存在するので、正しい Runner を参照し、他のものと衝突しないように必要なすべての予防措置を取ります。
アプリ
このクラスの主な目的は、ConnectionManagerがMonobehaviourであるためにできないネットワーク上の操作を行うことです。このサンプルでは、RPCを渡すためにのみ使用されます。
接続コンテナー
NetworkRunner、その Runner で現在使用されている ConnectionData 、App、Runner のコールバッククラス、いくつかのヘルパーチェックへの参照を保持するシンプルな C# クラスです。
接続データ
接続データ ConnectionManager に接続リクエストを行うために必要なすべてのデータを保持するために使用されるスクリプト可能なオブジェクトです。これらは主なプロパティで す。
ConnectionID: 接続を参照するIDで、一意のセッションはそれぞれ異なるIDを持つ必要があります。これは、参加するためのセッションプロパティとして使用されるか、参加可能なセッションがない場合は新しいセッションを作成します。
ConnectionTarget: コネクションマネージャが、接続したいのが共有セッションなのかホストセッションなのかを知るために使用します。
Connection Gate
接続ゲート ConnectionData への参照を持ち、ConnectionData で定義されたセッションに接続するためのインターフェイスをトグルするためのエリアトリガーとして使用されます。
Connection Manager
ConnectionManager.cs は、主に希望するセッションへの接続を行い、受け取った接続ターゲットに基づいて正しい ConnectionContainer への参照を保存し、その他のいくつかのユーティリティロジックを実行します。
両方のトポロジーをサポートするコーディング
両トポロジーをサポートするための最良の方法は、常に Runner.IsServer の代わりに Object.HasStateAuthority をチェックすることです。これは、共有モードでは状態権限をカバーし、ホスト/サーバー モードではホストまたはサーバーもカバーするためです。
また、Fusion Inputを使用することで、Shared Modeではあまり意味がなくても、Host/Serverでは PlayerMovement クラスのように動作するようになります。
特定のトポロジーでしか動作しないロジックの場合、Runner.Topologyは、NetworkObjectに関連するNetworkRunnerが使用しているトポロジーを返します。