Google Play Games-services evenementen en quests maken

Hoge herhalingswaarde is een van de bepalende kenmerken van een geweldig spel. Zelfs games met zeer eenvoudige plots kunnen succesvol worden op Google Play zolang ze een hoge replay-waarde hebben. Als je een fervent gamer bent, weet je waarschijnlijk al wat replay-waarde is. Als je dat niet doet, kun je het zien als de waarschijnlijkheid dat een gebruiker opnieuw een spel gaat spelen, zelfs nadat het primaire doel is bereikt.

Door de API's voor gebeurtenissen en zoektochten te gebruiken, die een deelverzameling zijn van de API's voor Google Play-gameservices, kunt u de replay-waarden van uw games drastisch verhogen, om nog te zwijgen van het uitdagender en leuker maken ervan. In deze zelfstudie laat ik u zien hoe u het maximale haalt uit beide API's.

Voordat u verdergaat, raad ik u aan mijn introductietraining over Google Play-gameservices te lezen, waarin u wordt uitgelegd hoe u de services in een Android Studio-project kunt gebruiken.

1. Gebeurtenissen en missies begrijpen

Alles wat in een spel gebeurt, kan als een evenement worden beschouwd. Door voldoende evenementen te loggen met de evenementen-API, kunt u het gedrag van uw gebruikers nauwkeurig analyseren. Je kunt details afleiden, zoals hoe ver de gebruikers kunnen gaan in je spel, hoeveel vijanden ze doden en hoeveel in-game bronnen ze verzamelen. Met dergelijke details bij de hand kunt u uw spel eenvoudig verfijnen om het nog aangenamer te maken.

De API voor gebeurtenissen wordt echter zelden alleen gebruikt. De meeste ontwikkelaars gebruiken het samen met de quests-API om speurtochten te maken. Een zoektocht, zoals de naam al doet vermoeden, is een secundair doel dat de gebruikers kunnen bereiken om enige beloning te krijgen. Als u bijvoorbeeld een game maakt waarbij de gebruiker een prinses probeert op te slaan, kunt u een queeste eraan toevoegen waarin de gebruiker ten minste 100 ringen voor haar moet vinden.

Als je het nog niet hebt geraden, worden gebeurtenissen gebruikt om de voltooiingscriteria van speurtochten te definiëren. In het bovenstaande voorbeeld zou het vinden van een ring een gebeurtenis zijn die 100 keer moet plaatsvinden om de quest als voltooid te markeren.

Hoewel zoektochten enkele overeenkomsten vertonen met prestaties, zijn er enkele belangrijke verschillen tussen beide:

  • Je hoeft geen code te schrijven om een ​​nieuwe quest aan je game toe te voegen, op voorwaarde dat de events waar het van afhankelijk is al deel uitmaken van het spel.
  • Quests zijn tijdgebonden. U kunt bijvoorbeeld een nieuwe quest plannen om een ​​week voor Kerstmis te beginnen en gebruikers uitdagen om deze voor kerstavond in te vullen.
  • Een gebruiker kan een zoektocht alleen voltooien nadat hij ervoor heeft gekozen om eraan deel te nemen.

Met veel interessante speurtochten, waarvan sommige gepland zijn om elke week of maand te herhalen, kun je gebruikers moeiteloos meerdere keren je spel laten spelen.

2. Een evenement maken

Log in op de Play-ontwikkelaarsconsole en open de Game Services scherm door op het gamepad-pictogram te klikken.

Kies vervolgens de game waaraan je evenementen wilt toevoegen en open de Evenementen sectie.

druk de Voeg evenement toe om te beginnen met het maken van een evenement. In de vorm die verschijnt, geeft u een betekenisvolle naam aan het evenement. Verdergaand met het voorbeeld van de vorige stap, bel ik het evenement Verzamel Ring.

Zodra u op de Opslaan knop, kunt u de ID van de gebeurtenis zien. Als u de gebeurtenis in uw Android Studio-project wilt gebruiken, moet u de ID als een nieuw toevoegen tag in de spelletjes-ids.xml het dossier.

ABCDEFabcdef123

3. Een Quest creëren

Het creëren van een zoektocht is iets meer betrokken. Begin door naar de Quests sectie en druk op de Voeg zoektocht toe knop. Geef de zoektocht een aantrekkelijke naam en een gemakkelijk te begrijpen beschrijving. Beide zijn erg belangrijk omdat ze door de gebruikers worden gelezen. Een zoektocht die er niet interessant uitziet, is onwaarschijnlijk om veel deelnemers te zien.

