Serviciile de jocuri Google Play Tablouri de bord

Serviciile de jocuri Google Play oferă posibilitatea de a adăuga caracteristici sociale la jocurile dvs. prin intermediul conturilor Google+ ale utilizatorilor. În acest tutorial vom demonstra modul în care puteți adăuga clasamente la o aplicație Android, trimiteți scoruri pentru utilizatori și prezentați clasamentele clasamentului actual în cadrul jocului.

Folosirea claselor de leader presupune pregătirea IDE-ului dvs., configurarea panoului publicitar în Consola pentru dezvoltatori Google Play și adăugarea de funcții în aplicația dvs..

Dacă ați finalizat tutorialul recenta cu privire la adăugarea de realizări la aplicațiile Android, veți putea trece peste câțiva dintre acești pași. Codul sursă atașat include aceeași aplicație pe care am folosit-o pentru tutorialul cu realizări, cu funcționalități adăugate atât pentru performanțe, cât și pentru clasamente.

1. Pregătiți IDE-ul

Pasul 1

Pentru a utiliza serviciile Google Play, aveți nevoie de anumite utilitare instalate în mediul dvs. de dezvoltare. În plus, din moment ce folosim serviciile de jocuri, vom instala BaseGameUtils bibliotecă, ceea ce reduce cantitatea de codificare de care avem nevoie pentru a implementa funcții cum ar fi conectarea la Google+.

Pentru a începe, creați o aplicație nouă sau utilizați o aplicație existentă. Dacă ați urmat tutorialul pentru realizări, puteți utiliza aplicația pe care ați construit-o pentru acest tutorial. Dacă vă creați propriul joc, decideți ce doriți să utilizați tabelele de clasare pentru și când intenționați să trimiteți un scor utilizator. Fiecare scor din clasament va fi un număr. Puteți configura clasamentul pentru a considera valorile mai mici sau mai mari ca fiind mai bune în ceea ce privește poziția în clasament, dar, desigur, acest lucru depinde de scopul jocului dvs..

Codul din dosarul de descărcare include un joc simplu în care utilizatorul ghiceste un număr. Vom folosi numarul de presupuneri necesare pentru a obtine raspunsul corect ca scorul clasamentului. În acest caz, mai puține presupuneri sunt mai bune, astfel încât clasamentul va prezenta mai întâi cele mai scăzute scoruri. Pentru simplificare, vom limita numărul de presupuneri pe care un utilizator le poate lua. Acesta este un exemplu trivial pentru a demonstra conceptul și funcționalitatea clasamentului. Jocurile tale vor implica probabil mai multă complexitate.

Pasul 2

Să-l pregătim pe Eclipse să se dezvolte cu Serviciile de jocuri Google Play. Deschide Manager SDK Android și defilați la In plus pliant. Extindeți dosarul și selectați Serviciile Google Play plus Google Depozit. Instalați Platforma Google API de la una dintre versiunile recente Android, de asemenea, dacă doriți să testați pe emulator. Instalați pachetele selectate.

Pasul 3

Eclipse va trebui, de asemenea, să facă referire la unele resurse suplimentare în spațiul de lucru. Pe computer, navigați la locația Biblioteca de servicii Google Play, care ar trebui să fie în folderul Android SDK, la Extra / Google / google_play_services / libproject / Google-play-services_lib /. Copiați și inserați biblioteca în altă parte a computerului.

Acum avem nevoie de o referință la această copie în Eclipse. Alege Import> Android> Importați codul Android existent în spațiul de lucru de la Fişier meniul. Selectați locația copiei pe care ați făcut-o. Biblioteca importată ar trebui să apară acum ca un nou proiect în Eclipse. Faceți clic dreapta pe el și alegeți Proprietăți. În Android , selectați o destinație Google API pentru a crea și verificați Este Biblioteca Caseta de bifat.

Pasul 4

Importul BaseGameUtils resursa este ușor diferită. Biblioteca este găzduită pe GitHub. Puteți găsi acest lucru în secțiunea Descărcări, sub Exemple de jocuri. Descărcați biblioteca și salvați-o pe computer.

Ca și în cazul bibliotecii Servicii Google Play, alegeți Import> Android> Importați codul Android existent Spațiul de lucru de la Fişier meniu pentru a aduce biblioteca BaseGameUtils în Eclipse. Faceți clic dreapta pentru a naviga la noile proprietăți ale proiectului și asigurați-vă că proiectul este marcat ca bibliotecă, verificând Este Biblioteca.

Pasul 5

