Bu kılavuzda, Play Games Hizmetleri v2 Yerel SDK'sını kullanmak ve Oturum Açma hizmetini entegre etmek için yerel bir C veya C++ oyun projesinin nasıl oluşturulacağı açıklanmaktadır. Diğer Play Oyun Hizmetleri özelliklerini oyununuza ve Play Oyun Hizmetleri'ni arka uç oyun sunucunuza entegre etmek için oturum açma entegrasyonu gerekir.
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 özelliklerini henüz desteklemiyor.
API referans dokümanları
SDK'nın başlık dosyaları, API'ler için referans dokümanları içerir. Başlık dosyaları, SDK dosyalarındaki include
klasöründe bulunur. Bu dosyalar, projenizi SDK deposuyla senkronize ettikten 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 kurulmalı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:
Prefab derleme özelliğinin etkinleştirildiğinden emin olun.
Play Oyun Hizmetleri v2 Yerel SDK'sının bağımlılığını 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, dosyaya aşağıdaki satırları ekleyerek 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
project_root/app/src/main/res/values/games-ids.xml
dosyasını oluşturun 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 bir 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österilen 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
Oyununuz başlatıldığında otomatik olarak görüntülenen ilk Play Games Hizmetleri oturum açma istemini reddeden oyuncular, oyun oturumu sırasında fikrini değiştirebilir. Şu anda oturum açmış oyuncu olmadığı sürece PgsGamesSignInClient_signIn
çağrısı yaparak oturum açma istemini yeniden başlatabilirsiniz.
Oyun sunucusu yetkilendirmesi
Bir oyuncu Play Games Hizmetleri'nde başarıyla 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 sayede oyun sunucunuz, oturum açmış oyuncunun verilerini alabilir, güncelleyebilir ve saklayabilir. PgsGamesSignInClient_requestServerSideAccess
işlevini çağırarak sunucu yetkilendirme kodunu alabilirsiniz.
Daha fazla bilgi için sunucu erişim kılavuzuna bakın.