Số liệu thống kê về trận đấu

Số liệu thống kê về trò chơi là số liệu thống kê tích luỹ về trò chơi của bạn mà người chơi có thể xem trên Hồ sơ người chơi của họ. Những số liệu thống kê này cho phép người chơi theo dõi tiến trình trong suốt vòng đời, xem các khoảnh khắc nổi bật và so sánh với những người chơi khác, đồng thời hỗ trợ các tính năng của Google Play như Nhiệm vụ, Thử thách xã hội và nhiều tính năng khác trong tương lai.

Các bước tích hợp

Gửi dữ liệu bằng Game Stats API dưới dạng các sự kiện linh hoạt của người chơi cho số liệu thống kê lặp lại và một sự kiện được xác định trước progressUpdate cho số liệu thống kê về tiến trình. Bạn cũng cần định cấu hình logic để tính toán số liệu thống kê sẽ xuất hiện trên hồ sơ người chơi và thông tin hiển thị của họ.

Sự kiện của người chơi thể hiện những khoảnh khắc riêng biệt trong trò chơi, các lần hoàn thành vòng lặp trò chơi hoặc các mốc tiến trình.

Sự kiện người chơi được xác định và mô hình hoá như sau:

  1. Sự kiện được thể hiện bằng một hành động cụ thể của người chơi, chẳng hạn như hoàn thành một trận đấu, kết thúc một lượt chạy, mở khoá một rương hoặc lưu tiến trình ở một khu vực.
  2. Mỗi hành động đều dẫn đến một số kết quả nhất định hoặc có một số đặc điểm nhất định xác định hành động đó. Đây là những thuộc tính sự kiện được mô hình hoá để cung cấp bối cảnh về sự kiện và kết quả cụ thể của sự kiện (ví dụ: loại trận đấu, số xu thu thập được trong lần chạy đó, kết quả trận đấu hoặc số lần bắn trúng đầu).

