במדריך הזה מוסבר איך להגדיר פרויקט משחק מקורי ב-C או ב-C++ כדי להשתמש ב-Play Games Services v2 Native SDK ולשלב את אימות הפלטפורמה. השילוב נדרש כדי לשלב תכונות אחרות של Play Games Services במשחק, וכדי לשלב את Play Games Services בשרת העורפי של המשחק.
תכונות נתמכות
ה-SDK המקורי של Play Games Services בגרסה 2 נמצא בגרסת בטא ותומך רק בשירות הכניסה. בשלב הזה, אין תמיכה בתכונות אחרות של Play Games Services.
מאמרי העזרה של ה-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 Services שמוצגת באופן אוטומטי כשהמשחק מופעל, הוא יכול לשנות את דעתו במהלך סשן המשחק. אפשר להציג מחדש את בקשת הכניסה על ידי קריאה ל-PgsGamesSignInClient_signIn כל עוד אין שחקנים מאומתים כרגע.
הרשאה לשרת גיימינג
אחרי שהשחקן עובר אימות ב-Play Games Services, לקוח המשחק יכול לבקש קוד הרשאה לשרת, ששרת הגיימינג בק-אנד יכול להשתמש בו כדי לתקשר בצורה מאובטחת עם Play Games Services. כך שרת המשחקים יכול לאחזר, לעדכן ולאחסן נתונים של השחקן המאומת. אפשר לאחזר את קוד ההרשאה לשרת על ידי קריאה לפונקציה PgsGamesSignInClient_requestServerSideAccess.
מידע נוסף זמין במדריך לגישה לשרת.