このページは編集中です。更新が保留になっている可能性があります。
fusion | v2 switch to V1  

Network Runner

概要

NetworkRunnerはFusionの中心的なUnityコンポーネントで、1つのネットワーク化されたPeerを表します。メッセージング、マッチメイキング、接続、スポーン、シミュレーション、ステートのレプリケーションは全てこのコンポーネントが行います。1つのUnityインスタンスで複数のNetwork Runnerインスタンスを実行することができ、それぞれのNetwork Runner GameObjectインスタンスが個々のピアを表します。Multi-Peerを参照してください。

使用方法

作成

この Network Runner GameObject には以下の3つの作成方法があります。

  • 実行時にインスタンス化されたプレハブとして作成
  • シーンオブジェクトとしてロードして作成
  • 実行時にGameObjectにNetworkRunnerコンポーネントを追加して動的に作成

起動と接続

一度作成されると、ネットワークランナーのインスタンスはマッチメイキングに接続したり、ルームを作成/参加することができます。

Game Loopをご覧ください。

ルームの作成と参加

NetworkRunner インスタンスから StartGame() を呼び出すと、Peer が生成され、 StartGameArgs 引数で指定されたルームに参加または作成します。ただし、シングルプレイヤーモードでは、Photonサーバーへの接続は行われず、ルームも作成されません。

Multi-Peer Modeでは、すべてのシーンオブジェクトとスポーンオブジェクトは専用のGameObjectの子になり、そのRunnerに関連付けられたPhysicsScene/PhysicsScene2Dに追加されます。

IMPORTANT: NetworkRunner は一度しか使用できません。NetworkRunnerがゲームセッションから切断されるか、接続に失敗したら、破棄し、新しいゲームセッションを開始するために、新しいNetworkRunnerインスタンスを作成する必要があります。

ランナーサポートコンポーネント

起動時に、NetworkRunner コンポーネントはすべての子コンポーネント SimulationBehaviour を見つけて登録します。これらのコンポーネントは FixedUpdateNetwork()Render() のコールバックを受け取ります。

また、NetworkRunner はゲームオブジェクトの Components にある全ての子コンポーネント INetworkRunnerCallbacks インターフェイスを見つけ、コールバック用に登録します。

組み込みの Fusion Runner コンポーネント

Network Runnerゲームオブジェクトには、Runnerの機能を拡張するFusionコンポーネントが多数あります。

  • HitboxManager - ランタイム時に自動的に追加され、ヒットボックスとヒットボックスの履歴を管理します。遅延補償を参照してください。

  • RunnerLagCompensationGizmos - これを追加するとLag Compensation ギズモが有効になります。

  • RunnerAOIGizmos -このコンポーネントを追加するとArea Of Interest ギズモが有効になります。Interest Management - Area Of Interestを参照してください。

  • RunnerEnableVisibility - 追加されると、マルチピアモードでランナーのVisibilityが有効になり、全てのシーンとスポーンされたGameObjectがVisibilityハンドリングのために登録されます。Runner Visibility Controls ウィンドウが動作するために必要です。Multi-PeerFusionRunnerVisibilityControlWindowを参照してください。

カスタムSimulationBehavioursランナーコンポーネント

SimulationBehaviourの派生クラス、またはINetworkRunnerCallbacksを実装したコンポーネント(または両方を同じComponentに含む)をNetwork Runnerゲームオブジェクトに追加することで、独自のRunner固有のサポートコンポーネントを作成することができます。

これらのコンポーネントは、NetworkRunner.StartGame() が呼び出されると、自動的に NetworkRunner インスタンスによって検出され、該当する場合に関連するコールバックが呼び出されます。

カスタム INetworkRunnerCallbacks

起動時に、NetworkRunner コンポーネントはすべての子コンポーネントを INetworkRunnerCallbacks に登録します。INetworkRunnerCallbacks API Reference](https://doc-api.photonengine.com/en/fusion/v2/index.html)を参照してください。

注意: 実行順序により、一部のコールバックは適用されず、呼び出されない場合があります。たとえば、OnPlayerJoined()は、以前に参加したプレーヤやランナー自身のプレーヤでは呼び出されません(これらのコールバックが登録される頃には、すでに参加しているため)。

NetworkRunner in the Hierarchy of Core Objects
NetworkRunner は、すべての Connection、Matchmaking、Messaging、Event Callback、Snapshot Memory、Network Object の同期を管理します。

プレイヤー / PlayerRef 構造体

Dedicated ServerまたはShared Mode Game Serverを除き、すべてのピアは入力を行う人間のプレイヤーを表していると仮定されます。そのため、各 NetworkRunner は関連する PlayerRef 構造体の値があります。

ローカルの PlayerRef の値は Runner.LocalPlayer によって返されます。Playerが存在しない場合(Dedicated ServerまたはShared Mode Game Server)はPlayerRef.Noneとなります。

PlayerRefはどのPeerがネットワークオブジェクトの入力と状態の権限を持っているかを示し、Remote Procedure Callsでピアをターゲットするために使用されます。

ネットワーク接続

ピアへの接続とトランスポートの処理は NetworkRunner によってラップされます。これはマッチメイキングサーバー、ルームサーバー、ゲームサーバーへの接続を処理します。

マッチメイキング

Matchmakingを参照してください。

ティック管理

NetworkRunnerは、Tickのシミュレーションと再シミュレーションのタイミングを決定します。Unity Update 毎に、NetworkRunner は、前回のティックシミュレーションからの経過時間に基づいて、何ティックのシミュレーショ ンが必要かを決定します。

さらに、Room 内のクライアントはサーバーから継続的にテレメトリーを受信し、サーバーよりどの程度先にティックを刻むべきかを調整します。送信されたティックの更新が、サーバーが必要とする前に届くように、クライアントは必要に応じてティックレートを上げたり下げたりします。

ティックがシミュレートされると、Fusionは全てのFixedUpdateNetwork()コールバックと、シミュレーションに関連する他の多くのイベントコールバックを呼び出します。

ネットワークオブジェクトの管理

ネットワークランナーは、ネットワークオブジェクトのライフサイクル、レプリケーション、シーン管理、すべてのネットワークとネットワークオブジェクト関連のコールバックを管理します。

シーン管理

Network Object Spawningを参照してください。

Scene Management

Scene Managementを参照してください。

物理シーン

Multi-Peer Mode では、各ランナーは関連するUnityの PhysicsScenePhysicsScene2D を持っています。これらのシーンを取得するには、それぞれ Runner.GetPhysicsScene()Runner.GetPhysicsScene2D() を使用します。

インタレスト管理

インタレスト管理を参照してください。

イベント関数

すべての NetworkBehaviour イベントとタイミングセグメントは NetworkRunner コンポーネントから発生します。Network Behaviour イベント機能コールバックインターフェイス を参照してください。

SimulationBehaviour バーチャルイベントコールバックメソッド:

  • FixedUpdateNetwork()
  • Render()

NetworkBehaviourは、上記の SimulationBehaviour コールバックメソッドに加えて、以下のバーチャルイベントコールバックメソッドを公開しています。

  • Spawned()
  • Despawned()

Spawned() Despawned() などのインタフェースを使用して、NetworkRunner イベントコールバックを追加できます。

  • IAfterSpawned
  • IBeforeAllTicks
  • IAfterAllTicks
  • IBeforeTick
  • IAfterTick
  • IPlayerJoined
  • IPlayerLeft

イベントコールバックを網羅したリストについてはNetwork Behaviour Callback Interfacesを参照してください。

ドキュメントのトップへ戻る