Scrol vervolgens omlaag naar de Voltooiingscriteria sectie. In de Zoek een evenement veld, typ de ID van de gebeurtenis die u eerder hebt gemaakt. In het volgende invoerveld moet u opgeven hoe vaak de gebeurtenis moet plaatsvinden om de opdracht te voltooien.

In de Planning sectie, geef de Begindatum en -tijd van de zoektocht. Om meteen met de quest te kunnen werken, kun je de datum van vandaag kiezen.

Je moet ook de duur van de quest specificeren door een waarde in te typen in de Aantal dagen veld. Optioneel kun je ervoor kiezen om deelnemers aan een queeste op de hoogte te stellen wanneer ze bijna geen tijd meer hebben.

Een zoektocht moet een beloning hebben - waarom zou een gebruiker er anders voor kiezen om eraan deel te nemen? U kunt opgeven wat de beloning is door een beloningsbestand te uploaden, wat een bestand van elk formaat kan zijn. De meeste ontwikkelaars kiezen ervoor om het JSON-formaat te gebruiken. Hier is een voorbeeldbeloningsbestand:

points: 3000, max_lives: 15

Het is vermeldenswaard dat de inhoud van het beloningsbestand niet belangrijk is voor de Play Games Services-API's. Het is jouw verantwoordelijkheid om ze te analyseren en te gebruiken in jouw spel.

In de Beloningsgegevens sectie, druk op de Blader en upload het beloningsbestand dat je hebt gemaakt.

Druk ten slotte op Opslaan om een ​​ID voor de quest te genereren. Optioneel kunt u de ID kopiëren en toevoegen aan uw Android Studio-projecten spelletjes-ids.xml bestand als een ander label.

BCDEABCD123

4. De gebruikersinterface voor quests weergeven

De quests-API biedt een activiteit die alle speurtochten kan weergeven die beschikbaar zijn in je game. Met de activiteit kunnen gebruikers ook deelnemen aan speurtochten.

Om de speurtochten-activiteit te openen, moet u een intentie ervoor maken met behulp van de getQuestsIntent () methode van de Games.Quests klasse. Als zijn argumenten verwacht hij een GoogleApiClient object en een int array met de typen quests die u wilt weergeven. Hier zijn enkele populaire waarden voor de soorten zoektochten:

  • Quests.SELECT_OPEN, een zoektocht waar een gebruiker meteen aan mee kan doen.
  • Quests.SELECT_UPCOMING, een zoektocht die nog moet beginnen.
  • Quests.SELECT_COMPLETED, een zoektocht die de gebruiker al heeft voltooid.
  • Quests.SELECT_ACCEPTED, een zoektocht waaraan de gebruiker momenteel deelneemt.

Na het maken van de voornemen object, je kunt het doorgeven aan de startActivityForResult () methode om de speurtochtactiviteit weer te geven.

De volgende code laat je zien hoe je de speurtochten-activiteit opent en vier soorten speurtochten toont:

Intent intent = Games.Quests.getQuestsIntent (apiClient, nieuwe int [] Quests.SELECT_OPEN, Quests.SELECT_UPCOMING, Quests.SELECT_ACCEPTED, Quests.SELECT_COMPLETED); startActivityForResult (intentie, 0);

Dit is hoe de speurtocht-activiteit eruit ziet:

De gebruiker wordt een deelnemer aan de quest door op de Aanvaarden knop. Tijdens een zoektocht kunnen de gebruikers terugkeren naar de gebruikersinterface van de speurtocht om te zien hoeveel van de quest voltooid is.

5. De Events API gebruiken

Met de evenementen-API kun je eenvoudig evenementen in je game beheren. Als u de waarde van een gebeurtenis wilt wijzigen, gebruikt u de increment () methode van de Games.Events klasse. Als zijn argumenten verwacht hij een GoogleApiClient object, de naam van de gebeurtenis en een getal dat aangeeft hoeveel de waarde van de gebeurtenis moet worden verhoogd.

De volgende code verhoogt de waarde van de event_collect_ring evenement door 1:

Games.Events.increment (apiClient, getString (R.string.event_collect_ring), 1);

Als u de huidige waarden van gebeurtenissen wilt ophalen, moet u de laden() methode. Omdat de waarde asynchroon wordt opgehaald van de servers van Google, is de retourwaarde van de methode een PendingResult voorwerp. Door een toe te voegen ResultCallback er object van zijn, kunt u een melding krijgen wanneer het resultaat beschikbaar is.

