En este documento, se explica cómo configurar tu proyecto de C++ para C o C++ nativo de la versión 2 y verificar el servicio de autenticación.
Antes de comenzar
Debes configurar los Servicios de juego de Play en Google Play Console.
Requisitos previos de la app
Asegúrate de que el archivo de compilación de tu app use los siguientes valores:
- Una
minSdkVersionde19o más - Una
compileSdkVersionde28o más
Cómo configurar tu proyecto de juego
Completa los siguientes pasos para configurar tu proyecto de juego.
Actualiza build.gradle
En el archivo build.gradle a nivel de la app, haz lo siguiente:
Asegúrate de que la función de compilación prefab esté habilitada.
Agrega la dependencia para el SDK nativo v2 (beta):
com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1
Por ejemplo:
android {
...
buildFeatures {
prefab true
}
...
}
dependencies {
...
implementation "com.google.android.gms:play-services-games-v2-native-c:21.0.0-beta1"
}
Cómo actualizar CMakeLists.txt
En tu archivo CMakeLists.txt, agrega el siguiente código:
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)
Cómo actualizar AndroidManifest.xml
Para definir el ID del proyecto de los Servicios de juego de Play en tu archivo
AndroidManifest.xml, agrega las siguientes líneas:<manifest> <application> <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/game_services_project_id"/> </application> </manifest>Crea un recurso de cadenas para el ID del proyecto. De esta manera, tu juego podrá acceder al ID durante el tiempo de compilación. Para generar el recurso, crea el archivo
project_root/app/src/main/res/values/games-ids.xmly agrega lo siguiente:<?xml version="1.0" encoding="utf-8"?> <resources> <string name="game_services_project_id" translatable="false">add your Project ID here</string> </resources>Compila y prueba tu juego. Si se ejecuta correctamente, cuando inicies el juego, aparecerá un mensaje de acceso o un banner de acceso correcto.
Cómo obtener el ID de jugador
Tu juego puede acceder a la información de jugador de un usuario autenticado recuperando su ID. Puedes recuperar un ID de jugador llamando a la función GetPlayerId, como se muestra en el siguiente ejemplo.
#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);
}
Cómo volver a lanzar el mensaje de acceso
Si un jugador rechaza el mensaje inicial de acceso de los Servicios de juego de Play que se muestra automáticamente cuando se inicia el juego, es posible que cambie de opinión durante la sesión. Puedes volver a lanzar el mensaje de acceso si llamas a PgsGamesSignInClient_signIn, siempre y cuando no se autentiquen los jugadores.
Autorización del servidor de juegos
Una vez que un jugador se autentica correctamente en los Servicios de juego de Play, tu cliente de juego puede solicitar un código de autorización del servidor que tu servidor de juegos de backend puede usar para comunicarse de forma segura con los Servicios de juego de Play. Esto permite que tu servidor de juegos recupere, actualice y almacene datos del jugador autenticado. Puedes recuperar el código de autorización del servidor si llamas a la función PgsGamesSignInClient_requestServerSideAccess.
Para obtener más información, consulta la guía de acceso al servidor.