Questa guida descrive come configurare un progetto di gioco nativo C o C++ per utilizzare l'SDK nativo Play Services v2 e integrare il servizio di accesso. L'integrazione dell'accesso è necessaria per integrare altre funzionalità dei servizi per i giochi di Play nel tuo gioco e per integrare i servizi per i giochi di Play nel tuo server di gioco di backend.
Funzionalità supportate
L'SDK nativo di Play Services v2 è in versione beta e supporta solo il servizio di accesso. Non supporta ancora altre funzionalità di Play Giochi.
Documentazione di riferimento dell'API
I file di intestazione dell'SDK contengono la documentazione di riferimento per le API. I file di intestazione si trovano nella cartella include
dei file dell'SDK, che sono disponibili dopo aver sincronizzato il progetto con il repository dell'SDK.
Requisiti
Un progetto di gioco che utilizza C o C++ nativo come linguaggio di programmazione principale.
Il progetto di gioco e l'ambiente di sviluppo devono avere il sistema di compilazione Gradle configurato.
Prima di iniziare
Devi configurare i servizi per i giochi di Play in Google Play Console.
Configurare il progetto di gioco
Completa i seguenti passaggi per configurare il progetto di gioco.
Aggiorna CMakeLists.txt
Nel file CMakeLists.txt
, aggiungi il seguente codice:
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)
Aggiorna build.gradle
Nel file build.gradle
a livello di app:
Assicurati che la funzionalità di compilazione del prefab sia attivata.
Aggiungi la dipendenza per l'SDK nativo Play Games Services 2:
com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1
Ecco un esempio:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:17.0.0-beta1"
}
Aggiorna AndroidManifest.xml
Nel file
AndroidManifest.xml
, definisci l'ID progetto dei servizi per i giochi di Google Play. Puoi farlo aggiungendo al file le righe seguenti:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>
Crea una risorsa stringa per l'ID progetto. In questo modo, il gioco può accedere all'ID al momento della compilazione. Per creare la risorsa, crea il file
project_root/app/src/main/res/values/games-ids.xml
e aggiungi quanto segue:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>
Crea e testa il tuo gioco. Se l'operazione va a buon fine, quando avvii il gioco viene visualizzato un messaggio di richiesta di accesso o un banner di accesso riuscito.
Recuperare l'ID player
Il tuo gioco può accedere alle informazioni del giocatore che ha eseguito l'accesso recuperando il suo ID. Puoi recuperare un ID giocatore chiamando la funzione GetPlayerID
, come mostrato nell'esempio seguente.
#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);
}
Riavviare la richiesta di accesso
Se un giocatore rifiuta la richiesta di accesso iniziale ai servizi per i giochi di Play visualizzata automaticamente all'avvio del gioco, potrebbe cambiare idea durante la sessione di gioco. Puoi riavviare la richiesta di accesso chiamando
PgsGamesSignInClient_signIn
, a condizione che nessun giocatore abbia eseguito l'accesso.
Autorizzazione del server di gioco
Una volta che un giocatore ha eseguito l'accesso ai servizi per i giochi di Google Play, il client di gioco può richiedere un codice di autorizzazione del server che il server di gioco di backend può utilizzare per comunicare in modo sicuro con i servizi per i giochi di Google Play. In questo modo, il server di gioco può recuperare, aggiornare e memorizzare i dati del giocatore che ha eseguito l'accesso. Puoi recuperare il codice di autorizzazione del server chiamando la funzione PgsGamesSignInClient_requestServerSideAccess
.
Per ulteriori informazioni, consulta la guida all'accesso al server.