Bu kılavuzda, Play Games Hizmetleri v2 Native SDK'sını kullanmak ve platform kimlik doğrulamasını entegre etmek için yerel bir C veya C++ oyun projesinin nasıl ayarlanacağı açıklanmaktadır. Diğer Play Oyun Hizmetleri özelliklerini oyununuza ve Play Oyun Hizmetleri'ni arka uç oyun sunucunuza entegre etmek için entegrasyon gereklidir.
Desteklenen özellikler
Play Games Hizmetleri v2 Yerel SDK'sı beta sürümündedir ve yalnızca oturum açma hizmetini destekler. Diğer Play Games Hizmetleri özellikleri henüz desteklenmemektedir.
API referans belgeleri
SDK'nın başlık dosyaları, API'lerle ilgili referans belgelerini içerir. Başlık dosyaları, projenizi SDK deposuyla senkronize ettikten sonra kullanılabilen SDK dosyalarındaki include
klasöründe bulunur.
Şartlar
Birincil programlama dili olarak yerel C veya C++ kullanılan bir oyun projesi.
Oyun projenizde ve geliştirme ortamınızda Gradle derleme sistemi kurulu olmalıdır.
Başlamadan önce
Google Play Console'da Play Games Hizmetleri'ni ayarlamanız gerekir.
Oyun projenizi oluşturma
Oyun projenizi oluşturmak için aşağıdaki adımları tamamlayın.
CMakeLists.txt dosyasını güncelleme
CMakeLists.txt
dosyanıza aşağıdaki kodu 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üncelleme
Uygulama düzeyindeki build.gradle
dosyanızda şunları yapın:
Prefabrik yapı özelliğinin etkinleştirildiğinden emin olun.
Play Oyun Hizmetleri v2 Yerel SDK'sı için 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. Aşağıdaki satırları dosyaya ekleyerek bunu yapabilirsiniz:<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 sayede oyununuz, derleme sırasında kimliğe erişebilir. Kaynağı oluşturmak için dosyayı oluşturun
project_root/app/src/main/res/values/games-ids.xml
, ve aşağıdakileri 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şturun ve test edin. İşlem başarılı olursa oyununuzu başlattığınızda oturum açma istemi veya başarılı oturum açma banner'ı gösterilir.
Oyuncu kimliğini alma
Oyununuz, kimliği doğrulanmış bir oyuncunun oyuncu kimliğini alarak oyuncu bilgilerine erişebilir. Aşağıdaki örnekte gösterildiği gibi GetPlayerID
işlevini çağırarak oyuncu kimliğini 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şlatma
Bir oyuncu, oyununuz başlatıldığında otomatik olarak gösterilen ilk Google Play Games Hizmetleri oturum açma istemini reddederse oyun oturumu sırasında fikrini değiştirebilir. Şu anda kimliği doğrulanmış oyuncu olmadığı sürece PgsGamesSignInClient_signIn
işlevini çağırarak oturum açma istemini yeniden başlatabilirsiniz.
Oyun sunucusu yetkilendirmesi
Bir oyuncu Play Games Hizmetleri'nde kimliğini başarıyla doğruladıktan sonra oyun istemciniz, 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 sayede oyun sunucunuz, kimliği doğrulanmış oyuncu için verileri alabilir, güncelleyebilir ve depolayabilir. PgsGamesSignInClient_requestServerSideAccess
işlevini çağırarak sunucu yetkilendirme kodunu alabilirsiniz.
Daha fazla bilgi için sunucu erişimi kılavuzuna bakın.