De Kongregate API gebruiken in uw Flash Games

Kongregate is een van de grootste Flash-game-portals op het internet en heeft zijn eigen API die kan worden geïntegreerd in uw games (waarvoor Kongregate u zelfs financieel beloont). In deze zelfstudie laat ik je zien hoe je de Kongregate-API in je games kunt implementeren en kunt u ook gedetailleerd ingaan op wat de API kan en waarom u deze moet gebruiken.

(Merk op dat deze tutorial veronderstelt dat je al een Kongregate account hebt, als je dat niet doet, maak er dan nu een aan.)


Eindresultaat voorbeeld

Laten we eens kijken wat de API ons in staat stelt om te doen:

badges

Massa-berichten

Hoge scores

Er is nog een andere reden om de API te implementeren ...


Stap 1: Laten we gemotiveerd raken

Voordat we ingaan op de technische aspecten van het implementeren van de Kongregate API, laten we ons een beetje op de hielen zetten en ervoor zorgen dat we het eigenlijk willen implementeren.

Er zijn veel redenen om de API te implementeren, maar voor de meeste ontwikkelaars spreekt niets meer dan geld, en er is genoeg van dat betrokken. Wanneer je je game uploadt naar Kongregate, verdien je automatisch 25% van alle advertentie-inkomsten die worden gegenereerd door de pagina van je game.

Het wordt beter; als u hun "Statistics & Challenges API" implementeert, ontvangt u nog eens 10%! Als je game uiteindelijk exclusief is voor Kongregate of gesponsord door hen, ontvang je 15% extra. Dit geeft je de mogelijkheid om tot 50% van de advertentie-inkomsten voor je game op Kongregate te verdienen. Als je je afvraagt ​​hoeveel dat is, bekijk dan enkele van mijn persoonlijke statistieken:


Stap 2: Onze werkomgeving opzetten

Voor deze zelfstudie gebruiken we FlashDevelop, een gratis (en verbazingwekkende) open source-editor voor ontwikkelaars. We zullen alles doen in eenvoudige .as-bestanden, dus als je het zou willen volgen met behulp van de Flash IDE, zou je geen problemen moeten ondervinden. Als je FlashDevelop wilt gebruiken en er niet bekend mee bent, bekijk dan deze uitstekende FlashDevelop-beginnershandleiding om mee te beginnen aan wat ik de beste AS3-editor zou vinden die er is.

Om te beginnen, open FlashDevelop, ga naar het tabblad Project en selecteer "Nieuw project". Selecteer hier "AS3 Project with Pre-Loader". Als alternatief kunt u de Preloader.as en Main.as bestanden van de bron downloaden, en volg gewoon.

Uw bestand moet een barebones zijn Main.as bestand, zoals dit:

 pakket import flash.display.Sprite; import flash.events.Event; / ** * ... * @author Uw naam * / [Frame (factoryClass = "Preloader")] public class Belangrijkste uitbreiding Sprite public function Main (): void if (stage) init (); else addEventListener (Event.ADDED_TO_STAGE, init);  private function init (e: Event = null): void removeEventListener (Event.ADDED_TO_STAGE, init); // ingangspunt   

Niets daarboven moet nieuw voor je zijn; als dit het geval is, is alles wat u moet weten dat dit bestand het toegangspunt is voor ons programma, dit is waar het allemaal begint. Als je dit compileert met FlashDevelop, zou je een leeg wit scherm moeten krijgen, zonder compilerfouten.


Stap 3: Laten we contact maken

Voordat we een duik nemen in alle coole functies van de API, moeten we ervoor zorgen dat we de API in gebruik hebben.

In tegenstelling tot veel sponsor-API's, is de Kongregate API niet een op zichzelf staande set bestanden die we moeten compileren met ons project. De API is feitelijk opgeslagen op de Kongregate-server en we laden deze tijdens runtime in. Er zijn een aantal manieren om dit in je projecten te doen, maar in het belang van deze tutorial, zullen we gewoon verbinding maken binnen onze Main.as, en bewaar er daar een verwijzing naar.

Kopieer om te beginnen de volgende code in onze Main.as bestand net onder de bestaande invoer:

 import flash.display.LoaderInfo; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; import flash.system.Security;

Het bovenstaande zijn slechts enkele eenvoudige importen waarmee we de benodigde klassen kunnen gebruiken om in de Kongregate API te laden.

Vervolgens voegen we een variabele toe om onze verwijzing naar de Kongregate API op te slaan. Ga je gang en voeg het volgende recht toe boven de constructor van ons Main.as bestand.

 private var kongregate: *;

