Avec les services de jeux Google Play, vous pouvez créer une gamme de fonctionnalités dans vos applications Android, notamment les classements, les réalisations, le jeu multijoueur, le stockage dans le cloud et la connexion à Google+..
Dans ce didacticiel, nous expliquerons les étapes à suivre pour ajouter des succès à un jeu Android simple. Nous préparerons l'environnement de développement à utiliser les services de jeu Google Play, définirons un exploit dans la console du développeur et mettrons en œuvre l'interaction entre ce dernier et le jeu..
Pour utiliser les outils de Google Play Game Services, nous devons préparer notre IDE. En plus d'utiliser le Services Google Play bibliothèque dont vous avez besoin pour tous les services Google, nous utiliserons le BaseGameUtils ressource, qui contient un certain nombre de classes particulièrement utiles pour développer des jeux.
Commencez par créer une nouvelle application dans votre IDE. L'exemple de code de ce didacticiel contient un jeu simple dans lequel l'utilisateur doit deviner un nombre choisi au hasard. Vous pouvez utiliser ce projet pour commencer à développer avec Google Play Game Services si vous le souhaitez. Créez un nouveau projet Android et choisissez les noms et paramètres correspondants..
Si vous n'utilisez pas l'exemple d'application dans le téléchargement, vous souhaiterez peut-être mettre en œuvre votre jeu à ce stade, en gardant à l'esprit le but pour lequel vous allez utiliser un exploit. Pour l'exemple d'application, nous attribuerons simplement une réalisation lorsque l'utilisateur choisit une réponse correcte.
Dans cette étape, nous obtenons l'IDE et notre projet prêts à utiliser les services de jeux Google Play et les utilitaires. Ouvrez votre gestionnaire de SDK Android, que vous pouvez trouver sous le La fenêtre menu dans Eclipse. Faites défiler jusqu'à ce que vous voyez le Extras dossier, développez-le et sélectionnez Services Google Play et le Google Repository. Vous pouvez aussi avoir besoin du Plateforme Google APIs si vous envisagez de tester sur l'émulateur, sélectionnez-le également. Vous pouvez trouver ce dernier dans les répertoires des versions récentes de la plate-forme Android. Installer les packages sélectionnés, en acceptant les licences si nécessaire.
Nous devons également inclure quelques ressources dans l’espace de travail afin de pouvoir les référencer dans l’application, en commençant par le Bibliothèque de services Google Play. Vous devriez le trouver à / extras / google / google_play_services / libproject / google-play-services_lib / dans votre dossier SDK. Faites une copie de la bibliothèque et collez-la à un autre endroit de votre ordinateur..
De retour dans Eclipse, importez la bibliothèque en choisissant Importer> Android> Importer le code Android existant dans l'espace de travail du Fichier menu. Accédez à l'emplacement où vous avez copié la bibliothèque, sélectionnez-la et importez-la. La bibliothèque doit apparaître en tant que projet dans votre explorateur de package Eclipse et votre espace de travail..
Cliquez avec le bouton droit sur le projet de bibliothèque dans Eclipse, sélectionnez Propriétés et accédez à la section Android. Sélectionnez une cible de construction des API Google et assurez-vous Est la bibliothèque est vérifié. La bibliothèque devrait maintenant être prête à être référencée dans votre application.
Passons maintenant au BaseGameUtils ressource dans votre IDE aussi bien. Téléchargez-le du Exemples de jeux section du portail de développeur de Google. Puisque le code est hébergé sur GitHub, vous pouvez le parcourir et accéder à ses guides sur GitHub..
Importez la ressource BaseGameUtils dans Eclipse en utilisant la même technique que celle utilisée pour la bibliothèque de services de lecture en sélectionnant Importer> Android> Importer le code Android existant dans l'espace de travail du Fichier menu. Cliquez avec le bouton droit sur le projet BaseGameUtils dans votre explorateur de paquet et assurez-vous que Est la bibliothèque est vérifié.
Nous pouvons maintenant faire référence aux ressources de la bibliothèque de services Google Play et de BaseGameUtils dans notre application..
Sélectionnez votre application de jeu dans l'explorateur de packages Eclipse, cliquez dessus avec le bouton droit de la souris et choisissez Propriétés comme vous l'avez fait pour les ressources importées. dans le Android section, cette fois cliquez Ajouter dans le Bibliothèque surface. Sélectionnez les deux Services Google Play library et BaseGameUtils ajouter des bibliothèques à votre projet.
C'est l'IDE mis en place pour développer avec Games Services.
Pour pouvoir utiliser les réalisations de votre jeu, vous devez ajouter le jeu à la liste. Console de développement Google Play. Connectez-vous à la console du développeur, cliquez sur le bouton Services de jeux bouton situé à gauche de la console et choisissez Configurer les services de jeu Google Play si vous ne les avez pas utilisés avant.
Cliquez pour ajouter un nouveau jeu, sélectionnez Je n'utilise pas encore d'API Google dans mon jeu., et choisissez un nom et une catégorie pour votre jeu. Cliquez sur Continuerpasser à l'étape suivante.
dans le Détails du jeu section, tout ce que vous devez ajouter pour tester votre application est le titre de votre jeu.
Cliquez sur Apps liées à gauche de la liste de vos jeux dans la console du développeur. Sélectionner Android dans la liste des applications liées.
Entrez les détails de votre application, y compris le nom du package que vous avez choisi lors de sa création..
Cliquez sur Sauvegarder et continuer au sommet et choisissez Autorisez votre application maintenant. Vous serez invité à entrer des informations de marque. Pour le moment, tout ce dont vous avez besoin est le nom de votre application. dans le Paramètres d'identification du client écran, sélectionnez Application installée comme le type, Android en tant que type d’application installée et entrez le nom de votre paquet.
Vous devez ensuite générer une empreinte de certificat de signature pour autorisation. Pour ce faire, vous devrez exécuter l'utilitaire keytool sur votre ordinateur. Ouvrez un terminal ou une invite de commande et utilisez la commande suivante, mais veillez à le modifier pour l'adapter à l'emplacement si nécessaire. Vous pouvez utiliser le certificat de débogage lors du test.
keytool -exportcert -alias androiddebugkey -keystore ~ / .android / debug.keystore -list -v
L'outil de clé doit écrire l'empreinte du certificat. Sélectionnez et copiez ce qui apparaît après SHA1 et collez-le dans le Console développeur sous Signature d'empreinte digitale de certificat. Cliquez sur Créer un client et copiez l’ID d’application que vous voyez dans la liste de votre jeu dans la console développeur, qui doit être affiché à côté du nom du jeu en haut de la page. Enregistrez l'ID d'application pour une utilisation ultérieure dans votre application..
Toujours dans la console du développeur, cliquez sur le bouton Réalisations bouton à gauche de la liste des jeux et cliquez sur Ajouter la réalisation.
Avant de continuer, vous pouvez consulter la page Réalisations du Guide du développeur pour vous assurer de comprendre le concept d’une réalisation dans Google Play Jeux. Entrez un nom, une description et une icône pour votre exploit, puis choisissez un état, des points et un ordre de liste. Pour notre exemple de jeu, nous utilisons Deviné correctement comme le nom, Choisi un nombre correct comme la description, et une image d'étoile simple comme l'icône. Cliquez sur sauvegarder pour sauver la réalisation.
Copiez l'ID de la réalisation, que vous pouvez voir à côté de la réalisation dans la console du développeur..
Si vous naviguez vers le Essai Pour votre section, vous pouvez définir des adresses électroniques pour les personnes qui auront un accès test au jeu. Par défaut, la console développeur insère l'adresse e-mail de votre propre compte Google. Vous devriez donc pouvoir l'utiliser immédiatement. Ajoutez tous les e-mails de test dont vous avez besoin pour vous déconnecter de votre compte Google..
Dans Eclipse, l'application peut être prête pour accéder aux services de jeux. Nous allons utiliser la technique décrite dans la rubrique Implémentation de la connexion sous Android pour gérer la connexion des utilisateurs à leurs comptes Google. Cela implique l'utilisation de boutons pour la connexion et la déconnexion. Ajoutez-les à la présentation de votre application comme suit:
Modifiez votre activité principale pour la prolonger BaseGameActivity
. Cela nous permettra d'automatiser certaines parties du processus de connexion pour vos utilisateurs. Faites aussi le Activité
clics de la poignée de classe:
Classe publique MainActivity étend BaseGameActivity implémente View.OnClickListener
Vous aurez besoin des importations suivantes:
importer com.google.android.gms.games.Games; import com.google.example.games.basegameutils.BaseGameActivity;
Maintenant, récupérez les références aux boutons dans onCreate
:
findViewById (R.id.sign_in_button) .setOnClickListener (this); findViewById (R.id.sign_out_button) .setOnClickListener (this);
Nous répondrons aux appuis de bouton dans sur clic
comme vous pouvez le voir ci-dessous:
@Override public void onClick (Vue View) if (view.getId () == R.id.sign_in_button) beginUserInitiatedSignIn (); else if (view.getId () == R.id.sign_out_button) signOut (); findViewById (R.id.sign_in_button) .setVisibility (View.VISIBLE); findViewById (R.id.sign_out_button) .setVisibility (View.GONE);
Nous utilisons des méthodes du BaseGameActivity
classe que nous étendons pour gérer la connexion (beginUserInitiatedSignIn
et Déconnexion
), en mettant à jour l'interface utilisateur en conséquence. Lorsque l'application démarrera, elle tentera de se connecter automatiquement à l'utilisateur, mais ceux-ci pourront également utiliser les boutons pour se connecter et se déconnecter..
Nous devons maintenant ajouter deux rappels à notre Activité
classe:
public void onSignInSucceeded () findViewById (R.id.sign_in_button) .setVisibility (View.GONE); findViewById (R.id.sign_out_button) .setVisibility (View.VISIBLE); @Override public void onSignInFailed () findViewById (R.id.sign_in_button) .setVisibility (View.VISIBLE); findViewById (R.id.sign_out_button) .setVisibility (View.GONE);
Vous pouvez ajouter plus de code à ceux-ci si nécessaire. Vous pouvez également choisir de sauvegarder la progression du joueur même s’ils ne sont pas connectés, mais cela dépend de votre partie. Dans l'exemple d'application, nous vérifions simplement que nous sommes connectés aux services Google avant de tenter de réaliser la réalisation..
Avant de commencer à coder les détails d'utilisation des réalisations dans votre application, vous devez y ajouter des données. Commencez par ouvrir ou créer votre res / values / ids.xml archivez et ajoutez des ressources de chaîne pour les ID d'application et de réalisation que vous avez copiés à partir de la console du développeur:
abcdefghij abcdefghijkl
Mettez à jour le contenu pour refléter vos valeurs d'identifiant. Maintenant ouvrez le projet Manifeste et ajoutez les éléments suivants dans l'élément d'application:
Nous référons l'ID d'application que nous avons ajouté au fichier ids et à la version de Play Services. C'est tout ce dont vous avez besoin pour commencer à coder avec votre réussite.
Il ne vous reste plus qu'à déverrouiller la réussite lorsque le joueur du jeu remplira les conditions requises. Naturellement, cela dépendra du but de votre propre jeu, mais si vous souhaitez exécuter le processus à l'aide de l'exemple d'application de ce tutoriel, vous pouvez utiliser le code suivant. Nous commençons par la disposition principale, qui comprend les boutons de connexion et de déconnexion que nous avons ajoutés précédemment:
Notez que nous incluons également un Réalisations bouton situé à côté des boutons de connexion et de déconnexion. Nous allons implémenter ce bouton plus tard. Nous n'entrerons pas dans les détails de l'exemple de jeu. Si vous avez déjà terminé des applications simples, cela ne devrait pas être trop difficile..
Le jeu sélectionne un nombre aléatoire compris entre 0 et 9 et le joueur peut choisir un bouton numéroté pour deviner. Le jeu met à jour le champ de texte pour indiquer si l'utilisateur a deviné correctement ou non. Si une supposition correcte est faite, la réalisation est débloquée.
Revenez à votre Activité
class et ajoutez les variables d'instance suivantes:
bouton privé, bouton0, bouton1, bouton2, bouton3, bouton4, bouton5, bouton6, bouton7, bouton8, bouton9, boutonAgain; numéro int privé; Random Rand privé; informations TextView privées;
Ceux-ci représentent les boutons, le nombre, le générateur de nombres aléatoires et le champ de texte. Ajoutez ce qui suit à votre onCreate
méthode:
findViewById (R.id.show_achievements) .setOnClickListener (this); button0 = (Button) findViewById (R.id.btn0); button1 = (Button) findViewById (R.id.btn1); button2 = (Button) findViewById (R.id.btn2); button3 = (Button) findViewById (R.id.btn3); button4 = (Button) findViewById (R.id.btn4); button5 = (Button) findViewById (R.id.btn5); button6 = (Button) findViewById (R.id.btn6); button7 = (Button) findViewById (R.id.btn7); button8 = (Button) findViewById (R.id.btn8); button9 = (Button) findViewById (R.id.btn9); buttonAgain = (Button) findViewById (R.id.btnAgain); info = (TextView) findViewById (R.id.guess_text); rand = new Random (); nombre = rand.nextInt (10);
Maintenant, ajoutez une méthode nommée disableNumbers
, que nous appellerons lorsque l'utilisateur effectuera une sélection de numéro:
void privé disableNumbers () button0.setEnabled (false); button0.setTextColor (Color.parseColor ("# ff000033")); button1.setEnabled (false); button1.setTextColor (Color.parseColor ("# ff000033")); button2.setEnabled (false); button2.setTextColor (Color.parseColor ("# ff000033")); button3.setEnabled (false); button3.setTextColor (Color.parseColor ("# ff000033")); button4.setEnabled (false); button4.setTextColor (Color.parseColor ("# ff000033")); button5.setEnabled (false); button5.setTextColor (Color.parseColor ("# ff000033")); button6.setEnabled (false); button6.setTextColor (Color.parseColor ("# ff000033")); button7.setEnabled (false); button7.setTextColor (Color.parseColor ("# ff000033")); button8.setEnabled (false); button8.setTextColor (Color.parseColor ("# ff000033")); button9.setEnabled (false); button9.setTextColor (Color.parseColor ("# ff000033")); buttonAgain.setEnabled (true); buttonAgain.setTextColor (Color.parseColor ("# ff000033"));
Implémenter une autre méthode, enableNumbers
, qui est invoqué lorsque l'utilisateur a choisi de rejouer:
Void privé enableNumbers () button0.setEnabled (true); button0.setTextColor (Color.WHITE); button1.setEnabled (true); button1.setTextColor (Color.WHITE); button2.setEnabled (true); button2.setTextColor (Color.WHITE); button3.setEnabled (true); button3.setTextColor (Color.WHITE); button4.setEnabled (true); button4.setTextColor (Color.WHITE); button5.setEnabled (true); button5.setTextColor (Color.WHITE); button6.setEnabled (true); button6.setTextColor (Color.WHITE); button7.setEnabled (true); button7.setTextColor (Color.WHITE); button8.setEnabled (true); button8.setTextColor (Color.WHITE); button9.setEnabled (true); button9.setTextColor (Color.WHITE); buttonAgain.setEnabled (false); buttonAgain.setTextColor (Color.parseColor ("# ffffff00"));
Maintenant, ajoutez la méthode que nous avons définie comme sur clic
attribut pour les boutons:
public void btnPressed (Vue v) int btn = Integer.parseInt (v.getTag (). toString ()); si (btn<0) //again btn number=rand.nextInt(10); enableNumbers(); info.setText("Guess the number!"); else //number button if(btn==number) info.setText("Yes! It was "+number); if(getApiClient().isConnected()) Games.Achievements.unlock(getApiClient(), getString(R.string.correct_guess_achievement)); else info.setText("No! It was "+number); disableNumbers();
Nous appelons le Jeux Réalisations utilitaire pour déverrouiller la réalisation si l'utilisateur devine correctement, en vérifiant d'abord que nous avons une connexion. Nous nous référons à la réalisation en utilisant la ressource de chaîne que nous avons créée.
Dernier point mais non le moindre, permettons à l'utilisateur de visualiser ses réalisations pour le jeu. Cela arrivera quand ils cliqueront sur le Réalisations bouton nous avons ajouté. Étendre le code dans le sur clic
méthode, en ajoutant un sinon si
:
else if (view.getId () == R.id.show_achievements) startActivityForResult (Games.Achievements.getAchievementsIntent (getApiClient ()), 1);
Nous utilisons le getAchievementsIntent
méthode avec un entier arbitraire pour afficher les réalisations de l'utilisateur dans le jeu. Le fait de cliquer sur le bouton de retour ramène le joueur à la partie. Pour plus d'informations sur les méthodes de réalisation, voir la page Réalisations sous Android dans le Guide du développeur..
Vous devriez pouvoir exécuter votre application à ce stade. Lorsque l'application est exécutée, elle lance le processus d'autorisation et de connexion de l'utilisateur, l'invitant à accorder les autorisations nécessaires..
Une fois connecté, l'utilisateur verra une confirmation.
L'utilisateur peut choisir de se déconnecter et de revenir quand il le souhaite. Lorsque l'utilisateur sélectionne un numéro correct, la réussite est déverrouillée et s'affiche en haut de l'écran de jeu..
Le joueur peut alors continuer normalement. Cliquez sur le bouton Réalisations pour afficher leurs réalisations. Appuyez sur le bouton de retour pour ramener le joueur à la partie..
Dans ce tutoriel, nous avons exploré un exemple pratique d'utilisation de réalisations dans une application Android. L'exemple d'application que nous avons utilisé est simple, mais les mêmes principes s'appliquent à tous les jeux avec lesquels vous travaillez. Essayez d’ajouter une réalisation à la console de développeur et de l’implémenter dans votre jeu pour vous assurer de comprendre les concepts et les processus..