遊戲統計資料

遊戲統計資料是遊戲的累積統計資料,玩家可以在玩家個人資料中查看。玩家可透過這些統計資料追蹤終身進度、查看精彩時刻,以及與其他玩家比較,還能使用 Google Play 的任務、社交挑戰等功能 (即將推出)。

遊戲統計資料必須符合以下規定:

  • 不需購買 (例如購買寶石),也就是說,他們不應因任何應用程式內購而更新。
  • 不要求觀看廣告,也就是說,觀看廣告後不應更新。
  • 不得為遊戲的通用用途 (例如開啟遊戲、使用設定)。
  • 不得包含 Google Play 政策定義的個人和私密使用者資料,包括使用者 ID、密碼、精確位置或健康資料,或任何令人反感、褻瀆、露骨色情、暴力或仇恨內容。
  • 適用於所有使用者 (例如,並非僅限團隊的動作,或僅適用於特定等級的使用者,或僅限於限時的 LiveOps 等)

整合步驟

使用遊戲統計資料 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 檔案中新增的統計資料顯示名稱字串,以利識別要新增本地化內容的統計資料。
      • 從語言代碼清單中指定語言。
      • 以指定語言新增顯示名稱的本地化版本。
      • 新增指定語言的統計資料說明本地化版本。

規劃結構定義

您可以使用 Game Stats API 傳送兩種資料:玩家事件和玩家進度統計資料的預先定義事件。

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

播放器事件

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

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

progressUpdate 個活動

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

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

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

範例
遊戲類型 `progressUpdate` 事件的 currentProgress 屬性
線性進展益智遊戲 目前章節編號或等級編號
3D Endless Runner 最高分、目前強化道具餘額
休閒益智遊戲 目前等級、一次通過次數、完成區域數、完成收藏數
街機賽車 目前等級編號、貨幣餘額
開放世界動作角色扮演遊戲 目前角色等級、目前等級編號
第三人稱射擊遊戲 目前等級編號
電競模擬 經理層級編號、俱樂部層級編號

設定統計資料

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

遊戲名稱 遊戲統計資料顯示名稱 事件屬性 計算邏輯 [aggregation] 篩選
3D Endless Runner 完成的跑步次數 事件 run_completed 的任何屬性 Count 所有值 [無篩選條件]
收集到的金幣 事件 run_completed 的 Coins_collected 屬性 總和 NA
收集到的金鑰 事件 run_completed 的 Keys_collected 屬性 總和 N/A
最高跑步分數 事件 run_completed 的分數屬性 Max N/A
高金幣跑步完成 事件 run_completed 的 Coins_collected 屬性 Count 價值 > 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」
擊敗的敵人 event_area_exploration_progress 的 Enemies_defeated 屬性 總和 N/A
收集到的生命藥水 事件 chest_unlocked 的 Enhancement_ores 屬性 總和 NA
休閒益智遊戲 完成關卡 事件 level_completed 的任何屬性 Count 所有值 [無篩選條件]
首次挑戰就成功通關的次數 事件 level_completed 的 Num_try 屬性 Count Value = 1
使用的色彩強化功能 事件 level_completed 的 Color_booster_used 屬性 總和 NA
使用的炸彈強化道具 事件 level_completed 的 Bomb_booster_used 屬性 總和 NA
收集到的卡片 活動 cards_collected 的 Total_cards 屬性 總和 NA
街機賽車 勝場數 事件 race_completed 的排名屬性 Count Value = 1
最快賽事 活動 race_completed 的 race_time 屬性 Min 不適用
使用的 NOS event race_completed 的 NOS_used 屬性 總和 NA
駕駛 Mustang 完成的賽事 事件 race_completed 的 Car_type 屬性 Count Value =「Mustang」
車輛升級 事件 car_upgraded 的任何屬性 Count 所有值 [無篩選條件]
第三人稱大逃殺射擊遊戲 勝場數 事件 match_completed 的任何屬性 Count Match_result = TRUE
淘汰總數 活動 match_completed 的淘汰賽屬性 總和 不適用
最高存活時間 事件 match_completed 的 Survival_time 屬性 Max 不適用
大頭照總數 活動 match_completed 的大頭照屬性 總和 不適用
技能總價值 事件 match_completed 的 Skill_value 屬性 總和 不適用
電競管理模擬遊戲 勝場數 事件 match_completed 的結果屬性 Count Result =「Won」
總進球數 event match_completed 的 Goals_scored 屬性 總和 不適用
贏得的困難比賽 事件 hard_match_completed 的結果屬性 Count Result =「Won」
得失分差最大的勝場 事件 match_completed 的 Goal_difference 屬性 Max Result =「Won」
訓練練習總數 event training_completed 的 Drills_done 屬性 總和 N/A
完成的訓練總數 事件 training_completed 的任何屬性 Count 不適用

整合作業詳細資料

API 端點和 SDK 現已開放搶先體驗,並將於 2026 年 8 月正式發布。請參閱時間軸

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

何時應傳送資料

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

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

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

整合路徑

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

伺服器對伺服器整合

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

HTTP 要求

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

路徑參數
參數 資料類型 說明
playerId 字串 玩家的 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
  • 玩家開始在玩家個人資料中看到遊戲統計資料。
  • 為測試帳戶測試草稿統計資料設定。