Android ゲームのプレーヤー統計情報

このガイドでは、Google Play Games サービスで Player Stats API を使用する方法について説明します。Player Stats API を使用して、プレーヤーのゲーム内アクティビティに関するデータを取得できます。

Player Stats API を活用することで、特定のプレーヤー層やプレーヤーのライフサイクルのさまざまなステージに合わせてゲーム エクスペリエンスを調整できます。プレーヤーの進捗状況や支出状況、エンゲージメントに基づいて、プレーヤー層ごとにカスタマイズしたエクスペリエンスを実現することが可能です。たとえば、この API を使用して、プレーヤーがログインしたときに新しいゲーム内アイテムを表示および宣伝するなどの積極的な措置を講じることで、使用頻度の低いユーザーを再びゲームに引き戻すことができます。

API は com.google.android.gms.games.stats パッケージと com.google.android.gms.games パッケージに含まれています。

始める前に

Player Stats API の使用を開始する前に、以下の操作を行ってください。

Player Stats クライアントを取得する

Player Stats API の使用を開始するには、まずゲームで PlayerStatsClient オブジェクトを取得する必要があります。そのためには、PlayerStatsClient.getPlayersClient() メソッドを呼び出してアクティビティを渡します。

PlayerStatsClient クラスは、Google Play 開発者サービスの Task クラスを使用して、結果を非同期で返します。タスクを使用したスレッド化された作業の管理について詳しくは、Tasks API デベロッパー ガイドをご覧ください。

プレーヤー統計情報の基本

Player Stats API を使用して、プレーヤーのゲーム内アクティビティに関するデータを取得することができます。取得可能なプレーヤー データのタイプの一部を以下に示します。

  • セッションの長さの平均値: プレーヤーのセッションの長さの平均値を分単位で示します。セッションの長さは、プレーヤーが Google Play Games サービスにログインしている時間として定義されます。

  • 最後にゲームを使用してから経過した日数: プレーヤーが最後にゲームを使用してから経過したおおよその日数です。

  • 購入数: プレーヤーのおおよそのアプリ内購入数です。

  • セッション数: プレーヤーのおおよそのセッション数です。セッション数は、プレーヤーが Google Play Games サービスにログインした回数として定義されます。

  • セッション数のパーセンタイル: プレーヤーのセッション数のおおよそのパーセンタイルを 0~1(0 と 1 を含む)の 10 進数の小数値で示します。この値は、そのゲームのプレーヤー ベースにおいて、現在のプレーヤーがプレイしたセッション数を、他のプレーヤーに対するパーセンタイルで示した値です。数値が大きいほど、そのプレーヤーがより多くのセッションをプレイしていることになります。

  • 支出のパーセンタイル: プレーヤーの支出額のおおよそのパーセンタイルを 0~1(0 と 1 を含む)の 10 進数の小数値で示します。この値は、そのゲームのプレーヤー ベースにおいて、現在のプレーヤーの支出額を他のプレーヤーに対するパーセンタイルで示した値です。数値が大きいほど、このプレーヤーがより多く支出していることになります。

以下のタイプのプレーヤー データはサポートが終了しており、常に未設定の定数値が返されます。

  • チャーンの可能性: プレーヤーが翌日にゲームの使用をやめる可能性を 0(チャーンの可能性が低い)~1(チャーンの可能性が高い)の 10 進数の小数値(0 と 1 を含む)で示します。チャーンとは、プレーヤーがゲームを 7 日間使用していない状態です。
  • 支出する可能性: このゲームでプレーヤーが支出するおおよその可能性を 0(支出する可能性が低い)~1(支出する可能性が高い)の 10 進数の小数値(0 と 1 を含む)で示します。
  • 次の 28 日間の合計支出: このゲームでプレーヤーが次の 28 日間に支出すると予測されるおおよその合計額です。
  • 高額支出の可能性: プレーヤーが次の 28 日間に支出する額が、このゲームのプレーヤー ベースの 95 パーセンタイル以上になるおおよその可能性を示します。これは、0(高額支出になる可能性が低い)~1(高額支出になる可能性が高い)の 10 進数の小数値で示します。