Quy trình tích hợp bao gồm các bước sau:

  • Khai báo giản đồ dữ liệu thô: Xác định các sự kiện của người chơi bằng cách tải tệp CSV lên trong Play Console. Xem Nguyên tắc về tệp CSV.
  • Tích hợp với Game Stats API: Gửi dữ liệu thô của người chơi ở định dạng đã khai báo cho các sự kiện linh hoạt của người chơi và sự kiện progressUpdate.
    • Gửi tất cả sự kiện đã xác định bằng cách sử dụng chế độ tích hợp phía máy khách hoặc phía máy chủ. Để biết thêm thông tin, hãy xem ví dụ về Sự kiện linh hoạt và sự kiện progressUpdate.
  • Tải tệp ZIP lên: Cung cấp 3 tệp CSV và tất cả tệp hình ảnh biểu tượng xác định 5 số liệu thống kê lặp lại và 1 cấp độ tiến trình của người chơi. Để biết thêm thông tin, hãy xem Nguyên tắc đối với tệp ZIP. Cung cấp các thông tin chi tiết sau:
    • Tệp CSV cho số liệu thống kê định kỳ:
      • Mã nhận dạng duy nhất của số liệu thống kê.
      • Chỉ định nhãn sự kiện sẽ được dùng để tính toán số liệu thống kê. Bạn không thể sử dụng nhãn sự kiện progressUpdate tại đây.
        • Chỉ định nhãn thuộc tính sẽ dùng để tính toán số liệu thống kê. Đây phải là một thuộc tính của sự kiện được chỉ định.
        • Chỉ định loại tổng hợp (SUM, MAX, MIN hoặc COUNT) để xác định cách tính số liệu thống kê trên nhãn thuộc tính đã chọn.
        • Chỉ định một điều kiện lọc không bắt buộc để tính toán logic chỉ khi điều kiện được đáp ứng. Xác định thuộc tính và nhãn sự kiện, toán tử (=, < hoặc >) và giá trị ngưỡng.
      • Thêm một cờ boolean để cho biết liệu chỉ số này có thể dùng cho các tính năng cạnh tranh hay không.
      • Nếu tính năng này có thể được dùng cho các tính năng cạnh tranh, thì giới hạn tối thiểu và tối đa theo giờ đối với người chơi chân chính. Thông tin này sẽ được dùng để xác định những người chơi có thể đang sử dụng sai cách khi tham gia các tính năng như giải đấu và thử thách xã hội.
      • Đặt một tên hiển thị riêng biệt cho chỉ số mà người chơi nhìn thấy.
      • Cung cấp văn bản riêng biệt mô tả chỉ số. Nội dung mô tả này phải cung cấp thông tin chi tiết về cách người chơi đạt được chỉ số đó.
      • Cung cấp một biểu tượng riêng biệt đại diện cho số liệu thống kê bằng cách nhập tên tệp biểu tượng chính xác vào tệp CSV.
      • Cung cấp một thứ tự tuần tự để chỉ định thứ tự mà người chơi sẽ thấy số liệu thống kê trong Hồ sơ người chơi của họ
      • Cung cấp một thông tin đầu vào không bắt buộc về việc giá trị tăng hay giảm là tốt cho người chơi. Đầu vào này sẽ được dùng để ăn mừng các chuyển động của người chơi.
      • Cung cấp một đơn vị đo lường không bắt buộc cho số liệu thống kê, chẳng hạn như km, dặm và giây.
    • Tệp CSV cho số liệu thống kê về tiến trình của người chơi:
      • Đặt một tên hiển thị riêng biệt cho tiến trình của người chơi mà người chơi sẽ thấy.
      • Cung cấp một biểu tượng riêng biệt đại diện cho chỉ số.
      • Cung cấp nội dung mô tả cho chỉ số tiến trình.
      • Cung cấp một thông tin đầu vào không bắt buộc về việc giá trị tăng hay giảm có tốt cho người chơi hay không. Đầu vào này sẽ chỉ được dùng để ghi nhận các chuyển động của người chơi khi thuộc tính currentProgress có kiểu INT.
      • Cung cấp đơn vị đo lường không bắt buộc cho số liệu thống kê, chẳng hạn như km, dặm, giây.
    • Tệp CSV để bản địa hoá: Cung cấp tên hiển thị đã bản địa hoá cho tất cả các số liệu thống kê.
      • Thêm một hàng cho mỗi ngôn ngữ.
      • Sử dụng chuỗi tên hiển thị của chỉ số như đã thêm trong tệp CSV trước đó để xác định duy nhất chỉ số mà bạn đang thêm nội dung bản địa hoá.
      • Chỉ định ngôn ngữ trong danh sách mã ngôn ngữ.
      • Thêm thông tin bản địa hoá cho tên hiển thị bằng ngôn ngữ được chỉ định.
      • Thêm nội dung bản địa hoá cho phần mô tả chỉ số bằng ngôn ngữ đã chỉ định.

Nguyên tắc về tệp CSV cho sự kiện

Bạn có thể nhập sự kiện bằng tệp PlayerGameEvent.csv.

Tên tệp Bắt buộc hoặc không bắt buộc
PlayerGameEvent.csv Bắt buộc

Định dạng PlayerGameEvent.csv

Tệp csv chứa sự kiện đã khai báo và các thuộc tính của sự kiện đó dưới dạng giá trị được phân tách bằng dấu phẩy theo thứ tự sau:

 Event Name,Property Name,Property Type

Nếu bạn gửi sự kiện progressUpdate cho progressionStat, hãy thêm một hàng cho sự kiện này. Sự kiện này phải chứa ít nhất một thuộc tính currentProgress thuộc loại INT hoặc STRING, cùng với mọi thuộc tính khác mà bạn muốn gửi.

Bảng ví dụ
Tên sự kiện Tên thuộc tính Loại bất động sản
matchCompleted thời lượng DOUBLE
matchCompleted mạng giết được SLC
matchCompleted isWinner BOOLEAN
matchCompleted matchType STRING (UTF-8)
itemCollected coinsAmount SLC
itemCollected weaponType STRING (UTF-8)
progressUpdate currentProgress SLC

Nguyên tắc đối với tệp ZIP chứa số liệu thống kê

Bạn có thể nhập số liệu thống kê cùng lúc bằng tệp ZIP. Hãy tham khảo bảng để biết tên tệp chính xác cần sử dụng trong tệp ZIP:

