遊戲統計資料

「遊戲統計資料」是遊戲的累計統計資料,玩家可在玩家個人資料中查看,並追蹤遊戲歷程、查看精彩時刻,以及與其他玩家比較。這類資料未來也會支援 Google Play 功能,例如獎勵任務、社交挑戰等。

遊戲統計資料必須:

  • 不要求購買 (例如購買寶石),也就是說,不應因任何應用程式內購交易而更新。
  • 不要求觀看廣告,也就是說,不應因觀看廣告而更新。
  • 不應是遊戲的一般用途 (例如開啟遊戲、使用設定)。
  • 不得包含 Play 政策定義的使用者個人和私密資料,包括使用者 ID、密碼、精確位置或健康資料,或任何令人反感、不雅、情色露骨、暴力或仇恨內容。
  • 所有使用者都能參與 (例如,不是團隊專屬活動、僅限特定等級的使用者參與,或限時 LiveOps 等)

圖片:顯示「個人中心」分頁中玩家個人資料的遊戲統計資料。 「個人中心」分頁中的使用者介面 (UI) 僅供測試之用。遊戲統計資料使用者介面將於 2026 年 9 月推出。

「個人中心」分頁的遊戲統計資料
「個人中心」分頁會顯示遊戲統計資料和重點。

匯總類型

匯總類型會指示 Google Play 如何根據您傳送的每個事件值計算統計資料:

  • SUM:用於累計統計資料 (例如收集的金幣總數、造成的總傷害)。遊戲必須傳送每個事件例項中獲得的離散金額。
  • COUNT:用於代表事件發生次數的統計資料 (例如遊戲次數、獲勝次數)。遊戲必須傳送離散事件發生例項。
  • MAX:僅用於單次出現的最高成就 (例如單次執行的最高分數、最大連續組合或最高單場傷害)。請勿使用 MAX 做為解決方法,顯示預先計算的執行值中的生命週期總計。

重複統計資料的重要實作規定

  • 傳送個別事件值:針對每個事件,只傳送該事件中發生的情況,例如單次遊戲中收集的金幣。然後在統計資料設定中設定匯總類型,例如 SUM 或 COUNT。這樣一來,重複的統計資料就能在參與機制中重複使用,Google Play 也能打造合適的玩家體驗。
  • 請勿傳送生命週期總計:舉例來說,請勿追蹤玩家在遊戲用戶端或伺服器上收集的總金幣數,並使用 MAX 匯總傳送該總計。這類統計資料會繼續顯示在玩家個人資料使用者介面上,但 Google Play 無法用於提供聯盟、獎勵任務和衝刺等獎勵功能,提升玩家體驗並為遊戲帶來影響。

如需正確事件建模的操作說明和範例,請參閱「玩家事件」和「設定統計資料」。

整合步驟

使用 Game Stats API 傳送資料,做為重複統計資料的玩家活動,以及進度統計資料的預先定義事件 progressUpdate。您也需要設定邏輯,計算要顯示在玩家個人資料中的遊戲統計資料和顯示資訊。

玩家事件代表不同的遊戲內時刻、遊戲迴圈完成或進度里程碑。

播放器事件的定義和模型如下:

  1. 事件代表玩家採取的特定動作,例如完成比賽、完成跑步、解鎖寶箱或儲存某個區域的進度。
  2. 每項動作都會產生特定結果,或具有定義該動作的特定特徵。這些會模擬為事件屬性,提供事件及其特定結果的背景資訊 (例如比賽類型、該回合收集的金幣、比賽結果或爆頭次數)。

