Skip to main content
このセクションでは、Photon Realtime や Photon Unity Networking (PUN) などの Photon マルチプレイヤー サービスと PlayFab を併用する情報を提供します。 現在、次の Photon 統合を提供しています:
  • Photon プレイヤーを PlayFab で認証。
  • PlayFab CloudScript コールバックを使用して部屋のイベントをリッスン。

Photon クイックスタート

このクイックスタートでは、Photon マルチプレイヤーを PlayFab で動作するようにセットアップする方法を示します。現在、PlayFab は次の Photon 統合を提供しています:
  • Photon プレイヤーを PlayFab で認証。
  • PlayFab CloudScript コールバックを使用して部屋のイベントをリッスン。
このクイックスタートでは、最新の Photon Unity サンプル プロジェクト を使用して、両方の機能がどのように動作するかを示します。
Unity で完全にサポートされている PlayFab マルチプレイヤーおよびチャット体験については、詳細は PlayFab Party Unity プラグイン を参照してください。

前提条件

  1. PlayFab SDK がインポートされ、タイトルが構成されている Unity プロジェクト。
  2. 登録された PlayFab タイトル。
このガイドではチャット アプリケーションの設定を省略します。チャット アプリケーションを統合するには、新しい Photon Chat アプリケーションを作成し、Unity と PlayFab Game Manager - Photon Add-on ページの対応するボックスに App ID を入力します。

Photon アプリケーションのセットアップ

  1. Photon ダッシュボードに登録してログインしたら、Create a new App を選択します。
新しい Photon アプリケーションを作成
  1. Photon Type を選択します。
  2. Name を選択します。
  3. Description を作成します。
  4. Create を選択して送信します。
新しいアプリケーション フォーム

認証のセットアップ

  1. リストで新しく作成したアプリケーションを見つけ、Manage を選択します。
Test アプリケーションを管理
  1. Application ダッシュボードで、ページ Title の下にある App ID を見つけて保存します。
App ID を保存
  1. Authentication セクションを見つけます。
  2. Custom Server を選択します。
カスタム サーバー認証 次のページでは、Photon の認証 URL を構成できます。
PlayFabTitleId プレースホルダーをご自分の Title Id に置き換えます。
  1. URL を入力します。
  2. Create ボタンを選択して送信します。
認証 URL を入力

Photon 用に PlayFab タイトルをセットアップ

タイトルの Game Manager ページに移動し、次を実行します:
  1. Add-ons タブに移動します。
  2. Add-ons のリストで、Photon を見つけて選択します。
Game Manager Add-ons タブ
  1. Photon Add-on ページでは、Photon Realtime Application ID を指定して Photon をインストールできます。
    • 任意で、Chat App ID を指定できます。
    • Add-on (3) をインストールすると、Photon secret Key が生成されます (2)
    • Webhook を構成するときに将来使用するために保存します。
Photon シークレット キーを安全でアクセスしやすい場所に保存することを忘れないでください。Webhook を構成する際に役立ちます。
Realtime App ID をコピー

Photon の Webhook の設定

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

Unity プロジェクトのセットアップ

このガイドでは、PlayFab SDK が既にインポート、セットアップされ、タイトル設定が構成されていることを前提としています。
  • Asset Store に移動して開始します。
  • Photon Unity Networking Free パッケージ を見つけます。
  • Import (1) を選択します。
  • インポートされたファイルを検査できます。
  • 次に Import (2) を選択します。
Photon Unity をインポート インポート プロセスが完了した直後に、PUN Setup ウィンドウが開きます。
  • 作成した Photon AppPhoton Application Dashboard で見つけた Realtime Application ID (1) を入力します。
  • Setup Project (2) を選択します。
  • セットアップが完了したら、Close (3) を選択します。
