Bu rehberde, Play Games Hizmetleri v2 Yerel SDK'yı kullanmak için yerel bir C veya C++ oyun projesinin nasıl oluşturulacağı ve Oturum açma hizmetinin nasıl entegre edileceği açıklanmaktadır. Diğer Play Games Hizmetleri özelliklerini oyununuza entegre etmek ve Play Games Hizmetleri'ni arka uç oyun sunucunuza entegre etmek için oturum açma entegrasyonu gereklidir.
Desteklenen özellikler
Play Games Hizmetleri v2 Yerel SDK beta sürümündedir ve yalnızca Oturum açma hizmetini destekler. Diğer Play Oyun Hizmetleri özellikleri henüz desteklenmemektedir.
API referans dokümanları
SDK'nın başlık dosyaları, API'lerle ilgili referans dokümanları içerir. Başlık dosyaları, SDK deposundaki include
klasöründe bulunur ve projeniz, SDK deposuyla senkronize edildikten sonra kullanılabilir.
Şartlar
Birincil programlama dili olarak yerel C veya C++ kullanan bir oyun projesi.
Oyun projenizde ve geliştirme ortamınızda Gradle derleme sistemi bulunmalıdır.
Başlamadan önce
Google Play Console'da Play Games Hizmetleri'ni kurmanız gerekir.
Oyun projenizi oluşturun
Oyun projenizi oluşturmak için aşağıdaki adımları tamamlayın.
CMakeLists.txt dosyasını güncelle
Aşağıdaki kodu CMakeLists.txt
dosyanıza ekleyin:
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 dosyasını güncelleyin
Uygulama düzeyindeki build.gradle
dosyanızda aşağıdakileri yapın:
Prefab derleme özelliğinin etkinleştirildiğinden emin olun.
Play Games Hizmetleri v2 Yerel SDK'ya bağımlılığı ekleyin:
com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1
Aşağıda bununla ilgili bir örnek verilmiştir:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1"
}
AndroidManifest.xml dosyasını güncelleyin
AndroidManifest.xml
dosyanızda Play Games Hizmetleri proje kimliğinizi tanımlayın. Bunu yapmak için dosyaya aşağıdaki satırları ekleyin:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>
Proje kimliğiniz için bir dize kaynağı oluşturun. Bu, oyununuzun oluşturma sırasında kimliğe erişmesine olanak tanır. Kaynağı oluşturmak için
project_root/app/src/main/res/values/games-ids.xml
dosyasını oluşturup aşağıdaki bilgileri ekleyin:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>
Oyununuzu oluşturup test edin. Başarılı olursa, oyununuzu başlattığınızda bir oturum açma istemi veya başarılı bir oturum açma banner'ı görüntülenir.
Oynatıcı kimliğini al
Oyununuz, oturum açmış bir oyuncunun oyuncu bilgilerini alarak oyuncu bilgilerine erişebilir. Aşağıdaki örnekte gösterilen GetPlayerID
işlevini çağırarak oynatıcı kimliği alabilirsiniz.
#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);
}
Oturum açma istemini yeniden başlatın
Bir oyuncu, oyununuz başladığında otomatik olarak görüntülenen ilk Play Games Hizmetleri oturum açma istemini reddederse oyun oturumu sırasında fikrini değiştirebilir. Şu anda hiçbir oyuncunun oturumu açık olmadığı sürece PgsGamesSignInClient_signIn
adlı cihazı arayarak oturum açma istemini yeniden başlatabilirsiniz.
Oyun sunucusu yetkilendirmesi
Oyuncu, Play Games Hizmetleri'nde başarıyla oturum açtıktan sonra arka uç oyun sunucunuzun Play Games Hizmetleri ile güvenli bir şekilde iletişim kurmak için kullanabileceği bir sunucu yetkilendirme kodu isteyebilir. Bu şekilde, oyun sunucunuz oturum açmış oyuncuya ait verileri alabilir, güncelleyebilir ve depolayabilir. Sunucu yetkilendirme kodunu PgsGamesSignInClient_requestServerSideAccess
işlevini çağırarak alabilirsiniz.
Daha fazla bilgi için sunucu erişim kılavuzuna bakın.