Merk op dat het gegevenstype van onze kongregate variabele is *. Als u hier niet bekend mee bent, vertellen we de compiler gewoon dat het kongregate variabele accepteert elk gegevenstype, ongeveer zoals een joker.

(Merk ook op dat u in een echt spel uw referentie naar de API ergens wilt opslaan waar uw volledige project toegang toe heeft, zoals een openbare statische const. Deze referentie is nodig, zodat u de API overal in uw project kunt gebruiken, voor elk doel, in plaats van alleen in de Main.as bestand wanneer we voor het eerst opstarten.)

Dit volgende stuk code bevindt zich in een aangepaste functie met de naam initKongregateAPI (). Dit is eigenlijk niet nodig, maar ik geef er de voorkeur aan om ideeën in te kapselen tijdens het schrijven van code, omdat het helpt de code leesbaar te houden en gemakkelijk om mee te werken.

Ga je gang en voeg deze functie toe onder de in het functie in Main.as.

 private function initKongregateAPI (): void // Trek het API-pad van de FlashVars var paramObj: Object = LoaderInfo (root.loaderInfo) .parameters; // Het API-pad. De "schaduw" -API wordt geladen als lokaal wordt getest. var apiPath: String = paramObj.kongregate_api_path || "Http://www.kongregate.com/flash/API_AS3_Local.swf"; // Sta de API toe tot deze SWF Security.allowDomain (apiPath); // Laad de API var-aanvraag: URLRequest = new URLRequest (apiPath); var loader: Loader = new Loader (); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete); Loader.load (verzoek); this.addChild (loader); 

Hoewel dat op veel code lijkt, is het echt niet veel, en met de opmerkingen is het vrij eenvoudig om te volgen.

Zoals je zult zien, creëren we in het eerste deel een variabele om het API-pad van de FlashVars op te slaan (als je niet weet wat dit zijn, zoek ze dan snel op, ze zijn een goede zaak om te begrijpen).

In het tweede deel bepalen we of de SWF op de Kongregate-website staat of lokaal wordt uitgevoerd, en we wijzen de juiste informatie toe aan de apiPath veranderlijk.

Vervolgens geven we de API toegang tot de SWF, met een simpele Security.allowDomain bel, waar we passeren in de apiPath als de parameter.

We maken vervolgens een nieuw URLRequest object, dat de apiPath doorgegeven aan de constructor, een nieuwe lader object en voeg een gebeurtenislistener toe voor de loader die zal bellen loadComplete wanneer klaar.

Als laatste bellen we Loader.load en geef ons verzoek door (het nieuw gecreëerde URLRequest object, dat de bevat apiPath van de Kongregate API). Als je begrijpt wat er net is gebeurd, geweldig; zo niet, zweet het niet, omdat je dit niet nog een keer hoeft aan te raken.

Vergeet het niet te bellen!

Nu de functie initKongregateAPI is gemaakt en alle verbindingscode bevat, moeten we er waarschijnlijk zeker van zijn dat deze functie daadwerkelijk wordt aangeroepen! Ga gewoon terug naar de in het functie die onze Main.as bestand al aanwezig en voeg een functie aan toe initKongregateAPI na de regel die "entry point" regel, zoals zo,

 private function init (e: Event = null): void removeEventListener (Event.ADDED_TO_STAGE, init); // startpunt initKongregateAPI (); 

Ten slotte moeten we dat toevoegen loadComplete functie, te gebruiken als de COMPLEET evenement is ontslagen uit onze vorige code. Voeg deze functie toe onder de initKongregateAPI functie in Main.as.

 // Deze functie wordt aangeroepen wanneer het laden is voltooid. Private function loadComplete (event: Event): void // Kongregate-API-referentie opslaan kongregate = event.target.content; // Maak verbinding met de back-end kongregate.services.connect (); // U hebt nu toegang tot de API via: // kongregate.services // kongregate.user // kongregate.scores // kongregate.stats // etc ...

De bovenstaande code is supereenvoudig; laten we erover gaan. We beginnen met het opslaan van een verwijzing naar de Kongregate API. Zoals u kunt zien, verwijzen we naar de Kongregate API via de parameter 'gepasseerd in', via event.target.content - simpel genoeg.

Nu hoeven we alleen nog maar verbinding te maken en onze SWF is goed om te gebruiken. Zoals je kunt zien, verbinden we ons door de kongregate.services.connect methode. Geen argumenten vereist.

