C++ SDK ของบริการเกมของ Google Play มี API สำหรับ C++ เพื่อใช้กับ Google Play Games และมีไว้สำหรับนักพัฒนาที่ใช้งาน C++ อยู่แล้ว ของเกม
ปัจจุบัน SDK ใช้บริการต่อไปนี้
- การให้สิทธิ์
- ความสำเร็จ
- ลีดเดอร์บอร์ด
- กิจกรรม
- เกมที่บันทึกไว้
- การเชื่อมต่อที่อยู่ใกล้เคียง (Android เท่านั้น)
- สถิติผู้เล่น
แนวคิด
คุณจะใช้ SDK ในระดับสูงได้โดยทำตามขั้นตอนต่อไปนี้
- กำหนดค่าแพลตฟอร์มสำหรับ Android
- ใช้
GameServices::Builder
เพื่อกำหนดค่าและสร้างGameServices
ออบเจ็กต์ ออบเจ็กต์GameServices
จะพยายามลงชื่อเข้าใช้และส่งคืนโดยอัตโนมัติ ผลลัพธ์ผ่าน CallbackOnAuthActionFinished()
จดบันทึกผลลัพธ์ ที่แสดงผลโดยการเรียกกลับ หากการพยายามลงชื่อเข้าใช้โดยอัตโนมัติล้มเหลว คุณสามารถ แสดงปุ่มเพื่อให้ผู้ใช้ลงชื่อเข้าใช้ได้ หลังจากได้รับผลลัพธ์
OnAuthActionFinished()
แล้ว คุณสามารถใช้GameServices
ออบเจ็กต์และผู้จัดการย่อยของออบเจ็กต์ดังกล่าวเพื่อเรียกบริการเกมของ Play ซึ่งรวมถึง- ลงชื่อเข้าใช้ (หลังจากให้สิทธิ์ไม่สำเร็จ):
StartAuthorizationUI()
- ปลดล็อกความสำเร็จ:
Achievements().Unlock()
- แสดงรางวัลพิเศษโดยใช้ UI ในตัว:
Achievements().ShowAllUI()
- ส่งคะแนนสูงสุด:
Leaderboards().SubmitScore()
- ออกจากระบบ:
SignOut()
- ลงชื่อเข้าใช้ (หลังจากให้สิทธิ์ไม่สำเร็จ):
เมื่อใช้ออบเจ็กต์
GameServices
เสร็จแล้ว ให้รีเซ็ตหรือทำลายรายการดังกล่าว
ในระดับที่ละเอียดกว่า
เริ่มต้นการกำหนดค่าแพลตฟอร์ม: เป็นออบเจ็กต์ที่มี ข้อมูลการเริ่มต้นเฉพาะแพลตฟอร์ม สำหรับ Android การกำหนดค่าแพลตฟอร์มจะประกอบด้วย Java VM และตัวชี้ไปยัง
Activity
ปัจจุบัน:// In android_main(), create a platform configuration // and bind the object activity. // Alternately, attach the activity in JNI_Onload(). gpg::AndroidPlatformConfiguration platform_configuration; platform_configuration.SetActivity(state->activity->clazz);
สร้างออบเจ็กต์
GameServices
: ออบเจ็กต์นี้เป็นจุดแรกเข้าหลักสำหรับ ฟังก์ชันการทำงานของบริการเกมของ Google Play สร้างอินสแตนซ์GameServices
รายการแล้ว ด้วยGameServices::Builder
ในการใช้งานส่วนใหญ่ ออบเจ็กต์
GameServices
ที่ระบุจะยังคงอยู่ตราบเท่าที่คุณ สิ่งที่สภาพแวดล้อม C ทำได้ คุณจะไม่ต้องเริ่มต้นใหม่เมื่อ AndroidActivity
หยุดชั่วคราวและกลับมาทำงานอีกครั้ง// Creates a GameServices object that has lambda callbacks. game_services_ = gpg::GameServices::Builder() .SetDefaultOnLog(gpg::LogLevel::VERBOSE) .SetOnAuthActionStarted([started_callback](gpg::AuthOperation op) { is_auth_in_progress_ = true; started_callback(op); }) .SetOnAuthActionFinished([finished_callback](gpg::AuthOperation op, gpg::AuthStatus status) { LOGI("Sign in finished with a result of %d", status); is_auth_in_progress_ = false; finished_callback(op, status); }) .Create(pc);
ใช้คลาส Manager เพื่อจัดการออบเจ็กต์
GameServices
มีการเข้าถึงผู้จัดการจากฟังก์ชันที่เกี่ยวข้องกับอินสแตนซ์และกลุ่มGameServices
ตัวอย่างของรายการเหล่านี้ ได้แก่ ผู้จัดการความสำเร็จและลีดเดอร์บอร์ด บัญชีเหล่านี้ไม่มีรายการที่ผู้ใช้มองเห็น ระบุตนเอง ระบบจะแสดงผลผู้จัดการโดยการอ้างอิง และแท็กที่มี อินสแตนซ์GameServices
จะควบคุมวงจรการใช้งาน ลูกค้าไม่ควรถือสายรอ ไปยังการอ้างอิง "ผู้จัดการ" แต่ลูกค้าของคุณควรที่จะมีGameServices
ผู้จัดการจะแสดงผลข้อมูลผ่านออบเจ็กต์ประเภทค่าที่เปลี่ยนแปลงไม่ได้ ค่าเหล่านี้ แสดงให้เห็นมุมมองที่สอดคล้องกันของข้อมูลที่สำคัญ ณ ช่วงเวลาเมื่อ ในการค้นหา
// Submit a high score game_services_->Leaderboards().SubmitScore(leaderboard_id, score); // Show the default Achievements UI game_services_->Achievements().ShowAllUI();
เมื่อใช้ออบเจ็กต์
GameServices
เสร็จแล้ว ให้ล้างตาม จะเรียกreset()
ในunique_ptr
ที่เป็นเจ้าของ หรือโดยปล่อยให้unique_ptr
จะทำลายผลิตภัณฑ์ดังกล่าวโดยอัตโนมัติเมื่ออยู่นอกขอบเขต
โมเดลเทรด
หากไม่ได้ระบุไว้เป็นอย่างอื่น เมธอด GameServices
และ Manager ทั้งหมดมี
การติดตั้งใช้งานแบบอะซิงโครนัสที่ปลอดภัยต่อชุดข้อความ สามารถเรียกใช้ในชุดข้อความใดก็ได้ที่ไม่มี
การล็อกภายนอก และจะดำเนินการตามลำดับที่สอดคล้องกับการเรียกใช้
คำสั่งซื้อ
เมธอด Accessor (วิธีที่อ่านสถานะ) มีรูปแบบหลักๆ 2 รูปแบบ องค์ประกอบ
ประเภทของเมธอด (ที่มีชื่ออย่างเช่น FetchProperty()
) จะให้ผลลัพธ์แบบไม่พร้อมกัน
กับ Callback ที่มีให้ ตัวที่สอง (โดยใช้ชื่ออย่างเช่น
FetchPropertyBlocking()
) แสดงผลลัพธ์แบบพร้อมกันไปยังการเรียกใช้
ชุดข้อความ
// Blocking callback
gpg::AchievementManager::FetchAllResponse fetchResponse =
game_services_->Achievements().FetchAllBlocking(std::chrono::milliseconds(1000));
// Non-blocking callback
game_services_->Achievements().FetchAll(gpg::DataSource::CACHE_OR_NETWORK,
[] (gpg::AchievementManager::FetchAllResponse response) {
LogI("Achievement response status: %d", response.status);});
ระบบจะเรียกใช้ Callback ของผู้ใช้ทั้งหมดในชุดข้อความ Callback เฉพาะ ชุดข้อความนี้ อาจแตกต่างจากแนวคิดแพลตฟอร์มของ "เทรดหลัก" หรือ "UI Thread" นอกจากนี้ คุณควรตรวจสอบว่าการเรียกกลับของผู้ใช้ทำงานได้อย่างรวดเร็ว ชุดข้อความ Callback ที่หยุดชะงัก อาจทำให้เกิดปัญหาที่ผู้ใช้มองเห็นได้ (เช่น การออกจากระบบล่าช้า คำขอ)
ข้อมูลจำเพาะของแพลตฟอร์ม
ในการเริ่มต้นใช้งาน Play Games C++ SDK บน Android ให้ไปที่ คู่มือเริ่มใช้งานฉบับย่อ
อ่านเพิ่มเติม
โปรดอ่านเอกสารประกอบสำหรับชั้นเรียนที่มาใน Google Play Games C++ SDK เพื่อดูรายละเอียดเพิ่มเติมและดู ตัวอย่างที่สาธิตวิธีใช้ SDK
หากเกมของคุณใช้เซิร์ฟเวอร์แบ็กเอนด์ ให้ดู การเปิดใช้การเข้าถึงบริการเกมของ Google Play ฝั่งเซิร์ฟเวอร์