Gaming teknologier er i stadig utvikling. Ikke desto mindre har mange kjernevaktelementer holdt seg uendret i flere tiår. Highscores, leaderboards, oppdrag, prestasjoner og multiplayer-støtte er eksempler. Hvis du utvikler et spill til Android-plattformen, trenger du ikke å implementere noen av elementene manuelt. Du kan ganske enkelt bruke APIsene for Google Play-spilltjenester i stedet.
I denne opplæringen vil jeg vise deg hvordan du lager et enkelt Android-spill, legger til Google Play-spilltjenester til det, og bruker APIer for topplister og prestasjoner.
For å kunne følge denne opplæringen trenger du følgende:
Det er ikke noe gøy å legge til API-spillene for spill spill, til et tomt Android Studio-prosjekt. Derfor la oss nå lage et spill hvor brukeren vinner poeng ved å bare klikke på en knapp. Nærmere bestemt vil målet med spillet være å klikke på en knapp så ofte som mulig innen 60 sekunder.
Oppsettet av spillet vil ha en Knapp
widget, som brukeren klikker for å få poeng, og to TextView
widgets for å vise poengsummen og tiden igjen. Hvis du setter dem alle inne i a RelativeLayout
og senter dem både horisontalt og vertikalt, bør du ha en layoutfil som ser slik ut:
Vårt spill vil ha en leaderboard skjerm og en prestasjoner skjerm. For å tillate brukeren å navigere til disse skjermbildene, legg til to flere Knapp
widgets på slutten av layoutfilen.
Merk at begge knappene har ved trykk
egenskaper. Vi vil opprette Java-metodene de refererer til i senere trinn.
Inne i aktiviteten, opprett medlemsvariabler for gameplay-widgets vi definerte i layout XML-filen. I tillegg opprett en int
variabel for poengsummen og a boolean
variabel for spillets tilstand.
privat knapp mainButton; privat TextView scoreView; privat TextView timeView; privat int score = 0; privat booleansk spilling = false;
Initialiser widgets i aktiviteten onCreate ()
metode ved bruk av findViewById ()
metode.
mainButton = (Button) findViewById (R.id.main_button); scoreView = (TextView) findViewById (R.id.score_view); timeView = (TextView) findViewById (R.id.time_view);
Å lytte etter klikk på Knapp
widget, lag og legg til en OnClickListener
til det.
mainButton.setOnClickListener (new View.OnClickListener () @Override public void onClick (Vis v) // Mer kode går her);
Vi må nå gjennomføre følgende krav:
poengsum
variabel.Vi kan bruke spiller
variabel for å skille mellom første klikk og alle påfølgende klikk. For å holde oversikt over tiden, kan vi bruke abstraktet Nedtellingsklokke
klassen, som er ideell for våre behov. Den har en onTick ()
metode inne, som kan nøyaktig oppdatere Timeview
for å vise antall sekunder igjen. Den har også en onFinish ()
metode, som kalles når nedtellingen er over.
Følg deretter følgende kode til ved trykk()
metode:
hvis (! spiller) // Det første klikket spilles = true; mainButton.setText ("Fortsett å klikke"); // Initialiser CountDownTimer til 60 sekunder ny CountDownTimer (60000, 1000) @Override public void onTick (long millisUntilFinished) timeView.setText ("Tid gjenværende:" + millisUntilFinished / 1000); @Override public void onFinish () playing = false; timeView.setText ("Spill over"); mainButton.setVisibility (View.GONE); .start(); // Start timeren ellers // Etterfølgende klikk score ++; scoreView.setText ("Score:" + score + "poeng");
På dette punktet kan du kjøre prosjektet for å spille spillet.
Konfigurere et prosjekt for å bruke API-spillene for Play-spill, innebærer mange trinn. Ved å bruke Android Studio's Firebase Assistant, kan du automatisere noen av dem.
Åpne assistentvinduet ved å gå til Verktøy> Brannbase. Deretter i Analytics delen, klikk på Logg på en Analytics-hendelse link. Du kan nå koble ditt Android Studio-prosjekt til et Firebase-prosjekt ved å klikke på Koble til brannbase knapp. Pass på at du velger Opprett nytt Firebase-prosjekt alternativet i dialogboksen som dukker opp.
Når forbindelsen er opprettet, trykk på Legg til Analytics i appen din knappen for å legge til alle nødvendige endringer i build.gradle filer.
Du må legge til avhengigheten av Play-spill-tjenester manuelt. Derfor gå til build.gradle fil av app
modul og legg til følgende kompilere
avhengighet:
kompilere 'com.google.android.gms: spill-tjenester-spill: 9.8.0'
Videre trenger spilltjenester-APIene en XML-konfigurasjonsfil. Opprett en som heter spill-ids.xml inne i RES / verdiene mappe. Vi legger til innhold i det i et senere trinn.
Alle spill som bruker Google Play-spilltjenester må være registrert i Play Developer-konsollen. Du må betale en engangsregistreringsavgift på $ 25 for å få tilgang til konsollen.
I konsollen klikker du på ikonet for gamepad for å åpne Spilltjenester skjerm.
Deretter klikker du på Konfigurer Google Play-spilltjenester knappen for å begynne å registrere spillet.
I dialogboksen som dukker opp, velg den andre kategorien fordi vårt spill allerede bruker Google APIs. Du må nå kunne se ditt Firebase-prosjekt navn i listen over tilgjengelige prosjekter. Etter å ha valgt det, velg en kategori for spillet. For nå kan du gå med Uformelt kategori.
Etter at du har trykket på Fortsette, Du kan koble Firebase Analytics og Play spilltjenester ved å klikke på Link Firebase knapp.
Deretter går du til Koblede apper delen for å koble ditt Android Studio-prosjekt til Play Developer-konsollen. I dialogboksen som dukker opp, trykker du på Android knappen og skriv inn prosjektets pakkenavn i Pakkenavn felt.
trykk Lagre og fortsett knappen for å generere en klient-ID for spillet ditt.
Vårt spill har nå blitt registrert med Google Play-utviklerkonsollen.
Play-spill-tjeneste-APIene fungerer bare hvis spillet ditt er publisert på Google Play. Men for å tillate deg å teste spillet ditt, lar utviklerkonsollen deg tilknytte noen testbrukerkontoer. Ved å gå til testing delen, kan du legge til eller fjerne testbrukerkontoer. Pass på at du legger til Google-kontoen du bruker på telefonen din eller emulatoren her.
En leaderboard er ingenting annet enn en skjerm som viser brukerne høyest score. Spille spilltjenestestøttelister gjør det mulig for brukere å se sine daglige, ukentlige og all-time highscores.
Å lage et topplate på Play-utviklerkonsollen tar bare noen få klikk. Gå til Leaderboards delen og trykk på Legg til leaderboard knapp. I neste skjermbilde gir du et meningsfylt navn til topplisten og trykker på Lagre knapp.
Vårt leaderboard er nå klart.
Prestasjoner er in-game-priser brukerne får for å administrere å gjøre noe spesielt. Et spill som har mange prestasjoner å låse opp er vanligvis mer moro enn en som ikke gjør det. Følgelig har de fleste av de populære spillene på Google Play i dag dusinvis, om ikke hundrevis av prestasjoner.
I denne opplæringen legger vi bare en prestasjon til spillet vårt. Navnet vil være Lynrask, og det vil bli låst opp når brukeren klarer å trykke på knappen mer enn 100 ganger om et minutt. For å oppnå prestasjonen, gå til prestasjoner delen og trykk på Legg til prestasjon knapp. Når du har skrevet inn navnet og beskrivelsen av prestasjonen, trykker du på Lagre knapp.
Både leaderboardet og prestasjonen har unike identifikatorer. Vi må nå legge til disse identifikasjonene i vårt Android Studio-prosjekt, sammen med søknads-IDen som ble generert under registreringen. Du kan gjøre det ved å manuelt oppdatere spill-ids.xml fil vi opprettet tidligere. Imidlertid foreslår jeg at du bruker den automatisk genererte konfigurasjonskoden som er tilgjengelig i utviklerkonsollen.
For å få den automatisk genererte konfigurasjonskoden, kan du gå til enten prestasjoner delen eller Leaderboards delen, og trykk på Få ressurser link. Du ser XML-koden som ser slik ut:
1234567890 com.tutsplus.mylittlegame HzkA4Kz04F8MRYIAze HzkA4Kz04F8MRYIBVU
Kopier all koden og lim den inn i prosjektets spill-ids.xml fil.
Før du bruker APIer for topplister og prestasjoner, må vi opprette en GoogleApiClient
Installer og koble den til Spill spilltjenester. Legg derfor til en GoogleApiClient
objekt som en medlemsvariabel av aktiviteten din.
Vi må bruke GoogleApiClient.Builder
klasse for å bygge GoogleApiClient
forekomst. Mens du bygger klienten, kan vi angi API og API-omfanget vi er interessert i ved å bruke addApi ()
og addScope ()
fremgangsmåter.
I tillegg foreslår jeg at du ringer til enableAutoManage ()
metode for å sikre at klienten automatisk styrer tilkoblingen til spilltjenestene. Metoden trenger imidlertid en OnConnectionFailedListener
, som vil bli kalt når tilkoblingen mislykkes. For nå skal vi bare ringe til bli ferdig()
Metode for å lukke appen i tilfelle en tilkoblingssvikt.
Følgelig legger du til følgende kode i begynnelsen av onCreate ()
metode:
apiClient = ny GoogleApiClient.Builder (dette) .addApi (Games.API) .addScope (Games.SCOPE_GAMES) .enableAutoManage (denne nye GoogleApiClient.OnConnectionFailedListener () @Overgå offentlig tomgang påConnectionFailed (@NonNull ConnectionResult connectionResult) Log.e (TAG, "Kunne ikke koble til Play Games-tjenester"); finish ();). Build ();
Hvis du kjører appen nå, blir du bedt om å opprette en Gamer ID for deg selv. Skriv inn en Gamer ID etter eget valg og trykk på Logg inn knapp.
Ved å sende inn en poengsum til ledergruppen tar bare en linje med kode. Alt du trenger å gjøre er å ringe Send inn poengsum()
metode av Games.Leaderboards
klasse. ENs sine argumenter, forventer den GoogleApiClient
eksempel, topplederens ID og poengsummen.
I vårt spill må vi sende inn poengsummen på slutten av 60 sekunder. Derfor legger du til følgende kode i onFinish ()
metode:
Games.Leaderboards.submitScore (apiClient, getString (R.string.leaderboard_my_little_leaderboard), score);
For å vise topplaten må vi starte en ny aktivitet med en oppslagstavle. For å hente leaderboard-hensikten, ring getLeaderboardIntent ()
metode av Games.Leaderboards
klasse og passere GoogleApiClient
eksempel- og leaderboard-ID til det.
Vårt spills layout har allerede en knapp som kan trykkes for å åpne topplaten. Verdien av dens ved trykk
attributtet er showLeaderboard
. Legg derfor til følgende kode i aktiviteten din:
Offentlig tomgangsholder (Vis v) startActivityForResult (Games.Leaderboards.getLeaderboardIntent (apiClient, getString (R.string.leaderboard_my_little_leaderboard)), 0);
Du kan kjøre appen nå og spille spillet igjen. Denne gangen, når kampen er over, blir poengsummen sendt til topplederen. Her ser du hvordan standardlistebordet ser ut:
Ved å ringe låse opp()
metode av Games.Achievements
klasse, kan du låse opp noen prestasjon. Metoden forventer at GoogleApiClient
forekomst og ID for prestasjonen som eneste argument.
Den lynrask oppnåelsen vi definerte i konsollen må være låst opp når brukerens poengsum krysser 100 poeng. Derfor, rett etter at koden øker poengsummen, legger du til følgende kode:
hvis (poengsum> 100) Games.Achievements .unlock (apiClient, getString (R.string.achievement_lightning_fast));
Koden som trengs for å vise skjermbildene for prestasjoner, ligner på det vi skrev for å vise skjermbildet. Alt du trenger å gjøre er å sende returverdien til getAchievementsIntent ()
metode til startActivityForResult ()
metode.
offentlig ugyldig showVisninger (Vis v) startActivityForResult (Games.Achievements .getEchievementsIntent (apiClient), 1);
Hvis du kjører appen din og spiller spillet igjen, vil du se en prestasjon dukker opp når poengsummen krysser 100 poeng for første gang.
Du vet nå hvordan du bruker Google Play-spilltjenester-APIene i ditt Android Studio-prosjekt. Spille spilltjenester er ikke begrenset til Android-plattformen alene. De kan brukes like mye på både web- og iOS-plattformene. Med Play Games-tjenester kan du derfor skape plattformspill og tilby konsistente spillopplevelser til brukere på flere plattformer.
Hvis du vil vite mer om Google Play-spilltjenesteprogrammer, kan du se deres offisielle guider eller, enda bedre, sjekk ut noen av våre opplæringsprogrammer her på Envato Tuts+!