Tên tệp Bắt buộc hoặc tuỳ chọn Các giá trị được chấp nhận
RepetitiveStatsConfig.csv Bắt buộc Siêu dữ liệu cho nhiều sự kiện.
ProgressionStatConfig.csv Bắt buộc Sự kiện đã khai báo và các thuộc tính của sự kiện đó.
StatLocalizations.csv Không bắt buộc Cung cấp bản dịch cho tên và nội dung mô tả thành tích.
Tệp biểu tượng Bắt buộc Biểu tượng ở định dạng PNG, JPEG hoặc JPG có kích thước 512 x 512.

Định dạng RepetitiveStatsConfig.csv

Tệp csv chứa sự kiện đã khai báo và các thuộc tính của sự kiện đó dưới dạng giá trị được phân tách bằng dấu phẩy theo thứ tự sau:

Stat ID, Event Name,    Property Name,  Aggregation,     Stat Display Name, Stat Description, Filter Property,  Filter Operator,    Filter Value,   Is Competitive, minLimit, maxLimit, Icon File Name, Sequence Number, Good value direction, unit

Trong trường hợp bạn không muốn sử dụng điều kiện lọc, hãy để trống ô.

Bảng ví dụ
Mã thống kê Tên sự kiện Tên thuộc tính Tổng hợp Tên hiển thị của chỉ số Nội dung mô tả về chỉ số Lọc tài sản (không bắt buộc) Toán tử lọc (không bắt buộc) Giá trị bộ lọc (không bắt buộc) Có tính cạnh tranh minLimit maxLimit Tên tệp biểu tượng Số thứ tự Hướng giá trị tốt đơn vị
1 matchCompleted thời lượng TỐI ĐA Longest Match Survival Đây là thời gian sống sót của người chơi trong bất kỳ trận đấu nào isWinner = TRUE TRUE 0 50 stat1.png 1 Giảm đi giây
2 matchCompleted isWinner COUNT Số trận thắng Chỉ số này cho biết số trận đấu mà một người chơi đã thắng isWinner = TRUE TRUE 0 50 stat3.png 2 Tăng lên
3 matchCompleted mạng giết được SUM Số mạng giết được trong trận đấu 1 đấu 1 Số mạng hạ gục trong các trận đấu 1 vs 1 matchType = "1-on-1" FALSE stat4.png 4 Tăng lên
4 itemCollected coinsAmount SUM Tổng số vàng đã thu thập Người chơi thu thập xu khi chơi trong một trận đấu weaponType = "sword" FALSE stat2.png 3 Tăng lên

Định dạng ProgressionStatConfig.csv

Tệp csv chứa sự kiện đã khai báo và các thuộc tính của sự kiện đó dưới dạng giá trị được phân tách bằng dấu phẩy theo thứ tự sau:

Stat ID, Stat Display Name, Stat Description, Icon File Name, Good value direction, unit

Số liệu thống kê về tiến trình sẽ là số liệu thống kê đầu tiên mà người chơi nhìn thấy trong Hồ sơ người chơi.

Bảng ví dụ
Stat ID Tên hiển thị của số liệu thống kê Nội dung mô tả chỉ số Tên tệp biểu tượng Hướng đi có giá trị
5 Cấp độ Người chơi tích luỹ điểm kinh nghiệm bằng cách chơi các trận đấu và lên cấp. Level.png tăng lên

Định dạng StatLocalizations.csv

Tệp csv chứa sự kiện đã khai báo và các thuộc tính của sự kiện đó dưới dạng giá trị được phân tách bằng dấu phẩy theo thứ tự sau:

Stat ID, Stat Display Name, Language Code, Localized Stat Name, Localized Stat Description
Bảng ví dụ
Stat ID Tên hiển thị của số liệu thống kê Mã ngôn ngữ Tên chỉ số theo ngôn ngữ địa phương (UTF-8) Nội dung mô tả chỉ số theo ngôn ngữ địa phương (UTF-8) 1 Longest Match Survival es Supervivencia más larga en partidos Esto denota el tiempo de supervivencia de una jugadora en cualquier partido. 1 Longest Match Survival fr Survie du match le plus long Cela indique la durée de survie d'un joueur dans n'importe quel match. 4 Tổng số vàng đã thu thập es Oro total recolectado La jugadora recoge monedas mientras juega en un partido 4 Tổng số vàng đã thu thập fr Hoặc tổng số tiền đã thu Le joueur collecte des pièces en jouant un match

