สถิติการแข่งขัน

"สถิติเกม" คือสถิติสะสมเกี่ยวกับเกมของคุณที่ผู้เล่นดูได้ในโปรไฟล์เกมเมอร์ของตน สถิติเหล่านี้ช่วยให้ผู้เล่นติดตามความคืบหน้าตลอดอายุการใช้งาน ดูช่วงเวลาสำคัญ และเปรียบเทียบกับผู้เล่นคนอื่นๆ รวมถึงเพิ่มประสิทธิภาพฟีเจอร์ของ Google Play เช่น ภารกิจ ชาเลนจ์โซเชียล และอื่นๆ ในอนาคต

สถิติเกมต้องมีลักษณะดังนี้

  • ไม่จำเป็นต้องซื้อ (เช่น ซื้ออัญมณี) กล่าวคือไม่ควรอัปเดตอันเป็นผลมาจากการซื้อ IAP
  • ไม่กำหนดให้ต้องดูโฆษณา กล่าวคือ ไม่ควรอัปเดตอันเป็นผลมาจากการดูโฆษณา
  • ไม่ใช่การใช้งานเกมทั่วไป (เช่น เปิดเกม ใช้การตั้งค่า)
  • ไม่มีข้อมูลส่วนบุคคลและข้อมูลที่ละเอียดอ่อนของผู้ใช้ตามที่ระบุไว้ในนโยบาย Play ซึ่งรวมถึงรหัสผู้ใช้ รหัสผ่าน ตำแหน่งที่แน่นอน หรือข้อมูลสุขภาพ หรือเนื้อหาที่ไม่เหมาะสม หยาบคาย มีการแสดงเรื่องเพศอย่างโจ่งแจ้ง รุนแรง หรือเนื้อหาแสดงความเกลียดชัง
  • พร้อมให้บริการแก่ผู้ใช้ทุกคน (เช่น ไม่ใช่การดำเนินการเฉพาะทีมหรือพร้อมให้บริการแก่ผู้ใช้บางระดับเท่านั้น หรือจำกัดเฉพาะ LiveOps แบบจำกัดเวลา เป็นต้น)

รูปภาพแสดงสถิติเกมในโปรไฟล์เกมเมอร์บนแท็บคุณ อินเทอร์เฟซผู้ใช้ (UI) นี้ในแท็บคุณมีไว้เพื่อวัตถุประสงค์ในการทดสอบเท่านั้น UI สถิติเกมจะพร้อมใช้งานในเดือนกันยายน 2026

สถิติเกมในแท็บ "คุณ"
สถิติเกมพร้อมไฮไลต์ในแท็บ "คุณ"

ประเภทการรวมข้อมูล

ประเภทการรวมจะบอก Google Play ว่าจะคำนวณสถิติจากค่าต่อเหตุการณ์ที่คุณส่งอย่างไร

  • SUM: ใช้สำหรับสถิติสะสม (เช่น จำนวนเหรียญทั้งหมดที่เก็บได้ ความเสียหายทั้งหมดที่ทำได้) เกมต้องส่งจำนวนที่ได้รับอย่างชัดเจนในแต่ละอินสแตนซ์ของเหตุการณ์
  • COUNT: ใช้สำหรับสถิติที่แสดงจำนวนครั้งที่เกิดเหตุการณ์ (เช่น เกมที่เล่น เกมที่ชนะ) เกมต้องส่งอินสแตนซ์การเกิดเหตุการณ์แบบไม่ต่อเนื่อง
  • MAX: ใช้สำหรับความสำเร็จสูงสุดที่เกิดขึ้นครั้งเดียวเท่านั้น (เช่น คะแนนสูงสุดในการวิ่งครั้งเดียว, คอมโบต่อเนื่องสูงสุด หรือความเสียหายสูงสุดในการแข่งขันเดียว) อย่าใช้ MAX เป็นวิธีแก้ปัญหาชั่วคราวเพื่อแสดงผลรวมตลอดอายุการใช้งานจากค่าที่รันอยู่ซึ่งคำนวณล่วงหน้า

