ゲームにプレーヤーの統計情報を追加する

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

このガイドでは、ネイティブ C++ または Objective-C アプリで Player Stats API を使用する方法について説明します。

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

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

  • セッションの長さの平均値: プレーヤーのセッションの長さの平均値を分単位で示します。セッションの長さは、プレーヤーが Google Play Games サービスにログインしている時間として定義されます。
  • チャーンの可能性: プレーヤーが翌日にゲームの使用をやめる可能性を 0(チャーンの可能性が低い)~ 1(チャーンの可能性が高い)の 10 進数の小数値(0 と 1 を含む)で示します。チャーンとは、プレーヤーがゲームを 7 日間使用していない状態です。
  • 最後にゲームを使用してから経過した日数: プレーヤーが最後にゲームを使用してから経過したおおよその日数です。
  • 購入数: プレーヤーのおおよそのアプリ内購入数です。
  • セッション数: プレーヤーのおおよそのセッション数です。セッション数は、プレーヤーが Google Play Games サービスにログインした回数として定義されます。
  • セッション数のパーセンタイル: プレーヤーのセッション数のおおよそのパーセンタイルを 0 ~ 1(0 と 1 を含む)の 10 進数の小数値で示します。この値は、そのゲームのプレーヤー ベースにおいて、現在のプレーヤーがプレイしたセッション数を、他のプレーヤーに対するパーセンタイルで示した値です。数値が大きいほど、そのプレーヤーがより多くのセッションをプレイしていることになります。
  • 支出のパーセンタイル: プレーヤーの支出額のおおよそのパーセンタイルを 0 ~ 1(0 と 1 を含む)の 10 進数の小数値で示します。この値は、そのゲームのプレーヤー ベースにおいて、現在のプレーヤーの支出額を他のプレーヤーに対するパーセンタイルで示した値です。数値が大きいほど、このプレーヤーがより多く支出していることになります。

C++ で現在ログインしているプレーヤーのプレーヤー統計情報を取得する

// Create the callback for our asynchronous fetch call.  This callback will
// log either an error or the average session length for the currently
// signed-in player.
gpg::StatsManager::FetchForPlayerCallback callback = [](gpg::StatsManager::FetchForPlayerResponse const &response) {
  if (IsError(response.status)) {
    LogE("An error occurred fetching player stats.");
  } else {
  gpg::PlayerStats const & player_stats = response.data;
    if (player_stats.HasAverageSessionLength()) {
      LogI("Average session length: %f", player_stats.AverageSessionLength());
    } else {
      LogW("Currently signed-in player had no associated average session length stats.");
    }
  }
};
// Asynchronously fetch the Player Stats.  When the fetch is finished it
// will call our callback. game_services_ is the std::unique_ptr<GameServices>
// returned by gpg::GameServices::Builder.Create()
game_services_->Stats().FetchForPlayer(callback);

Objective-C で現在ログインしているプレーヤーのプレーヤー統計情報を取得する

// Asynchronously fetches the Player Stats and then logs either a
// description of them or an error
[GPGPlayerStats playerStatsWithCompletionHandler:^(GPGPlayerStats *playerStats, NSError *error) {
  if (error) {
    NSLog(@"Error fetching player stats: %@", error);
  } else {
    NSLog(@"Description of stats for the currently signed-in player: %@", playerStats);
  }
}];

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

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

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

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