Med Google Play Games Services kan du bygge en rekke funksjoner i Android-appene dine, inkludert leaderboards, prestasjoner, spill med flere spillere, skylagring og innlogging på Google+..
I denne opplæringen vil vi arbeide gjennom trinnene du må ta for å legge til prestasjoner til et enkelt Android-spill. Vi vil forberede utviklingsmiljøet til å bruke Google Play-spilltjenester, definere en prestasjon i utviklerkonsollen og implementere prestasjonsinteraksjonen i spillet.
For å utnytte verktøyene for Google Play-spilltjenester må vi utarbeide vår IDE. I tillegg til å bruke Google Play-tjenester bibliotek - som du trenger for alle Google-tjenester - vi vil bruke BaseGameUtils ressurs, som inneholder en rekke klasser som er spesielt nyttige når du utvikler spill.
Start med å opprette en ny app i IDE-en. Eksempelkoden til denne opplæringen inneholder et enkelt spill der brukeren må gjette et nummer som er valgt tilfeldig. Du kan bruke dette prosjektet til å begynne å utvikle seg med Google Play Game Services hvis du vil. Opprett et nytt Android-prosjekt og velg navn og innstillinger for det.
Hvis du ikke bruker prøveappen i nedlastingen, kan du ønske å implementere spillet ditt på dette tidspunktet, med tanke på hva du skal bruke en prestasjon for. For prøveappen vil vi ganske enkelt tildele en prestasjon når brukeren velger et riktig svar.
I dette trinnet får vi IDE og vårt prosjekt klar til å bruke Google Play Games Services og verktøyene. Åpne Android SDK Manager, som du finner under Vindu meny i Eclipse. Rull ned til du ser extras mappe, utvide den og velg Google Play-tjenester og Google Repository. Du kan også trenge Google APIs plattform hvis du planlegger å teste på emulatoren, så velg det også. Du finner sistnevnte i katalogene for nyere versjoner av Android-plattformen. Installer de valgte pakkene, godta eventuelle lisenser etter behov.
Vi må også inkludere et par ressurser i selve arbeidsområdet, slik at vi kan referere dem i appen, begynner med Google Play Services Library. Du bør finne den på / Extras / google / google_play_services / libproject / google-play-services_lib / i SDK-mappen din. Lag en kopi av biblioteket og lim det inn på et annet sted på datamaskinen.
Tilbake i Eclipse, importer biblioteket ved å velge Import> Android> Importer eksisterende Android-kode inn i arbeidsområdet fra Fil Meny. Bla til stedet du kopierte biblioteket til, velg biblioteket, og importer det. Biblioteket skal vises som et prosjekt i Eclipse Package Explorer og arbeidsområdet.
Høyreklikk på biblioteket i Eclipse, velg Eiendommer og bla til Android-delen. Velg et Google APIs bygge mål og sikre Er biblioteket er sjekket. Biblioteket skal nå være klart for referanse i appen din.
La oss nå få det BaseGameUtils ressurs i din IDE også. Last ned den fra Eksempel spill del av Googles utviklerportal. Siden koden er vert på GitHub, kan du bla gjennom den og få tilgang til guider på GitHub.
Importer BaseGameUtils-ressursen inn i Eclipse ved hjelp av samme teknikk du brukte til Play Services-biblioteket ved å velge Importer> Android> Importer eksisterende Android-kode inn i arbeidsområdet fra Fil Meny. Høyreklikk på BaseGameUtils-prosjektet i Package Explorer og sørg for Er biblioteket er sjekket.
Vi kan nå referere til både Google Play Services Library og BaseGameUtils-ressursene i vår app.
Velg spillprogrammet i Eclipse Package Explorer, høyreklikk det og velg Eiendommer som du gjorde for de importerte ressursene. I Android delen, denne gangen klikker du Legg til i Bibliotek område. Velg begge Google Play-tjenester library og BaseGameUtils å legge til som biblioteker i prosjektet ditt.
Det er IDE satt opp for å utvikle seg med Games Services.
For å kunne bruke prestasjoner i spillet ditt, må du legge til spillet til Utviklerkonsoll for Google Play. Logg inn i utviklerkonsollen, klikk på Spilltjenester knappen til venstre for konsollen, og velg Konfigurer Google Play-spilltjenester hvis du ikke har brukt dem før.
Klikk for å legge til et nytt spill, velg Jeg bruker ikke noen Google-APIer i spillet mitt ennå, og velg et navn og en kategori for spillet ditt. Klikk Fortsetteå gå til neste trinn.
I Spilldetaljer delen, alt du trenger for å legge til for å teste appen din, er spillets tittel.
Klikk Koblede apper til venstre for spilloppføringen i utviklerkonsollen. Å velge Android fra listen over koblede apper.
Skriv inn appens detaljer, inkludert pakkenavnet du valgte da du opprettet den.
Klikk Lagre og fortsett på toppen og velg Autoriser appen din nå. Du vil bli bedt om å angi merkevareinformasjon. Alt du trenger for øyeblikket, er appens navn. I Klient-ID-innstillinger skjerm, velg Installert applikasjon som typen, Android som den installerte programtypen, og skriv inn pakkenavnet ditt.
Du må da generere et signeringssertifikatfingeravtrykk for autorisasjon. Du må kjøre Keytool-verktøyet på datamaskinen din for å gjøre dette. Åpne en terminal eller kommandoprompt og bruk følgende kommando, men sørg for å endre den slik at den passer til stedet hvis det er nødvendig. Du kan bruke feilsøkingsbeviset mens du tester.
keytool -exportcert -alias androiddebugkey -keystore ~ / .android / debug.keystore -list -v
Keytool bør skrive ut sertifikatfingeravtrykket. Velg og kopier det som vises etter SHA1 og lim det inn i Utviklerkonsoll under Fingeravtrykk for signering av sertifikat. Klikk Opprett klient og kopier søknads-IDen du ser i oppføringen for spillet ditt i utviklerkonsollen, som skal vises ved siden av spillnavnet øverst på siden. Lagre program-IDen for senere bruk i appen din.
Fortsatt i utviklerkonsollen, klikk på prestasjoner knappen til venstre for spilloppføringen og klikk Legg til prestasjon.
Før du fortsetter, kan du sjekke ut resultatene i utviklerveiledningen for å sikre at du forstår konseptet om en prestasjon i Google Play Games. Skriv inn et navn, en beskrivelse og et ikon for oppnåelsen din, og velg en tilstand, poeng og liste rekkefølge. For vårt utvalgspill, bruker vi Gjettet riktig som navnet, Plukket et riktig nummer som beskrivelse, og en enkel stjernebilde som ikonet. Klikk Lagre for å lagre prestasjonen.
Kopier prestasjons-ID, som du kan se ved siden av prestasjonen i utviklerkonsollen.
Hvis du navigerer til testing seksjon for spillet ditt, kan du angi e-postadresser for personer som vil ha testadgang til spillet. Utviklerkonsollen vil som standard sette inn din egen Google-konto-e-post, så du bør kunne bruke det straks. Legg til andre testemails du trenger, så kan du logge deg ut av Google-kontoen din.
I Eclipse kan vi få appen klar til å få tilgang til spilltjenester. Vi skal bruke teknikken som er skissert i Implementing Sign-in på Android for å håndtere at brukere blir logget inn og ut av deres Google-kontoer. Dette innebærer at du bruker knapper til å logge inn og ut, så legg til disse i appens layout som følger:
Endre hovedaktiviteten din for å utvide BaseGameActivity
. Dette vil la oss automatisere visse deler av påloggingsprosessen for brukerne. Gjør også Aktivitet
Klassehåndtaksklikk:
offentlig klasse MainActivity utvider BaseGameActivity implementerer View.OnClickListener
Du trenger følgende import:
importer com.google.android.gms.games.Games; importer com.google.example.games.basegameutils.BaseGameActivity;
Hent nå referanser til knappene i onCreate
:
findViewById (R.id.sign_in_button) .setOnClickListener (this); findViewById (R.id.sign_out_button) .setOnClickListener (this);
Vi vil svare på knappekraner i ved trykk
som du kan se nedenfor:
@Override public void onClick (Vis visning) if (view.getId () == R.id.sign_in_button) beginUserInitiatedSignIn (); annet hvis (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);
Vi bruker metoder fra BaseGameActivity
klasse vi strekker seg til å håndtere pålogging (beginUserInitiatedSignIn
og Logg ut
), oppdaterer brukergrensesnittet tilsvarende. Når appen starter, vil den forsøke å automatisk logge inn på brukeren, men de vil også kunne bruke knappene til å logge inn og ut.
Vi må nå legge til to tilbakeringinger til vår Aktivitet
klasse:
Offentlig tomgang 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);
Du kan legge til flere koden til disse hvis nødvendig. Du kan også velge å lagre spillers fremgang selv om de ikke er logget på, men dette avhenger av spillet ditt. I prøveapplikasjonen tar vi den enkle tilnærmingen til å kontrollere at vi har en forbindelse til Google Services før vi forsøker å jobbe med prestasjonen.
Før du begynner å kode om detaljene for bruk av prestasjoner i appen din, må du legge til noen data i den. Start med å åpne eller opprette din res / verdier / ids.xml fil og legg til strengressurser for appen og prestasjons-IDene du kopierte fra utviklerkonsollen:
ABCDEFGHIJ abcdefghijkl
Oppdater innholdet for å gjenspeile ID-verdiene dine. Åpne nå prosjektet manifest og legg til følgende inne i applikasjonselementet:
Vi refererer app-ID-en vi la til i ids-filen og Play Services-versjonen. Dette er alt du trenger for å komme i gang med koding med prestasjonen.
Alt som gjenstår nå er for deg å låse opp prestasjonen når spilleren oppfyller prestasjonens krav. Dette vil selvsagt avhenge av formålet med ditt eget spill, men hvis du vil utføre prosessen ved hjelp av prøveappen for denne opplæringen, kan du bruke følgende kode. Vi starter med hovedoppsettet, som inkluderer påloggings- og påloggingsknappene vi la til tidligere:
Legg merke til at vi også inkluderer en prestasjoner knappen ved siden av knappene for å logge inn og ut. Vi vil implementere den knappen senere. Vi vil ikke gå inn i for mye detalj på prøvespillet, hvis du har fullført enda enkle programmer før, bør dette ikke være for vanskelig.
Spillet velger et tilfeldig tall mellom 0 og 9, og spilleren kan velge en nummerknapp for å gjette. Spillet oppdaterer tekstfeltet for å gjenspeile om brukeren gjettet riktig eller ikke. Hvis et riktig gjetning er gjort, er prestasjonen ulåst.
Bytt tilbake til din Aktivitet
klasse og legg til følgende instansvariabler:
privat knapp knapp0, knapp1, knapp2, knapp3, knapp4, knapp5, knapp6, knapp7, knapp8, knapp9, knappAgain; privat int nummer; privat tilfeldig rand; privat tekstvisning info;
Disse representerer knappene, nummeret, tilfeldig talgeneratoren og tekstfeltet. Legg til følgende i din onCreate
metode:
findViewById (R.id.show_achievements) .setOnClickListener (this); button0 = (Button) findViewById (R.id.btn0); Button1 = (Button) findViewById (R.id.btn1); knappen2 = (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 = ny tilfeldig (); tall = rand.nextInt (10);
Legg nå til en metode som heter disableNumbers
, som vi vil ringe når brukeren foretar et nummervalg:
private void 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"));
Implementere en annen metode, enableNumbers
, som påberopes når brukeren har valgt å spille igjen:
private void 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"));
Legg nå metoden vi angir som ved trykk
attribut for knappene:
offentlig tomrom btnPressed (Vis v) int btn = Integer.parseInt (v.getTag (). toString ()); if (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();
Vi kaller Spillprestasjoner verktøy for å låse opp prestasjonen hvis brukerens gjetning var korrekt, først sjekke at vi har en tilkobling. Vi refererer til oppnåelsen ved hjelp av strengressursen vi opprettet.
Sist men ikke minst, la oss tillate brukeren å se sine resultater for spillet. Dette vil skje når de klikker på prestasjoner knappen vi la til. Utvid koden i ved trykk
metode, legger til en ekstra eller hvis
:
ellers hvis (view.getId () == R.id.show_achievements) startActivityForResult (Games.Achievements.getEchievementsIntent (getApiClient ()), 1);
Vi bruker getAchievementsIntent
metode med et vilkårlig heltall for å vise brukerens prestasjoner i spillet. Ved å trykke på tilbakeknappen vil spilleren komme tilbake til spillet. For mer om prestasjonsmetodene, se prestasjonene i Android-siden i utviklerveiledningen.
Du bør kunne kjøre appen din på dette tidspunktet. Når appen kjører, vil den starte brukerautorisasjonen og påloggingsprosessen, og be om at brukeren skal gi de nødvendige tillatelsene.
Når du er logget på, vil brukeren se en bekreftelse.
Brukeren kan velge å logge ut og tilbake når som helst. Når brukeren velger et riktig nummer, blir prestasjonen låst opp og vises øverst på spillskjermbildet.
Spilleren kan deretter fortsette som normalt. Når du klikker på prestasjons-knappen, vises deres resultater. Ved å trykke på tilbakeknappen vil spilleren komme tilbake til spillet.
I denne opplæringen har vi utforsket et praktisk eksempel på bruk av prestasjoner i en Android-applikasjon. Prøveappen vi brukte er enkel, men de samme prinsippene gjelder for hvilket spill du arbeider med. Prøv å legge til en annen prestasjon til utviklerkonsollen og implementer den i spillet for å sikre at du forstår konseptene og prosessene.