ข้อกำหนดในการใช้งานที่สำคัญสำหรับสถิติที่ซ้ำกัน

  • ส่งค่าต่อเหตุการณ์: สำหรับแต่ละเหตุการณ์ ให้ส่งเฉพาะสิ่งที่เกิดขึ้นในเหตุการณ์นั้น เช่น เหรียญที่เก็บได้ในการวิ่งครั้งเดียว จากนั้นตั้งค่าประเภทการรวม เช่น SUM หรือ COUNT ในการกำหนดค่าสถิติ ซึ่งจะช่วยให้มั่นใจได้ว่าสถิติที่ซ้ำกันจะนำมาใช้ซ้ำได้ในกลไกการมีส่วนร่วม และช่วยให้ Google Play สร้างประสบการณ์การใช้งานที่เหมาะสมสำหรับผู้เล่นได้
  • อย่าส่งยอดรวมตลอดอายุการใช้งาน: เช่น อย่าติดตามจำนวนเหรียญทั้งหมดที่ผู้เล่นเคยเก็บสะสมในไคลเอ็นต์หรือเซิร์ฟเวอร์เกม แล้วส่งยอดรวมนั้นด้วยการรวม MAX สถิติดังกล่าวจะยังคงแสดงใน UI ของโปรไฟล์เกมเมอร์ แต่ Google Play จะใช้สถิติเหล่านั้นเพื่อขับเคลื่อนฟีเจอร์การให้รางวัล เช่น ลีก ภารกิจ และสปรินต์ เพื่อปรับปรุงประสบการณ์ของผู้เล่นและเพิ่มผลลัพธ์ให้กับเกมของคุณไม่ได้

ดูวิธีการและตัวอย่างเกี่ยวกับการสร้างโมเดลเหตุการณ์ที่ถูกต้องได้ที่เหตุการณ์ของผู้เล่นและกำหนดค่าสถิติ

ขั้นตอนการผสานรวม

ส่งข้อมูลโดยใช้ Game Stats API เป็นเหตุการณ์ของผู้เล่นสำหรับสถิติที่เกิดซ้ำและเหตุการณ์ที่กำหนดไว้ล่วงหน้า progressUpdate สำหรับสถิติความคืบหน้า นอกจากนี้ คุณยังต้องกำหนดค่าตรรกะสำหรับการคำนวณสถิติที่จะปรากฏในโปรไฟล์เกมเมอร์และข้อมูลที่แสดงด้วย

เหตุการณ์ของผู้เล่นแสดงถึงช่วงเวลาที่แตกต่างกันในเกม การทำ Game Loop ให้เสร็จสมบูรณ์ หรือความสำเร็จของความคืบหน้า

เหตุการณ์ของผู้เล่นมีการกำหนดและจำลองดังนี้

  1. เหตุการณ์จะแสดงด้วยการดำเนินการที่เฉพาะเจาะจงของผู้เล่น เช่น การแข่งขันเสร็จสิ้น การวิ่งเสร็จสิ้น การปลดล็อกหีบ หรือการบันทึกความคืบหน้าในพื้นที่
  2. การดำเนินการแต่ละอย่างจะส่งผลให้เกิดผลลัพธ์บางอย่างหรือมีลักษณะบางอย่างที่กำหนดการดำเนินการนั้น ซึ่งจะจำลองเป็นพร็อพเพอร์ตี้เหตุการณ์ที่ให้บริบทเกี่ยวกับเหตุการณ์และผลลัพธ์ที่เฉพาะเจาะจง (เช่น ประเภทการจับคู่ เหรียญที่เก็บได้ระหว่างการวิ่ง ผลการจับคู่ หรือจำนวนการยิงเข้าที่ศีรษะ)

