PlayFabとのインテグレーション
イントロダクション
このドキュメントでは、PlayFabとPhotonのインテグレーションをサポートします。
このアプローチを使用すれば、PlayFabとPhotonを併用して、最大限活用できます。
請求は、それぞれのサービスについて個別に発生します。
PlayFabの Photonアドオンはこちら で参照してください-ご自分のタイトルの "アドオン" - "マルチプレイヤー" セクションの下です。
PlayFabのPhotonアドオンでは、1つまたは2つのPhotonアプリケーションをセットアップできます(1つのPhoton Realtimeアプリケーション、および/または1つのPhoton Chatアプリケーション)。
PlayFab側からの設定手順は こちらのガイドを参照してください。
Photon向けのセットアップ手順を参照してください。
カスタム認証
ダッシュボードの設定
以下に、PlayFabでカスタム認証をセットアップする際の手順を示します:
- Photon ダッシュボードに進みます。
- アプリケーションを選択するか、またはアプリケーションを新規作成します。
- 「管理」をクリックします。
- 「認証」セクションで、「カスタムサーバー」をクリックします。
- [必須] 認証URLを
https://{PlayFabTitleId}.playfabapi.com/photon/authenticate
に設定します。
{PlayFabTitleId}
プレースホルダーを実際のPlayFab TitleIdで置換するよう留意してください。 - 「作成」をクリックして保存します。
- [推奨] 「設定済みのプロバイダと関係のない、匿名クライアントの接続を許可する」をチェックしないでください。
クライアントコード
クライアントは、キー/値のセットを機密情報として送信するよう予期されています。
- ログインしたユーザーのPlayFabユーザーID
- Photonトークン(GetPhotonAuthenticationToken クライアントAPIメソッドを使用して取得).
C#
lbClient.AuthValues = new AuthenticationValues();
lbClient.AuthValues.AuthType = CustomAuthenticationType.Custom;
lbClient.AuthValues.AddAuthParameter("username", PlayFabUserId);
lbClient.AuthValues.AddAuthParameter("token", PlayFabPhotonToken);
// do not set AuthValues.Token or authentication will fail
// connect
C++
ExitGames::Common::JString params = "username="+PlayFabUserId+"&token="+PlayFabPhotonToken;
ExitGames::LoadBalancing::AuthenticationValues playFabAuthenticationValues;
playFabAuthenticationValues.setType(ExitGames::LoadBalancing::CustomAuthenticationType::CUSTOM).setParameters(params);
// pass playFabAuthenticationValues as parameter on connect
JavaScript
var queryString = "username="+playFabUserId+"&token="+playFabPhotonToken;
loadBalancingClient.setCustomAuthentication(queryString, Photon.LoadBalancing.Constants.CustomAuthenticationType.Custom);
// connect
Realtime WebhookとWebRPC設定
アプリケーションにRealtime WebhookやWebRPCが不要な場合には、この部分はスキップしてください。
まず、カスタム認証をセットアップすることを推奨します。
カスタム認証がセットアップされていないと、Realtime WebhookやWebRPCは機能しません。
PlayFabタイトルと連携するよう、Realtime WebhookとWebRPCをセットアップする手順は以下のとおりです。
Photonのダッシュボードに進みます。
アプリケーションを選択するか、またはアプリケーションを新規作成します。
「管理」をクリックします。
「Webhook」セクションで、「新しいWebhoookを作成」をクリックします。
ドロップダウンリスト「種類を選択」で、Webhook v1.2を選択します。
[必須] 「BaseUrl」を
https://{PlayFabTitleId}.playfablogic.com/webhook/1/prod/{PhotonSecretKey}
に設定します。
-{PlayFabTitleId}
プレースホルダーを実際のPlayFab TitleIdで置換するよう留意してください。- Photon Realtimeアプリケーションを追加すると、「Photonシークレットキー」がPlayFabのアドオンページに文字列として追加されます。
- 最新の展開済み/アクティブなCloudScript修正ではなく、最新のアップロード済み/プッシュ済みのCloudScript修正を対象にしたい場合には、
prod
をtest
で置換することができます。
[任意]必要に応じて、Webhooksパスを設定してください。
不要なものは削除してください。
詳細こちらを参照してください。[任意] 「IsPersistent」、「HasErrorInfo」、「AsyncJoin」を設定してください。
デフォルト値を保持したい場合には、これらのキーを削除してください。
詳細はこちらを参照してください。
備考
「CustomHttpHeaders」設定は、CloudScriptハンドラーの影響を受けないためサポートされません。どのような値を設定しても有用ではありません。
PlayFabはRealtime Webhooks CloudScriptハンドラー機能に、以下の名前を推奨します:
- "PathCreate": "RoomCreated"
- "PathClose": "RoomClosed" (このハンドル名は変更しないでください)
- "PathJoin": "RoomJoined"
- "PathLeave": "RoomLeft"
- "PathEvent": "RoomEventRaised"
- "PathGameProperties": "RoomPropertyUpdated"
「PathClose」以外は、他のパスに好きなハンドル名を選べます。
PlayFabは、すべてのWebhooksやWebRPCハンドラーで有効なPlayFabIdをUserId引数として求めます。
唯一の例外は「RoomClosed」です。「PathClose」以外のすべてのPhoton Realtime Webhookと、すべてのWebRPCではPlayFabのCloudScriptグローバル変数「currentPlayerId」を「UserId」引数の値に設定する必要があります。
クライアントに呼ばれた、設定済みのRealtime WebhookまたはWebRPCは、同じ名前のCloudScriptハンドラーが明示的に存在しない限り作動しません。
例:
「PathJoin」を「GameJoined」に設定した場合、対象のCloudScript修正にこの機能を含める必要があります:JavaScript
handlers.GameJoined = function(args) { // your custom code goes here return { ResultCode : 0, Message: "Success" }; };
クライアントが「foo」WebRPCメソッドを呼ぶ場合、対象のCloudScript修正にこの機能を含める必要があります:
JavaScript
handlers.foo = function(args) { // your custom code goes here return { ResultCode : 0, Message: "Success" }; };