- Photon プレイヤーを PlayFab で認証。
- PlayFab CloudScript コールバックを使用して部屋のイベントをリッスン。
Photon クイックスタート
このクイックスタートでは、Photon マルチプレイヤーを PlayFab で動作するようにセットアップする方法を示します。現在、PlayFab は次の Photon 統合を提供しています:- Photon プレイヤーを PlayFab で認証。
- PlayFab CloudScript コールバックを使用して部屋のイベントをリッスン。
Unity で完全にサポートされている PlayFab マルチプレイヤーおよびチャット体験については、詳細は PlayFab Party Unity プラグイン を参照してください。
前提条件
- PlayFab SDK がインポートされ、タイトルが構成されている Unity プロジェクト。
- 登録された PlayFab タイトル。
このガイドではチャット アプリケーションの設定を省略します。チャット アプリケーションを統合するには、新しい Photon Chat アプリケーションを作成し、Unity と PlayFab Game Manager - Photon Add-on ページの対応するボックスに App ID を入力します。
Photon アプリケーションのセットアップ
- Photon ダッシュボードに登録してログインしたら、Create a new App を選択します。

- Photon Type を選択します。
- Name を選択します。
- Description を作成します。
- Create を選択して送信します。

認証のセットアップ
- リストで新しく作成したアプリケーションを見つけ、Manage を選択します。

- Application ダッシュボードで、ページ Title の下にある App ID を見つけて保存します。

- Authentication セクションを見つけます。
- Custom Server を選択します。

PlayFabTitleId プレースホルダーをご自分の Title Id に置き換えます。
- URL を入力します。
- Create ボタンを選択して送信します。

Photon 用に PlayFab タイトルをセットアップ
タイトルの Game Manager ページに移動し、次を実行します:- Add-ons タブに移動します。
- Add-ons のリストで、Photon を見つけて選択します。

- Photon Add-on ページでは、Photon Realtime Application ID を指定して Photon をインストールできます。
- 任意で、Chat App ID を指定できます。
- Add-on (3) をインストールすると、Photon secret Key が生成されます (2)。
- Webhook を構成するときに将来使用するために保存します。
Photon シークレット キーを安全でアクセスしやすい場所に保存することを忘れないでください。Webhook を構成する際に役立ちます。

Photon の Webhook の設定
任意の統合として、Photon は特定のイベントを PlayFab CloudScript に送信できます。これは Webhook で行われます:- Base URL を指定します。
- 次に、利用可能な各イベントのパスを指定します。
- パスは、事実上、CloudScript で実装されたハンドラー名です。
Title Id プレースホルダーをご自分の Title Id に置き換えてください。
PhotonSecretKey トークンを、Photon Add-on ページで生成したシークレット キーに置き換えてください。
- Base URL を入力します。
- 利用可能な各 Events に対して CloudScript ハンドラー Name を割り当てます。
- CustomHttpHeaders をすべて削除します。
- Save ボタンを選択して送信します。

Unity プロジェクトのセットアップ
このガイドでは、PlayFab SDK が既にインポート、セットアップされ、タイトル設定が構成されていることを前提としています。- Asset Store に移動して開始します。
- Photon Unity Networking Free パッケージ を見つけます。
- Import (1) を選択します。
- インポートされたファイルを検査できます。
- 次に Import (2) を選択します。

- 作成した Photon App の Photon Application Dashboard で見つけた Realtime Application ID (1) を入力します。
- Setup Project (2) を選択します。
- セットアップが完了したら、Close (3) を選択します。

- トップ ウィンドウ パネルに移動します。
- Window を選択します。
- 次に Photon Unity Networking (1) を選択します。
- 最後に Highlight Server Settings (2) を選択します。
- Standard Unity プロジェクト ウィンドウに PhotonServerSettings (3) オブジェクトが表示されます。
- オブジェクトを選択して Unity Inspector ウィンドウに設定を表示します。