การผสานรวมประกอบด้วยขั้นตอนต่อไปนี้

  • ประกาศสคีมาข้อมูลดิบ: กำหนดเหตุการณ์ของผู้เล่นโดยใช้การอัปโหลด CSV ใน Play Console ดูหัวข้อสร้างกิจกรรม
  • ผสานรวมกับ Game Stats API: ส่งข้อมูลดิบของผู้เล่นในรูปแบบที่ประกาศไว้สำหรับเหตุการณ์ของผู้เล่นและเหตุการณ์ progressUpdate
  • อัปโหลดไฟล์ ZIP: ระบุไฟล์ CSV 3 ไฟล์และไฟล์รูปภาพไอคอนทั้งหมดที่กำหนดสถิติที่เกิดซ้ำ 5 รายการและระดับความคืบหน้าของผู้เล่น 1 ระดับ ดูข้อมูลเพิ่มเติมได้ที่หลักเกณฑ์สำหรับไฟล์ ZIP ระบุรายละเอียดต่อไปนี้
    • ไฟล์ CSV สำหรับสถิติที่ซ้ำกัน
      • รหัสที่ไม่ซ้ำกันสำหรับสถิติ
      • ระบุป้ายกำกับเหตุการณ์ที่จะใช้สำหรับการคำนวณสถิติ คุณไม่สามารถใช้ป้ายกำกับเหตุการณ์ progressUpdate ที่นี่
        • ระบุป้ายกำกับพร็อพเพอร์ตี้ที่จะใช้ในการคำนวณสถิติ ซึ่งต้องเป็นพร็อพเพอร์ตี้ของเหตุการณ์ที่ระบุ
        • ระบุประเภทการรวมข้อมูล (SUM, MAX, MIN หรือ COUNT) เพื่อกำหนดวิธีคำนวณสถิติในป้ายกำกับพร็อพเพอร์ตี้ที่เลือก
        • ระบุเงื่อนไขตัวกรองที่ไม่บังคับเพื่อคำนวณตรรกะเฉพาะเมื่อเป็นไปตามเงื่อนไขเท่านั้น กำหนดพร็อพเพอร์ตี้และป้ายกำกับเหตุการณ์ โอเปอเรเตอร์ (=, <, <=, >= หรือ >) และค่าเกณฑ์
      • รวมแฟล็กบูลีนเพื่อระบุว่าสามารถใช้สถิติสำหรับฟีเจอร์การแข่งขันได้หรือไม่
      • หากฟีเจอร์นี้ใช้สำหรับฟีเจอร์การแข่งขันได้ ให้ระบุขีดจำกัดขั้นต่ำและสูงสุดต่อชั่วโมงสำหรับผู้เล่นจริง เราจะใช้ข้อมูลนี้เพื่อระบุผู้เล่นที่อาจใช้ฟีเจอร์ต่างๆ เช่น ลีกและชาเลนจ์โซเชียล ในทางที่ผิด
      • ระบุชื่อที่แสดงที่ไม่ซ้ำกันสำหรับสถิติที่ผู้เล่นเห็น
      • ระบุข้อความที่ไม่ซ้ำกันซึ่งอธิบายสถิติ คำอธิบายนี้ควรให้รายละเอียดเกี่ยวกับวิธีที่ผู้เล่นจะได้รับสถิตินี้ และจะแสดงให้ผู้เล่นเห็นใน UI ของโปรไฟล์เกมเมอร์
      • ระบุไอคอนที่ไม่ซ้ำกันซึ่งแสดงถึงสถิติโดยป้อนชื่อไฟล์ไอคอนที่ตรงกันทุกประการในไฟล์ CSV
      • ระบุอินพุตที่ไม่บังคับว่าค่าที่เพิ่มขึ้นหรือค่าที่ลดลงเป็นผลดีต่อผู้เล่น อินพุตนี้จะใช้เพื่อฉลองการเคลื่อนไหวของผู้เล่น
      • ระบุหน่วยวัด (ไม่บังคับ) สำหรับสถิติ เช่น กม. ไมล์ และวินาที
    • ไฟล์ CSV สำหรับสถิติความคืบหน้าของผู้เล่น:
      • ระบุชื่อที่แสดงที่ไม่ซ้ำกันสำหรับความคืบหน้าของผู้เล่นที่ผู้เล่นเห็น
      • ระบุไอคอนที่ไม่ซ้ำกันซึ่งแสดงถึงสถิติ
      • ระบุคำอธิบายสำหรับสถิติความคืบหน้า
      • ระบุอินพุตที่ไม่บังคับว่าค่าที่เพิ่มขึ้นหรือค่าที่ลดลงเป็นผลดีต่อผู้เล่น ระบบจะใช้อินพุตนี้เพื่อฉลองการเคลื่อนไหวของผู้เล่นก็ต่อเมื่อพร็อพเพอร์ตี้ currentProgress เป็นประเภท INT เท่านั้น
      • ระบุหน่วยวัดที่ไม่บังคับสำหรับสถิติ เช่น กม. ไมล์ วินาที
    • ไฟล์ CSV สำหรับการแปลภาษา: ระบุชื่อที่แสดงที่แปลแล้วสำหรับสถิติทั้งหมด
      • เพิ่ม 1 แถวสำหรับการแปลแต่ละรายการ
      • ใช้สตริงชื่อที่แสดงของสถิติตามที่เพิ่มไว้ใน CSV ก่อนหน้าเพื่อระบุสถิติที่เพิ่มการแปลอย่างไม่ซ้ำกัน
      • ระบุภาษาจากรายการรหัสภาษา
      • เพิ่มการแปลชื่อที่แสดงเป็นภาษาที่ระบุ
      • เพิ่มการแปลคำอธิบายสถิติในภาษาที่ระบุ