Lập kế hoạch cho giản đồ

Bạn có thể gửi 2 loại dữ liệu bằng Game Stats API: sự kiện linh hoạt của người chơi và sự kiện được xác định trước cho số liệu thống kê về tiến trình của người chơi. Các ví dụ sau đây minh hoạ cách các sự kiện linh hoạt xuất hiện trên nhiều loại trò chơi.

Sự kiện linh hoạt của trình phát

Sự kiện của người chơi được xác định bằng những khoảnh khắc riêng biệt trong trò chơi, các lần hoàn thành vòng lặp trò chơi hoặc các mốc tiến trình.

  • Xác định sự kiện là những khoảnh khắc cụ thể trong trò chơi, hoàn thành vòng lặp trò chơi hoặc các cột mốc tiến trình:
    • Hoàn tất vòng lặp trò chơi, chẳng hạn như hoàn tất một trận đấu hoặc lượt chạy.
    • Các mốc tiến trình, chẳng hạn như tiến trình khám phá khu vực đã lưu hoặc một cấp độ đã hoàn thành.
  • Thêm thuộc tính để cung cấp bối cảnh về sự kiện và kết quả của sự kiện đó, chẳng hạn như số cấp độ, loại trận đấu, loại vũ khí, số lượng vũ khí, số lần bắn trúng đầu, số xu thu thập được, kết quả trận đấu, thời gian hoàn thành vòng đua hoặc loại xe.
  • Gửi sự kiện trong phiên chơi ngay khi sự kiện xảy ra. Ví dụ: gửi sự kiện hoàn tất vòng lặp trò chơi ngay sau khi vòng lặp hoàn tất.
Ví dụ
Loại trò chơi Nhãn sự kiện Khoảnh khắc trong trò chơi / Hoàn tất sự kiện tiến trình / Hoàn tất vòng lặp trò chơi Kết quả Đặc điểm
Trò chơi giải đố độc lập có tiến trình tuyến tính chapter_completed Hoàn tất sự kiện tăng tốc Không áp dụng Số chương, Tên chương, Số lần thử, số màn hình, số lượt di chuyển, nội dung chương
screen_completed Hoàn tất sự kiện tăng tốc Số chương, Tên chương, Số lần thử, số nước đi, nội dung chương
Trò chơi chạy vô tận 3D run_completed Hoàn thành vòng lặp trò chơi Số xu đã thu thập, điểm số Thời gian chạy, số xu thu thập được từ jetpack, số lượng bộ tăng tốc được dùng khi bắt đầu chạy, số lượng ván lướt sóng được dùng, số lượng nam châm được dùng, số lượng thiết bị nhảy được dùng, số lượng jetpack được dùng
Game nhập vai hành động thế giới mở areaExplorationProgress Hoàn tất sự kiện tăng tốc Số kẻ thù bị đánh bại, số bình thuốc đã thu thập Số khu vực, Tên khu vực, Tỷ lệ phần trăm tiến độ
questCompleted Hoàn tất vòng lặp trò chơi Không áp dụng Tên nhiệm vụ
weaponUnlocked Khoảnh khắc trong trò chơi Không áp dụng Tên vũ khí, Cấp độ vũ khí
chestUnlocked Khoảnh khắc trong trò chơi Quặng tăng cường đã thu thập
Câu đố thông thường có siêu dữ liệu trang trí puzzleCompleted Hoàn tất vòng lặp trò chơi / Hoàn tất sự kiện tiến trình Số xu đã thu thập, Số vật phẩm hỗ trợ đã thu thập Số nước đi, Butler's gift used?, Loại cấp độ, Số cấp độ, số lượng tên lửa màu đã dùng, số lượng thuốc nổ đã dùng
cardsCollected Khoảnh khắc trong trò chơi Thẻ 1 sao, thẻ 2 sao, thẻ 3 sao, tổng số thẻ Số thứ tự đĩa nhạc, Tên đĩa nhạc
Đua xe trong khu trò chơi arcade raceCompleted Hoàn tất vòng lặp trò chơi Hạng, NOS đã dùng, race_time Loại cuộc đua, điểm xếp hạng, car_used
carUpgraded Khoảnh khắc trong trò chơi Đặc điểm của xe được nâng cấp, cấp độ / giá trị cũ, cấp độ / giá trị mới Loại xe, cấp độ gara hiện tại
Trò chơi bắn súng góc nhìn thứ ba trong chế độ Battle Royale matchCompleted Hoàn tất vòng lặp trò chơi Số lần loại bỏ, Số lần bắn trúng đầu, Giá trị danh dự Loại trận đấu, thời gian sinh tồn
Trò chơi mô phỏng quản lý thể thao điện tử matchCompleted Hoàn tất vòng lặp trò chơi Kết quả, số bàn thắng, bàn thắng Tên đội đối thủ, tên đội chơi
trainingCompleted Khoảnh khắc trong trò chơi Bài tập đã hoàn thành, teamplay_form_attack, teamplay_form_defense, teamplay_form_possession, teamplay_form_condition

