C ve C++ için Play Games Hizmetleri'ni kullanmaya başlama

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

  1. 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>
    
  2. 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>
    
  3. 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.

konuyu ziyaret edin.
#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.