Androidゲームでの実績



  • この記事は、Google Playゲームサービスに関する記事を和訳したものです。
  • 原文: Achievements in Android Games
  • 元記事のライセンスは CC-BYで、この和訳記事のライセンスは CC-BYです。
  • 自己責任でご利用ください。
  • 和訳した時期は 2019年7月ころです。

このガイドでは、あなたのゲームにて実績をアンロックおよび表示するために、Androidアプリケーションにて実績 APIを使用する方法を示しています。 APIは、com.google.android.gms.gamesおよび com.google.android.gms.games.achievementsパッケージにあります。

始める前に

もしまだそうしていなければ、実績のゲームコンセプトをレビューすることは役立つかもしれません。

実績 APIを使用してコーディングし始める前に:

  • Google Playゲームサービスを使用するには、Set Up Google Play Services SDKガイドにある、あなたのアプリをインストールし、セットアップするための指示に従ってください。
  • Google Play Console guideの指示に従うことによって、あなたのゲームがアンロックあるいは表示したい実績を定義します。
  • Android samples pageにて実績のコードサンプルをダウンロードし、レビューします。
  • 品質チェックリストに記述された勧告をよく理解してください。

実績クライアントを取得する

実績 APIを使用し始めるには、あなたのゲームは、まず AchievementsClientオブジェクトを取得しなければなりません。 Games.getAchievementClient()メソッドを呼び出し、アクティビティと、現在のプレイヤーの GoogleSignInAccountを渡すことによって、これを行うことができます。 プレイヤーのアカウント情報を取得する方法については、Androidゲームでのサインインを参照してください。

実績をアンロックする

実績をアンロックするには、AchievementsClient.unlock()メソッドを呼び出し、実績 IDを渡します。

次のコードスニペットは、あなたのアプリが実績をアンロックする方法を示しています:

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .unlock(getString(R.string.my_achievement_id));

もし成果が増分型(つまり、それをアンロックするために幾つかのステップが必要とされる)ならば、代わりに AchievementsClient.increment()を呼び出します。

次のコードスニペットは、あなたのアプリがプレイヤーの実績を増加させる方法を示しています:

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .increment(getString(R.string.my_achievement_id), 1);

実績をアンロックするために追加のコードを書く必要はありません; ひとたびそれが必要なステップ数に到達すれば、Google Playゲームサービスは自動的に実績をアンロックします。

実績 IDを strings.xmlファイルに定義することは良い習慣です、そうすれば、あなたのゲームは実績をリソース IDによって参照することができます。 実績を更新し読み込むための呼び出しをするときは、あなたの APIクォータを超えることを避けるために、これらの ベストプラクティスにも従ってください。

実績を表示する

プレイヤーの実績を表示するには、デフォルトの実績のユーザインタフェースを作成するための Intentを取得するために、AchievementsClient.getAchievementsIntent()を呼び出します。 あなたのゲームは、それから startActivityForResultを呼び出すことによって UIを起動することができます。

次のコードスニペットは、あなたのアプリがデフォルトの実績ユーザインタフェースを表示する方法を示しています。 スニペットにて、RC_ACHIEVEMENT_UIは、ゲームがリクエストコードとして使用する任意の整数です。

private static final int RC_ACHIEVEMENT_UI = 9003;

private void showAchievements() {
  Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .getAchievementsIntent()
    .addOnSuccessListener(new OnSuccessListener<Intent>() {
      @Override
      public void onSuccess(Intent intent) {
        startActivityForResult(intent, RC_ACHIEVEMENT_UI);
      }
    });
}

デフォルトの実績の UIの一例を以下に示します。