Høy replay verdi er et av de definerende egenskapene til et flott spill. Selv spill med veldig enkle tomter kan bli vellykkede på Google Play så lenge de har en høy replay-verdi. Hvis du er en ivrig gamer, vet du sannsynligvis hva replay-verdien er. Hvis du ikke gjør det, kan du tenke på det som sannsynligheten for at en bruker skal spille et spill igjen, selv etter å ha oppnådd sitt hovedmål.
Ved å bruke APIs for hendelser og oppdrag, som er en delmengde av Google Play-spilltjenesteprogrammer, kan du dramatisk øke replayverdiene til spillene dine, for ikke å nevne gjøre dem mer utfordrende og morsomme. I denne veiledningen viser jeg deg hvordan du får mest mulig ut av begge APIene.
Før du fortsetter, foreslår jeg at du leser min innledende veiledning om Google Play-spilltjenester, som viser deg hvordan du bruker tjenestene i et Android Studio-prosjekt.
Alt som skjer i et spill kan betraktes som en hendelse. Ved å logge på nok hendelser ved hjelp av hendelses-API, kan du nøye analysere atferdene til brukerne. Du kan utlede detaljer som hvor langt brukerne kan gå i spillet ditt, hvor mange fiender de dreper, og hvor mange ressurser i spillet de samler. Med slike detaljer for hånden, kan du enkelt forfine spillet ditt for å gjøre det morsommere.
Hendelses-API-en brukes imidlertid sjelden til alene. De fleste utviklere bruker det sammen med API-oppdragene for å lage oppdrag. Et oppdrag, som navnet antyder, er et sekundært mål som brukerne kan oppnå for å få litt belønning. Hvis du for eksempel lager et spill hvor brukeren prøver å lagre en prinsesse, kan du legge til en oppgave der den skal finne minst 100 ringer for henne.
Hvis du ikke har gjettet det allerede, blir hendelser brukt til å definere ferdigstillelseskriteriene for oppdrag. I det ovennevnte eksempelet ville det være en hendelse som må oppstå 100 ganger for at søket skal merkes som fullført.
Selv om oppdragene deler noen likheter med prestasjoner, er det noen viktige forskjeller mellom de to:
Med mange interessante oppdrag, hvorav noen er planlagt å gjenta hver uke eller måned, kan du enkelt få brukerne til å spille spillet flere ganger.
Logg deg på Play Developer-konsollen og åpne Spilltjenester skjermen ved å klikke på gamepad-ikonet.
Deretter velger du spillet du vil legge til hendelser til og åpne arrangementer seksjon.
trykk Legg til arrangement knappen for å begynne å lage en hendelse. I skjemaet som dukker opp, gi et meningsfylt navn til arrangementet. Fortsetter med eksemplet fra det forrige trinnet, ringer jeg hendelsen Samle Ring.
Når du trykker på Lagre knappen, vil du kunne se IDen til arrangementet. For å kunne bruke hendelsen i Android Studio-prosjektet ditt, må du legge til ID-en som en ny
tag i spill-ids.xml fil.
ABCDEFabcdef123
Å lage en oppgave er litt mer involvert. Begynn med å gå til oppdrag delen og trykke på Legg til søken knapp. Gi oppdraget et attraktivt navn og en lettforståelig beskrivelse. Begge er svært viktige fordi de blir lest av brukerne. Et oppdrag som ikke ser interessant ut, er usannsynlig å se mange deltakere.
Deretter ruller du ned til Ferdigstillelseskriterier seksjon. I Finn en begivenhet feltet, skriv inn IDen til hendelsen du opprettet tidligere. I neste innskrivingsfelt må du angi hvor mange ganger hendelsen må skje for at søket skal fullføres.
I Rute avsnitt, spesifiser Startdato og klokkeslett av søket. For å kunne begynne å jobbe med søket umiddelbart, kan du velge dagens dato.
Du må også angi lengden på søket ved å skrive inn en verdi i Antall dager felt. Eventuelt kan du velge å varsle opp deltakerne når de er nesten ute av tide.
Et oppdrag må ha en belønning - hvorfor ellers ville en bruker velge å delta i det? Du kan angi hva belønningen er ved å laste opp en belønningsfil, som kan være en fil med noe format. De fleste utviklere velger å bruke JSON-formatet. Her er en prøvebelønningsfil:
poeng: 3000, max_lives: 15
Det er verdt å merke seg at innholdet i belønningsfilen ikke er viktig for API-spillene for spill spilltjenester. Det er ditt ansvar å analysere og bruke dem i spillet ditt.
I Belønningsdata seksjonen, trykk på Søk knappen og last opp belønningsfilen du opprettet.
Til slutt trykker du på Lagre å generere en ID for søket. Du kan også kopiere ID-en og legge den til i ditt Android Studio-prosjekt spill-ids.xml filen som en annen
stikkord.
BCDEABCD123
Quests API tilbyr en aktivitet som kan vise alle oppdragene som er tilgjengelige i spillet ditt. Aktiviteten tillater også brukere å bli med på oppdrag.
For å åpne oppdragsaktiviteten må du opprette en hensikt for den ved hjelp av getQuestsIntent ()
metode av Games.Quests
klasse. Som argumenter forventer den a GoogleApiClient
objekt og en int
array som angir hvilke typer oppdrag du vil vise. Her er noen populære verdier for typer oppdrag:
Quests.SELECT_OPEN
, et oppdrag en bruker kan delta i med en gang.Quests.SELECT_UPCOMING
, et oppdrag som ennå ikke er i gang.Quests.SELECT_COMPLETED
, et oppdrag brukeren allerede har fullført.Quests.SELECT_ACCEPTED
, en oppgave som brukeren for øyeblikket deltar i.Etter å ha opprettet Intent
objekt, du kan sende det til startActivityForResult ()
metode for å vise oppdragsaktiviteten.
Følgende kode viser hvordan du åpner oppdragsaktiviteten og viser fire typer oppdrag:
Intent Intent = Games.Quests.getQuestsIntent (apiClient, new int [] Quests.SELECT_OPEN, Quests.SELECT_UPCOMING, Quests.SELECT_ACCEPTED, Quests.SELECT_COMPLETED); startActivityForResult (intensjon, 0);
Slik ser oppdragsaktiviteten ut:
Brukeren blir en deltager i søket ved å trykke på Aksepterer knapp. Under en søken kan brukerne gå tilbake til oppdrags-brukergrensesnittet for å se hvor mye søket er fullført.
Hendelses-API lar deg enkelt administrere hendelser i spillet ditt. For å endre verdien av en hendelse, kan du bruke inkrement ()
metode av Games.Events
klasse. Som argumenter forventer den a GoogleApiClient
objekt, navnet på arrangementet og et tall som angir hvor mye verdien av arrangementet skal økes.
Følgende kode øker verdien av event_collect_ring
arrangement av 1:
Games.Events.increment (apiClient, getString (R.string.event_collect_ring), 1);
For å hente nåværende verdier av hendelser, må du bruke laste()
metode. Fordi verdien hentes fra Googles tjenere asynkront, er verdien av returmetoden a PendingResult
gjenstand. Ved å legge til en ResultCallback
motsette seg det, du kan bli varslet når resultatet er tilgjengelig.
Inne i onResult ()
metode av ResultCallback
grensesnitt, må du ringe getEvents ()
metode av Events.LoadEventsResult
objekt, som returnerer en EventBuffer
. Når du finner den ønskede Begivenhet
I bufferen kan du ringe den getValue ()
metode for å få sin nåværende verdi.
Følgende kode viser hvordan du henter verdien av event_collect_ring
begivenhet:
PendingResultresults = Games.Events.load (apiClient, true); results.setResultCallback (new ResultCallback () @Overtrid offentlig tomgang påResultat (@NonNull Events.LoadEventsResult loadEventsResult) // Hent alle hendelsene i spillet EventBuffer events = loadEventsResult.getEvents (); // Gå gjennom alle hendelsene for (int i = 0; i < events.getCount(); i++) Event currentEvent = events.get(i); // Check if current event is the desired event // and print its value if(currentEvent.getEventId().equals(getString( R.string.event_collect_ring))) Log.d(TAG, "You have now collected " + currentEvent.getValue() + " rings"); );
Når en bruker fullfører en søken etter tid, må spillet belønne brukeren ved hjelp av belønningsfilen du lastet opp i Play-utviklerkonsollen. For å oppdage ferdigstillelse av søken må du opprette en QuestUpdateListener
objekt og registrer det med quests API ved hjelp av registerQuestUpdateListener ()
metode av Games.Quests
klasse.
Inne i onQuestCompleted ()
metode av QuestUpdateListener
grensesnitt, må du ringe krav()
metode for å kreve belønningen av søket. Du må passere en GoogleApiClient
objekt, søkenavn, og den nåværende milepælens ID til metoden.
Etter kravet kan du hente belønningsfilen som en byte
array ved å ringe getCompletionRewardData ()
metode. Fordi våre belønningsdata er bare en JSON-fil, kan du passere byte
array til konstruktøren av string
klassen for å konvertere den til en streng.
Games.Quests.registerQuestUpdateListener (apiClient, new QuestUpdateListener () @Override public void onQuestCompleted (Quest quest) Games.Quests.claim (apiClient, quest.getQuestId (), quest.getCurrentMilestone () .getMilestoneId ()); byte [ ] rewardData = quest.getCurrentMilestone () .getCompletionRewardData (); String belønning = ny String (rewardData););
På dette punktet kan du konvertere strengen til en JSONObject
eksempel, og les verdiene til nøklene inni den. Følgende kode viser hvordan du henter verdiene for to nøkler som heter punkter og max_lives:
prøv JSONObject rewardObject = nytt JSONObject (belønning); int poeng = rewardObject.getInt ("poeng"); int maxLives = rewardObject.getInt ("max_lives"); Log.d (TAG, "Du har nå fått" + poeng + "poeng og" + maxLives + "liv"); fangst (Unntak e) Log.e (TAG, "Kunne ikke analysere JSON");
Legg merke til at oppdragsaktiviteten automatisk oppdateres når et oppdrag er fullført. Slik ser en ferdig oppgave ut:
I denne opplæringen lærte du hvordan du bruker APIene for oppdrag og hendelser for å overtale brukere til å spille spillet igjen og igjen. Vær imidlertid oppmerksom på at fordi disse APIene har takstgrenser, må du prøve å unngå å bruke dem for ofte i appen din. Du kan se på siden for spill av spillkvalitet for kvalitetskontrolleliste for å lære mer om begrensninger og beste praksis.
For å lære mer om oppdrag og arrangementer, kan du referere til deres offisielle dokumentasjon. Og i mellomtiden, sjekk ut noen av våre andre innlegg på Firebase og Google Play Services!