วางแผนสคีมา

คุณส่งข้อมูลได้ 2 ประเภทโดยใช้ Game Stats API ได้แก่ เหตุการณ์ของผู้เล่นและเหตุการณ์ที่กำหนดไว้ล่วงหน้าสำหรับสถิติความคืบหน้าของผู้เล่น

ตัวอย่างต่อไปนี้แสดงให้เห็นลักษณะของเหตุการณ์ของผู้เล่นในเกมประเภทต่างๆ

กิจกรรมของผู้เล่น

กิจกรรมของผู้เล่นจะกำหนดโดยช่วงเวลาที่แตกต่างกันในเกม การทำ Game Loop ให้เสร็จสมบูรณ์ หรือเป้าหมายความคืบหน้า

  • กำหนดเหตุการณ์เป็นช่วงเวลาที่เฉพาะเจาะจงในเกม การทำ Game Loop จนเสร็จ หรือเป้าหมายความคืบหน้า ดังนี้
    • การเล่นเกมจนจบ เช่น การแข่งขันหรือการวิ่งที่เสร็จสมบูรณ์
    • ความคืบหน้า เช่น ความคืบหน้าในการสำรวจพื้นที่ที่บันทึกไว้หรือระดับที่เล่นจบแล้ว
    • เนื่องจากสถิติที่เกิดซ้ำควรแสดงถึงการดำเนินการที่ทำซ้ำได้โดยผู้เล่นอย่างแท้จริง เหตุการณ์ที่กำหนดจึงควรเชื่อมโยงกับเกมเพลย์หลัก
  • เพิ่มพร็อพเพอร์ตี้เพื่อระบุบริบทเกี่ยวกับเหตุการณ์และผลลัพธ์ เช่น หมายเลขเลเวล ประเภทการจับคู่ ประเภทอาวุธ จำนวนอาวุธ การยิงเข้าที่ศีรษะ เหรียญที่เก็บได้ ผลการจับคู่ เวลาต่อรอบ หรือประเภทรถ
  • ส่งเหตุการณ์ภายในเซสชันเกมเพลย์ทันทีที่เกิดขึ้น เช่น ส่งเหตุการณ์การเล่น Game Loop เสร็จสมบูรณ์ทันทีหลังจากที่เล่น Game Loop เสร็จ