整合程序包含下列步驟:

  • 宣告原始資料結構定義:在 Play 管理中心上傳 CSV 檔案,定義玩家事件。請參閱「建立事件」。
  • 整合遊戲統計資料 API:以宣告格式傳送玩家活動和 progressUpdate 事件的原始玩家資料。
  • 上傳 ZIP 檔案:提供 3 個 CSV 檔案和所有圖示圖片檔,定義 5 項重複統計資料和 1 個玩家進度等級。詳情請參閱 ZIP 檔案指南。 請提供下列詳細資料:
    • 重複統計資料的 CSV 檔案:
      • 統計資料的專屬 ID。
      • 指定用於計算統計資料的事件標籤。您無法在此使用 progressUpdate 事件標籤。
        • 指定要用於統計資料計算的屬性標籤。這必須是指定事件的屬性。
        • 指定匯總類型 (SUM、MAX、MIN 或 COUNT),決定如何計算所選屬性標籤的統計資料。
        • 指定選用的篩選條件,只有在符合條件時才計算邏輯。定義屬性和事件標籤、運算子 (=、<、<=、>= 或 >) 和門檻值。
      • 加入布林值標記,指出統計資料是否可用於競賽功能。
      • 如果該功能可用於競爭功能,則為真實玩家的每小時最低和最高限制。我們會根據這項資訊,判斷玩家是否在參與聯賽和社群挑戰等功能時濫用系統。
      • 為玩家看到的統計資料提供不重複的顯示名稱。
      • 提供描述統計資料的獨特文字。這段說明應詳細說明玩家如何獲得這項統計資料,並在玩家個人資料 UI 中向玩家顯示。
      • 在 CSV 檔案中輸入確切的圖示檔案名稱,提供代表統計資料的專屬圖示。
      • 提供選用輸入內容,指出值增加或減少對玩家是否有利。這項輸入內容將用於慶祝球員動作。
      • 提供統計資料的選用測量單位,例如公里、英里和秒。
    • 玩家進度統計資料的 CSV 檔案:
      • 為玩家進度提供不重複的顯示名稱,讓玩家看到。
      • 請提供代表統計資料的專屬圖示。
      • 提供進度統計資料的說明。
      • 提供選用輸入內容,指出值增加或減少對玩家是否有利。只有在 currentProgress 屬性為 INT 類型時,系統才會使用這項輸入內容來慶祝玩家動作。
      • 提供統計資料的選用測量單位,例如公里、英里、秒。
    • 用於本地化的 CSV 檔案:為所有統計資料提供本地化顯示名稱。
      • 為每個本地化版本新增一列。
      • 使用先前 CSV 中新增的統計資料顯示名稱字串,不重複識別要新增本地化資訊的統計資料。
      • 從語言代碼清單中指定語言。
      • 為顯示名稱新增指定語言的本地化版本。
      • 為指定語言新增統計資料說明的本地化版本。

規劃結構定義

您可以使用遊戲統計資料 API 傳送兩種資料:玩家活動,以及玩家進度統計資料的預先定義事件。

以下範例說明玩家事件在各種遊戲類型中的樣貌:

播放器事件

玩家事件是由不同的遊戲內時刻、遊戲迴圈完成或進度里程碑定義。

  • 定義事件:指定遊戲中的特定時刻、遊戲迴圈完成或進度里程碑:
    • 完成遊戲迴圈,例如完成一場比賽或一輪遊戲。
    • 進度里程碑,例如儲存區域探索進度或完成關卡。
    • 由於重複統計資料應確實代表玩家的可重複動作,因此定義的事件應與核心遊戲玩法相關聯。
  • 新增屬性,提供事件及其結果的相關背景資訊,例如關卡編號、比賽類型、武器類型、武器數量、爆頭次數、收集的金幣、比賽結果、單圈時間或車輛類型。
  • 在遊戲工作階段中,事件發生時立即傳送事件。舉例來說,在迴圈完成後立即傳送遊戲迴圈完成事件。
