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

Bu kılavuzda Google Play Games Hizmetleri v2 Yerel SDK'sını Oturum açma hizmeti. Oturum açma entegrasyonu gerekiyor Diğer Play Games Hizmetleri özelliklerini entegre edin entegre etmek için Play Games Hizmetleri'ni arka uç oyun sunucusu için geçerlidir.

Desteklenen özellikler

Play Games Hizmetleri v2 Yerel SDK'sı beta sürümündedir ve yalnızca şunları destekler: oturum açma hizmetini kullanarak. Diğer Play Games Hizmetleri henüz desteklenmiyor özellikler hakkında daha fazla bilgi edinin.

API referans belgeleri

SDK'nın başlık dosyaları, API'lerle ilgili referans dokümanları içerir. İlgili içeriği oluşturmak için kullanılan başlık dosyaları, SDK dosyalarındaki include klasöründe bulunur ve projeniz SDK deposuyla senkronize edildikten sonra kullanılabilir.

Gereksinimler

  • Birincil programlama dili olarak yerel C veya C++'ın kullanıldığı bir oyun projesi.

  • Oyun projeniz ve geliştirme ortamınızda Gradle kurulumu için bir model oluşturabilirsiniz.

Başlamadan önce

Play Oyun Hizmetleri'ni şurada ayarlamanız gerekir: Google Play Console

Oyun projenizi oluşturun

Oyun projenizi oluşturmak için aşağıdaki adımları tamamlayın.

CMakeLists.txt 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 şunları yapın:

  • Prefab derleme özelliğinin etkinleştirildiğinden emin olun.

  • Play Games 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'yi güncelle

  1. AndroidManifest.xml dosyanızda Play Games Hizmetleri projenizi tanımlayın Kimlik. Aşağıdaki iki satırı 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>
    
  2. Dize kaynağı oluşturma girin. Bu, oyununuzun derleme sırasında kimliğe erişmesine izin verir. 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>
    
  3. Oyununuzu geliştirip test edin. Başarılı olursa, oyununuzu kullanıma sunduğunuzda bir oturum açma istemi veya başarılı bir oturum açma banner'ı görüntüler.

Oynatıcı kimliğini alma

Oyununuz, oturum açmış bir oyuncunun oyuncu bilgilerine erişebilir. Bunun için diğeri. GetPlayerID öğesini çağırarak oynatıcı kimliğini alabilirsiniz fonksiyonuna ilişkin bir komut dosyası oluşturun.

#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

Bir oyuncu ilk Play Games Hizmetleri oturum açma istemini reddederse her oyun kullanıma sunulduğunda fikrini değiştirebilir, bağlantı kurmalısınız. Şu numarayı arayarak oturum açma istemini yeniden başlatabilirsiniz: Hiçbir oyuncu oturum açmadığı sürece PgsGamesSignInClient_signIn.

Oyun sunucusu yetkilendirmesi

Bir oyuncu Play Oyun Hizmetleri'nde başarıyla oturum açtığında oyun istemciniz arka uç oyun sunucunuzun aşağıdaki işlemler için kullanabileceği bir sunucu yetkilendirme kodu isteyebilir: Play Games Hizmetleri ile güvenli bir şekilde iletişim kurma. Oyun sunucunuz şu işlemleri yapabilir: oturum açmış oynatıcıya ait verileri alma, güncelleme ve depolama. Bu sayfada yöntemini çağırarak sunucu yetkilendirme kodunu PgsGamesSignInClient_requestServerSideAccess işlevi.

Daha fazla bilgi için sunucu erişim rehberini inceleyin.