progressUpdate Sự kiện

Nếu trò chơi của bạn có cơ chế tiến trình chính, hãy sử dụng sự kiện này để gửi tiến trình hiện tại của người chơi. Sự kiện này có một thuộc tính được xác định trước có tên là "currentProgress" thuộc loại INT hoặc STRING. Gửi giá trị tiến trình hiện tại bằng thuộc tính này, vì đây là giá trị duy nhất xuất hiện trong giao diện người dùng Thống kê trò chơi của Hồ sơ người chơi.

Vì người chơi có thể so sánh hồ sơ của họ theo tiến trình hiện tại trong trò chơi, nên điều quan trọng là không được có độ trễ khi nhận giá trị tiến trình hiện tại sau lần tích hợp đầu tiên. Để thể hiện chính xác tiến trình hiện tại cho người chơi, bạn nên gửi sự kiện progressUpdate khi bắt đầu mỗi phiên trò chơi cũng như bất cứ khi nào có thông tin cập nhật về tiến trình hiện tại.

Ví dụ
Loại trò chơi thuộc tính currentProgress của sự kiện `progressUpdate`
Trò chơi giải đố theo tiến trình tuyến tính Số chương hoặc số cấp hiện tại
3d Endless Runner Điểm cao, Số lượng bộ tăng tốc hiện tại
Câu đố thông thường Số cấp độ hiện tại, Số lần thắng ngay lần thử đầu tiên, Số khu vực đã hoàn thành, Số bộ sưu tập đã hoàn thành
Đua xe trong khu trò chơi arcade Số cấp hiện tại, Số dư tiền tệ
Game nhập vai hành động thế giới mở Thứ hạng nhân vật hiện tại, Số cấp độ hiện tại
Bắn súng góc nhìn thứ ba Số cấp độ hiện tại
Mô phỏng thể thao điện tử Số cấp người quản lý, số cấp câu lạc bộ

Thông tin chi tiết về nội dung tích hợp

Các điểm cuối API và SDK sẽ được cung cấp để thu thập ý kiến phản hồi sớm và sẽ được cung cấp rộng rãi (GA) kể từ tháng 7 năm 2026. Xem dòng thời gian

Phần này hướng dẫn cách tạo sự kiện và gửi sự kiện trong cả quá trình tích hợp phía máy khách và phía máy chủ.

Khi nào bạn nên gửi dữ liệu

Sự kiện linh hoạt thể hiện các hành động trong trò chơi liên quan đến việc hoàn thành vòng lặp trò chơi hoặc các khoảnh khắc cụ thể trong trò chơi. Hãy gửi những sự kiện này ngay khi chúng xảy ra. Ví dụ: hãy gửi sự kiện hoàn tất vòng lặp trò chơi ngay khi vòng lặp hoàn tất.

progressUpdateEvent (Sự kiện) biểu thị cấp độ tiến trình hiện tại của người chơi. Bạn nên gửi dữ liệu cho chỉ số tiến trình bằng sự kiện này trong những trường hợp sau:

  1. Bất cứ khi nào có bản cập nhật về tiến trình hiện tại, hãy gửi ngay giá trị mới nhất
  2. Bất cứ khi nào người chơi khởi chạy trò chơi để đảm bảo luôn có chỉ số này cho người chơi.

