Kongregate är en av de största Flash-spelportalerna på nätet, och har ett eget API som kan integreras i dina spel (för vilka Kongregate till och med belönar dig ekonomiskt). I denna handledning visar jag dig hur du implementerar Kongregate API i dina spel och går också in i detalj om vad API: n är kapabel till och varför du ska använda den.
(Observera att den här handledningen förutsätter att du redan har ett Kongregate-konto, om du inte gör det, var vänlig skapa ett nu.)
Låt oss ta en titt på vad API tillåter oss att göra:
Emblem
Massmeddelanden
Höga poäng
Det finns en annan stor anledning att implementera API ...
Innan vi dyker in i de tekniska aspekterna av implementeringen av Kongregate API, låt oss få oss lite förhöjda och se till att vi faktiskt vill implementera det.
Det finns många anledningar att implementera API: n, men för de flesta utvecklare talar ingenting högre än pengar, och det finns gott om det där. När du laddar upp ditt spel till Kongregate, tjänar du automatiskt 25% av alla annonsintäkter som genereras av spelets sida.
Det blir bättre; Om du implementerar deras "Statistik & Utmaningar API" får du ytterligare 10%! Slutligen, om ditt spel är exklusivt till Kongregate, eller sponsras av dem, får du ytterligare 15%. Detta ger dig möjlighet att tjäna upp till 50% av annonsintäkterna för ditt spel på Kongregate. Om du undrar hur mycket det är, kolla in några av mina personliga statistik:
För denna handledning använder vi FlashDevelop, en fri (och fantastisk) öppen käll editor för utvecklare. Vi gör allt i enkla .as-filer, så om du vill följa med Flash IDE, borde du inte ha några problem. Om du vill använda FlashDevelop och inte är bekant med det, kolla in den här utmärkta FlashDevelop-nybörjarguiden för att komma igång med vad jag skulle betrakta som den bästa AS3-redaktören där ute.
Öppna FlashDevelop, gå till fliken Project och välj "Nytt projekt". Härifrån välj "AS3 Projekt med förladare". Alternativt kan du ta tag i Preloader.as
och Main.as
filer från källsändningen, och följ enkelt med.
Din fil ska vara en barebones Main.as
fil, så här:
paket import flash.display.Sprite; importera flash.events.Event; / ** * ... * @author Ditt namn * / [Ram (factoryClass = "Preloader")] allmän klass Main sträcker sig Sprite public function Main (): void if (stage) init annars addEventListener (Event.ADDED_TO_STAGE, init); privatfunktion init (e: Event = null): void removeEventListener (Event.ADDED_TO_STAGE, init); // inkörsport
Inget ovan bör vara nytt för dig; Om det är allt du behöver veta är att den här filen är startpunkten för vårt program, så här börjar allt. Om du kompilerar detta med FlashDevelop, ska du få en blank vit skärm utan kompilatorfel.
Innan vi dyker in i alla de coola funktionerna i API måste vi se till att vi har API-en igång.
Till skillnad från många sponsor API är Kongregate API inte en fristående uppsättning filer som vi behöver sammanställa med vårt projekt. API: n lagras faktiskt på Kongregate-servern, och vi laddar den in vid körning. Det finns ett antal sätt att göra detta i dina projekt, men för denna tutorials skull kommer vi enkelt att ansluta inom vår Main.as
, och spara en referens till det där.
För att börja, kopiera följande kod till vår Main.as
filen precis under befintlig import:
importera flash.display.LoaderInfo; importera flash.display.Loader; importera flash.net.URLRequest; importera flash.events.Event; importera flash.system.Security;
Ovanstående är bara några enkla importeringar som gör att vi kan använda de nödvändiga klasserna för laddning i Kongregate API.
Därefter lägger vi till en variabel för att lagra vår referens till Kongregate API. Fortsätt och lägg till följande rätt ovanför konstruktören i vår Main.as-fil.
privat var kongregate: *;
Observera att datatypen för vår kongregate-variabel är *
. Om du inte är bekant med det här berättar vi helt enkelt kompilatorn att kongregate
variabel kommer att acceptera vilken datatyp som helst, som ett vildt kort.
(Observera också att i ett riktigt spel skulle du vilja lagra din referens till API någonstans där hela projektet har tillgång till, till exempel en statisk statisk konst
. Denna referens behövs så att du kan använda APIet var som helst i ditt projekt, för något syfte, snarare än bara i Main.as
fil när vi först börjar.)
Detta nästa kodstycke kommer att finnas i en anpassad funktion med namnet på initKongregateAPI ()
. Detta är egentligen inte nödvändigt, men jag föredrar att inkapsla idéer när du skriver kod, eftersom det hjälper till att hålla koden läsbar och lätt att arbeta med.
Fortsätt och lägg till den här funktionen under i det
funktion i Main.as
.
privat funktion initKongregateAPI (): void // Dra API-banan från FlashVars var paramObj: Objekt = LoaderInfo (root.loaderInfo) .parameters; // API-sökvägen. Programmet "skugga" laddas om det testas lokalt. var apiPath: String = paramObj.kongregate_api_path || "Http://www.kongregate.com/flash/API_AS3_Local.swf"; // Tillåt API-åtkomst till denna SWF Security.allowDomain (apiPath); // Ladda API var begäran: URLRequest = ny URLRequest (apiPath); var loader: Loader = ny Loader (); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete); Loader.load (begäran); this.addChild (loader);
Medan det kan se ut som mycket kod är det verkligen inte så mycket, och med kommentarerna är det ganska lätt att följa.
Som du ser, skapar vi i första delen en variabel för att lagra API-sökvägen från FlashVars (om du inte vet vad dessa är, titta upp dem väldigt snabbt, det är en bra sak att förstå).
I det andra stycket bestämmer vi huruvida SWF är på Kongregates hemsida eller kör lokalt och vi tilldelar rätt information till apiPath
variabel.
Därefter ger vi API-åtkomst till SWF, med en enkel Security.allowDomain
ring, där vi passerar i apiPath
som parameter.
Vi skapar sedan en ny URLRequest
objekt, som får apiPath
skickade in till konstruktören, en ny Lastare
objekt och lägg till en händelseloggare för lastaren som ringer loadComplete
när det är klart.
Sist vi kallar Loader.load
och skicka i vår begäran (den nyskapade URLRequest
objekt som innehåller apiPath
av Kongregate API). Om du förstår vad som just hände, bra; Om inte, svett inte det, eftersom du inte behöver röra om det här igen.
Nu när initKongregateAPI-funktionen skapas, och innehåller all anslutningskod, bör vi noga se till att den här funktionen faktiskt blir kallad! Helt enkelt gå tillbaka till i det
funktion som vår Main.as
fil som redan finns och lägga till ett funktionssamtal till initKongregateAPI
efter linjen som "ingångspunkt" linje, som så,
privat funktion init (e: Event = null): void removeEventListener (Event.ADDED_TO_STAGE, init); // Ingångspunkt initKongregateAPI ();
Slutligen måste vi lägga till det loadComplete
funktion, som ska kallas när KOMPLETT
Evenemanget avfyras från vår tidigare kod. Lägg till den här funktionen under initKongregateAPI
funktion i Main.as
.
// Den här funktionen kallas när laddningen är färdig privat funktion loadComplete (händelse: Händelse): void // Spara Kongregate API-referens kongregate = event.target.content; // Anslut till back-end kongregate.services.connect (); // Du kan nu komma åt API: n via: // kongregate.services // kongregate.user // kongregate.scores // kongregate.stats // etc ...
Ovanstående kod är super enkel; låt oss gå över det. Vi börjar med att spara en referens till Kongregate API. Som du kan se hänvisar vi till Kongregate API via parametern för passerad händelse via event.target.content
- enkelt nog.
Nu behöver vi bara ansluta, och vår SWF är bra att gå. Som ni kan se, ansluter vi oss genom att ringa kongregate.services.connect
metod. Inga argument krävs.
Även om det kan ha verkade som mycket arbete, så var det verkligen inte. Jag gick helt enkelt över anslutningsprocessen i mycket detalj, så att du kan förstå hur vi faktiskt får tillgång till API, istället för att bara ha den åtkomst och använda den. Nu när du förstår det kan du använda alla ovanstående som kedjeplattkod.
Nu när vi är anslutna kan vi titta på det viktigaste inslaget i hela API: delen Statistik och utmaningar. Detta API skickar spelarrelaterad statistik till Kongregate-servern, vilket möjliggör ett antal saker.
Först och främst är detta det mest grundläggande sättet att tillåta användare att konkurrera om höga poäng på Kongregate. Med API integrerat kommer sidofältet Kongregate att inkludera en ny flik med etiketten "PRESTATIONS", som kan hittas bredvid fliken "CHAT". Spelare kan se topplistor för varje stat du skickar till servrarna, vilket kan vara allt från en grundläggande hög poäng till det totala antalet fiender som besegrades.
Den andra och mycket viktigare användningen är att tillåta Kongregate att använda den statistik du skickar för att skapa "märken" för dina spel. Badges är en central del av Kongregates användarupplevelse, och liknar prestationssystemen på plattformar som Xbox LIVE.
Det bästa med att ha märken som läggs till i ditt spel är att ditt spel kommer att presenteras under en kort varaktighet, vilket väsentligt ökar antalet visningar du får och därigenom öka annonsintäkterna kraftigt. Även efter att ditt spel är ute av rampljuset fortsätter alla badged-spel på Kongregate att få ökad vy över normala spel vilket ger dig en utmärkt långsiktig inkomstström.
Observera att märken inte läggs till av utvecklare, utan skapas istället av Kongregates personal. Du behöver ett högt rankat spel för att bli valt, men du måste också ha API-en som ska ställas in - så låt oss få den halva striden ur vägen!
För att faktiskt använda den statistik som vi ska skicka kräver Kongregate först att vi ska låta servern veta vilken information den ska vara beredd att ta emot från oss.
För att göra detta går vi helt enkelt till statistiksidan för vårt spel på Kongregates hemsida. Detta finns på sidan "Edit Game", eller genom att lägga till /statistik
till slutet av ditt speladress (till exempel http://www.kongregate.com/games/EpicShadow/pixel-purge/statistics). För denna handledning laddar vi helt enkelt vårt test SWF som "spelet".
Innan du lägger till någon statistik i API: n statistik och utmaningar måste vi först förstå de fyra typerna av statistik som kan användas och de regler som de är bundna till. Värden måste vara positiv, och måste vara hela heltal. De fyra typerna är följande:
Att veta vilken av de ovanstående typerna du behöver använda för varje spelstatistik är oerhört viktigt, så se till att du känner till listan ovan. Du vill uppenbarligen ha en lista över statistik som du vill ha ditt spel att skicka till Kongregate, så se till att du har de förberedda innan du dyker in i nästa steg när du faktiskt skickar ett spel.
För denna tutorials skull använder vi helt enkelt följande statistik:
När din lista är klar, gå till statistiksidan i ditt spel och mata in de nödvändiga uppgifterna. När back-end-arbetet är gjort på statistiksidan är spelet redo att skicka data till Kongregate-servern.
För att faktiskt skicka data till servern, kallar vi bara funktionen "Skicka", som ser ut så här:
Skicka (statnamn: String, värde: Nummer): tomrum
Som du kan se tar funktionen två parametrar:
statName
är namnet på din stat Det är mycket viktigt att strängen passerade är identisk (skiftlägeskänslig) till namnet på den stat du listade i föregående steg när du förberedde servern för att hantera din statistik.värde
är det faktiska numeriska värdet som ska överföras. Även om datatypen är Nummer, kom ihåg att ditt värde måste vara a positivt heltal.För att ringa denna funktion i ditt spel gör du helt enkelt följande:
kongregate.stats.submit ("Your Stat String", statValue); // statvärdet kan vara 1, 500, 5342324, etc.
Även om vi hade fyra olika typer av statistik som vi kunde skicka, skickar den här funktionen endast värdet; Servern själv ser på informationen som vi tillhandahöll i föregående steg för att bestämma hur du behandlar inkommande data. Så enkelt är det; Nu vet vi hur man skickar data till servern.
Nu när vi har prepped back-end på Kongregate hemsida, och vi vet nu hur man skickar data, låt oss ge projektet ett tag.
Det första vi behöver göra är att lägga till en kod till vårt projekt för att faktiskt skicka vår statistik. Eftersom det enklaste att spåra är musinmatning, har jag valt musrelaterad statistik. Som du såg i vårt tidigare steg valde jag Max Clicks, Total Clicks och Last X.
Max-klick kommer att vara höga poängen för hur många gånger vi klickar i ett enda spel, för att visa Max-typen; Totalt antal klick kommer att vara summan av alla klick vi har gjort för att visa tilläggstypen. och Last X kommer att vara x-positionen för vårt senaste klick, för att visa utgåttypen.
För att spåra våra musklick måste vi importera Mouseevent
klass. Gå tillbaka till Main.as och lägg till följande på din import:
importera flash.events.MouseEvent;
Nu måste vi lägga till en variabel för vår Max Clicks stat, för att hålla reda på det totala antalet klick per spelupplevelse. Längre nedanför där vi lade till kongregate
referensvariabel (av datatyp *
), lägg till följande:
privat var maxClicks: int;
Vi behöver en händelselyssnare för att lyssna på våra klick, så lägger vi till det nu. I i det
funktion, precis under samtalet till initKongregateAPI
, lägg till följande:
// Händelselistor för musklick stage.addEventListener (MouseEvent.CLICK, klicka);
Som du kan se i ovanstående kod ringde funktionen närhelst händelsen den avfyrade kallas klickade
. Låt oss gå vidare och skapa den funktionen. Lägg till följande under din loadComplete
fungera:
privat funktion klickade (händelse: händelse): void maxClicks ++; kongregate.stats.submit ("Total Clicks", 1); kongregate.stats.submit ("Max Clicks", maxClicks); kongregate.stats.submit ("Last X", mouseX);
Allt vi gör här ökar maxClicks
variabel med 1
, och sedan skicka all nödvändig information till Kongregate-servern. Detta kommer att lägga till 1 till statskrävet, skicka det aktuella maxClicks
variabel till servern, som då bestämmer om den är högre än föregående värde och ersätter den om så, och skickar x-positionen till vårt tidigare klick, vilket automatiskt ersätter föregående värde.
Vår SWF kan bara vara en tom skärm, men mycket händer, och vi håller på att se det i aktion. Se till att du sammanställer projektet innan du går vidare.
Nu är det dags att faktiskt ladda upp vårt projekt och se det i aktion.
Gå tillbaka till Kongregates hemsida, gå till din spelsida och ladda upp den slutliga versionen av vårt projekt. När du har laddat upp projektet kommer du till en förhandsgranskningsskärm där vi kan testa vårt projekt innan du publicerar det. För att spara Kongregate personal mycket tid och energi, gör alla en tjänst och tryck inte på publicera på ditt test SWF. (Om du arbetar på ett riktigt spel, fortsätt, men för denna handledning skänker vi inte detta projekt.)
När du är på testsidan, ge spelet några klick. Uppdatera sidan, och du bör nu se att det finns en "HIGH SCORES" flik bredvid "CHAT" och "GAME" fliken. Om du har gjort allt rätt upp till denna punkt borde du ha en nedrullningsruta som för närvarande läser "Last X" som också innehåller "Max Klicka" och "Totalt antal klick". Observera att snabbt klick kommer att resultera i innacurate statistik, eftersom servern inte kan följa alla önskemål, så klicka långsamt för bästa resultat. Därför har jag tidigare rekommenderat att du skickar stora partier av data vid dödsfall, eller på nivånivå, när det är möjligt.
Tja, där går du: du har nu fått den viktigaste delen av Kongregate API upp och igång. Om ditt projekt inte fungerar just nu, se till att dina Kongregate backend-statnamn skrivs exakt som de är i din inlämningsfunktion - skiftlägeskänsligt - eftersom det vanligtvis är problemet.
Du kan också hitta den färdiga koden i slutliga filer mapp i källnedladdningen, så jämför din kod med det om du fortfarande har problem.
Har du någonsin släppt ett spel, då ville du verkligen nå ut till alla dina fans? Tja, med Kongregate API, kan du göra just det - åtminstone för alla dina Kongregate fans.
Det finns vissa begränsningar för vem som kan göra detta, men dessa restriktioner är väldigt mycket för både utvecklare och spelare. För att kvalificera måste ditt spel få ett betyg på 3.75 eller högre och ha minst 10 k gameplay.
Du kan skicka ett "aktivt spelare" meddelande högst en gång var sjunde dag. Dessa meddelanden skickas till alla spelare som har spelat spelet minst tre gånger någonsin, och minst en gång inom de senaste tio dagarna.
Du kan skicka ett "inaktivt spelare" meddelande högst en gång var 30: e dag. Dessa meddelanden kommer att tas emot av spelare som har spelat minst fem gånger totalt, men inte inom de senaste tio dagarna.
Det finns många anledningar att skicka dessa meddelanden till dina spelare, som att varna dem för buggfixar, eller kanske informera dem om en kommande uppföljare. Oavsett vad du använder för det är det ett otroligt användbart system som verkligen kan hjälpa dig att utnyttja dina fans.
Mer information finns i den här handboken.
Medan vi har täckt mycket av den här handledningen kan Kongregate API göra mycket mer. Unfortuantely, jag måste skriva en liten bok för att gå över alla funktioner, särskilt de som är användbara för webbaserade MMO. Om du är intresserad av att kolla vilka andra funktioner API: n har att erbjuda, rekommenderar jag att du checkar ut Kongregate Developers Center för mer.
Nu när du vet hur du får Kongregate API igång, rekommenderar jag starkt dig att lägga till det i alla dina framtida spel. om du har tur kan du till och med få några märken, och då börjar den riktiga kulan.