Hoewel dat misschien een hoop werk leek, was het dat echt niet. Ik heb het verbindingsproces heel gedetailleerd doorgenomen, zodat je kunt begrijpen hoe we eigenlijk toegang krijgen tot de API, in plaats van alleen die toegang te hebben en deze te gebruiken. Nu u het begrijpt, kunt u al het bovenstaande gebruiken als boilerplate-code.


Stap 4: De Statistics & Challenges API

Nu we verbonden zijn, kunnen we de belangrijkste functie van de hele API bekijken: het gedeelte Statistieken en uitdagingen. Deze API verzendt speler-gerelateerde statistieken naar de Kongregate-server, waardoor een aantal dingen mogelijk is.

Ten eerste is dit de meest eenvoudige manier om gebruikers in staat te stellen te strijden om hoge scores op Kongregate. Met de API geïntegreerd, zal de zijbalk van Kongregate een nieuw tabblad bevatten met de naam "PRESTATIES", die naast het tabblad "CHAT" te vinden is. Spelers kunnen scoreborden bekijken voor elke stat die je naar de servers stuurt, wat van alles kan zijn, van een elementaire hoge score tot het totale aantal versloeg vijanden.

Het tweede en veel belangrijker gebruik is om Kongregate de door jou ingediende statistieken te laten gebruiken om "badges" voor je spellen te maken. Badges vormen een centraal onderdeel van de Kongregate-gebruikerservaring en lijken veel op de prestatiesystemen op platforms zoals Xbox LIVE.

Het leukste aan badges die aan je game zijn toegevoegd, is dat je game voor een korte periode wordt uitgelicht, waardoor het aantal views dat je krijgt sterk toeneemt en je advertentie-inkomsten aanzienlijk toenemen. Zelfs nadat je game uit de kijker is gezet, blijven alle badged-games op Kongregate een grotere kijk krijgen op normale games, wat je een uitstekende long-tail-inkomstenstroom geeft.

Houd er rekening mee dat badges niet door ontwikkelaars worden toegevoegd, maar in plaats daarvan door het personeel van Kongregate worden gemaakt. Je hebt een hoog gewaardeerde game nodig om geselecteerd te worden, maar je hebt ook de API nodig om te worden ingesteld - dus laten we die helft van het gevecht uit de weg ruimen!


Stap 5: Back-end-voorbereiding

Om de statistieken die we gaan verzenden daadwerkelijk te gebruiken, vereist Kongregate ons eerst om hun server te laten weten welke informatie zij van ons zou willen ontvangen..

