Azure Functions を利用した CloudScript は、CloudScript の優れた点をより多くの対応言語と改善されたデバッグ ワークフローで発展させたものです。
このチュートリアルでは Unity のコード サンプルを示していますが、CloudScript はすべての SDK で同様に動作します。
- PlayFab Unity SDK でセットアップされた Unity 環境
PlayFabSharedSettingsオブジェクトにタイトル ID が設定されていること。- プロジェクトがユーザーのログインに成功できること。
はじめに: helloWorld
helloWorld のサンプルは、Game Manager で何も変更していない新しいタイトルで動作します。新しいタイトルのデフォルト CloudScript ファイルには、helloWorld というハンドラーが含まれています。入力パラメーター、ロギング、currentPlayerId、戻りパラメーターなどのいくつかの基本機能を使用します。
以下のサンプルは、デフォルトの helloWorld 関数コード (コメント抜き) を示しています。
コードの分解
handler オブジェクトは PlayFab CloudScript 環境で事前定義されています。CloudScript 関数はこのオブジェクトに追加する必要があります。-
helloWorldは handler オブジェクトに定義されているため、タイトルと SDK から利用できる関数です。 -
argsは呼び出し元から渡される任意のオブジェクトです。JSON からパースされ、任意の形式で任意のデータを含めることができます。
-
Contextは上級パラメーターです。この例では null です。このパラメーターはサーバー制御で安全です。 -
currentPlayerIdはグローバル変数で、この呼び出しをリクエストしているプレイヤーの PlayFabId に設定されます。このパラメーターはサーバー制御で安全です。注: ExecuteEntityCloudScript API を使用する場合、エンティティのエンティティ チェーンに MasterPlayerID がない限り、このパラメーターは null です。 -
log.info:logはグローバル オブジェクトです。主に CloudScript のデバッグに使用されます。logオブジェクトは、info、debug、errorの各メソッドを公開しています。詳細はこのチュートリアルの後半にあります。 -
return: 返すオブジェクトは JSON にシリアライズされ、呼び出し元に返されます。任意の JSON シリアライズ可能なオブジェクトを、任意のデータとともに返すことができます。
Unity ゲーム クライアントから CloudScript 関数を実行する
クライアント内から CloudScript 関数を呼び出すのは簡単です。まずExecuteCloudScriptRequest を作成し、実行したい CloudScript 関数の名前 (この場合は helloWorld) を ActionId プロパティに設定して、API を介してオブジェクトを PlayFab に送信します。
handlers JavaScript オブジェクトに接続された CloudScript メソッドのみ呼び出せます。
コードの分解
ExecuteCloudScriptRequest は、PlayFabClientAPI.ExecuteCloudScript への任意の呼び出しに対するリクエストの型です。-
ExecuteCloudScriptRequest.FunctionNameは文字列です。値は CloudScript で定義された関数の名前と一致する必要があります。この場合はhelloWorldです。 -
ExecuteCloudScriptRequest.FunctionParameterは JSON にシリアライズできる任意のオブジェクトです。これはhelloWorld関数の最初の args パラメーターになります (前のセクションの args を参照してください)。 -
ExecuteCloudScriptRequest.GeneratePlayStreamEventはオプションです。true の場合、イベントが PlayStream に投稿され、Game Manager で表示したり、他の PlayStream トリガーに利用したりできます。
ExecuteCloudScript 行の最後の部分では PlayFab CloudScript サーバーへのリクエストと、言語固有の Result および Error 処理部分が関与します。
たとえば、Unity、JavaScript、または AS3 では、Error と Result の処理はコールバック関数を使用して行われます。
以下はエラー処理メソッドの例です。
中級の概要: グローバルおよび高度な引数
CloudScript は V8 でコンパイルされ、PlayFab のサーバー上でホストされる JavaScript 関数のセットです。PlayFab API リファレンス ドキュメント に記載されている任意のサーバー API に加え、ロガー、CloudScript リクエストを行うプレイヤーの PlayFab ID、およびリクエストに含まれる情報にアクセスできます。すべて事前定義されたオブジェクトの形で提供されます。 CloudScript 関数自体はグローバル handlers オブジェクトのプロパティです。次の表は、これらの事前定義された変数の完全な一覧を示しています。
さらに、すべてのハンドラー関数には次に示す 2 つのパラメーターが渡されます。
CloudScript 関数は
ExecuteCloudScript API、または事前設定された PlayStream イベント アクションを通じて呼び出せます。
ExecuteCloudScript に対するレスポンスの詳細については、ExecuteCloudScriptResult を参照してください。
中級: FunctionParameter と args
前のセクションで、request.FunctionParameter を設定し、args パラメーターでその情報を表示する方法を説明しました。CloudScript クイックスタート では、新しい CloudScript をアップロードする方法を示しています。
両方をまとめると、クライアントから CloudScript に引数を渡すもう 1 つの例を提供できます。前の例を取り上げ、CloudScript コードとクライアント コードを次のように変更します。
クライアントからのデータはハッキングや悪用の対象となる可能性があることに留意することが重要です。
中級: サーバー API の呼び出し
前述のとおり、CloudScript メソッド内では、Server API 呼び出しの完全なセットにアクセスできます。これにより、クラウド コードを専用サーバーのように動作させることができます。 一般的なサーバー タスク:- プレイヤーの統計とデータを更新する。
- アイテムと通貨を付与する。
- ゲーム データをランダムに生成する。
- 戦闘結果を安全に計算するなど…
上級: PlayStream イベント アクション
CloudScript 関数は、PlayStream イベントに応答して実行されるように構成できます。- 任意のブラウザで:
- PlayFab Game Manager にアクセスします。
- タイトル を見つけます。
- サイドバーの Build で Automation タブに移動します。
- Rules タブに移動します。