ตัวอย่าง
ประเภทเกม ป้ายกำกับเหตุการณ์ ช่วงเวลาในเกม / การทำกิจกรรมความคืบหน้าสำเร็จ / การทำ Game Loop สำเร็จ ผลลัพธ์ ลักษณะเฉพาะ
เกมไขปัญหาอินดี้ที่มีความคืบหน้าแบบเส้นตรง chapter_completed การดำเนินการตามเหตุการณ์ความคืบหน้าจนเสร็จสมบูรณ์ ไม่มี หมายเลขบท ชื่อบท จำนวนครั้งที่ลอง จำนวนหน้าจอ จำนวนการเคลื่อนไหว เนื้อหาของบท
screen_completed การดำเนินการตามเหตุการณ์ความคืบหน้าจนเสร็จสมบูรณ์ หมายเลขบท ชื่อบท จำนวนครั้งที่ลอง จำนวนการเคลื่อนไหว เนื้อหาของบท
เกมวิ่งแบบ 3 มิติที่ไม่มีที่สิ้นสุด run_completed การเล่น Game Loop จนจบ เหรียญที่เก็บได้ คะแนน ระยะเวลาการวิ่ง, เหรียญที่เก็บได้จากเจ็ตแพ็ก, ตัวเพิ่มพลังที่ใช้เมื่อเริ่มวิ่ง, กระดานโต้คลื่นที่ใช้, แม่เหล็กที่ใช้, ตัวกระโดดที่ใช้, เจ็ตแพ็กที่ใช้
เกมแอ็กชัน RPG แบบโอเพนเวิลด์ areaExplorationProgress การดำเนินการตามเหตุการณ์ความคืบหน้าจนเสร็จสมบูรณ์ กำจัดศัตรูและเก็บสะสมน้ำยา หมายเลขพื้นที่ ชื่อพื้นที่ ความคืบหน้าเป็นเปอร์เซ็นต์
questCompleted การเล่น Game Loop จนจบ ไม่มี ชื่อภารกิจ
weaponUnlocked ช่วงเวลาในเกม ไม่มี ชื่ออาวุธ, ระดับอาวุธ
chestUnlocked ช่วงเวลาในเกม รวบรวมแร่เสริมประสิทธิภาพแล้ว
เกมปริศนาแบบเล่นง่ายๆ ที่มีเมตาแบบตกแต่ง puzzleCompleted Game Loop Completion / Progression Event Completion เหรียญที่เก็บรวบรวม บูสเตอร์ที่เก็บรวบรวม จำนวนการเคลื่อนไหว, ใช้ของขวัญของบัตเลอร์ไหม, ประเภทของเลเวล, หมายเลขเลเวล, ตัวเพิ่มสีที่ใช้, ไดนาไมต์ที่ใช้
cardsCollected ช่วงเวลาในเกม การ์ด 1 ดาว, การ์ด 2 ดาว, การ์ด 3 ดาว, การ์ดทั้งหมด หมายเลขอัลบั้ม ชื่ออัลบั้ม
เกมแข่งรถสไตล์อาร์เคด raceCompleted การเล่น Game Loop จนจบ Rank, NOS used, race_time Type of race, rating, car_used
carUpgraded ช่วงเวลาในเกม ลักษณะของรถที่อัปเกรด ระดับ / ค่าเดิม ระดับ / ค่าใหม่ ประเภทรถยนต์ ระดับโรงรถปัจจุบัน
เกมยิงแบบแบทเทิลรอยัลมุมมองบุคคลที่สาม matchCompleted การเล่น Game Loop จนจบ การกำจัดคู่แข่ง การยิงเข้าหัว มูลค่าเกียรติยศ ประเภทการแข่งขัน เวลาเอาตัวรอด
การจำลองการจัดการอีสปอร์ต matchCompleted การเล่น Game Loop จนจบ ผลลัพธ์ ประตูที่ทำได้ ประตู ชื่อทีมคู่แข่ง ชื่อทีมที่เล่น
trainingCompleted ช่วงเวลาในเกม การฝึกที่เสร็จสิ้น, teamplay_form_attack, teamplay_form_defense, teamplay_form_possession, teamplay_form_condition

progressUpdate เหตุการณ์

หากเกมมีกลไกความคืบหน้าหลัก ให้ใช้เหตุการณ์นี้เพื่อส่งความคืบหน้าปัจจุบันของผู้เล่น เหตุการณ์มีพร็อพเพอร์ตี้ที่กำหนดไว้ล่วงหน้า 1 รายการชื่อ "currentProgress" ประเภท INT หรือ STRING คุณควรส่งค่าปัจจุบันของความคืบหน้าของผู้เล่นในกลไกความคืบหน้าหลักโดยใช้พร็อพเพอร์ตี้นี้ หากใช้เหตุการณ์นี้ พร็อพเพอร์ตี้ "currentProgress" ที่กำหนดไว้ล่วงหน้าต้องแสดงอยู่ และต้องกำหนดสถิติความคืบหน้าโดยใช้พร็อพเพอร์ตี้นี้

คุณสามารถส่งค่าปัจจุบันสำหรับระบบความคืบหน้าอื่นๆ ในเกม เช่น lifetime highest score หรือ current coin balance เป็นพร็อพเพอร์ตี้อื่นๆ ของเหตุการณ์นี้ได้

เนื่องจากผู้เล่นสามารถเปรียบเทียบโปรไฟล์ของตนตามความคืบหน้าปัจจุบันภายในเกมได้ จึงเป็นสิ่งสำคัญที่จะต้องไม่มีความล่าช้าในการรับค่าความคืบหน้าปัจจุบันหลังจากการผสานรวมครั้งแรก คุณควรส่งเหตุการณ์ progressUpdate เมื่อเริ่มเซสชันเกมแต่ละเซสชัน รวมถึงเมื่อใดก็ตามที่มีการอัปเดตความคืบหน้าปัจจุบัน เพื่อแสดงความคืบหน้าปัจจุบันที่ถูกต้องให้ผู้เล่นเห็น

