Este guia mostra como usar as APIs de placares do SDK dos serviços do Google Play Games em C++ para criar placares visuais, registrar a pontuação de um jogador e comparar a pontuação com a de sessões anteriores do jogo. As APIs podem ser
encontradas em LeaderboardsClient.
Antes de começar
Caso ainda não tenha feito isso, recomendamos consultar os conceitos de placares no jogo.
Antes de começar a programar usando as APIs de placares:
Siga as instruções do guia Configurar o SDK do Google Play Services para instalar e configurar seu app e usar os serviços do Google Play Games.
Defina os placares que você quer que o jogo mostre ou atualize seguindo as instruções no guia do Google Play Console.
Conheça melhor as recomendações descritas em Lista de verificação de qualidade.
Acessar o cliente de placares
Para começar a usar a API de placares, o jogo precisa ter um
LeaderboardsClient objeto.
Para isso, chame o PgsLeaderboardsClient_create()
método e transmita a atividade.
Atualizar a pontuação dos jogadores
Quando a pontuação do jogador muda (por exemplo, quando ele termina a
partida), o jogo pode atualizar o placar chamando
PgsLeaderboardsClient_submitScoreImmediate. É necessário transmitir o ID do placar, o valor bruto da pontuação, uma tag de pontuação opcional e uma função de callback.
// 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);
Uma boa prática é gerenciar os IDs de placar como constantes ou recursos no código em C++.
Mostrar um placar
Para mostrar a interface do usuário padrão de um placar específico, chame PgsLeaderboardsClient_showLeaderboardUI. Essa função exige o identificador do cliente, a atividade, o ID do placar, o período e a coleção, além de um callback.
// 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);
Essa função mostra a interface. O objeto activity fornece o contexto para mostrar a interface.