Android ゲームのリーダーボード

このガイドでは、Android アプリでリーダーボード API を使用して、視覚的なリーダーボードを作成する方法、プレーヤーのスコアを記録する方法、以前のゲーム セッションのスコアと比較する方法について説明します。API は com.google.android.gms.games パッケージと com.google.android.gms.games.leaderboards パッケージに含まれています。

始める前に

リーダーボード ゲームのコンセプトをまだ確認されていない場合は、確認することをおすすめします。

リーダーボード API を使用してコーディングを開始する前に:

リーダーボード クライアントを取得する

リーダーボード API の使用を開始するには、まずゲームで LeaderboardsClient オブジェクトを取得する必要があります。これを行うには、Games.getLeadeboardsClient() メソッドを呼び出して、アクティビティと現在のプレーヤーの GoogleSignInAccount を渡します。プレーヤーのアカウント情報を取得する方法については、Android ゲームへのログインをご覧ください。

プレーヤーのスコアを更新する

プレーヤーのスコアが変化した場合(プレーヤーがゲームを終了した場合など)、ゲームでは LeaderboardsClient.submitScore() を呼び出し、リーダーボード ID と未加工スコア値を渡して、リーダーボードのスコアを更新できます。

アプリがプレーヤーのスコアを更新する方法を次のコード スニペットに示します。

Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .submitScore(getString(R.string.leaderboard_id), 1337);

strings.xml ファイルでリーダーボード ID を定義し、ゲームがリソース ID でリーダーボードを参照できるようにすることをおすすめします。呼び出しを行いプレーヤー スコアを更新して読み込む場合は、API の割り当てを超えないように、こちらのベスト プラクティスにも従ってください。

リーダーボードを表示する

リーダーボードを表示するには、LeaderboardsClient.getLeaderboardIntent() を呼び出して Intent を取得し、デフォルトのリーダーボード ユーザー インターフェースを作成します。その後、ゲームで startActivityForResult を呼び出して UI を表示できます。

アプリがプレーヤーのスコアを更新する方法を次のコード スニペットに示します。コード スニペットで、RC_LEADERBOARD_UI はリクエスト コードの任意の整数です。

private static final int RC_LEADERBOARD_UI = 9004;

private void showLeaderboard() {
  Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .getLeaderboardIntent(getString(R.string.leaderboard_id))
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_LEADERBOARD_UI);
        }
      });
}

結果が返されなくても、呼び出しパッケージの ID を API が取得できるように startActivityForResult を使用する必要があります。デフォルトのリーダーボード UI の例を以下に示します。