ตัวอย่าง
ประเภทเกม พร็อพเพอร์ตี้ currentProgress ของเหตุการณ์ `progressUpdate`
เกมไขปัญหาแบบเส้นตรง หมายเลขบทหรือหมายเลขระดับปัจจุบัน
เกมวิ่ง 3 มิติแบบไม่มีที่สิ้นสุด คะแนนสูงสุด ยอดคงเหลือของบูสเตอร์ปัจจุบัน
เกมไขปริศนาเล่นง่าย หมายเลขเลเวลปัจจุบัน, จำนวนครั้งที่ชนะในการเล่นครั้งแรก, จำนวนพื้นที่ที่เล่นเสร็จสมบูรณ์, จำนวนคอลเล็กชันที่เล่นเสร็จสมบูรณ์
เกมแข่งรถสไตล์อาร์เคด หมายเลขระดับปัจจุบัน ยอดคงเหลือของสกุลเงิน
เกมแอ็กชัน RPG แบบโอเพนเวิลด์ อันดับตัวละครปัจจุบัน, หมายเลขเลเวลปัจจุบัน
เกมยิงมุมมองบุคคลที่สาม หมายเลขระดับปัจจุบัน
การจำลองอีสปอร์ต หมายเลขระดับผู้จัดการ, หมายเลขระดับคลับ

กำหนดค่าสถิติ

คุณจะต้องกำหนดค่าสถิติแบบซ้ำและแบบความคืบหน้าโดยกำหนดตรรกะการคำนวณและแสดงข้อมูลเกี่ยวกับสถิติแต่ละรายการ ตัวอย่างสถิติแบบซ้ำจากเกมประเภทต่างๆ มีดังนี้ สถิติที่เกิดซ้ำมักเป็นสถิติที่อัปเดตซ้ำๆ สำหรับผู้เล่นทุกคนในเซสชันการเล่นเกมจำนวนน้อยมาก (3-4 เซสชัน) และเชื่อมโยงกับ Game Loop หลัก

หากต้องการทราบว่าควรใช้ SUM, COUNT หรือ MAX เมื่อใด โปรดดูหัวข้อเลือกประเภทการรวมที่เหมาะสม