範例
遊戲類型 事件標籤 遊戲內時刻 / 進度事件完成 / 遊戲迴圈完成 結果 特性
線性進度獨立益智遊戲 chapter_completed 進度事件完成 N/A 章節編號、章節名稱、嘗試次數、畫面數量、移動次數、章節內容
screen_completed 進度事件完成 章節編號、章節名稱、嘗試次數、移動次數、章節內容
3D 無限跑酷遊戲 run_completed 遊戲迴圈完成 收集的金幣、分數 奔跑時間、噴射背包收集的金幣、奔跑開始時使用的強化道具、使用的滑板、使用的磁鐵、使用的跳躍道具、使用的噴射背包
開放世界動作角色扮演遊戲 areaExplorationProgress 進度事件完成 擊敗的敵人數、收集的藥水數 Area number, Area name, Percentage progress
questCompleted 遊戲迴圈完成 N/A 任務名稱
weaponUnlocked 遊戲內時刻 N/A 武器名稱、武器等級
chestUnlocked 遊戲內時刻 已收集強化礦石
休閒益智遊戲,含裝飾性中繼元素 puzzleCompleted 完成遊戲迴圈 / 進度事件 收集的金幣、收集的強化道具 移動次數、是否使用管家的禮物、關卡類型、關卡編號、使用的顏色強化道具、使用的炸藥
cardsCollected 遊戲內時刻 1 星卡、2 星卡、3 星卡、總卡數 專輯編號、專輯名稱
街機賽車 raceCompleted 遊戲迴圈完成 Rank, NOS used, race_time Type of race, rating, car_used
carUpgraded 遊戲內時刻 升級的車輛特性、舊等級 / 值、新等級 / 值 車輛類型、目前車庫等級
第三人稱大逃殺射擊遊戲 matchCompleted 遊戲迴圈完成 淘汰次數、爆頭次數、榮譽值 比對類型、存留時間
電競管理模擬 matchCompleted 遊戲迴圈完成 結果、進球數、 對手隊伍名稱、比賽隊伍名稱
trainingCompleted 遊戲內時刻 Drills done, teamplay_form_attack, teamplay_form_defense, teamplay_form_possession, teamplay_form_condition

progressUpdate 個事件

如果遊戲有主要進度機制,請使用這個事件傳送玩家目前的進度。事件有一個預先定義的屬性,名為「currentProgress」,類型為 INT 或 STRING。您應使用這項屬性,傳送主要進度機制中玩家進度的目前值。如果使用這個事件,就必須提供預先定義的屬性「currentProgress」,並使用這個屬性定義進度統計資料。

您可以將遊戲中其他進度系統的目前值 (例如 lifetime highest score 或 current coin balance) 做為這個事件的其他屬性傳送。

玩家可以根據遊戲目前的進度比較個人資料,因此在首次整合後,必須立即取得目前的進度值。為了向玩家呈現準確的目前進度,您應在每個遊戲工作階段開始時,以及目前進度有更新時,傳送 progressUpdate 事件。

範例
遊戲類型 `progressUpdate` 事件的 currentProgress 屬性
線性進度益智遊戲 目前章節編號或關卡編號
3D 無限跑酷 最高分、目前強化道具餘額
休閒益智 目前關卡編號、一次過關次數、完成區域數、完成收藏數
街機賽車 目前關卡編號、貨幣餘額
開放世界動作 RPG 目前角色排名、目前等級
第三人稱射擊 目前等級編號
電競模擬 管理員等級編號、俱樂部等級編號

設定統計資料

您需要定義計算邏輯和每項統計資料的顯示資訊,藉此設定重複和進度統計資料。以下列舉不同遊戲類型的重複統計資料。重複統計資料通常是指在極少數 (3 到 4 個) 遊戲工作階段中,為任何玩家重複更新的統計資料,且與核心遊戲迴圈相關聯。

如要瞭解何時使用 SUM、COUNT 或 MAX,請參閱「選擇合適的匯總類型」。