Om dit te doen, gaan we eenvoudig naar de Statistieken-pagina voor onze game op de Kongregate-website. Dit is te vinden op de pagina "Spel bewerken" of door toe te voegen /statistieken aan het einde van de URL van je spel (bijvoorbeeld http://www.kongregate.com/games/EpicShadow/pixel-purge/statistics). Voor deze zelfstudie uploaden we onze test-SWF als het 'spel'.

Voordat we statistieken toevoegen aan de Statistics & Challenges API, moeten we eerst de vier soorten statistieken begrijpen die kunnen worden gebruikt en de regels waaraan ze zijn gebonden. Waarden moeten zijn positief, en moet zijn hele gehele getallen. De vier typen zijn als volgt:

  • Max: De waarde op de server wordt vervangen als de nieuwe waarde hoger is dan de opgeslagen waarde. Een hoge score van 152.000 zou bijvoorbeeld een oude hoge score van 120.000 vervangen.
  • min: De waarde op de server wordt vervangen als de nieuwe waarde lager is dan de opgeslagen waarde. In een racespel bijvoorbeeld, zou een rondetijd van 31 seconden een oudere waarde van 35 vervangen.
  • Toevoegen: De nieuwe waarde wordt toegevoegd aan de opgeslagen waarde. Een algemeen gebruik hiervan is totale verslagen vijanden, speler-sterfgevallen, enz. Te veel verzoeken aan de server kunnen resulteren in onnauwkeurige gegevens, dus het wordt geadviseerd dat gegevens alleen in bulk worden verzonden, zoals wanneer een niveau is voltooid of wanneer de speler overlijdt.
  • Vervangen: De nieuwe waarde vervangt de opgeslagen waarde, ongeacht wat. Dit kan voor een aantal dingen worden gebruikt, zoals gemiddelde overlevingstijd of rangschikking van spelers.

Weten welke van de bovenstaande soorten je moet gebruiken voor elk van je gamestatistieken is uiterst belangrijk, dus zorg ervoor dat je jezelf vertrouwd maakt met de bovenstaande lijst. Je wilt duidelijk een lijst met statistieken die je wilt dat je spel naar Kongregate stuurt, dus zorg ervoor dat je die voorbereid hebt voordat je de volgende stap neemt bij het indienen van een game.

In het belang van deze zelfstudie gebruiken we eenvoudig de volgende statistieken:

  • Totaal aantal klikken (toevoegen)
  • Max. Klikken (max.)
  • Last X (Vervangen)

Zodra je lijst is voorbereid, ga je naar de Statistieken-pagina van je spel en voer je de vereiste gegevens in. Zodra het back-endwerk op de Statistieken-pagina is gedaan, is het spel gereed om gegevens naar de Kongregate-server te verzenden.


Stap 6: Statistieken verzenden

Om daadwerkelijk gegevens naar de server te verzenden, bellen we eenvoudigweg de "submit" -functie, die er als volgt uitziet:

 submit (statName: String, value: Number): void

Zoals u kunt zien, heeft de functie twee parameters nodig:

  • statName is de naam van je stat. Het is erg belangrijk dat de doorgestreepte string identiek (hoofdlettergevoelig) is aan de naam van de stat die u in de vorige stap hebt vermeld bij het voorbereiden van de server om uw statistieken af ​​te handelen.
  • waarde is de werkelijke numerieke waarde die moet worden doorgegeven. Ook al is het gegevenstype Number, onthoud dat uw waarde een waarde moet zijn positief, geheel getal.

Om deze functie in uw spel te gebruiken, doet u eenvoudigweg het volgende:

 kongregate.stats.submit ("Your Stat String", statValue); // statwaarde zou 1, 500, 5342324, enz. kunnen zijn.

Hoewel we vier verschillende soorten statistieken hadden die we konden verzenden, verzendt deze functie alleen de waarde; de server zelf zal kijken naar de informatie die we in de vorige stap hebben verstrekt om te bepalen hoe de inkomende gegevens moeten worden behandeld. Zo simpel is het; nu weten we hoe we gegevens naar de server moeten sturen.


Stap 7: Prepping ons project om statistieken te verzenden

Nu we de back-end hebben voorbereid op de Kongregate-website en we nu weten hoe we gegevens moeten verzenden, laten we dit project eens proberen.

Het eerste dat we moeten doen is een code toevoegen aan ons project om onze statistieken daadwerkelijk te verzenden. Omdat het eenvoudigst te volgen muisinvoer is, heb ik muisgerelateerde statistieken gekozen. Zoals je in onze vorige stap zag, koos ik voor Max Clicks, Total Clicks en Last X.

Max. Klikken is de hoogste score voor het aantal keer dat we in één game klikken om het Max-type te demonstreren; Totaal aantal klikken is het totale totaal van alle klikken die we hebben gedaan om het type Toevoegen te demonstreren; en Last X is de x-positie van onze meest recente klik, om het vervangtype aan te tonen.

Om onze muisklikken bij te houden, moeten we het importeren MouseEvent klasse. Ga terug naar Main.as en voeg het volgende toe aan uw import:

 import flash.events.MouseEvent;

Nu moeten we een variabele toevoegen voor onze Max Click-stat, om het totale aantal klikken per spelsessie bij te houden. Precies daaronder waar we de kongregate referentievariabele (van gegevenstype *), voeg het volgende toe:

 privé var maxClicks: int;

We hebben een evenementluisteraar nodig om te luisteren naar onze klikken, dus we voegen dat nu toe. In de in het functie, direct onder de oproep naar initKongregateAPI, voeg het volgende toe:

 // Gebeurtenislistener voor muisklikken stage.addEventListener (MouseEvent.CLICK, klikte);

Zoals je kunt zien in de bovenstaande code, wordt de functie genoemd wanneer de gebeurtenis die hij heeft gebeld, wordt gebeld geklikt. Laten we doorgaan en die functie creëren. Voeg hieronder het volgende toe loadComplete functie:

 privé-functie geklikt (gebeurtenis: gebeurtenis): ongeldig maxClicks ++; kongregate.stats.submit ("Totaal aantal klikken", 1); kongregate.stats.submit ("Max Clicks", maxClicks); kongregate.stats.submit ("Last X", mouseX); 

Het enige wat we hier doen is het verhogen van de maxClicks variabel door 1, en vervolgens alle vereiste informatie naar de Kongregate-server te verzenden. Hiermee wordt 1 toegevoegd aan de statistiek Totaal aantal klikken, de stroom verzonden maxClicks variabele naar de server, die dan bepaalt of deze hoger is dan de vorige waarde en vervang deze als dat zo is, en verzend de x-positie van onze vorige klik, die de vorige waarde automatisch zal vervangen.

Onze SWF is misschien gewoon een leeg scherm, maar er gebeurt veel, en we staan ​​op het punt om het in actie te zien. Zorg ervoor dat je het project compileert voordat je verder gaat.


Stap 8: Ons project testen

Nu is het tijd om ons project daadwerkelijk te uploaden en in actie te zien.

Ga terug naar de Kongregate-website, ga naar je gamepagina en upload de definitieve versie van ons project. Nadat u het project hebt geüpload, wordt u naar een voorbeeldscherm gebracht waar u ons project kunt testen voordat u het publiceert. Om het personeel van Kongregate veel tijd en energie te besparen, doe iedereen een plezier en druk niet op publiceren op uw test-SWF. (Als je aan een echte game werkt, ga je gang, maar in het belang van deze tutorial zullen we dit project niet publiceren.)

Zodra u op de testpagina bent, geeft u de game een paar klikken. Ververs de pagina en je zou nu zien dat er een "HOOG SCORE" -tabblad is naast het tabblad "CHAT" en "GAME". Als je tot nu toe alles goed hebt gedaan, zou je een vervolgkeuzelijst moeten hebben die momenteel "Last X" leest en die ook "Max Clicks" en "Total Clicks" bevat. Houd er rekening mee dat klikken snel resulteert in onnauwkeurige statistieken, omdat de server niet alle verzoeken kan bijhouden, dus klik langzaam voor de beste resultaten. Dit is de reden waarom ik eerder heb geadviseerd dat je grote hoeveelheden gegevens verzendt bij overlijden, of niveau-aanvulling, indien mogelijk.

Nou, daar gaat het: je hebt nu het belangrijkste deel van de Kongregate API in gebruik. Als uw project op dit moment niet werkt, moet u ervoor zorgen dat de statelijke namen van uw Kongregate-back-end precies zo zijn als in uw verzendfunctie - hoofdlettergevoelig - omdat dat meestal het probleem is.

U kunt de voltooide code ook vinden in de definitieve bestanden map in de brondownload, dus vergelijk uw code met die als u nog steeds problemen ondervindt.


Stap 9: Communicatie met massaberichten

Heb je ooit een game uitgebracht en wilde je later echt contact opnemen met al je fans? Met de Kongregate API kun je precies dat doen, althans voor al je Kongregate-fans.

Er zijn enkele beperkingen voor wie dit kan doen, maar deze beperkingen zijn erg in het beste belang van zowel ontwikkelaars als spelers. Om in aanmerking te komen, moet je game een rating van 3,75 of hoger hebben en minstens 10k gameplays hebben.

Je kunt maximaal om de zeven dagen een bericht 'actieve spelers' sturen. Deze berichten worden verzonden naar alle spelers die het spel minstens drie keer ooit hebben gespeeld, en ten minste één keer in de afgelopen tien dagen.

U kunt het bericht 'inactieve spelers' maximaal eenmaal per 30 dagen verzenden. Deze berichten worden ontvangen door spelers die minstens vijf keer het totaal hebben gespeeld, maar niet binnen de laatste tien dagen.

Er zijn veel redenen om deze berichten naar je spelers te sturen, bijvoorbeeld door ze te waarschuwen voor bugfixes of om hen op de hoogte te stellen van een aankomend vervolg. Ongeacht waarvoor je dit gebruikt, het is een ongelooflijk handig systeem dat je echt kan helpen om je fans te gebruiken.

Raadpleeg deze handleiding voor meer informatie.


Zo veel meer…

Hoewel we veel hebben behandeld in deze tutorial, kan de Kongregate API veel meer doen. Helaas zou ik een klein boekje moeten schrijven om alle functies te bespreken, vooral die welke nuttig zijn voor op het web gebaseerde MMO's. Als u wilt weten welke andere functies de API te bieden heeft, raad ik u aan het Kongregate Developers Center te bezoeken voor meer informatie.

Nu u weet hoe u de Kongregate API kunt gebruiken, raad ik u ten sterkste aan om deze aan al uw toekomstige games toe te voegen; als je geluk hebt, kun je zelfs een aantal badges krijgen, en dat is het moment waarop het echte plezier begint.