-
New Rule ボタンで新しいルールを作成します。
- 新しい Rule に名前を付けます。
- 条件やアクションのトリガーとして使用する Event type を選択します。
- Rule で CloudScript 関数をトリガーするには、そのセクションのボタンで Action を追加します。
- 次に Type ドロップダウン メニューでオプションを選択します。
- Cloud Script Function ドロップダウン メニューで helloWorld 関数を選択します。
- Save action ボタンを選択します。

-
この Rule は、選択した種類の任意のイベントでトリガーされるように設定されています。テストするには:
- Publish results as PlayStream Event ボックスをチェックします。
- Action を保存します。
- 次にイベントをトリガーします。
- PlayStream Monitor に、CloudScript の実行に対応する新しいイベントが表示され、適切な情報が含まれているはずです。
- デバッガーで PlayStream イベントを確認する方法の詳細については、次のセクション 上級: CloudScript のデバッグ を参照してください。
イベント アクションは CloudScript 関数を呼び出す際、ライブ リビジョンのみを使用できます。ドロップダウンに helloWorld 関数が見つからない場合、これが最も可能性の高い理由です。
上級: CloudScript のデバッグ
Azure Functions を利用した CloudScript を使うと、デバッグがはるかに容易になります。Azure Functions を利用した CloudScript のローカル デバッグ の使用方法について詳しく学んでください。
ロギング
コードをデバッグするための最も重要なツールの 1 つが ロギング です。CloudScript にはその機能を実行するユーティリティが用意されています。 これはlog オブジェクトの形で提供され、Info、Debug、Error の各メソッドを使って任意のメッセージをログに記録できます。
さらに、HTTP オブジェクトは logRequestAndResponse パラメーターを設定することで、リクエスト中に発生したエラーをログに記録します。これらのログの設定は簡単ですが、それらにアクセスするには 少しばかり コツが必要です。
以下は、4 種類すべてのログを使用する CloudScript 関数の例です。
logTest 関数は次のように ExecuteCloudScript を使って呼び出せます。
GeneratePlayStreamEvent を設定すると、CloudScript 関数の呼び出しでレスポンスの内容を含む PlayStream イベントが生成されます。PlayStream イベントの内容を確認するには:
- タイトル の Game Manager ホーム ページか PlayStream タブのいずれかに移動します。
- PlayStream Debugger に、届いたイベントが表示されます。
-
到着したら、以下に示すように、イベントの右上隅にある小さな青い Info アイコンを選択します。

-
シーンに
LogScriptMonoBehavior を追加すると、ゲームを実行すると PlayStream で以下のようになります。
ExecuteCloudScript 呼び出しの結果には、CloudScript 関数によって生成されたログ オブジェクトのリストである Logs というフィールドが含まれます。
3 つのログ呼び出しと、無効な HTTP リクエストによるログを確認できます。HTTP リクエストのログは、ログ呼び出しとは異なり、Data フィールドも使用しています。
このフィールドは、ログ ステートメントに関連する任意の情報を格納できる JavaScript オブジェクトです。log の呼び出しでも、次のように 2 番目のパラメーターを使ってこのフィールドを利用できます。
Data フィールドに 2 番目のパラメーターを設定します。
ログは結果に含まれているため、クライアント サイドのコードはログ ステートメントに応答できます。logTest 関数のエラーは強制されていますが、クライアント コードはそれに応答するように適応できます。
上級: エラー
開発中、CloudScript のエラーはlog.error の場合と同様、手動でトリガーされないことがよくあります。
幸いなことに、ExecuteCloudScript に対するレスポンスには、ScriptExecutionError フィールドを含む ExecuteCloudScriptResult が含まれます。ロギング セクションの最後の例を応用すると、次のように使用できます。