遊戲名稱 遊戲統計資料顯示名稱 事件屬性 計算邏輯 [aggregation] 篩選
3D 無盡跑酷 執行完畢 run_completed 事件的任何屬性 Count 所有值 [無濾鏡]
收集的金幣 run_completed 事件的 Coins_collected 屬性 總和 N/A
收集到的鑰匙 run_completed 事件的 keys_collected 屬性 總和 N/A
最高分 run_completed 事件的分數屬性 Max N/A
完成高金幣跑步 run_completed 事件的 Coins_collected 屬性 Count Value > 5000
線性進度益智遊戲 已完成的章節 chapter_completed 事件的任何屬性 Count 所有值 [無濾鏡]
已完成的畫面 事件 screen_completed 的任何屬性 Count 所有值 [無濾鏡]
初次嘗試即完成的章節 chapter_completed 事件的 Num_try 屬性 Count Num_try = 1
一次就完成的畫面 screen_completed 事件的 Num_try 屬性 Count Num_try = 1
開放世界動作角色扮演遊戲 完成任務 quest_completed 事件的任何屬性 Count 所有值 [無濾鏡]
探索過的區域 area_exploration_progress 事件的 perc_progress 屬性 Count Value = 100
解鎖的劍 weapon_unlocked 事件的 weapon_type 屬性 Count Value = "sword"
擊敗的敵人 area_exploration_progress 事件的 Enemies_defeated 屬性 總和 N/A
收集的生命藥水 chest_unlocked 事件的 Enhancement_ores 屬性 總和 N/A
休閒益智 完成關卡 事件 level_completed 的任何屬性 Count 所有值 [無濾鏡]
首次挑戰就成功通關的次數 level_completed 事件的 num_try 屬性 Count Value = 1
已使用的色彩強化工具 level_completed 事件的 Color_booster_used 屬性 Sum 不適用
已使用的炸彈強化道具 事件 level_completed 的 Bomb_booster_used 屬性 Sum 不適用
收集的卡片 cards_collected 事件的 total_cards 屬性 Sum 不適用
街機賽車 勝場數 race_completed 事件的 rank 屬性 Count Value = 1
最快賽事 race_completed 事件的 race_time 屬性 Min 不適用
NOS used race_completed 事件的 NOS_used 屬性 Sum 不適用
使用 Mustang 完成的賽事 race_completed 事件的 car_type 屬性 Count 值 =「Mustang」
車輛升級 car_upgraded 事件的任何屬性 Count 所有值 [無濾鏡]
第三人稱大逃殺射擊遊戲 勝場數 事件 match_completed 的任何屬性 Count Match_result = TRUE
總淘汰次數 match_completed 事件的淘汰屬性 Sum 不適用
存活時間最長 match_completed 事件的 survival_time 屬性 Max 不適用
大頭照總數 match_completed 事件的 Headshots 屬性 Sum 不適用
技能總價值 match_completed 事件的 Skill_value 屬性 Sum 不適用
電競管理模擬 勝場數 match_completed 事件的結果屬性 Count Result = "Won"
總進球數 match_completed 事件的 goals_scored 屬性 Sum 不適用
贏得高難度比賽 hard_match_completed 事件的結果屬性 Count Result = "Won"
得失球差最高者勝出 match_completed 事件的 goal_difference 屬性 Max 結果 =「Won」
訓練演練總數 training_completed 事件的 drills_done 屬性 總和 N/A
完成的訓練總數 事件 training_completed 的任何屬性 Count 不適用

整合作業詳細資料

本節說明如何建構事件,並在用戶端和伺服器端整合中傳送事件。

何時應傳送資料

玩家事件代表與遊戲迴圈完成或特定遊戲內時刻相關的遊戲內動作。請在事件發生後立即提交。舉例來說,遊戲迴圈完成後,請立即提交遊戲迴圈完成事件。

progressUpdate 事件代表玩家目前的進度等級。在下列情況下,應使用此事件傳送進度統計資料:

  1. 只要目前進度有更新,就立即傳送最新值
  2. 每當玩家啟動遊戲時,確保玩家隨時都有這項統計資料。

整合路徑

整合方式有兩種:用戶端和伺服器對伺服器。

伺服器對伺服器整合

公開 API 端點可讓您使用下列設定,在要求酬載中傳送事件:

HTTP 要求

POST https://games.googleapis.com/games/v1/players/{playerId}/gameStats: batchRecordEvents

路徑參數
參數 資料類型 說明
playerId String 玩家的 PGS ID。

授權和驗證

伺服器對伺服器 API 呼叫會遵循標準的伺服器端存取 Play 遊戲服務指南,使用 OAuth 2.0。要求必須包含以 https://www.googleapis.com/auth/games 範圍授權的不記名權杖。

事件:要求主體

後端 API 有嚴格的結構驗證限制:

  • 批次大小:每個 BatchRecordEventsRequest 最多 30 個事件。
  • 屬性數量:每個 PlayerGameEvent 最多可有 25 個自訂屬性。
  • 長度限制:事件名稱 (最多 100 個字元)、屬性鍵 (最多 100 個字元) 和屬性字串值 (最多 1024 個字元)。
  • 事件 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")
}

回應主體

如果成功,會傳回 HTTP 200 OK 狀態和空白 JSON 物件。

要求主體範例

事件: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 月 N/A 玩家開始在玩家個人資料中看到遊戲統計資料。