PhotonServerSettings の一部として、Chat Application ID を割り当てるオプションがあります。
PlayFab から Photon への認証の実装
PlayFab Game Manager でタイトルの Photon Add-on を有効にし、Photon Application ダッシュボードで認証を構成すると、PlayFab は Photon 環境内で既存の PlayFab プレイヤーを認証できるようになります。 これは、Photon 用のユーザー管理の実装を完全に回避できることを意味します。- Photon Unity Networking Free パッケージ、Classic バージョンの DemoHub-Scene-V2 シーンに移動します。
- このシーンは、パッケージのすべての例のハブです。
- これは 最初 に読み込むシーンなので、PlayFab を Photon で認証できるようにする小さなスクリプトを追加しましょう。
- PlayFabAuthenticator という空の GameObject を作成します。
- 次に Unity Inspector ウィンドウで、同じ名前のコンポーネントをこの GameObject に追加します。

PlayFabAuthenticator コンポーネントのコードをコピーして貼り付け、ファイルを保存して閉じます。
PlayFab から Photon への認証のテスト
- シーンを開始します。
- コンソール メッセージのフローを検査します。 次を確認します:
- PlayFab 自体への認証が成功しました。
- Photon トークンが取得されました。

- PlayFab 認証が完了していることを確認するには、Demo Boxes を選択します。
- 次に、以下の画像に示すように Load Demo を選択します。


Photon の部屋イベント + CloudScript
Photon マッチメイキング システムには Room の概念があります。この概念に慣れていない場合は、Photon マッチメイキング ガイド を参照してください。 PlayFab では、さまざまな部屋のイベントをインターセプトできます。次の部屋のイベントはインターセプトに CloudScript のみが必要です:RoomCreatedRoomJoinedRoomLeftRoomClosed
RoomPropertyUpdatedRoomEventRaised
部屋イベントのハンドラーを導入すると、それがイベント処理フローの重要な部分になります。したがって、CloudScript の実行中に発生するエラーは、システム全体 に問題を引き起こす可能性があります。たとえば、
RoomCreated ハンドラーがエラーをスローすると、クライアントもエラーをスローし、適切に接続できなくなります。Room Created ハンドラー
RoomCreated ハンドラーは、Photon の部屋が作成されるたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。
“args” 引数を使用して、イベントに関する詳細データを取得できます。
Room Joined ハンドラー
RoomJoined ハンドラーは、プレイヤーが部屋に参加するたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。
RoomCreated を使用します。“args” 引数を使用して、イベントに関する詳細データを取得できます。
Room Left
RoomLeft ハンドラーは、プレイヤーが部屋を離れるたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。
Room Closed ハンドラー
RoomClosed ハンドラーは、最後のプレイヤーが部屋を離れ、部屋にプレイヤーが残っていないたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。
Room Property Updated
RoomPropertyUpdated ハンドラーは、部屋のプロパティが変更されるたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。
このハンドラーでは
currentPlayerId は未定義です。部屋のプロパティがクライアントから変更された場合、“args” 引数を使用して UserId を参照し、担当プレイヤーを取得できます。Room Event Raised
Room Event Raised は、カスタム部屋イベントが発生するたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。部屋イベント ハンドラーのテスト
この例は、前の例 (PlayFab + Photon 認証) を拡張します。 タイトル用に次の CloudScript をアップロードします。PlayFabAuthenticator スクリプトを拡張します。拡張版では、シーン読み込み間でオブジェクトを破棄しないために Awake メソッドも活用します。
- ハブ シーンを実行し、PlayFab 認証の完了を待ちます (1)。
- 次に Boxes Demo シーンを読み込みます (2)。

- シーンが読み込まれたら、ピアが新しく作成された部屋に接続するのを待ちます (1)。
- 次に、左上の Execute Example を選択します (2)。
- コンソール出力を確認します (3)。
- エラーが発生していないことを確認します。

- 初期状態では、Photon インスタンスには開かれた部屋がありませんでした。例を起動すると、Photon は Boxes Demo 用の部屋を作成しました。
- 参加する最初のプレイヤーは、部屋をリクエストしたプレイヤーです。したがって、RoomJoined Event は記録されませんでした。次に例のコードを実行しました:
- まず、カスタム Room Event を発生させました。
- 次に、カスタム Room Property を設定しました。
- 次に Unity プレイ モードを停止しました。これにより、クライアントは部屋を退出しました。
- 切断されたクライアントが最後だったので、他にクライアントがいないため、Photon は部屋を閉じます。

