Le SDK C++ des services de jeux Google Play fournit une API C++ à utiliser avec Google Play Game et est destiné aux développeurs qui disposent déjà d'une implémentation C++ de leur jeu.
Actuellement, le SDK implémente les services suivants:
- Autorisation
- Réussites
- Classements
- Événements
- Jeux enregistrés
- Nearby Connections (Android uniquement)
- Statistiques du joueur
Concepts
De manière générale, pour utiliser le SDK, procédez comme suit:
- Définissez une configuration de plate-forme pour Android.
- Utiliser un
GameServices::Builder
pour configurer et construire unGameServices
. L'objetGameServices
tente automatiquement de se connecter et renvoie le résultat via un rappelOnAuthActionFinished()
. Notez le résultat renvoyé par le rappel. Si la tentative de connexion automatique échoue, vous pouvez afficher un bouton permettant aux utilisateurs de se connecter. Après avoir reçu le résultat
OnAuthActionFinished()
, vous pouvez utiliser la l'objetGameServices
et ses administrateurs enfants pour effectuer des appels aux services de jeux Play ; y compris:- Connexion (après échec de l'autorisation):
StartAuthorizationUI()
- Déverrouiller des réussites:
Achievements().Unlock()
- Affichez les réussites à l'aide de l'interface utilisateur intégrée:
Achievements().ShowAllUI()
- Envoyez un record:
Leaderboards().SubmitScore()
- Déconnexion:
SignOut()
- Connexion (après échec de l'autorisation):
Lorsque vous avez terminé d'utiliser l'objet
GameServices
, réinitialisez-le ou détruisez-le.
À un niveau plus détaillé:
Initialiser la configuration d'une plate-forme: il s'agit d'un objet qui contient des informations d'initialisation spécifiques à la plate-forme. Sur Android, la configuration de la plate-forme contient VM Java et un pointeur vers le fichier
Activity
actuel:// In android_main(), create a platform configuration // and bind the object activity. // Alternately, attach the activity in JNI_Onload(). gpg::AndroidPlatformConfiguration platform_configuration; platform_configuration.SetActivity(state->activity->clazz);
Construire un objet
GameServices
: cet objet est le point d'entrée principal de des services de jeux Google Play.GameServices
instance créée avecGameServices::Builder
.Dans la plupart des implémentations, un objet
GameServices
donné est conservé tant que votre environnement C ; vous n'avez pas besoin de le réinitialiser AndroidActivity
se met en pause et reprend.// Creates a GameServices object that has lambda callbacks. game_services_ = gpg::GameServices::Builder() .SetDefaultOnLog(gpg::LogLevel::VERBOSE) .SetOnAuthActionStarted([started_callback](gpg::AuthOperation op) { is_auth_in_progress_ = true; started_callback(op); }) .SetOnAuthActionFinished([finished_callback](gpg::AuthOperation op, gpg::AuthStatus status) { LOGI("Sign in finished with a result of %d", status); is_auth_in_progress_ = false; finished_callback(op, status); }) .Create(pc);
Utilisez les classes Manager pour gérer votre objet
GameServices
. Les gestionnaires sont accessibles depuis une instanceGameServices
et des fonctionnalités liées aux groupes ensemble. Exemples incluent les gestionnaires de réussite et de classement. Ils ne contiennent aucune information eux-mêmes. Les gestionnaires sont renvoyés par référence. Les conteneurs L'instanceGameServices
contrôle son cycle de vie. Votre client ne doit jamais tenir sur une référence de responsable. Au lieu de cela, votre client doit conserver InstanceGameServices
.Les gestionnaires renvoient des données via des objets de type valeur immuables. Ces valeurs reflètent une vue cohérente des données sous-jacentes au moment où la requête a été faite.
// Submit a high score game_services_->Leaderboards().SubmitScore(leaderboard_id, score); // Show the default Achievements UI game_services_->Achievements().ShowAllUI();
Lorsque vous avez fini d'utiliser l'objet
GameServices
, effectuez un nettoyage en exécutant la commande suivante : en appelantreset()
sur leunique_ptr
qui lui appartient, ou en laissantunique_ptr
le détruira automatiquement lorsqu'il sortira du champ d'application.
Modèle de threading
Sauf indication contraire, toutes les méthodes GameServices
et Manager ont
des implémentations asynchrones sécurisées. Elles peuvent être appelées sur n'importe quel thread
verrouillage externe, et s'exécutent dans un ordre cohérent avec leur appel
commande.
Les méthodes d'accesseur (celles qui lisent l'état) se présentent sous deux variantes principales. Le premier
type de méthode (avec des noms tels que FetchProperty()
) fournit ses résultats de manière asynchrone
à un rappel fourni ; la seconde (avec des noms tels que
FetchPropertyBlocking()
) renvoie ses résultats de manière synchrone au
thread.
// Blocking callback
gpg::AchievementManager::FetchAllResponse fetchResponse =
game_services_->Achievements().FetchAllBlocking(std::chrono::milliseconds(1000));
// Non-blocking callback
game_services_->Achievements().FetchAll(gpg::DataSource::CACHE_OR_NETWORK,
[] (gpg::AchievementManager::FetchAllResponse response) {
LogI("Achievement response status: %d", response.status);});
Tous les rappels des utilisateurs sont appelés sur un thread de rappel dédié. Ce fil de discussion est potentiellement différent de tout concept de plate-forme de "thread principal" ou « UI fil de discussion". Vous devez également essayer de vous assurer que les rappels des utilisateurs s'exécutent rapidement ; un thread de rappel bloqué peut entraîner des problèmes visibles par l'utilisateur (par exemple, un retard dans la fin de la session de requête).
Informations spécifiques à la plate-forme
Pour commencer à utiliser le SDK Play Jeux C++ sur Android, passez à la guide de démarrage rapide.
Documentation complémentaire
Veillez à lire la documentation de la classe fournie dans le jeu Google Play. pour en savoir plus, et consultez le exemples qui montrent comment utiliser le SDK.
Si votre jeu utilise un serveur backend, consultez Activer l'accès côté serveur aux services de jeux Google Play