ชื่อเกม ชื่อที่แสดงของสถิติเกม พร็อพเพอร์ตี้เหตุการณ์ ตรรกะการคำนวณ [aggregation] กรอง
เกมวิ่งไม่รู้จบแบบ 3 มิติ การเรียกใช้เสร็จสมบูรณ์ พร็อพเพอร์ตี้ใดก็ได้ของเหตุการณ์ run_completed จำนวน ค่าทั้งหมด [ไม่มีตัวกรอง]
เหรียญที่เก็บรวบรวม พร็อพเพอร์ตี้ coins_collected ของเหตุการณ์ run_completed ผลรวม ไม่มี
คีย์ที่เก็บรวบรวม พร็อพเพอร์ตี้ Keys_collected ของเหตุการณ์ run_completed ผลรวม ไม่มี
คะแนนการวิ่งสูงสุด พร็อพเพอร์ตี้คะแนนของเหตุการณ์ run_completed สูงสุด ไม่มี
การวิ่งที่เก็บเหรียญได้มากเสร็จสมบูรณ์ พร็อพเพอร์ตี้ coins_collected ของเหตุการณ์ run_completed จำนวน Value > 5000
เกมไขปัญหาแบบเส้นตรง บทที่จบแล้ว พร็อพเพอร์ตี้ใดก็ได้ของเหตุการณ์ chapter_completed จำนวน ค่าทั้งหมด [ไม่มีตัวกรอง]
การคัดกรองที่เสร็จสมบูรณ์ พร็อพเพอร์ตี้ใดก็ได้ของเหตุการณ์ screen_completed จำนวน ค่าทั้งหมด [ไม่มีตัวกรอง]
บทที่ทำเสร็จตั้งแต่ครั้งแรก พร็อพเพอร์ตี้ num_try ของเหตุการณ์ chapter_completed จำนวน Num_try = 1
หน้าจอที่เสร็จสมบูรณ์ในการลองครั้งแรก พร็อพเพอร์ตี้ Num_try ของเหตุการณ์ screen_completed จำนวน Num_try = 1
เกมแอ็กชัน RPG แบบโอเพนเวิลด์ ทำภารกิจสำเร็จ พร็อพเพอร์ตี้ใดก็ได้ของเหตุการณ์ quest_completed จำนวน ค่าทั้งหมด [ไม่มีตัวกรอง]
พื้นที่ที่สำรวจ พร็อพเพอร์ตี้ perc_progress ของเหตุการณ์ area_exploration_progress จำนวน มูลค่า = 100
ปลดล็อกดาบแล้ว พร็อพเพอร์ตี้ Weapon_type ของเหตุการณ์ weapon_unlocked จำนวน Value = "sword"
ศัตรูที่เอาชนะได้ พร็อพเพอร์ตี้ Enemies_defeated ของเหตุการณ์ area_exploration_progress ผลรวม ไม่มี
เก็บน้ำยาเพิ่มพลังชีวิตแล้ว พร็อพเพอร์ตี้ Enhancement_ores ของเหตุการณ์ chest_unlocked ผลรวม ไม่มี
เกมไขปริศนาเล่นง่าย ด่านที่ผ่าน พร็อพเพอร์ตี้ใดก็ได้ของเหตุการณ์ level_completed จำนวน ค่าทั้งหมด [ไม่มีตัวกรอง]
ด่านที่ผ่านตั้งแต่ครั้งแรก พร็อพเพอร์ตี้ num_try ของเหตุการณ์ level_completed จำนวน มูลค่า = 1
ตัวเร่งสีที่ใช้ พร็อพเพอร์ตี้ Color_booster_used ของเหตุการณ์ level_completed ผลรวม ไม่มี
ใช้ตัวเพิ่มระเบิดแล้ว พร็อพเพอร์ตี้ Bomb_booster_used ของเหตุการณ์ level_completed ผลรวม ไม่มี
การ์ดที่เก็บรวบรวม พร็อพเพอร์ตี้ total_cards ของเหตุการณ์ cards_collected ผลรวม ไม่มี
เกมแข่งรถสไตล์อาร์เคด การแข่งที่ชนะ พร็อพเพอร์ตี้อันดับของเหตุการณ์ race_completed จำนวน มูลค่า = 1
การแข่งขันที่เร็วที่สุด พร็อพเพอร์ตี้ race_time ของเหตุการณ์ race_completed ต่ำสุด ไม่มี
ใช้ NOS พร็อพเพอร์ตี้ NOS_used ของเหตุการณ์ race_completed ผลรวม ไม่มี
การแข่งขันที่จบด้วย Mustang พร็อพเพอร์ตี้ Car_type ของเหตุการณ์ race_completed จำนวน Value = "Mustang"
การอัปเกรดรถยนต์ พร็อพเพอร์ตี้ใดก็ได้ของเหตุการณ์ car_upgraded จำนวน ค่าทั้งหมด [ไม่มีตัวกรอง]
เกมยิงแบบแบทเทิลรอยัลมุมมองบุคคลที่สาม การแข่งขันที่ชนะ พร็อพเพอร์ตี้ใดก็ได้ของเหตุการณ์ match_completed จำนวน Match_result = TRUE
การกำจัดคู่แข่งทั้งหมด พร็อพเพอร์ตี้ Eliminations ของเหตุการณ์ match_completed ผลรวม ไม่มี
เวลาเอาชีวิตรอดสูงสุด พร็อพเพอร์ตี้ Survival_time ของเหตุการณ์ match_completed สูงสุด ไม่มี
จำนวนการยิงเข้าศีรษะทั้งหมด พร็อพเพอร์ตี้ Headshots ของเหตุการณ์ match_completed ผลรวม ไม่มี
มูลค่าทักษะทั้งหมด พร็อพเพอร์ตี้ Skill_value ของเหตุการณ์ match_completed ผลรวม ไม่มี
การจำลองการจัดการอีสปอร์ต การแข่งขันที่ชนะ พร็อพเพอร์ตี้ผลลัพธ์ของเหตุการณ์ match_completed จำนวน Result = "Won"
จำนวนประตูทั้งหมดที่ทำได้ พร็อพเพอร์ตี้ Goals_scored ของเหตุการณ์ match_completed ผลรวม ไม่มี
ชนะการแข่งขันระดับยาก พร็อพเพอร์ตี้ผลลัพธ์ของเหตุการณ์ hard_match_completed จำนวน Result = "Won"
ทีมที่มีผลต่างประตูได้เสียสูงสุดเป็นผู้ชนะ พร็อพเพอร์ตี้ Goal_difference ของเหตุการณ์ match_completed สูงสุด Result = "Won"
การฝึกซ้อมทั้งหมด พร็อพเพอร์ตี้ Drills_done ของเหตุการณ์ training_completed ผลรวม ไม่มี
การฝึกอบรมทั้งหมดที่เสร็จสมบูรณ์ พร็อพเพอร์ตี้ใดก็ได้ของเหตุการณ์ training_completed จำนวน ไม่มี