Acum putem face ca aplicația să se refere la aceste două resurse în spațiul de lucru. Faceți clic dreapta pe aplicația dvs. din Explorer Explorer și alegeți Proprietăți. Navigați la Android și selectați Adăuga în Bibliotecă secțiune. Alegeți ambele Serviciile Google Play bibliotecă și BaseGameUtils, și adăugați-le în aplicația dvs..

2. Pregătiți-vă jocul în Consola pentru dezvoltatori

Pasul 1

Înainte de a putea crea un clasament, aplicația trebuie să fie listată în Consola pentru dezvoltatori Google Play. Conectați-vă și faceți clic pe Servicii de jocuri buton spre stânga. Dacă ați făcut deja acest lucru pentru aplicația dvs. în tutorialul pentru realizări, nu trebuie să o faceți din nou. Puteți să accesați secțiunea 3 privind crearea unui tabel.

Clic Configurați serviciile de jocuri Google Play.

Faceți clic pentru a adăuga un joc nou, selectați Nu folosesc niciun API-uri Google în jocul meu, și alegeți un nume și o categorie pentru jocul dvs. Clic Continuapentru a merge la pasul următor.

Adăugați titlul jocului. Puteți adăuga alte detalii mai târziu.

Pasul 2

Să conectăm acum aplicația astfel încât să putem face referire la această înregistrare din Consola pentru dezvoltatori în aplicația în sine. Apasă pe Aplicații corelate intrați în lista din stânga și alegeți Android.

Introduceți informațiile despre aplicație, inclusiv numele pachetului, asigurându-vă că este același cu cel pe care îl utilizați în proiectul dvs..

Salvați și faceți clic pe Autorizați aplicația acum. Pentru moment, puteți să adăugați doar numele aplicației, dar puteți introduce mai multe detalii mai târziu. Alege Aplicație instalată în zona ID client, cu Android ca tip și introduceți numele pachetului. Acum trebuie să utilizați utilitarul pentru cheie pentru a genera un certificat de semnare. Puteți utiliza următoarea comandă într-un terminal sau într-un prompt de comandă în combinație cu certificatul de depanare:

keytool -exportcert -alias șiroiddebugkey -keystore ~ ​​/ .android / debug.keystore -list -v

Terminalul sau linia de comandă vor scrie amprenta certificatului. Copiați ceea ce vedeți după SHA1 și lipiți-o în Consola pentru dezvoltatori din Semnarea certificatului de amprentă zona de text.

Selectați Creați client și copiați codul pentru aplicație, care este afișat lângă numele aplicației din Consola pentru dezvoltatori. Veți adăuga ID-ul în aplicație împreună cu ID-ul pentru tabela de clasare pe care urmează să o creăm.

3. Creați un tabel

Pasul 1

Încă în Consola pentru dezvoltatori, să creăm un nou tabel. Selectează clasamentele secțiunea din lista dvs. de aplicații și faceți clic pe Adăugați clasament.

Asigurați-vă că înțelegeți în general conceptul de Leaderboards în Android - și în Servicii de jocuri Google Play în general. Puteți citi o prezentare generală pe site-ul Serviciilor de jocuri Google Play. De fapt, puteți face multe lucruri diferite cu clasamentele, deci luați în considerare ceea ce facem în acest tutorial, doar un punct de plecare.

Introduceți detaliile pentru noul dvs. clasament. Pentru codul nostru de probă, folosim numele Cel mai puțin ghicesc și selectați Mai mic este mai bine în ordonare secțiune.

Adăugați o pictogramă dacă doriți. Dacă nu se utilizează o imagine standard. Salvați noul clasament și copiați codul său de identificare.

Pasul 2

În Testarea pentru aplicația dvs. din Consola pentru dezvoltatori, puteți adăuga conturi care vor primi acces pentru a testa jocul. În mod implicit, veți vedea pe e-mail propriul e-mail al contului dvs. Google, astfel încât să îl puteți utiliza pentru testarea aplicației.

4. Pregătiți-vă jocul pentru a accesa serviciile de jocuri

Pasul 1

Este timpul să obțineți aplicația pregătită pentru accesul în clasament în Eclipse. Dacă ați finalizat tutorialul despre realizări, puteți sări peste o parte din această secțiune. Să adăugăm mai întâi ID-urile pentru aplicație și pentru tabelul de clasament. Deschide sau crea o res / valori / ids.xml fișier de resurse. Utilizați următoarea sintaxă pentru a introduce ID-urile pe care le-ați copiat pentru aplicație și noul clasament, atunci când le-ați creat în Consola pentru dezvoltatori:

1234567890 abcdefg1234567

Salvați fișierul și deschideți proiectul Manifesta. Adăugați următoarele în interiorul cerere element:

 

Aplicația este acum configurată pentru a conecta la listele pe care le-am adăugat în Consola pentru dezvoltatori.

Pasul 2

Când utilizați serviciile Google în aplicațiile Android, aveți nevoie ca utilizatorii dvs. să se conecteze la conturile lor Google. Puteți lua o serie de abordări pentru a implementa acest lucru, dar vom automatiza anumite părți ale acestui proces folosind BaseGameActivity clasa împreună cu butoanele standard pentru conectare și ieșire. În plus, când începe activitatea, aplicația va încerca să-l înregistreze imediat.

Deschideți fișierul de aspect principal al aplicației și adăugați butoane pentru conectare / ieșire:

   

Pasul 3

Adăugați aceste importuri la dvs. principal Activitate clasă:

import com.google.android.gms.games.Games; import com.google.example.games.basegameutils.BaseGameActivity;

Activitate clasa extinde BaseGameActivity clasă și ascultați pentru clicuri:

clasa publică MainActivity extinde BaseGameActivity implementează View.OnClickListener

Pregătiți-vă pentru a răspunde la clicurile pe butoanele de conectare / ieșire din onCreate:

findViewById (R.id.sign_in_button) .setOnClickListener (aceasta); findViewById (R.id.sign_out_button) .setOnClickListener (aceasta); 

Acum adăugați următoarele metode standard la un onClick în clasa:

@Override public void onClick (vizualizare Vizualizare) if (view.getId () == R.id.sign_in_button) beginUserInitiatedSignIn ();  altfel dacă (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); 

Metodele pe care le numim aici sunt furnizate de BaseGameActivity clasa noastră Activitate clasa este moștenită de la, astfel încât nu avem nevoie pentru a trata detaliile manual. În cele din urmă, adăugăm câteva callback-uri standard:

public void onSignInSucceeded () findViewById (R.id.sign_in_button) .set Vizibilitate (View.GONE); findViewById (R.id.sign_out_button) .setVisibility (View.VISIBLE);  @Override public void onSignInFailed () findViewById (R.id.sign_in_button) .setVisibilitate (View.VISIBLE); findViewById (R.id.sign_out_button) .setVisibility (View.GONE); 

Când apelăm la funcționalitatea clasamentului, vom verifica mai întâi dacă aplicația are o conexiune la serviciile Google. Alternativ, puteți adăuga codul la aceste metode pentru a gestiona gradul de conștientizare al aplicației dvs. cu privire la posibilitatea de apelare sau nu a Serviciilor Play.

5. Punerea în aplicare a tabelului dvs. de bază

Pasul 1

Acum putem lăsa aplicația să utilizeze clasamentul. Codul din aplicația de probă utilizează următoarea structură. Nu voi intra în detaliu explicând aspectul, deoarece aplicațiile proprii vor avea un aspect diferit.

     

Adăugăm butoane pentru a accesa atât realizările, cât și clasamentele pentru aplicație. Dacă nu ați finalizat tutorialul pentru realizări, puteți elimina butonul realizări.

Înapoi în aplicația dvs. Activitate class, vom folosi aceste variabile de instanță:

butonul privat Buton0, butonul1, butonul2, butonul3, butonul4, butonul5, butonul6, butonul7, butonul8, butonul9, butonulAgain; numărul int intră; privat Random rand; private TextView info; private int numGuesses = 0;

Dacă ați finalizat tutorialul despre realizări, puteți observa o variabilă suplimentară, numGuesses, pentru a urmări numărul de presupuneri ale utilizatorilor de fiecare dată când se joacă jocul.

Veți avea nevoie de următorul cod suplimentar în onCreate metodă a Activitate clasă. Dacă nu utilizați butonul realizări, eliminați linia care o trimite.

findViewById (R.id.show_achievements) .setOnClickListener (aceasta); findViewById (R.id.show_leaderboard) .setOnClickListener (aceasta); button0 = (buton) findViewById (R.id.btn0); button1 = (buton) findViewById (R.id.btn1); BUTTON2 = (buton) findViewById (R.id.btn2); button3 = (buton) findViewById (R.id.btn3); button4 = (buton) findViewById (R.id.btn4); button5 = (buton) findViewById (R.id.btn5); Button6 = (buton) findViewById (R.id.btn6); button7 = (buton) findViewById (R.id.btn7); button8 = (buton) findViewById (R.id.btn8); button9 = (buton) findViewById (R.id.btn9); buttonAgain = (buton) findViewById (R.id.btnAgain); info = (TextView) findViewById (R.id.guess_text); rand = new Random (); număr = rand.nextInt (10);

