ゲームの統計データは、プレーヤーがゲーマー プロフィールで確認できるゲームに関する累積統計情報です。これらの統計情報により、プレーヤーは生涯の進捗状況を追跡したり、ハイライト シーンを確認したり、他のプレーヤーと比較したりできます。また、この情報は、クエストやソーシャル チャレンジなど、今後 Google Play で提供される機能の強化にも使用されます。
ゲームの統計情報は次の要件を満たしている必要があります。
- 購入(ジェムの購入など)を必要としない。つまり、IAP の購入の結果として更新されるべきではない。
- 広告の視聴を必要としないこと。つまり、広告の視聴の結果として更新されるべきではない。
- ゲームの一般的な使用状況(ゲームを開く、設定を使用するなど)以外であること。
- Google Play ポリシーで定義されているユーザー ID、パスワード、正確な位置情報、健康に関するデータなどの個人情報や機密情報、または攻撃的、冒とく的、性的に露骨な、暴力的、ヘイト コンテンツを含まない。
- すべてのユーザーが利用できる(たとえば、チーム固有のアクションや、特定のレベルのユーザーのみが利用できる、期間限定のライブオプスに限定されるなどであってはいけません)
統合の手順
繰り返し発生する統計情報にはプレーヤー イベントとしてゲームの統計データ API を使用してデータを送信し、進行状況の統計情報には事前定義されたイベント progressUpdate を使用します。また、ゲーマー プロフィールに表示される統計情報を計算するロジックと、その表示情報を構成する必要があります。
プレーヤー イベントは、ゲーム内の個別の瞬間、ゲームループの完了、進行状況のマイルストーンを表します。
プレーヤー イベントは次のように定義され、モデル化されます。
- イベントは、試合の完了、ランニングの終了、宝箱のロック解除、エリアでの進行状況の保存など、プレーヤーが実行した特定のアクションで表されます。
- 各アクションには、特定の結果またはアクションを定義する特定の特性があります。これらは、イベントとその特定の結果に関するコンテキストを提供するイベント プロパティとしてモデル化されます(たとえば、マッチタイプ、そのラン中に収集されたコイン、マッチの結果、ヘッドショット数など)。
統合は次の手順で構成されます。
- 未加工のデータスキーマを宣言する: Google Play Console で CSV アップロードを使用してプレーヤー イベントを定義します。イベントを作成するをご覧ください。
- ゲームの統計データ API と統合する: プレーヤー イベントと
progressUpdateイベントについて、宣言された形式で未加工のプレーヤー データを送信します。- クライアントサイドまたはサーバーサイドの統合を使用して、定義されたすべてのイベントを送信します。詳しくは、プレーヤー イベントと
progressUpdateイベントの例をご覧ください。
- クライアントサイドまたはサーバーサイドの統合を使用して、定義されたすべてのイベントを送信します。詳しくは、プレーヤー イベントと
- ZIP ファイルをアップロードする: 5 つの繰り返し統計と 1 つのプレーヤー進行レベルを定義する 3 つの CSV ファイルとすべてのアイコン画像ファイルを提供します。詳しくは、ZIP ファイルのガイドラインをご覧ください。以下の情報も伝えてください。
- 繰り返し統計情報の CSV ファイル:
- 統計情報の一意の ID。
- 統計情報の計算に使用するイベントラベルを指定します。ここでは
progressUpdateイベントラベルは使用できません。- 統計情報の計算に使用するプロパティ ラベルを指定します。これは、指定されたイベントのプロパティである必要があります。
- 集計タイプ(SUM、MAX、MIN、COUNT)を指定して、選択したプロパティ ラベルの統計情報を計算する方法を決定します。
- 条件が満たされた場合にのみロジックを計算する省略可能なフィルタ条件を指定します。プロパティとイベントラベル、演算子(=、<、<=、>=、>)、しきい値を定義します。
- 統計情報を競合機能に使用できるかどうかを示すブール値のフラグを含めます。
- 競争要素のある機能で使用できる場合は、正規のプレーヤーの 1 時間あたりの最小限度と最大限度。これは、リーグやソーシャル チャレンジなどの機能に参加する際に不正使用している可能性のあるプレーヤーを特定するために使用されます。
- プレーヤーに表示される統計情報の一意の表示名を指定します。
- 統計情報を説明する一意のテキストを指定します。この説明では、プレーヤーがどのようにして統計情報を獲得したかの詳細を提供する必要があります。この説明は、ゲーマー プロフィール UI でプレーヤーに表示されます。
- CSV ファイルにアイコンのファイル名を正確に入力して、統計情報を表す一意のアイコンを指定します。
- 値の増加と減少のどちらがプレイヤーにとって有利かを示すオプションの入力を指定します。この入力は、プレーヤーの動きを祝うために使用されます。
- 統計情報のオプションの測定単位(km、マイル、秒など)を指定します。
- プレーヤーの進行状況の統計情報の CSV ファイル:
- プレーヤーに表示されるプレーヤーの進行状況に一意の表示名を指定します。
- 統計情報を表す一意のアイコンを指定します。
- 進行状況の統計の説明を入力します。
- 値の増加と減少のどちらがプレイヤーにとって有利かを示すオプションの入力を指定します。この入力は、
currentProgressプロパティの型が INT の場合にのみ、プレーヤーの動きを祝うために使用されます。 - 統計情報の測定単位(km、マイル、秒など)を任意で指定します。
- ローカライズ用の CSV ファイル: すべての統計情報のローカライズされた表示名を指定します。
- ローカライズごとに 1 行を追加します。
- 前の CSV で追加した統計情報の表示名文字列を使用して、ローカライズが追加される統計情報を一意に識別します。
- 言語コードのリストから言語を指定します。
- 指定された言語の表示名のローカライズを追加します。
- 指定された言語での統計情報の説明のローカライズを追加します。
- 繰り返し統計情報の CSV ファイル:
スキーマを計画する
ゲームの統計データ API を使用して送信できるデータには、プレーヤー イベントと、プレーヤーの進行状況の統計情報に関する事前定義済みイベントの 2 種類があります。
次の例は、さまざまなゲームタイプでプレーヤー イベントがどのように表示されるかを示しています。
プレーヤー イベント
プレーヤー イベントは、ゲーム内の個別の瞬間、ゲームループの完了、進行状況のマイルストーンによって定義されます。
- イベントを定義します。イベントとは、ゲーム内の特定の瞬間、ゲームループの完了、進行状況のマイルストーンのことです。
- ゲームループの完了(対戦やランの完了など)。
- 進行状況のマイルストーン(保存されたエリアの探索の進行状況やクリアしたレベルなど)。
- 繰り返し発生する統計情報は、プレーヤーの繰り返し可能なアクションを正確に表す必要があるため、定義されたイベントはコア ゲームプレイに関連付けられている必要があります。
- プロパティを追加して、レベル番号、マッチタイプ、武器の種類、武器の数、ヘッドショット、収集したコイン、マッチの結果、ラップタイム、車の種類など、イベントとその結果に関するコンテキストを提供します。
- ゲームプレイ セッション内でイベントが発生したらすぐにイベントを送信します。たとえば、ループが完了した直後にゲームループ完了イベントを送信します。
例
| ゲームの種類 | イベント ラベル | ゲーム内モーメント / 進行状況イベント完了 / ゲームループ完了 | 結果 | 特性 |
|---|---|---|---|---|
| 線形進行のインディー パズルゲーム | chapter_completed | 進行状況イベントの完了 | なし | チャプター番号、チャプター名、試行回数、画面数、移動回数、チャプターのコンテンツ |
| screen_completed | 進行状況イベントの完了 | チャプター番号、チャプター名、試行回数、移動回数、チャプターの内容 | ||
| 3D エンドレス ランナー | run_completed | ゲームループの完了 | 獲得したコイン、スコア | 走行時間、ジェットパックから収集したコイン、走行開始時に使用したブースター、使用したサーフボード、使用した磁石、使用したジャンパー、使用したジェットパック |
| オープン ワールド アクション RPG | areaExplorationProgress | 進行状況イベントの完了 | 倒した敵の数、集めたポーションの数 | エリア番号、エリア名、進捗率 |
| questCompleted | ゲームループの完了 | なし | クエスト名 | |
| weaponUnlocked | ゲーム内の瞬間 | なし | 武器名、武器レベル | |
| chestUnlocked | ゲーム内の瞬間 | 強化用鉱石の収集 | ||
| 装飾的なメタのあるカジュアルなパズル | puzzleCompleted | ゲームループの完了 / 進行状況イベントの完了 | 獲得したコイン、獲得したブースター | めくった回数、バトラーのギフトを使用したか、レベルの種類、レベル番号、使用したカラーブースター、使用したダイナマイト |
| cardsCollected | ゲーム内の瞬間 | 1 つ星カード、2 つ星カード、3 つ星カード、カードの合計数 | アルバム番号、アルバム名 | |
| アーケード レーシング | raceCompleted | ゲームループの完了 | Rank、NOS used、race_time | レースの種類、レーティング、使用した車 |
| carUpgraded | ゲーム内の瞬間 | アップグレードされた車の特性、古いレベル / 値、新しいレベル / 値 | 車の種類、現在のガレージレベル | |
| サードパーソン バトルロイヤル シューティング | matchCompleted | ゲームループの完了 | 撃破数、ヘッドショット数、名誉値 | マッチタイプ、生存時間 |
| e スポーツ マネジメント シミュレーション | matchCompleted | ゲームループの完了 | 結果、得点、失点 | 対戦チーム名、試合チーム名 |
| trainingCompleted | ゲーム内の瞬間 | ドリル完了、teamplay_form_attack、teamplay_form_defense、teamplay_form_possession、teamplay_form_condition |
progressUpdate イベント
ゲームに主要な進行の仕組みがある場合は、このイベントを使用してプレーヤーの現在の進行状況を送信します。イベントには、INT または STRING タイプの「currentProgress」という名前の事前定義されたプロパティが 1 つあります。このプロパティを使用して、メインの進行メカニズムにおけるプレーヤーの進行状況の現在の値を送信することが想定されています。このイベントを使用する場合は、事前定義されたプロパティ「currentProgress」が存在し、このプロパティを使用して進行状況の統計情報を定義する必要があります。
ゲーム内の他の進行状況システム(lifetime highest score や current coin balance など)の現在の値を、このイベントの他のプロパティとして送信できます。
プレーヤーはゲーム内の現在の進行状況でプロフィールを比較できるため、初回統合後に現在の進行状況の値を取得する際に遅延が発生しないことが重要です。プレーヤーに正確な現在の進行状況を表示するため、各ゲーム セッションの開始時と、現在の進行状況が更新されるたびに progressUpdate イベントを送信する必要があります。
例
| ゲームの種類 | `progressUpdate` イベントの currentProgress プロパティ |
|---|---|
| 線形進行パズルゲーム | 現在のチャプター番号またはレベル番号 |
| 3d Endless Runner | ハイスコア、現在のブースター残高 |
| カジュアル パズル | 現在のレベル番号、初回クリア回数、クリアしたエリア数、完了したコレクション数 |
| アーケード レーシング | 現在のレベル番号、通貨残高 |
| オープン ワールド アクション RPG | 現在のキャラクターのランク、現在のレベルの番号 |
| サードパーソン シューティング | 現在のレベル番号 |
| e スポーツ シミュレーション | Manager Level number、Club Level number |
統計情報を設定する
繰り返し統計データと進行状況統計データを構成するには、各統計データの計算ロジックと表示情報を定義する必要があります。以下に、さまざまなゲームジャンルの繰り返し統計データの例を示します。繰り返し統計データは通常、ごく少数の(3 ~ 4)ゲーム セッションで、すべてのプレーヤーに対して繰り返し更新され、コア ゲームループに関連付けられている統計データです。
| ゲーム名 | ゲームの統計情報の表示名 | イベント プロパティ | 計算ロジック [aggregation] | フィルタ |
|---|---|---|---|---|
| 3D エンドレス ランナー | 実行が完了しました | イベント run_completed の任意のプロパティ | カウント | すべての値 [フィルタなし] |
| 収集されたコイン | イベント run_completed の Coins_collected プロパティ | 合計 | なし | |
| 収集されたキー | イベント run_completed の Keys_collected プロパティ | 合計 | なし | |
| 最高ランニング スコア | イベント run_completed のスコア プロパティ | 最大 | なし | |
| High coins Runs completed | イベント run_completed の Coins_collected プロパティ | カウント | Value > 5000 | |
| 線形進行パズルゲーム | 完了したチャプター | イベント chapter_completed の任意のプロパティ | カウント | すべての値 [フィルタなし] |
| 完了した画面 | イベント screen_completed の任意のプロパティ | カウント | すべての値 [フィルタなし] | |
| 1 回目で完了したチャプター | イベント chapter_completed の Num_try プロパティ | カウント | Num_try = 1 | |
| 1 回で完了した画面 | イベント screen_completed の Num_try プロパティ | カウント | Num_try = 1 | |
| オープン ワールド アクション RPG | 完了したクエスト | イベント quest_completed の任意のプロパティ | カウント | すべての値 [フィルタなし] |
| 探索済みのエリア | area_exploration_progress イベントの Perc_progress プロパティ | カウント | 値 = 100 | |
| 剣のロック解除 | イベント weapon_unlocked の Weapon_type プロパティ | カウント | Value = “sword” | |
| 倒した敵の数 | イベント area_exploration_progress の Enemies_defeated プロパティ | 合計 | なし | |
| Health Potions Collected(体力アップの収集数) | イベント chest_unlocked の Enhancement_ores プロパティ | 合計 | なし | |
| カジュアル パズル | 完了したレベル | イベント level_completed の任意のプロパティ | カウント | すべての値 [フィルタなし] |
| 1 回でクリアしたレベル数 | イベント level_completed の Num_try プロパティ | カウント | 値 = 1 | |
| 使用されたカラー ブースター | イベント level_completed の Color_booster_used プロパティ | 合計 | NA | |
| 使用された爆弾ブースター | イベント level_completed の Bomb_booster_used プロパティ | 合計 | NA | |
| 収集されたカード | イベント cards_collected の Total_cards プロパティ | 合計 | NA | |
| アーケード レーシング | レース優勝回数 | イベント race_completed のランク プロパティ | カウント | 値 = 1 |
| 最速レース | イベント race_completed の race_time プロパティ | 最小 | 該当なし | |
| 使用される NOS | イベント race_completed の NOS_used プロパティ | 合計 | NA | |
| Mustang でレースを完走しました | イベント race_completed の Car_type プロパティ | カウント | 値 = 「Mustang」 | |
| 車のアップグレード | イベント car_upgraded の任意のプロパティ | カウント | すべての値 [フィルタなし] | |
| 三人称視点のバトルロイヤル シューティング ゲーム | 勝利試合数 | イベント match_completed の任意のプロパティ | カウント | Match_result = TRUE |
| 合計削除数 | イベント match_completed の eliminations プロパティ | 合計 | 該当なし | |
| 最長生存時間 | イベント match_completed の Survival_time プロパティ | 最大 | 該当なし | |
| 合計ヘッドショット数 | イベント match_completed の Headshots プロパティ | 合計 | 該当なし | |
| Total Skill Value(合計スキル値) | イベント match_completed の Skill_value プロパティ | 合計 | 該当なし | |
| e スポーツ マネジメント シミュレーション | 勝利試合数 | イベント match_completed の結果プロパティ | カウント | 結果 = 「Won」 |
| 総得点数 | イベント match_completed の Goals_scored プロパティ | 合計 | 該当なし | |
| Hard matches won(難しい試合の勝利数) | イベント hard_match_completed の結果プロパティ | カウント | 結果 = 「Won」 | |
| 得失点差が最も大きいチームの勝利 | イベント match_completed の Goal_difference プロパティ | 最大 | 結果 = 「Won」 | |
| トレーニング ドリルの合計数 | イベント training_completed の drills_done プロパティ | 合計 | なし | |
| 完了したトレーニングの合計数 | イベント training_completed の任意のプロパティ | カウント | なし |
統合の詳細
API エンドポイントと SDK は早期フィードバックにご利用いただけます。2026 年 8 月より一般提供(GA)を開始する予定です。タイムラインを参照してください
このセクションでは、クライアントサイドとサーバーサイドの両方の統合でイベントを構築して送信する方法について説明します。
データを送信するタイミング
プレーヤー イベントは、ゲームループの完了やゲーム内の特定の瞬間に関連するゲーム内アクションを表します。これらのイベントは発生したらすぐに送信してください。たとえば、ループが完了したらすぐにゲームループ完了イベントを送信します。
progressUpdate イベントは、プレーヤーの現在の進行レベルを表します。進行状況の統計情報は、次の状況でこのイベントを使用して送信する必要があります。
- 現在の進行状況が更新されるたびに、最新の値をすぐに送信します。
- プレーヤーがゲームを起動するたびに、プレーヤーのこの統計情報が常に存在するようにします。
統合の手順
統合には、クライアントとサーバー間の 2 つのパスがあります。
サーバー間統合
公開 API エンドポイントを使用すると、次の構成を使用してリクエスト ペイロードでイベントを送信できます。
HTTP リクエスト
POST https://games.googleapis.com/games/v1/players/{playerId}/gameStats:
batchRecordEvents
パスパラメータ
| パラメータ | データ型 | 説明 |
|---|---|---|
| playerId | String(文字列) | プレーヤーの PGS ID。 |
認可と認証
サーバー間 API 呼び出しは、OAuth 2.0 を使用した Play ゲームサービスへのサーバーサイド アクセスの標準ガイドラインに沿って行われます。リクエストには、https://www.googleapis.com/auth/games スコープで承認された Bearer トークンを含める必要があります。
イベント: リクエストの本文
バックエンド API には、厳格な構造検証の上限があります。
- バッチサイズ:
BatchRecordEventsRequestあたり最大 30 個のイベント。 - プロパティ数:
PlayerGameEventあたり最大 25 個のカスタム プロパティ。 - 長さの制限: イベント名(最大 100 文字)、プロパティ キー(最大 100 文字)、プロパティ文字列値(最大 1,024 文字)。
- イベント ID: 有効な 36 文字の UUID 文字列である必要があります。
- 再試行とキャッシュ保存: API が失敗した場合、ローカルで過剰なイベントをキャッシュ保存したり蓄積したりしないでください。30 件を超えるバッチ再試行は拒否されます。バッチサイズの上限を尊重するために、常に再試行をチャンクします。
BatchRecordEventsRequest
詳細については、BatchRecordEventsRequest をご覧ください。
{ "packageName": string, "requestTime": string, "events": [ { object (PlayerGameEvent) } ] }
PlayerGameEvent
{ "eventId": string, "eventName": string, "eventProperties": { // keys (e.g., "matchId", "score") "" : { object (PropertyValue) } }, "eventTime": string // RFC 3339 formatted timestamp string (e.g., "2026-01-01T18:00:00Z"). }
PropertyValue
// ONE of the following fields will be present: { // 64-bit integer formatted as a string to prevent data loss "intValue": "string", // Double-precision floating point number. "doubleValue": number, // Standard UTF-8 text string. "stringValue": "string", // Boolean value (true or false). "boolValue": boolean, // Duration in seconds suffixed with 's' (e.g., "240s" or "3.5s"). "durationValue": "string" }
progressUpdate イベント: リクエストの本文
BatchRecordEventsRequest
{ "packageName": string, "requestTime": string, "events": [ { object (PlayerGameEvent) } ] }
PlayerGameEvent - progressUpdate
{ "eventId": string, "eventName": "progressUpdate", "eventProperties": { "" : { object (PropertyValue) // Must have at least one property "currentProgress" of type INT or STRING } }, "eventTime": string // RFC 3339 formatted timestamp string (e.g., "2026-01-01T18:00:00Z") }
レスポンスの本文
成功した場合、空の JSON オブジェクトとともに HTTP 200 OK ステータスを返します。
リクエスト本文の例
イベント: PlayerGameEvent
{ "packageName": "com.example.awesomegame",//Your package name "requestTime": "2026-05-09T00:44:44Z", "events": [ { "eventId": "123e1234-e29b-41d4-a123-446655440000", // UUID for deduplication and idempotency "eventName": "matchCompleted", "eventTime": "2026-05-09T01:44:44Z", // RFC 3339 formatted timestamp string (e.g., "2026-05-09T01:44:44Z"). "eventProperties": { "matchId": { "stringValue": "Match_A" }, "gameMode": { "stringValue": "Battle_B" }, "locationId": { "stringValue": "Location_XYZ" }, "playerElimination": { "intValue": 2 }, "isWinner": { "boolValue": true } } } ] }
progressUpdate イベント
{ "packageName": "com.example.awesomegame",//Your package name "requestTime": "2026-05-09T00:44:44Z", "events": [ { "eventId": "123e1234-e29b-41d4-a123-446655440000", // UUID "eventName": "progressUpdate", "eventTime": "2026-05-09T01:44:44Z", // RFC 3339 formatted timestamp string (e.g., "2026-01-01T18:00:00Z"). "eventProperties": { "currentProgress": { "intValue": 52 }, //Add more properties as per your requirement } } ] }
クライアントの実装
プラットフォームのゲームの統計データ クライアントの実装については、以下のリソースをご覧ください。
マイルストーン
| 日付 | ゲームの統計データ API の統合 | ゲームの統計データの構成 |
| 2026 年 9 月 | なし |
|