PUN セットアップ AppId が受け入れられた場合、Photon Server Settings オブジェクトが選択され、Unity Inspector ウィンドウで表示できます。Server Settings オブジェクトに手動でアクセスするには:
  • トップ ウィンドウ パネルに移動します。
  • Window を選択します。
  • 次に Photon Unity Networking (1) を選択します。
  • 最後に Highlight Server Settings (2) を選択します。
  • Standard Unity プロジェクト ウィンドウに PhotonServerSettings (3) オブジェクトが表示されます。
  • オブジェクトを選択して Unity Inspector ウィンドウに設定を表示します。
Photon サーバー設定
PhotonServerSettings の一部として、Chat Application ID を割り当てるオプションがあります。
この時点で、プロジェクトが構成されています。

PlayFab から Photon への認証の実装

PlayFab Game Manager でタイトルの Photon Add-on を有効にし、Photon Application ダッシュボードで認証を構成すると、PlayFab は Photon 環境内で既存の PlayFab プレイヤーを認証できるようになります。 これは、Photon 用のユーザー管理の実装を完全に回避できることを意味します。
  1. Photon Unity Networking Free パッケージ、Classic バージョンの DemoHub-Scene-V2 シーンに移動します。
    • このシーンは、パッケージのすべての例のハブです。
    • これは 最初 に読み込むシーンなので、PlayFab を Photon で認証できるようにする小さなスクリプトを追加しましょう。
  2. PlayFabAuthenticator という空の GameObject を作成します。
  3. 次に Unity Inspector ウィンドウで、同じ名前のコンポーネントをこの GameObject に追加します。
認証コンポーネントを追加 歯車アイコンを選択し、ドロップダウン メニューからスクリプトを編集するように選択します。PlayFabAuthenticator コンポーネントのコードをコピーして貼り付け、ファイルを保存して閉じます。

PlayFab から Photon への認証のテスト

  1. シーンを開始します。
  2. コンソール メッセージのフローを検査します。 次を確認します:
  3. PlayFab 自体への認証が成功しました。
  4. Photon トークンが取得されました。
次の画像は正しいフローを示しています。 シーンの開始 Photon トークンが取得され、認証が完了すると、Photon デモをチェックする準備ができました。 たとえば、Demo Boxes というデモを開始します。
  1. PlayFab 認証が完了していることを確認するには、Demo Boxes を選択します。
  2. 次に、以下の画像に示すように Load Demo を選択します。
デモを読み込み Photon はデバッグ メッセージの出力を開始します。コンソールを監視することで、認証の問題があるかどうかを簡単に見つけられます。 Photon デバッグ コンソール コンソールに Authentication Denied エラーがないことを確認します。この時点で、最小限の PlayFab と Photon の統合がセットアップされました。

Photon の部屋イベント + CloudScript

Photon マッチメイキング システムには Room の概念があります。この概念に慣れていない場合は、Photon マッチメイキング ガイド を参照してください。 PlayFab では、さまざまな部屋のイベントをインターセプトできます。次の部屋のイベントはインターセプトに CloudScript のみが必要です:
  • RoomCreated
  • RoomJoined
  • RoomLeft
  • RoomClosed
以下のイベントをインターセプトするには、Unity コードの追加の制御が必要です (詳細については後述):
  • RoomPropertyUpdated
  • RoomEventRaised
部屋イベントのハンドラーを導入すると、それがイベント処理フローの重要な部分になります。したがって、CloudScript の実行中に発生するエラーは、システム全体 に問題を引き起こす可能性があります。たとえば、RoomCreated ハンドラーがエラーをスローすると、クライアントもエラーをスローし、適切に接続できなくなります。
各イベント タイプごとにハンドラーを定義することで PlayFab CloudScript を構築しましょう。

Room Created ハンドラー

RoomCreated ハンドラーは、Photon の部屋が作成されるたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。
“args” 引数を使用して、イベントに関する詳細データを取得できます。

Room Joined ハンドラー

