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

Bu kılavuzda, Play Games Hizmetleri v2 Yerel SDK'yı kullanmak ve Oturum açma hizmetini entegre etmek için yerel C veya C++ oyun projesinin nasıl oluşturulacağı açıklanmaktadır. Diğer Play Oyun 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'sı beta sürümündedir ve yalnızca Oturum Açma hizmetini destekler. Play Games Hizmetleri'nin diğer özellikleri henüz desteklenmemektedir.

API referans belgeleri

SDK'nın başlık dosyaları, API'lerin referans belgelerini içerir. Üstbilgi 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 projeniz ve geliştirme ortamınızda Gradle derleme sistemi ayarlanmış olmalıdır.

Başlamadan önce

Google Play Console'da Play Oyun Hizmetleri'ni kurmanı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ü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

  1. AndroidManifest.xml dosyanızda Play Oyun Hizmetleri proje kimliğinizi tanımlayın. Dosyaya aşağıdaki satırları 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>
    
  2. Proje kimliğiniz için bir dize kaynağı oluşturun. Bu işlem, oyununuzun derleme sırasında kimliğe erişmesine izin verir. 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. Başarılı olursa, oyununuzu başlattığınızda bir oturum açma istemi veya başarılı bir oturum açma banner'ı gösterilir.

Oynatıcı kimliğini al

Oyununuz, oturum açmış bir oyuncunun oyuncu kimliğini alarak ilgili oyuncu bilgilerine erişebilir. Aşağıdaki örnekte gösterilen GetPlayerID işlevini çağırarak oynatıcı kimliğini alabilirsiniz.

başlıklı makaleyi inceleyin.
#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şlatıldığında otomatik olarak görüntülenen ilk Play Oyun Hizmetleri oturum açma istemini reddederse oyun oturumu sırasında fikrini değiştirebilir. Şu anda hiçbir oyuncu oturum açmamışsa PgsGamesSignInClient_signIn çağrısı yaparak oturum açma istemini yeniden başlatabilirsiniz.

Oyun sunucusu yetkilendirmesi

Bir oyuncu, Play Oyun Hizmetleri'nde başarılı bir şekilde oturum açtıktan sonra, oyun istemciniz arka uç oyun sunucunuzun Play Oyun Hizmetleri ile güvenli bir şekilde iletişim kurmak için kullanabileceği bir sunucu yetkilendirme kodu isteyebilir. Bu işlem, oyun sunucunuzun oturum açmış oyuncu için veri almasını, güncellemesini ve depolamasını sağlar. PgsGamesSignInClient_requestServerSideAccess işlevini çağırarak sunucu yetkilendirme kodunu alabilirsiniz.

Daha fazla bilgi için sunucu erişimi kılavuzuna bakın.