- この記事は、Google Playゲームサービスに関する記事を和訳したものです。
- 原文: Leaderboards in Android Game
- 元記事のライセンスは CC-BYで、この和訳記事のライセンスは CC-BYです。
- 自己責任でご利用ください。
- 和訳した時期は 2019年7月ころです。
このガイドは、Androidアプリケーションにて、視覚的なリーダーボードを作成し、プレイヤーのスコアを記録し、スコアを以前のゲームセッションからのプレイヤーのスコアと比較するために、リーダーボード APIを使用する方法を示しています。
APIは com.google.android.gms.games
および com.google.android.gms.games.leaderboards
パッケージにあります。
始める前に
もしまだそうしていなければ、リーダーボードのゲームコンセプトをレビューすることは役立つかもしれません。
リーダーボード APIを使用してコーディングし始める前に:
- Google Playゲームサービスを使用するために、あなたのアプリをインストールし、セットアップするためのSet Up Google Play Services SDKガイドにある指示に従ってください。
- Google Play Consoleのガイドの指示に従うことによって、あなたのゲームが表示あるいは更新したいリーダーボードを定義します。
- Android samples pageにてリーダーボードのコードサンプルをダウンロードし、レビューします。
- 品質チェックリストに記述された勧告をよく理解してください。
リーダーボードクライアントを取得する
リーダーボード APIを使用し始めるには、あなたのゲームは、まず LeaderboardsClient
オブジェクトを取得しなければなりません。
Games.getLeadeboardsClient()
メソッドを呼び出し、アクティビティと、現在のプレイヤーの GoogleSignInAccount
を渡すことによって、これを行うことができます。
プレイヤーのアカウント情報を取得する方法については、Androidゲームでのサインインを参照してください。
プレイヤーのスコアを更新する
プレイヤーのスコアが変化したとき(例えば、プレイヤーがゲームを終えたとき)、あなたのゲームは、LeaderboardsClient.submitScore()
を呼び出し、リーダーボード IDと生のスコア値を渡すことによって、彼らのリーダーボード上のスコアを更新することができます。
次のコードスニペットは、あなたのアプリがプレイヤーのスコアを更新する方法を示しています:
Games.getLeaderboardsClient(this, GoogleSignIn.getLastSignedInAccount(this)) .submitScore(getString(R.string.leaderboard_id), 1337);
リーダーボード IDを strings.xml
ファイルに定義することは良い習慣です、そうすれば、あなたのゲームはリーダーボードをリソース IDによって参照することができます。
プレイヤーのスコアを更新し読み込むための呼び出しをするときは、あなたの APIクォータを超えることを避けるために、これらの ベストプラクティスにも従ってください。
リーダーボードを表示する
リーダーボードを表示するには、デフォルトのリーダーボードユーザインタフェースを作成するための Intent
を取得するために、LeaderboardsClient.getLeaderboardIntent()
を呼び出します。
それから、あなたのゲームは 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); } }); }
まったく結果が返されない場合であっても、私たちは、APIが呼び出し元のパッケージの識別子を取得できるように、startActivityForResult
を使用しなければなりません。
デフォルトのリーダーボードの UIの一例を以下に示します。
