Google Play-spilltjenester Opprette hendelser og oppdrag

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.

1. Forstå hendelser og oppdrag

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:

  • Du trenger ikke skrive noen kode for å legge til en ny oppgave i spillet ditt, forutsatt at hendelsene det avhenger av allerede er en del av spillet.
  • Oppdrag er tidsbundne. For eksempel kan du planlegge en ny oppgave å starte en uke før jul og utfordre brukerne til å fullføre den før julaften.
  • En bruker kan bare fullføre en oppdrag etter at han valgte å delta i den.

Med mange interessante oppdrag, hvorav noen er planlagt å gjenta hver uke eller måned, kan du enkelt få brukerne til å spille spillet flere ganger.

2. Opprette en hendelse

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

3. Opprette en søken

Å 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

4. Vise Quest-brukergrensesnittet

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.

5. Bruk hendelses-API

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:

PendingResult results = 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");    );

6. Oppdage Quest-fullføring

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:

Konklusjon

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!

  • Kom i gang med Google Play Games Services

    Hvis du utvikler et spill for Android-plattformen, kan du gjøre bruk av API-ene for Google Play-spilltjenester for raskt å legge til vanlige spillfunksjoner. I dette…
    Ashraff Hathibelagal
    Android SDK
  • Google Play Services: Awareness API

    Google har nylig gitt ut Awareness API, som lar utviklere lage apper som intelligent reagerer på brukerens virkelige situasjon. I dette…
    Paul Trebilcox-Ruiz
    Android SDK
  • Kom i gang med Firebase for Android

    Opprette en back-end-server krever et ferdighetssett som de fleste uavhengige apputviklere mangler. Heldigvis er det Firebase, en skybasert plattform som ...
    Ashraff Hathibelagal
    Android SDK
  • Hva er nytt i Firebase? Oppdateringer fra Firebase Dev Summit

    Firebase-teamet annonserte noen nye funksjoner på Firebase Dev-toppmøtet i november i Berlin. I denne artikkelen tar jeg deg gjennom noen av de mest ...
    Chike Mgbemena
    Android SDK