トーナメントとランキングのクイックスタート
このクイックスタートでは、プレイヤーのハイ スコアを追跡する統計情報を作成する方法と、上位のスコアのランキングを取得する方法について説明します。 これは、グローバル ランキングに利用したり、特定のイベントやトーナメントをリセットするためにリセット可能な統計情報を組み合わせて利用したりすることができます。
前提条件
プレイヤーが PlayFab にログイン済みである。
手順 1 - 統計情報と関連するランキングを作成する
[ゲーム マネージャー] で以下を実行します。
- メニュー左側の [ランキング] に移動します。
- [新しいランキング] を選択します。
- [統計名] フィールドに HighScore というランキングを追加します。
- 表示されたドロップダウン メニューを使って、[リセット頻度] フィールドを [手動] に設定します。
- [集計方法] フィールドに移動し、表示されたドロップダウン メニューから [最大] (常に最大の値を使用) を選択します。
手順 2 - プレイヤーのハイ スコア統計情報を更新する
クライアントから UpdatePlayerStatistics を使うには、API 機能を有効にする必要があります。
- タイトルの [設定] メニューで [Title settings](タイトルの設定) を選択します。
- [API 機能] タブを選択します。
- [クライアントにプレイヤー統計情報のポストを許可する] チェック ボックスをオンにします。 注: 一般に、このオプションは送信された値に対してクライアントに権限を与えるので、ライブ ゲームでは使用しないでください。 これは、プレイヤーが統計情報を不正に使用する心配がない場合にのみ有効です。 統計情報をセキュリティで保護する必要がある場合は、クラウド スクリプトやカスタム ゲーム サーバーなどのサーバー権限のある操作を介してのみ更新する必要があります。
- 画面下部にある [保存] をクリックします。
C# コードの例 - SubmitScore
このコード例では、ゲームの終了時に呼び出される SubmitScore
関数が提供されます。
public void SubmitScore(int playerScore) {
PlayFabClientAPI.UpdatePlayerStatistics(new UpdatePlayerStatisticsRequest {
Statistics = new List<StatisticUpdate> {
new StatisticUpdate {
StatisticName = "HighScore",
Value = playerScore
}
}
}, result=> OnStatisticsUpdated(result), FailureCallback);
}
private void OnStatisticsUpdated(UpdatePlayerStatisticsResult updateResult) {
Debug.Log("Successfully submitted high score");
}
private void FailureCallback(PlayFabError error){
Debug.LogWarning("Something went wrong with your API call. Here's some debug information:");
Debug.LogError(error.GenerateErrorReport());
}
手順 3 - ハイ スコアのランキングを要求する
ゲームをプレイしたすべてのプレイヤーの上位スコアのランキングを取得するには、GetLeaderboard の呼び出しを行います。
C# コード例 - RequestLeaderboard
このコード例では、ランキングを取得するために呼び出される RequestLeaderboard
関数が提供され、ハイ スコアを表示するエクスペリエンスをゲームに入力する DisplayLeaderboard
の関数に結果が渡されます。
//Get the players with the top 10 high scores in the game
public void RequestLeaderboard() {
PlayFabClientAPI.GetLeaderboard(new GetLeaderboardRequest {
StatisticName = "HighScore",
StartPosition = 0,
MaxResultsCount = 10
}, result=> DisplayLeaderboard(result), FailureCallback);
}
private void FailureCallback(PlayFabError error){
Debug.LogWarning("Something went wrong with your API call. Here's some debug information:");
Debug.LogError(error.GenerateErrorReport());
}