Bu kılavuzda, Play Games Hizmetleri v2 Native SDK'sını kullanmak ve Oturum açma hizmetini entegre etmek için yerel bir C veya C++ oyun projesinin nasıl ayarlanacağı açıklanmaktadır. Diğer Play Games Hizmetleri özelliklerini oyununuza 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'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, oturum açmış 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 oturum açmış 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 oturum açtı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, oyun sunucunuzun oturum açmış oyuncu için verileri almasına, güncellemesine ve depolamasına olanak tanır. PgsGamesSignInClient_requestServerSideAccess
işlevini çağırarak sunucu yetkilendirme kodunu alabilirsiniz.
Daha fazla bilgi için sunucu erişimi kılavuzuna bakın.