RoomJoined ハンドラーは、プレイヤーが部屋に参加するたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。
このコールバックは、部屋に入る最初のユーザーに対しては呼び出されません。参加する最初のプレイヤーをインターセプトするには RoomCreated を使用します。“args” 引数を使用して、イベントに関する詳細データを取得できます。

Room Left

RoomLeft ハンドラーは、プレイヤーが部屋を離れるたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。
“args” 引数を使用して、イベントに関する詳細データを取得できます。

Room Closed ハンドラー

RoomClosed ハンドラーは、最後のプレイヤーが部屋を離れ、部屋にプレイヤーが残っていないたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。
“args” 引数を使用して、イベントに関する詳細データを取得できます。

Room Property Updated

RoomPropertyUpdated ハンドラーは、部屋のプロパティが変更されるたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。
このハンドラーでは currentPlayerId は未定義です。部屋のプロパティがクライアントから変更された場合、“args” 引数を使用して UserId を参照し、担当プレイヤーを取得できます。
“args” 引数を使用して、イベントに関する詳細データを取得できます。
Unity Photon クライアントを使用してカスタム部屋プロパティを変更する場合、Webhook (この場合は PlayFab) にイベントを渡すため、呼び出しをマークすることが重要です

Room Event Raised

Room Event Raised は、カスタム部屋イベントが発生するたびに呼び出されます。次の CloudScript ハンドラーはそのようなイベントをインターセプトします。
“args” 引数を使用して、イベントに関する詳細データを取得できます。
Unity Photon クライアントを使用してカスタム部屋イベントを発生させる場合、Webhook (この場合は PlayFab) にイベントを渡すために呼び出しをマークすることが重要です。

部屋イベント ハンドラーのテスト

この例は、前の例 (PlayFab + Photon 認証) を拡張します。 タイトル用に次の CloudScript をアップロードします。
このコードは、Photon コールバックが呼び出されるたびに新しいタイトル イベントを投稿するだけです。本番環境で使用できない場合、この例ではコールバックがどのように呼び出されるかを明確に確認できます。 カスタム イベントを発生させ、カスタム部屋プロパティを設定する新しい例のコードを含めて PlayFabAuthenticator スクリプトを拡張します。拡張版では、シーン読み込み間でオブジェクトを破棄しないために Awake メソッドも活用します。
  • ハブ シーンを実行し、PlayFab 認証の完了を待ちます (1)
  • 次に Boxes Demo シーンを読み込みます (2)
Demo Boxes シーンを読み込む
  • シーンが読み込まれたら、ピアが新しく作成された部屋に接続するのを待ちます (1)
  • 次に、左上の Execute Example を選択します (2)
  • コンソール出力を確認します (3)
  • エラーが発生していないことを確認します。
Execute Example RoomLeft および RoomClosed イベントも受信できるように、Unity のプレイを停止することを忘れないでください。 タイトルの Game Manager ページに移動し、PlayStream パネルを確認します。CloudScript コードが Photon イベントを処理した結果生成されたイベントが表示されるはずです。
  1. 初期状態では、Photon インスタンスには開かれた部屋がありませんでした。例を起動すると、Photon は Boxes Demo 用の部屋を作成しました。
  2. 参加する最初のプレイヤーは、部屋をリクエストしたプレイヤーです。したがって、RoomJoined Event は記録されませんでした。次に例のコードを実行しました:
    • まず、カスタム Room Event を発生させました。
    • 次に、カスタム Room Property を設定しました。
    • 次に Unity プレイ モードを停止しました。これにより、クライアントは部屋を退出しました。
  3. 切断されたクライアントが最後だったので、他にクライアントがいないため、Photon は部屋を閉じます。
すべてのイベントは、次の画像に示すように、PlayStream イベント フローにログされる必要があります。 PlayStream イベント フロー この時点で、Photon イベント サポートを PlayFab タイトルに完全に統合しました。
最終更新日 2026年8月13日