プライズ テーブルを使用する
このチュートリアルでは、リセット可能なランキングのランクの範囲内にいるプレイヤー グループに対して一連のアクションをトリガーするプライズ テーブルを作成する方法について説明します。
具体的には、これはランキングのリセット時にメールのトリガー、プッシュ通知の送信、インベントリ項目および仮想通貨の付与、CloudScript 関数の実行を行う方法です。
この例では、プライズ テーブルのエンド トーナメント賞品を作成し、リセットの実行後にランキングのランクに基づいて 5 人のプレイヤーに仮想通貨を付与する方法について説明します。
要件
Important
これは、高度な チュートリアルです。 以下に示すすべての要件が満たされていることを確認してください。要件を満たしていない場合、このチュートリアルを完了 できません。
- プレイヤーを作成する方法に関する基本的な知識が必要です。それらのプレイヤーにアクションを実行するにはプレイヤーがランキングに存在している必要があるためです。
- また、ゲーム マネージャーを初めて使用する場合は、プライズ テーブルを作成するために、ゲーム マネージャーのクイックスタートに目を通してください。
- プライズ テーブルを使うには、リセット可能なランキングのしくみに関する一般的な知識が必要です。 ランキングについては、チュートリアル「リセットできる統計情報とランキングを使用する」をご覧ください。
- さらに、仮想通貨を設定する必要があります。
通貨に関するチュートリアルを読み、次のパラメーターを使って 2 つの通貨をセットアップしてください。
- 通貨コード: GO
- 表示名: Gold
- 初期デポジット: 200
- 通貨コード: SI
- 表示名: Silver
- 初期デポジット: 1000
手順 1 - ランキングの作成
[ゲーム マネージャー] で以下を実行します。
- メニュー左側の [ランキング] に移動します。
- [新しいランキング] を選択します。
- [統計名] フィールドに tournamentScore_manual というランキングを追加します。
- 表示されたドロップダウン メニューを使って、[リセット頻度] フィールドを [手動] に設定します。
- [集計方法] フィールドに移動し、表示されたドロップダウン メニューから [最大 (常に最大の値を使用)] を選択します。
手順 2 - ランキングのプライズ テーブルの作成
ランキングが作成されたので、プライズ テーブルを関連付けることができます。 移動先:
- メニュー左側の [ランキング]。
- [プライズ テーブル] タブを選択します。
- [新しいプライズ テーブル] ボタンを選択し、[新しいプライズ テーブル] ビューに移動します。
[新しいプライズ テーブル] ビューで、次のようにします。
- [情報] 領域に移動し、[新しいプライズ テーブル] の [名前] として「エンド トーナメント賞品」と入力します。
- [ランキング] ドロップダウン メニューから [tournamentScore_manual] を選択します。
このプライズ テーブルでいくつかの操作を実行するには、ランクを設定する必要があります。 方法は次のとおりです。
- [テーブル コンテンツ] セクションで [+ ランクの追加] を選択します。
- [ランク] フォームが表示されます。
[ランク] フォームで次のようにします。
- [最上位ランク] フィールドの値が 1 であることを確認します。
- [最下位 (この数値を含む)] フィールドの値が 2 であることを確認します。
- [種類] ドロップダウン メニューで、[仮想通貨を付与] を選択します。
- [仮想通貨コード] ドロップダウン メニューで、量が 10 の [GO (Gold)] を選択します。
次に、2 番目のランク範囲を追加します。
- [テーブル コンテンツ] セクションで [+ランクの追加] を選択します (下部にある 2 番目のランクでもかまいません)。
- 表示された [ランク] フォームで、[ランク フォーム] フィールドの値が 3 であり、[最下位 (この数値を含む)] フィールドの値が 5 であることを確認します。
- [仮想通貨コード] ドロップダウン メニューで、量が 10 の [SI (Silver)] を選択します。
手順 3 - プレイヤーのランキングの設定
ランキングとそれに関連付けられたプライズ テーブルが作成されました。 次の手順では、プレイヤーにランキングを設定します。
プレイヤーを作成するには、LoginWithCustomIDを使います。 次に、プレイヤーを使って UpdatePlayerStatistics によってランキングを設定します。
UpdatePlayerStatistics を使うには、API 機能を有効にする必要があります。
- 左側のメニューで、[設定] を選択します。
- [API 機能] タブを選択します。
- [クライアントにプレイヤー統計情報のポストを許可する] チェック ボックスをオンにします。
- 次に、画面の下部にある [API 機能を保存] ボタンを選択します。
C# コードの例
次の C# コード例では、5 人のプレイヤーを作成し、LoginWithCustomID を使ってログインさせます。
その後、UpdatePlayerStatistics を使って、前の手順で作成したランキング (tournamentScore_manual
) を、値 105、104、103、102、101 で 5 人のプレイヤーに設定します。
// Note: This is a recursive function. Invoke it initially with no parameter
public void CreatePlayerAndPopulateLeaderboard(int playerIndex = 5) {
if (playerIndex <= 0) return;
const string leaderboardName = "tournamentScore_manual";
PlayFabClientAPI.LoginWithCustomID(new LoginWithCustomIDRequest {
CustomId = playerIndex.ToString(),
CreateAccount = true
}, result => OnLoggedIn(result,playerIndex,leaderboardName), FailureCallback);
}
private void OnLoggedIn(LoginResult loginResult, int playerIndex, string leaderboardName) {
Debug.Log("Player has successfully logged in with " + loginResult.PlayFabId);
PlayFabClientAPI.UpdatePlayerStatistics(new UpdatePlayerStatisticsRequest {
Statistics = new List<StatisticUpdate> {
new StatisticUpdate {
StatisticName = leaderboardName,
Value = playerIndex + 100
}
}
}, result=> OnStatisticsUpdated(result,playerIndex), FailureCallback);
}
private void OnStatisticsUpdated(UpdatePlayerStatisticsResult updateResult, int playerIndex) {
Debug.Log("Successfully updated player statistic");
// Recursively invoke for next player
CreatePlayerAndPopulateLeaderboard(playerIndex - 1);
}
private void FailureCallback(PlayFabError error){
Debug.LogWarning("Something went wrong with your API call. Here's some debug information:");
Debug.LogError(error.GenerateErrorReport());
}
C# コード例の結果の確認
ランキングで 5 人のプレイヤーに正しい値が設定されたことを確認するには、次のようにします。
- 左側のメニューの [ランキング] を選択します。
- [ランキング] タブで [ランキング] リスト ビューに戻ります。
- [tournamentScore_manual] を選択します。値が 105、104、103、102、101 の 5 人のプレイヤーが表示されます。
手順 4 - プレイヤーの初期通貨の確認
確認前に、次のようにします。
- 手順 2 から左側のメニューの [プレイヤー] に戻ります。
- [プレイヤー] タブに移動し、手順 3 で tournamentScore_manualランキング に配置されたプレイヤーを見つけます。
- [プレイヤー ID] と、そのプレイヤーの [仮想通貨] タブを選択します。
- そのプレイヤーの GO (Gold) および SI (Silver) 通貨の値を記録します。
確認する前に、手順 2 からテスト プレイヤーに戻ります。
- [プレイヤー] に移動し、手順 3 で tournamentScore_manual ランキングに配置されたプレイヤーを見つけます。
- [プレイヤー ID] と、そのプレイヤーの [仮想通貨] タブを選択します。
- そのプレイヤーの GO (Gold) および SI (Silver) 通貨の値を記録します。
- 手順 3 で tournamentScore_manual ランキング に配置された 5 人のプレイヤーのうち残り 4 人に対してこれを行います。
- それらのプレイヤーの GO (Gold) および SI (Silver) 通貨の値を記録してください (リセット後にプライズ テーブルが機能したことを確認するため、後で重要になります)。
手順 5 - ランキングのリセットによるリワードの付与
次に、[ランキング] に移動します。
[ランキング] リスト ビューに戻ります。
[tournamentScore_manual] を選択します。
[ランキング] で [プレイヤー] の順位を書き留めます (これらはゼロから始まるため、順位 0 が第 1 位になります)。
[今すぐリセット] ボタンを選択します。
[リセット] ボタンを選択し、ランキングのリセットを確認します。
これにより、[プレイヤー] 一覧がクリアされます。
- 画面の上部で [今すぐリセット] ボタンを選択します。
- [このランキングを今すぐリセットしますか?] という確認メッセージが表示されたら、[リセット] ボタンを選択してリセットを確認します。
- これにより、[プレイヤー] 一覧がクリアされます。
手順 6 - プライズ テーブルが機能することのテスト
プライズ テーブルが機能したかどうかを確認するには、ランキングでプレイヤーをチェックし、正しい金額の通貨が付与されているかどうかを確認します。 これは、プレイヤーの PlayStream デバッガーですぐに確認できます。
PlayStream デバッガーでこれを確認するには、次のようにします。
- 左側のメニューの [プレイヤー] を選択します。
- [PlayStream] タブの [ランキング] イベントにプレイヤーのランキングと、その後に仮想通貨の最新情報が表示されます。
次に、プレイヤーが正しい通貨を受け取ったかどうかを手動で確認しましょう。
- 左側のメニューの [プレイヤー] を選択します。
- [プレイヤー] タブで、画面の [仮想通貨] 領域に移動します。
- 通貨が正しく付与されていることを確認します。
- これは、前に記録した金額より 1 つ多くなっている必要があります。
- ランキングの順位が 0 または 1 になっているプレイヤーが 10 gold を獲得し、silver は付与されていないことを確認します。
- 一方、順位が 2、3、4 のプレイヤーには 10 silver が付与され、gold は付与されていません。
- これには、プライズ テーブルのセットアップ操作と一致します。
仮想通貨が正しく付与されたことを確認する別の方法は次のとおりです。
- [プレイヤー] に移動します。
- [イベント履歴] を参照します。
- ここには、player_virtual_currency_balance_changed イベントと、付与された仮想通貨の金額の変化に関する詳細が表示されます。