Các cách tích hợp

Có 2 cách tích hợp: máy khách và máy chủ đến máy chủ.

Tích hợp máy chủ đến máy chủ

Điểm cuối API công khai cho phép bạn gửi các sự kiện trong tải trọng yêu cầu bằng cách sử dụng các cấu hình sau:

Tham số đường dẫn
Tham số Loại dữ liệu Mô tả
playerId Chuỗi Mã nhận dạng PGS của người chơi.

Uỷ quyền và xác thực

Các lệnh gọi API từ máy chủ đến máy chủ tuân theo các nguyên tắc tiêu chuẩn về Quyền truy cập phía máy chủ vào Dịch vụ trò chơi của Play bằng cách sử dụng OAuth 2.0. Yêu cầu phải có mã thông báo Bearer được uỷ quyền bằng phạm vi https://www.googleapis.com/auth/games.

Sự kiện linh hoạt: Nội dung yêu cầu

BatchRecordEventsRequest

{
  "packageName": string,
  "requestTime": string,
  "events": [
    {
      object (PlayerGameEvent)
    }
  ]
}

PlayerGameEvent

{
  "eventId": string,
  "eventName": string,
  "eventProperties": {
    // keys (e.g., "matchId", "score")
    "": {
       object (PropertyValue)
    }
  },
  "eventTime": string
}

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,
// RFC 3339 formatted timestamp string (e.g., "2026-01-01T18:00:00Z").
"timestampValue": "string",
// Duration in seconds suffixed with 's' (e.g., "240s" or "3.5s").
"durationValue": "string"
}

Sự kiện progressUpdate: Nội dung yêu cầu

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
}

Nội dung phản hồi

Nếu thành công, sẽ trả về trạng thái HTTP 200 OK với một đối tượng JSON trống.

Nội dung yêu cầu mẫu

Sự kiện linh hoạt: PlayerGameEvent

{
  "packageName": "com.example.awesomegame",//Your package name
  "requestTime": "2026-01-01T18:00:00Z",
  "events": [
    {
      "eventId": "123e1234-e29b-41d4-a123-446655440000", // UUID for deduplication //and idempotency
      "eventName": "matchCompleted",
      "eventTime": "2026-01-01T17:00:00Z",
      "eventProperties": {
        "matchId": {
          "stringValue": "Match_A"
        },
        "gameMode": {
          "stringValue": "Battle_B"
        },
        "locationId": {
          "stringValue": "Location_XYZ"
        },
        "playerElimination": {
          "intValue": 2
        },
        "survivalTimeSeconds": {
          "durationValue": "240s"
        },
        "isWinner": {
          "boolValue": true
        }
      }
    }
  ]
}

Sự kiện progressUpdate

{
  "packageName": "com.example.awesomegame",//Your package name
  "requestTime": "2026-01-01T18:00:00Z",
  "events": [
    {
      "eventId": "123e1234-e29b-41d4-a123-446655440000", // UUID
      "eventName": "progressUpdate",
      "eventTime": "2026-01-01T17:00:00Z",
      "eventProperties": {
        "currentProgress": {
          "intValue": 52
        },
//Add more properties as per your requirement
      }
    }
  ]
}

Tích hợp phía ứng dụng

Tính năng tích hợp phía ứng dụng sẽ được cung cấp bằng cách sử dụng các SDK Unity, Java và C++.

Việc tích hợp phía ứng dụng cho PlayerGameEvent sẽ liên quan đến việc bạn tạo đối tượng sự kiện bằng Java hoặc Csharp, tuỳ thuộc vào SDK, tại các điểm kích hoạt và gửi chúng bằng các hàm tải lên do SDK cung cấp.

Tương tự, đối với sự kiện progressUpdate, hãy ghi lại tiến trình đã cập nhật bằng cách sử dụng thuộc tính currentProgress cùng với các thuộc tính được xác định bổ sung và gửi các thuộc tính đó bằng cách sử dụng các hàm tải lên do SDK cung cấp.

Sự kiện

Các ứng dụng tích hợp phía ứng dụng cho PlayerGameEvent là:

Tạo sự kiện linh hoạt trong trò chơi của người chơi

Java


