เริ่มต้นใช้งานบริการเกมของ Play สำหรับภาษา C และ C++

คู่มือนี้จะอธิบายวิธีตั้งค่าโปรเจ็กต์เกม C หรือ C++ เนทีฟเพื่อใช้ SDK เนทีฟของบริการเกมของ Play v2 และผสานรวมบริการลงชื่อเข้าใช้ คุณต้องผสานรวมการลงชื่อเข้าใช้เพื่อผสานรวมฟีเจอร์อื่นๆ ของบริการเกมของ Play เข้ากับเกม และผสานรวมบริการเกมของ Play เข้ากับเซิร์ฟเวอร์เกมแบ็กเอนด์

ฟีเจอร์ที่รองรับ

Play Games Services Native SDK เวอร์ชัน 2 อยู่ในรุ่นเบต้าและรองรับเฉพาะบริการลงชื่อเข้าใช้ แต่ยังไม่รองรับฟีเจอร์อื่นๆ ของบริการ Play Games

เอกสารอ้างอิง API

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

ข้อกำหนด

  • โปรเจ็กต์เกมที่ใช้ C หรือ C++ แบบเนทีฟเป็นภาษาโปรแกรมหลัก

  • โปรเจ็กต์เกมและสภาพแวดล้อมการพัฒนาซอฟต์แวร์ต้องตั้งค่าระบบบิลด์ Gradle

ก่อนจะเริ่มต้น

คุณต้องตั้งค่าบริการเกมของ Play ใน Google Play Console

ตั้งค่าโปรเจ็กต์เกม

ทำตามขั้นตอนต่อไปนี้เพื่อตั้งค่าโปรเจ็กต์เกม

อัปเดต CMakeLists.txt

ในไฟล์ CMakeLists.txt ให้เพิ่มโค้ดต่อไปนี้

  find_package(com.google.android.gms.games.v2.c REQUIRED CONFIG)    // link games_static for -DANDROID_STL=c++_static or default   // link games_shared for -DANDROID_STL=c++_shared   target_link_libraries(     app PUBLIC com.google.android.gms.games.v2.c::games_static) 

อัปเดต build.gradle

ในไฟล์ build.gradle ระดับแอป ให้ทําดังนี้

  • ตรวจสอบว่าได้เปิดใช้ฟีเจอร์การสร้างบ้านสำเร็จรูป

  • เพิ่มการพึ่งพาสำหรับ Play Games Services Native SDK เวอร์ชัน 2

    • com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1

ตัวอย่างเช่น

  android {     ...     buildFeatures {       prefab true     }     ...   }   dependencies {     ...     implementation "com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1"   } 

อัปเดต AndroidManifest.xml

  1. ในไฟล์ AndroidManifest.xml ให้กําหนดรหัสโปรเจ็กต์บริการเกมของ Play โดยการเพิ่มบรรทัดต่อไปนี้ลงในไฟล์

    <manifest>   <application>     <meta-data android:name="com.google.android.gms.games.APP_ID"                android:value="@string/game_services_project_id"/>   </application> </manifest> 
  2. สร้างทรัพยากรสตริงสำหรับรหัสโปรเจ็กต์ ซึ่งจะช่วยให้เกมเข้าถึงรหัสได้เมื่อสร้าง หากต้องการสร้างทรัพยากร ให้สร้างไฟล์ project_root/app/src/main/res/values/games-ids.xml แล้วเพิ่มข้อมูลต่อไปนี้

    <?xml version="1.0" encoding="utf-8"?> <resources>     <string name="game_services_project_id"             translatable="false">add your Project ID here</string> </resources> 
  3. สร้างและทดสอบเกม หากดำเนินการสำเร็จ เมื่อคุณเปิดเกม ระบบจะแสดงข้อความแจ้งให้ลงชื่อเข้าใช้หรือแบนเนอร์การลงชื่อเข้าใช้สำเร็จ

รับรหัสผู้เล่น

เกมของคุณเข้าถึงข้อมูลผู้เล่นที่ลงชื่อเข้าใช้ได้โดยการดึงข้อมูลรหัสผู้เล่น คุณสามารถเรียกข้อมูลรหัสผู้เล่นได้โดยเรียกใช้GetPlayerID ฟังก์ชัน ซึ่งแสดงในตัวอย่างต่อไปนี้

#include <assert.h> #include "gni/gni.h" #include "gni/gni_task.h" #include "pgs/pgs_play_games.h" #include "pgs/pgs_players_client.h"  // A callback for a GniTask returned from PgsPlayersClient_getCurrentPlayerId. void OnGetCurrentPlayerIdCompleteCallback(GniTask *task, void *user_data) {     if (!GniTask_isSuccessful(task)) {       const char *error_message = nullptr;       GniTask_getErrorMessage(task, &error_message);        // Log error message here.        GniString_destroy(error_message);       GniTask_destroy(task);       return;    }     const char *result = nullptr;    PgsPlayersClient_getCurrentPlayerId_getResult(task, &result);     // Log player id here.     GniString_destroy(result);    GniTask_destroy(task); }  // Gets the player ID. void GetPlayerId(jobject main_activity) {    static const PgsPlayersClient *players_client =            PgsPlayGames_getPlayersClient(main_activity);     GniTask *get_current_player_id_task =            PgsPlayersClient_getCurrentPlayerId(players_client);    assert(get_current_player_id_task != nullptr);    GniTask_addOnCompleteCallback(get_current_player_id_task,                                  OnGetCurrentPlayerIdCompleteCallback,                                  nullptr); }  // Entry point for our test app void TestPGSNative(JNIEnv *env, jobject main_activity) {    JavaVM *java_vm;    env->GetJavaVM(&java_vm);     GniCore_init(java_vm, main_activity);     GetPlayerId(main_activity); } 

เปิดข้อความแจ้งให้ลงชื่อเข้าใช้อีกครั้ง

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

การให้สิทธิ์เซิร์ฟเวอร์เกม

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

ดูข้อมูลเพิ่มเติมได้ที่คู่มือการเข้าถึงเซิร์ฟเวอร์