This document is about: FUSION 1
SWITCH TO

Application Loop

Level 4

概要

Fusion Application Loop ではシーンの読み込みや接続の設定・切断、基本的なマッチメイキング機能など、Fusionで適切に動作するように、ゲームの外部ループをどのように構成するかを示しています。

具体的には、ゲームモードやマップ名などのモック属性を持つセッションを作成したり、参加したりすることができます。参加するユーザーにはセッションのリストを表示し、ゲームシーンを読み込む前にアバターを設定することができます。また、この例では、クライアントとホストの両方がセッションを終了し、イントロに戻ることを処理します。

始める前に

サンプルを実行するには、まず、PhotonEngine Dashboard で Fusion AppId を作成し、リアルタイム設定(Fusion メニューからアクセス可能)の App Id Fusion 欄に貼り付けます。次に、Launchシーンを読み込んで、Playを押します。

ダウンロード

バージョン リリース日 ダウンロード
1.1.6 Apr 17, 2023 Fusion Application Loop 1.1.6 Build 184

プレハブ

  • App.prefab:メインのAppランチャーです。シングルトンであり、任意のシーンにドロップして、そのシーンからアプリケーションを起動できます(エディターで実行するときに便利です)。エディターから実行する場合、マッチメイキングプロセス全体をスキップするために、いくつかのプリセット値で自動的にセッションを作成する機能があります。
  • Character.prefab:プレイヤーアバター。このプレハブのインスタンスは、各プレイヤーがマップに入るときに1つずつ生成されます。キャラクターは、マップがアンロードされるまでの間だけ生きています。
  • Player.prefab:プレイヤーセッションのプロパティ。セッション開始時に各プレイヤーごとにこのプレハブのインスタンスが生成されます。プレイヤーはシーンのロード中も生存し、セッションが切断されるまで生存します。
  • Session.prefab:セッションの共有プロパティです。セッション開始時に、このプレハブのインスタンスが1つ生成されます。

## シーン

  • 0.Launch - 起動シーンはビルド時にのみ使用され、Appシングルトンインスタンスのみを保持します。アプリのデバッグ(自動接続)設定で誤ってビルドしてしまわないように、ビルド用にこのインスタンスを設定します。
  • 1.Intro - イントロシーンは、接続が確立される前のプレゲームUIを含んでいます。ここでは、トポロジー/クライアントモードとゲームタイプを選択します。また、参加するセッションを選択したり、新しいセッションを作成するためのUIも含まれています。接続が切れたり、シャットダウンした場合にアプリが戻るのもここです。
  • 2.Staging - ネットワークセッションが確立されるとステージングシーンが読み込まれ、プレイヤーは自分のアバターを設定し、ホストに対してプレイする準備ができたことを通知することができます。アプリはプレイヤーがアバターを設定し、プレイする準備ができたことを示す必要があるときはいつでもここに戻ってくることができます。
  • X.MapY - これらのシーンは実際のゲームマップです。各ゲームマップはステージングエリアからのプレイヤーの設定に基づいてプレイヤーのアバターをインスタンス化し、読み込みが完了したらホストに知らせます。これにより、読み込みが遅いクライアントがあっても、すべてのクライアントで同時にゲームが開始されます。ホストは次のゲームシーンに移ることができ、すべてのクライアントは自由に切断することができます。
  • GameOver - GameOverシーンは基本的にプレイヤーにアバターがつかないただのマップです。マッチの結果を表示したり、プレイヤーをステージングエリアに戻すために使用することができます。

挙動

GameUIUIComponentsUtilityフォルダーにあるコードは、このサンプルに特化したものではないので、ここでは説明しません。

  • App このサンプルの主要なエントリポイントです。ゲームセッションを作成、破棄するためのメソッドと、アクティブなプレイヤーを追跡するためのメソッドがあります。主なFusionコールバックを実装しています。
  • Character ゲーム内のプレイヤーアバターで、プレイヤーキャラクターの基本的な動きを制御します。
  • Mapは、実際のゲームシーンに存在するネットワークオブジェクトで、そのシーンでプレイヤーのアバターを生成する役割を担っています。
  • MapLoader Fusion のオブジェクトプロバイダの実装です。 ロード画面の表示から、読み込まれたネットワークオブジェクトのリストの収集まで、シーンのロードシーケンスを制御します。
  • Session 最初のプレイヤーが接続されると、一つの Session オブジェクトが生成され、App の親オブジェクトとなり、読み込み時に破壊されることを防ぎます。セッションはマップを読み込むためのロジックを制御し、アプリ(App.Instance.Session)からアクセスすることができます。
  • Player 各プレイヤーはセッションに参加するときに Player オブジェクトを取得し、これがセッションゲームオブジェクトの親になります。そうすることで、シーンのロードをまたいで存続させることができます。プレイヤーオブジェクトはゲーム内の視覚的な表現を持たず、すべてのクライアントと共有されるプレイヤー情報のカプセル化に過ぎません。
Back to top