// Build the PlayerGameEvent
PlayerGameEvent event = new PlayerGameEvent.Builder("matchCompleted")
  .addProperty("matchId", "Match_A")
  .addProperty("gameMode", "Battle_B")
  .addProperty("mapId", "Location_XYZ")
  .addProperty("isWinner", true)
  .addProperty("survivalTimeSeconds", "240s")
  .addProperty("playerElimination", 2)
  .build();

List events = new ArrayList<>();
// ... populate list ...

Unity


// Build the PlayerGameEvent
var playerEvent = new PlayerGameEvent.Builder("matchCompleted")
   .AddProperty("matchId", "Match_A")
   .AddProperty("gameMode", "Battle_B")
   .AddProperty("mapId", "Location_XYZ")
   .AddProperty("isWinner", true)
   .AddProperty("survivalTimeSeconds", "240s")
   .AddProperty("playerElimination", 2)
   .Build();
var events = new List();
// ... populate list ...

C++


// Build the PlayerGameEvent
PgsPlayerGameEvent* player_event = PgsPlayerGameEvent_create("matchCompleted");
if (player_event != nullptr) {
   PgsPlayerGameEvent_putString(player_event, "matchId", "Match_A");
   PgsPlayerGameEvent_putString(player_event, "gameMode", "Battle_B");
   PgsPlayerGameEvent_putString(player_event, "mapId", "Location_XYZ");
   PgsPlayerGameEvent_putBoolean(player_event, "isWinner", true);
   PgsPlayerGameEvent_putString(player_event, "survivalTimeSeconds", "240s");
   PgsPlayerGameEvent_putLong(player_event, "playerElimination", 2);
}
Tạo progressUpdate Sự kiện trong trò chơi của người chơi

Java


// Build the PlayerGameEvent
PlayerGameEvent event = new PlayerGameEvent.Builder("progressUpdate")
  .addProperty("currentProgress", 52)
  // Add other properties if needed
  .build();

List events = new ArrayList<>();
// ... populate list ...

Unity


// Build the PlayerGameEvent
var progressEvent = new PlayerGameEvent.Builder("progressUpdate")
   .AddProperty("currentProgress", 52)
   // Add other properties if needed
   .Build();
var events = new List();
// ... populate list ...

C++


PgsPlayerGameEvent* progress_event = PgsPlayerGameEvent_create("progressUpdate");
if (progress_event != nullptr) {
   PgsPlayerGameEvent_putLong(progress_event, "currentProgress", 52);
}
Ghi lại sự kiện và tải lên

Java


// Buffers the event locally.
client.recordEvent(event);

// Buffers the events locally, (List version)
client.recordEvents(events);

// This submits the events to PGS
client.requestEventsUpload();

Unity


// Buffers the event locally.
PlayGamesPlatform.Instance.RecordEvent(playerEvent);

// Buffers the events locally, (List version)
PlayGamesPlatform.Instance.RecordEvents(events);

// This submits the events to PGS
PlayGamesPlatform.Instance.RequestEventsUpload();

C++


// Record the event
PgsGameStatsClient_recordEvent(client, player_event);

// This submits the events to PGS
PgsGameStatsClient_requestEventsUpload(client);

// Clean up handle to avoid leaks
PgsPlayerGameEvent_destroy(player_event);

// Clean up client handle when PGS operations are finished
PgsGameStatsClient_destroy(client);

Dòng thời gian

Ngày Tích hợp Game Stats API Cấu hình Số liệu thống kê về trò chơi
Tháng 6/2026
  • Nhà phát triển có thể bắt đầu lập kế hoạch cho các mô hình dữ liệu
Không có
Tháng 7 năm 2026
  • API được cung cấp rộng rãi (GA) cho tất cả nhà phát triển để bắt đầu tích hợp
  • Dữ liệu đầu vào được xác thực dựa trên giản đồ và cấu hình được cung cấp
  • Configuration API để cung cấp giản đồ sự kiện và cấu hình số liệu thống kê
Tháng 8 năm 2026 Không áp dụng
  • Play Console hiện đã hỗ trợ tải tệp CSV lên
Tháng 9 năm 2026 Không áp dụng
  • Người chơi bắt đầu thấy số liệu thống kê về trò chơi trên Hồ sơ người chơi