รายละเอียดการผสานรวม

ส่วนนี้จะแสดงวิธีสร้างเหตุการณ์และส่งเหตุการณ์ทั้งในการผสานรวมฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์

ควรส่งข้อมูลเมื่อใด

เหตุการณ์ของผู้เล่นแสดงถึงการดำเนินการในเกมที่เกี่ยวข้องกับการทำ Game Loop ให้เสร็จสมบูรณ์หรือช่วงเวลาที่เฉพาะเจาะจงในเกม ส่งเหตุการณ์เหล่านี้ทันทีที่เกิดขึ้น เช่น ส่งเหตุการณ์การเล่น Game Loop จนจบเมื่อเล่น Game Loop จบ

เหตุการณ์ progressUpdate แสดงระดับความคืบหน้าปัจจุบันของผู้เล่น ควรส่งข้อมูลสถิติความคืบหน้าโดยใช้เหตุการณ์นี้ในสถานการณ์ต่อไปนี้

  1. เมื่อใดก็ตามที่มีการอัปเดตความคืบหน้าปัจจุบัน ให้ส่งค่าล่าสุดทันที
  2. เมื่อใดก็ตามที่ผู้เล่นเปิดเกม เพื่อให้แน่ใจว่าสถิตินี้จะแสดงต่อผู้เล่นตลอดเวลา

เส้นทางการผสานรวม

การผสานรวมมี 2 เส้นทาง ได้แก่ ไคลเอ็นต์และเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์

การผสานรวมแบบเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์

ปลายทาง API สาธารณะช่วยให้คุณส่งเหตุการณ์ในเพย์โหลดคำขอได้โดยใช้การกำหนดค่าต่อไปนี้

คำขอ HTTP

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

พารามิเตอร์เส้นทาง
พารามิเตอร์ ประเภทข้อมูล คำอธิบาย
playerId สตริง รหัส PGS ของผู้เล่น

การให้สิทธิ์และการตรวจสอบสิทธิ์

การเรียก API แบบเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์จะเป็นไปตามหลักเกณฑ์การเข้าถึงบริการเกมของ Play ฝั่งเซิร์ฟเวอร์มาตรฐานโดยใช้ OAuth 2.0 คำขอต้องมีโทเค็นสำหรับผู้ถือที่ได้รับสิทธิ์ด้วยขอบเขต https://www.googleapis.com/auth/games

เหตุการณ์: เนื้อหาคำขอ

API แบ็กเอนด์มีขีดจำกัดการตรวจสอบโครงสร้างที่เข้มงวด ดังนี้

  • ขนาดกลุ่ม: สูงสุด 30 เหตุการณ์ต่อ BatchRecordEventsRequest
  • จำนวนพร็อพเพอร์ตี้: คุณสมบัติที่กำหนดเองสูงสุด 25 รายการต่อPlayerGameEvent
  • ขีดจำกัดความยาว: ชื่อเหตุการณ์ (สูงสุด 100 อักขระ), คีย์พร็อพเพอร์ตี้ (สูงสุด 100 อักขระ) และค่าสตริงพร็อพเพอร์ตี้ (สูงสุด 1,024 อักขระ)
  • รหัสเหตุการณ์: ต้องเป็นสตริง UUID 36 อักขระที่ถูกต้อง
  • ลองอีกครั้งและการแคช: หลีกเลี่ยงการแคชหรือการสะสมเหตุการณ์มากเกินไปในเครื่องหาก 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 การกำหนดค่าสถิติเกม
กันยายน 2569 ไม่มี ผู้เล่นจะเริ่มเห็นสถิติเกมในโปรไฟล์เกมเมอร์ของตน