Panduan ini menjelaskan cara menyiapkan project game C atau C++ native untuk menggunakan SDK Native Layanan game Play v2 dan mengintegrasikan Layanan login. Integrasi login diperlukan untuk mengintegrasikan fitur Layanan game Play lainnya ke dalam game Anda dan mengintegrasikan Layanan game Play ke server game backend.
Fitur yang didukung
SDK Native Layanan game Play v2 masih dalam versi beta dan hanya mendukung layanan Login. Produk ini belum mendukung fitur Layanan game Play lainnya.
Dokumentasi referensi API
File header untuk SDK berisi dokumentasi referensi untuk API. File header berada di folder include
dalam file SDK, yang tersedia setelah Anda menyinkronkan project dengan repositori SDK.
Persyaratan
Project game yang menggunakan C atau C++ native sebagai bahasa pemrograman utama.
Project dan lingkungan pengembangan game Anda harus sudah menyiapkan sistem build Gradle.
Sebelum memulai
Anda harus menyiapkan Layanan game Play di Konsol Google Play.
Menyiapkan project game Anda
Selesaikan langkah-langkah berikut untuk menyiapkan project game Anda.
Mengupdate CMakeLists.txt
Di file CMakeLists.txt
, tambahkan kode berikut:
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)
Mengupdate build.gradle
Di file build.gradle
tingkat aplikasi, lakukan hal berikut:
Pastikan fitur build prefab diaktifkan.
Tambahkan dependensi untuk SDK Native Layanan game Play v2:
com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1
Berikut contohnya:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1"
}
Mengupdate AndroidManifest.xml
Di file
AndroidManifest.xml
, tentukan project ID Layanan game Play Anda. Anda dapat melakukannya dengan menambahkan baris berikut ke file:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>
Buat resource string untuk project ID Anda. Hal ini memungkinkan game Anda mengakses ID pada waktu build. Untuk membuat resource, buat file
project_root/app/src/main/res/values/games-ids.xml
, lalu tambahkan hal berikut:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>
Membangun dan menguji game Anda. Jika berhasil, saat diluncurkan, game Anda akan menampilkan perintah login atau banner login yang berhasil.
Mendapatkan ID pemain
Game Anda dapat mengakses informasi pemain untuk pemain yang login dengan mengambil
ID pemainnya. Anda dapat mengambil ID pemain dengan memanggil fungsi GetPlayerID
,
yang ditunjukkan dalam contoh berikut.
#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);
}
Meluncurkan ulang perintah login
Jika pemain menolak perintah login Layanan game Play awal yang
otomatis ditampilkan saat game diluncurkan, pemain dapat berubah pikiran
selama sesi game. Anda dapat meluncurkan kembali perintah login dengan memanggil
PgsGamesSignInClient_signIn
selama tidak ada pemain yang login.
Otorisasi server game
Setelah pemain berhasil login ke Layanan game Play, klien game Anda
dapat meminta kode otorisasi server yang dapat digunakan server game backend untuk
berkomunikasi secara aman dengan Layanan game Play. Hal ini memungkinkan server game Anda
mengambil, mengupdate, dan menyimpan data untuk pemain yang login. Anda dapat mengambil kode otorisasi server dengan memanggil fungsi PgsGamesSignInClient_requestServerSideAccess
.
Untuk mendapatkan informasi lebih lanjut, lihat panduan akses server.