De asemenea, folosim următoarele metode pentru dezactivarea și activarea butoanelor în timpul jocului:

private void disableNumbers () buton0.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"));  void private enableNumbers () buton0.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")); 

De asemenea, avem nevoie de următoarea metodă pe care am specificat-o ca onClick atribut pentru butoanele numerice din layout. Jucătorul face una dintre acestea pentru a face o presupunere:

public void btnPressed (Vizualizare v) int btn = Integer.parseInt (v.getTag (). toString ()); în cazul în care (BTN<0) //again btn numGuesses=0; number=rand.nextInt(10); enableNumbers(); info.setText("Set the number!");  else //number button numGuesses++; if(btn==number) info.setText("Yes! It was "+number); if(getApiClient().isConnected()) Games.Achievements.unlock(getApiClient(), getString(R.string.correct_guess_achievement)); Games.Leaderboards.submitScore(getApiClient(), getString(R.string.number_guesses_leaderboard), numGuesses);  disableNumbers();  else if(numGuesses==5) info.setText("No! It was "+number); disableNumbers();  else info.setText("Try again!");  

Ia-ți un moment să te uiți peste cod. Chiar dacă ați finalizat aplicația în tutorialul pentru realizări, în plus față de codul extra-clasament, există câteva modificări ale logicii. În cazul în care player-ul fixează Din nou buton, resetăm numGuesses variabil la 0. Dacă utilizatorul fixează un buton numeric, noi creștem numGuesses. Dacă nu utilizați realizări, puteți elimina orice cod care face referire la realizări.

Noi trimitem scorul la clasament atunci când ghidul a ghicit corect. Utilizatorul poate face până la cinci presupuneri.

Linia cheie aici este inregistreaza scorul. Noi trecem numărul de presupuneri pe care le-a luat jucătorul pentru a obține numărul corect. Dacă numărul de presupuneri este mai mic decât orice intrare existentă pentru utilizator în clasament, intrarea lor va fi înlocuită cu această nouă valoare. Observați că folosim valoarea de valoare a șirului pe care am definit-o pentru clasament. 

Pasul 2

Înainte de a termina, permiteți utilizatorului să vizualizeze tabelul de joc atingând Leaderboard butonul pe care l-am adăugat. Am folosit următorul cod onClick pentru realizările:

altfel dacă (view.getId () == R.id.show_achievements) startActivityForResult (Games.Achievements.getAchievementsIntent (getApiClient ()), 1); 

Prezentarea clasamentului este similară:

altfel dacă (view.getId () == R.id.show_leaderboard) startActivityForResult (Games.Leaderboards.getLeaderboardIntent (getApiClient (), getString (R.string.number_guesses_leaderboard)), 2); 

Acest lucru va permite utilizatorului să vadă clasamentul actual în cadrul clasamentului. Parametrul întreg este arbitrar.

Când rulați aplicația, aceasta va încerca să-l înregistreze pe utilizator, verificând permisiunile și confirmând datele de conectare dacă a reușit:

Utilizatorul este liber să aleagă să se deconecteze și să revină ori de câte ori le place, dar dacă părăsesc aplicația, va încerca să le înregistreze automat înapoi când o deschid din nou. Atunci când utilizatorul ghiceste corect, scorul lor va fi trimis în clasament. Apăsarea butonului Leaderboard butonul va prezenta clasamentele curente:

De aici, utilizatorul poate accesa caracteristicile sociale ale serviciilor Google prin intermediul contului Google. Puteți seta aplicațiile dvs. pentru a utiliza clasamentele publice și sociale. Tabelele sociale prezintă lista de persoane din cercurile utilizatorului, care pot fi gestionate pentru jocul propriu-zis. Pentru un clasament public, utilizatorul trebuie să fi optat să-și împărtășească scorurile în mod public.

Concluzie

În acest tutorial, am implementat funcționalitatea clasamentului de bază cu serviciile de jocuri Google Play. Rețineți că puteți să faceți mult mai mult cu clasamente în aplicațiile dvs. De exemplu, puteți solicita date din tabelul de bord pentru anumite intervale de timp, cum ar fi zilnic, săptămânal și tot timpul. Dacă un clasament conține o mulțime de scoruri, este posibil ca aplicația dvs. să aducă doar scorurile de top sau cele mai apropiate de playerul curent. Încercați să experimentați unele dintre aceste îmbunătățiri în propriile aplicații.

Cod