En esta guía, se muestra cómo usar las APIs de tablas de clasificación del SDK de C++ de los Servicios de Play Games para crear tablas de clasificación visuales, registrar la puntuación de un jugador y compararla con la correspondiente a sus sesiones anteriores. Puedes encontrar las APIs en
LeaderboardsClient.
Antes de comenzar
Si aún no lo hiciste, puede resultarte útil revisar los conceptos de juegos de tablas de clasificación.
Antes de comenzar a programar mediante las API de tablas de clasificación, haz lo siguiente:
Sigue las instrucciones para instalar y configurar tu app para usar los Servicios de juego de Google Play en la guía Cómo configurar el SDK de los Servicios de Google Play.
Si deseas definir las tablas de clasificación que quieres que el juego muestre o actualice, sigue las instrucciones de la guía de Google Play Console.
Familiarízate con las recomendaciones que se describen en la lista de tareas de calidad.
Cómo obtener el cliente de tablas de clasificación
A fin de comenzar a usar la API de tablas de clasificación, el juego primero debe obtener un
LeaderboardsClient objeto.
Para ello, llama al PgsLeaderboardsClient_create()
método y pasa la actividad.
Cómo actualizar la puntuación del jugador
Cuando la puntuación del jugador cambia (por ejemplo, cuando se termina el
juego), el juego puede actualizar la puntuación en la tabla de clasificación llamando a
PgsLeaderboardsClient_submitScoreImmediate. Debes pasar el ID de la tabla de clasificación, el valor de la puntuación sin procesar, una etiqueta de puntuación opcional y una función de devolución de llamada.
// Callback function to handle the result of submitting the score void OnScoreSubmitted(PgsStatusCode status_code, PgsScoreSubmissionData* score_submission_data, void* user_data) { if (status_code == PGS_STATUS_SUCCESS) { // Score submitted successfully // You can inspect score_submission_data for details // Remember to release the data when done: PgsScoreSubmissionData_Release(score_submission_data); } else { // Handle error } } // Function to submit the score void SubmitScore(PgsLeaderboardsClient* client, const char* leaderboard_id, int64_t score) { const char* score_tag = NULL; // Optional tag PgsLeaderboardsClient_submitScoreImmediate( client, leaderboard_id, score, score_tag, OnScoreSubmitted, NULL // user_data - optional context pointer ); } // Example usage: // Assuming 'my_leaderboard_id' is defined elsewhere, e.g., fetched from resources // SubmitScore(leaderboards_client, my_leaderboard_id, 1337);
Una práctica recomendada es administrar los IDs de las tablas de clasificación como constantes o recursos dentro del código de c++.
Cómo mostrar una tabla de clasificación
Si deseas mostrar la interfaz de usuario de la tabla de clasificación predeterminada para una tabla de clasificación específica, llama a PgsLeaderboardsClient_showLeaderboardUI. Esta función requiere el controlador del cliente, la actividad, el ID de la tabla de clasificación, el período y la colección, y una devolución de llamada.
// Callback function to handle the result of showing the UI void OnShowLeaderboardUI(PgsStatusCode status_code, bool success, void* user_data) { if (status_code == PGS_STATUS_SUCCESS && success) { // UI was shown successfully } else { // Handle error or failure to show UI } } // Function to show a specific leaderboard UI void ShowLeaderboard(PgsLeaderboardsClient* client, jobject activity, const char* leaderboard_id) { PgsLeaderboardsClient_showLeaderboardUI( client, activity, leaderboard_id, PGS_LEADERBOARD_TIME_SPAN_ALL_TIME, // Or PGS_LEADERBOARD_TIME_SPAN_DAILY, PGS_LEADERBOARD_TIME_SPAN_WEEKLY PGS_LEADERBOARD_COLLECTION_PUBLIC, // Or PGS_LEADERBOARD_COLLECTION_FRIENDS OnShowLeaderboardUI, NULL // user_data - optional context pointer ); } // Example usage: // ShowLeaderboard(leaderboards_client, android_activity, my_leaderboard_id);
Esta función muestra la IU. El objeto activity proporciona el contexto para mostrar la IU.