במדריך הזה מוסבר איך להגדיר פרויקט משחק מקורי ב-C או ב-C++ כדי להשתמש ב-Play Games Services v2 Native SDK ולשלב את אימות הפלטפורמה. השילוב נדרש כדי לשלב תכונות אחרות של Play Games Services במשחק, וכדי לשלב את Play Games Services בשרת המשחק של העורף האחורי.
תכונות נתמכות
גרסת הבטא של Play Games Services v2 Native SDK תומכת רק בשירות הכניסה. בשלב הזה, אין תמיכה בתכונות אחרות של שירותי המשחקים של Play.
מאמרי העזרה של ה-API
קבצי הכותרת של ה-SDK מכילים מסמכי עזר ל-API. קבצי הכותרות נמצאים בתיקייה include
בקבצי ה-SDK, שזמינים אחרי שמסנכרנים את הפרויקט עם מאגר ה-SDK.
דרישות
פרויקט משחק שמשתמש ב-C או ב-C++ מקוריים כשפת התכנות העיקרית.
בפרויקט המשחק ובסביבת הפיתוח שלכם צריכה להיות מוגדרת מערכת ה-build של Gradle.
לפני שמתחילים
צריך להגדיר את Play Games Services ב-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
ברמת האפליקציה, מבצעים את הפעולות הבאות:
מוודאים שתכונת ה-build של prefab מופעלת.
מוסיפים את התלות ב-Play Games Services v2 Native SDK:
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
בקובץ
AndroidManifest.xml
, מגדירים את מזהה הפרויקט ב-Play Games Services. כדי לעשות את זה, מוסיפים את השורות הבאות לקובץ:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>
יוצרים משאב מחרוזת למזהה הפרויקט. כך המשחק יוכל לגשת למזהה בזמן הבנייה. כדי ליצור את המשאב, יוצרים את הקובץ
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>
מפתחים את המשחק ובודקים אותו. אם הפעולה תצליח, כשמפעילים את המשחק תוצג בקשה להיכנס לחשבון או באנר שמאשר שהכניסה לחשבון בוצעה בהצלחה.
קבלת מזהה השחקן
המשחק יכול לגשת לפרטי השחקן של שחקן מאומת על ידי אחזור מזהה השחקן שלו. אפשר לאחזר מזהה של שחקן באמצעות קריאה לפונקציה 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 Games שמוצגת אוטומטית כשהמשחק מופעל, הוא יכול לשנות את דעתו במהלך סשן המשחק. אפשר להציג מחדש את בקשת הכניסה על ידי קריאה ל-PgsGamesSignInClient_signIn
, כל עוד אף שחקן לא מאומת כרגע.
הרשאה לשרת משחקים
אחרי ששחקן עובר אימות ב-Play Games Services, לקוח המשחק יכול לבקש קוד הרשאה לשרת, ששרת המשחק בעורף יכול להשתמש בו כדי לתקשר בצורה מאובטחת עם Play Games Services. ההרשאה הזו מאפשרת לשרת המשחקים לאחזר, לעדכן ולאחסן נתונים של השחקן המאומת. אפשר לאחזר את קוד ההרשאה של השרת באמצעות קריאה לפונקציה PgsGamesSignInClient_requestServerSideAccess
.
מידע נוסף זמין במדריך לגישה לשרת.