Player Stats API を活用することで、特定のプレーヤー層やプレーヤーのライフサイクルのさまざまなステージに合わせてゲーム エクスペリエンスを調整できます。プレーヤーの進捗状況や支出状況、エンゲージメントに基づいて、プレーヤー層ごとにカスタマイズしたエクスペリエンスを実現することが可能です。たとえば、この API を使用して、プレーヤーがログインしたときに新しいゲーム内アイテムを表示および宣伝するなどの積極的な措置を講じることで、使用頻度の低いユーザーを再びゲームに引き戻すことができます。
このガイドでは、Google Play Games サービスを使用して、ゲームで Player Stats API を活用する方法について説明します。API は com.google.android.gms.games.stats
パッケージと com.google.android.gms.games
パッケージに含まれています。
始める前に
Player Stats API の使用を開始する前に、以下の操作を行ってください。
Player Stats クライアントを取得する
Player Stats API の使用を開始するには、まずゲームで PlayerStatsClient
オブジェクトを取得する必要があります。そのためには、Games.getPlayerStatsClient()
メソッドを呼び出して、アクティビティと現在のプレーヤーの GoogleSignInAccount
を渡します。プレーヤーのアカウント情報を取得する方法については、Android ゲームにログインする方法についての説明をご覧ください。
プレーヤー統計情報の基本
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 データを取得するには、次の手順に沿って操作します。
PlayerStatsClient.loadPlayerStats()
メソッドを呼び出します。- 呼び出しに成功すると、Google Play Games サービスは オブジェクトを非同期に読み込む
Task
オブジェクトを返します。PlayerStats
このオブジェクトのメソッドを使用して、ログインしているプレーヤーのアプリ内でのアクティビティに関するデータを取得します。
次の例をご覧ください。
public void checkPlayerStats() { Games.getPlayerStatsClient(this, GoogleSignIn.getLastSignedInAccount(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 を使用すると、プレーヤーのエンゲージメントや支出行動に基づいてさまざまなタイプのプレーヤーを簡単に特定し、ゲーム エクスペリエンスを向上させるための適切な戦略を講じることができます。
次の表に、プレーヤー層と推奨されるエンゲージメント戦略の例を示します。
プレーヤー層 | エンゲージメント戦略 |
---|---|
セッション数が多く、支出額のパーセンタイル値も大きい使用頻度の高いプレーヤーであるものの、先週またはそれより前からプレイしていないプレーヤー。 |
|
エンゲージメントは高いものの、支出額のパーセンタイル値が小さいプレーヤー。 |
|
支出は多いものの頭打ちであり、使用頻度が下がりつつあるプレーヤー。 |
|
支出する可能性が非常に高いまたは非常に低いプレーヤー。 |
|