Binnen in de onResult () methode van de ResultCallback interface, moet u de getEvents () methode van de Events.LoadEventsResult object, dat een retourneert EventBuffer. Zodra je het gewenste hebt gevonden Evenement in de buffer kun je de getValue () methode om de huidige waarde te krijgen.

De volgende code laat zien hoe de waarde van de te halen event_collect_ring evenement:

PendingResult resultaten = Games.Events.load (apiClient, true); results.setResultCallback (nieuwe ResultCallback() @Override public void onResult (@NonNull Events.LoadEventsResult loadEventsResult) // Haal alle gebeurtenissen van de game op EventBuffer events = loadEventsResult.getEvents (); // Doorloop alle gebeurtenissen voor (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. Detectie van Quest-voltooiing

Wanneer een gebruiker op tijd een opdracht voltooit, moet uw spel de gebruiker kunnen belonen met het beloningsbestand dat u hebt geüpload in de Play-ontwikkelaarsconsole. Om het voltooien van de quest te detecteren, moet u een QuestUpdateListener object en registreer het met de quests API met behulp van de registerQuestUpdateListener () methode van de Games.Quests klasse.

Binnen in de onQuestCompleted () methode van de QuestUpdateListener interface, moet u de vordering () methode om de beloning van de quest te claimen. Je moet een GoogleApiClient object, de missie-ID en de ID van de huidige mijlpaal voor de methode.

Na de claim kunt u het beloningsbestand ophalen als een byte array door de getCompletionRewardData () methode. Omdat onze beloningsgegevens slechts een JSON-bestand zijn, kunt u de byte array naar de constructor van de Draad klasse om het in een string te converteren.

Games.Quests.registerQuestUpdateListener (apiClient, nieuwe QuestUpdateListener () @Override public void onQuestCompleted (Quest quest) Games.Quests.claim (apiClient, quest.getQuestId (), quest.getCurrentMilestone () .getMilestoneId ()); byte [ ] rewardData = quest.getCurrentMilestone () .getCompletionRewardData (); String reward = new String (rewardData););

Op dit punt kun je de reeks omzetten in een JSONObject bijvoorbeeld, en lees de waarden van de toetsen erin. De volgende code toont u hoe u de waarden van twee opgeroepen toetsen ophaalt points en max_lives:

probeer JSONObject rewardObject = new JSONObject (reward); int points = rewardObject.getInt ("points"); int maxLives = rewardObject.getInt ("max_lives"); Log.d (TAG, "Je hebt nu" + punten + "punten en" + maxLevens + "levens");  catch (Uitzondering e) Log.e (TAG, "Could not pars JSON"); 

Merk op dat de speurtochtactiviteit zichzelf automatisch bijwerkt wanneer een zoektocht is voltooid. Dit is wat een voltooide zoektocht eruit ziet:

Conclusie

In deze zelfstudie leer je hoe je de API's voor speurtochten en evenementen gebruikt om gebruikers te overtuigen om je spel steeds opnieuw te spelen. Houd er echter rekening mee dat omdat deze API's tarieflimieten hebben, u moet proberen deze niet te vaak in uw app te gebruiken. U kunt verwijzen naar de kwaliteitscontrolelijst Play-gameservices voor meer informatie over meer beperkingen en praktische tips.

Voor meer informatie over speurtochten en evenementen, kunt u hun officiële documentatie raadplegen. En bekijk in de tussentijd een aantal van onze andere berichten op Firebase en Google Play-services!

  • Aan de slag met Google Play Games-services

    Als u een game ontwikkelt voor het Android-platform, kunt u gebruikmaken van de API's voor Google Play-gameservices om snel algemene gamefuncties toe te voegen. In deze…
    Ashraff Hathibelagal
    Android SDK
  • Google Play-services: Awareness API

    Google heeft onlangs de Awareness API uitgebracht, waarmee ontwikkelaars apps kunnen maken die intelligent reageren op de realiteit van de gebruiker. In deze…
    Paul Trebilcox-Ruiz
    Android SDK
  • Aan de slag met Firebase voor Android

    Voor het maken van een back-end-server is een vaardigheden vereist die de meeste onafhankelijke app-ontwikkelaars niet hebben. Gelukkig is er Firebase, een cloudgebaseerd platform dat ...
    Ashraff Hathibelagal
    Android SDK
  • Wat is nieuw in Firebase? Updates van de Firebase Dev Summit

    Het Firebase-team heeft een aantal nieuwe functies aangekondigd tijdens de Firebase Dev-top in november in Berlijn. In dit artikel neem ik enkele van de meest ...
    Chike Mgbemena
    Android SDK