Player Stats データを取得する

ログインしているプレーヤーの Player Stats データを取得するには、次の手順に沿って操作します。

  1. PlayerStatsClient.loadPlayerStats() メソッドを呼び出します。

  2. 呼び出しに成功すると、Google Play Games サービスは オブジェクトを非同期に読み込む Task オブジェクトを返します。このオブジェクトのメソッドを使用して、ログインしているプレーヤーのアプリ内でのアクティビティに関するデータを取得します。

次の例をご覧ください。

public void checkPlayerStats() {
  PlayGames.getPlayerStatsClient(this)
      .loadPlayerStats(true)
      .addOnCompleteListener(new OnCompleteListener<AnnotatedData<PlayerStats>>() {
        @Override
        public void onComplete(@NonNull Task<AnnotatedData<PlayerStats>> task) {
          if (task.isSuccessful()) {
            // Check for cached data.
            if (task.getResult().isStale()) {
              Log.d(TAG, "using cached data");
            }
            PlayerStats stats = task.getResult().get();
            if (stats != null) {
              Log.d(TAG, "Player stats loaded");
              if (stats.getDaysSinceLastPlayed() > 7) {
                Log.d(TAG, "It's been longer than a week");
              }
              if (stats.getNumberOfSessions() > 1000) {
                Log.d(TAG, "Veteran player");
              }
              if (stats.getChurnProbability() == 1) {
                Log.d(TAG, "Player is at high risk of churn");
              }
            }
          } else {
            int status = CommonStatusCodes.DEVELOPER_ERROR;
            if (task.getException() instanceof ApiException) {
              status = ((ApiException) task.getException()).getStatusCode();
            }
            Log.d(TAG, "Failed to fetch Stats Data status: "
                + status + ": " + task.getException());
          }
        }
      });
}

Player Stats データを使用する場合のヒント

Player Stats API を使用すると、プレーヤーのエンゲージメントや支出行動に基づいてさまざまなタイプのプレーヤーを特定し、ゲーム エクスペリエンスを向上させるための適切な戦略を講じることができます。

次の表に、プレーヤー層と推奨されるエンゲージメント戦略の例を示します。

プレーヤー層 エンゲージメント戦略
セッション数が多く、支出額のパーセンタイル値も大きい使用頻度の高いプレーヤーであるものの、先週またはそれより前からプレイしていないプレーヤー。
  • ゲームを再度プレイするときに利用できる割引や特典に関する通知を送信する。
  • 再度ゲームを使用したことに感謝する「お帰り」メッセージを表示し、再プレイを促すようにデザインされたバッジを授与する。
エンゲージメントは高いものの、支出額のパーセンタイル値が小さいプレーヤー。
  • プレーヤーが、友だちにゲームのインストールや参加をすすめたくなるような特典を用意する。このアプローチでは、プレーヤーがゲームを楽しんでいるという確かな前提に基づいて、新しいプレーヤーの参加を促す。
支出は多いものの頭打ちであり、使用頻度が下がりつつあるプレーヤー。
  • 使用期限が短い高価値のツール、武器、割引を提供するなど、新たにプレーヤーの興味をかき立てるような特典を用意する。
  • プレーヤーが次回ログインしたときに、グループ攻撃などのコミュニティ機能の利用を促す動画を表示することで、使用頻度が高く長期に及ぶエンゲージメントを推進する。
支出する可能性が非常に高いまたは非常に低いプレーヤー。
  • 支出する可能性が低い: 広告動画を任意で視聴できるようにし、購入価格が安いアイテムを提示する。
  • 支出する可能性が高い: 初期の段階でゲーム内ストアに誘導し、購入を促す特別な広告を表示する。