Bruke Kongregate API i ditt Flash Games

Kongregate er en av de største Flash-spillportaler på nettet, og har sin egen API som kan integreres i spillene dine (for hvilket Kongregate belønner deg selv økonomisk). I denne veiledningen vil jeg vise deg hvordan du implementerer Kongregate API i spillene dine, og også gå inn i detaljer om hva APIen er i stand til og hvorfor du bør bruke den.

(Merk at denne opplæringen forutsetter at du allerede har en Kongregate-konto, hvis du ikke gjør det, vennligst opprett en nå.)


Endelig resultatforhåndsvisning

La oss ta en titt på hva API-en gir oss mulighet til å gjøre:

merker

Massemeldinger

Rekorder

Det er en annen stor grunn til å implementere API ...


Trinn 1: La oss bli motivert

Før vi dykker inn i de tekniske aspektene ved å implementere Kongregate API, la oss få oss til å hype litt, og sørg for at vi faktisk vil implementere det.

Det er mange grunner til å implementere API, men for de fleste utviklere, sier ingenting noe høyere enn penger, og det er nok av det som er involvert. Når du laster opp spillet ditt til Kongregate, tjener du automatisk 25% av alle annonseinntekter som genereres av spillets side.

Det blir bedre; hvis du implementerer deres "statistikk og utfordringer API", vil du motta ytterligere 10%! Endelig, hvis spillet ditt er eksklusivt til Kongregate, eller sponset av dem, får du ytterligere 15%. Dette gir deg muligheten til å tjene opptil 50% av annonsens inntekter for spillet ditt på Kongregate. Hvis du lurer på hvor mye det er, sjekk ut noen av mine personlige statistikker:


Trinn 2: Sette opp arbeidsmiljøet

For denne opplæringen bruker vi FlashDevelop, en gratis (og fantastisk) åpen kildekode editor for utviklere. Vi gjør alt i enkle .as-filer, så hvis du vil følge med Flash IDE, burde du ikke ha noen problemer. Hvis du vil bruke FlashDevelop og er ukjent med det, sjekk ut denne gode FlashDevelop nybegynnerveiledningen for å komme i gang med hva jeg ville vurdere den beste AS3-redaktøren der ute.

For å starte, åpne FlashDevelop, gå til Prosjekt-fanen, og velg "Nytt prosjekt". Herfra velger du "AS3 Prosjekt med Pre-Loader". Alternativt kan du ta tak i Preloader.as og Main.as filer fra kilden nedlasting, og bare følge med.

Filen din skal være en barebones Main.as fil, slik:

 pakke import flash.display.Sprite; importere flash.events.Event; / ** * ... * @author Ditt navn * / [Ramme (factoryClass = "Preloader")] offentlig klasse Hoved utvider Sprite offentlig funksjon Main (): void if (stage) init ellers addEventListener (Event.ADDED_TO_STAGE, init);  privat funksjon init (e: Event = null): void removeEventListener (Event.ADDED_TO_STAGE, init); // inngangspunkt   

Ingenting over skal være nytt for deg; hvis det er, alt du trenger å vite er at denne filen er inngangspunktet for vårt program, det er her alt begynner. Hvis du kompilerer dette med FlashDevelop, bør du få en blank hvit skjerm uten kompilerfeil.


Trinn 3: La oss bli tilkoblet

Før vi dykker inn i alle de kule funksjonene i API, må vi sørge for at API-en er oppe og i gang.

I motsetning til mange sponsor-APIer er Kongregate API ikke et frittstående sett med filer som vi trenger å kompilere med vårt prosjekt. API-en er faktisk lagret på Kongregate-serveren, og vi laster den inn på kjøretid. Det er flere måter å gjøre dette på i prosjektene dine, men for denne tutorials skyld vil vi bare koble i vår Main.as, og lagre en referanse til det der.

For å starte, kopier følgende kode til vår Main.as filen like under eksisterende import:

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

Ovennevnte er bare noen få enkle importer som lar oss bruke de nødvendige klassene for lasting i Kongregate API.

Deretter legger vi til en variabel for å lagre vår referanse til Kongregate API. Gå videre og legg til følgende rett over konstruktøren til Main.as-filen.

 privat var kongregate: *;

Legg merke til at datatypen til vår kongregate-variabel er *. Hvis du ikke er kjent med dette, forteller vi bare kompilatoren om at Kongregate variabel vil akseptere enhver datatype, omtrent som et vill kort.

(Merk også at i et ekte spill vil du ønske å lagre referansen din til API et sted som hele prosjektet ditt har tilgang til, for eksempel en offentlig statisk const. Denne referansen er nødvendig, slik at du kan bruke API fra hvor som helst i prosjektet ditt, for noe formål, heller enn bare i Main.as fil når vi først starter opp.)

Dette neste koden vil bli inneholdt i en egendefinert funksjon ved navn initKongregateAPI (). Dette er egentlig ikke nødvendig, men jeg foretrekker å inkapslere ideer når du skriver kode, da det bidrar til å holde koden lesbar og enkel å jobbe med.

Gå videre og legg til denne funksjonen under i det fungere i Main.as.

 privat funksjon initKongregateAPI (): void // Trekk API-banen fra FlashVars var paramObj: Object = LoaderInfo (root.loaderInfo) .parameters; // API-banen. Skygge-API-en vil bli belastet ved testing lokalt. var apiPath: String = paramObj.kongregate_api_path || "Http://www.kongregate.com/flash/API_AS3_Local.swf"; // Tillat API-tilgangen til denne SWF Security.allowDomain (apiPath); // Last inn API var forespørselen: URLRequest = ny URLRequest (apiPath); var loader: Loader = ny Loader (); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete); loader.load (forespørsel); this.addChild (loader); 

Selv om det kan se ut som mye kode, er det egentlig ikke så mye, og med kommentarene er det ganske enkelt å følge.

Som du ser, lager vi i første del en variabel for å lagre API-banen fra FlashVars (hvis du ikke vet hva disse er, ser dem opp veldig fort, det er en god ting å forstå).

I den andre delen bestemmer vi om SWF er på Kongregates hjemmeside eller kjører lokalt, og vi tilordner riktig informasjon til apiPath variabel.

Deretter gir vi API-tilgangen til SWF, med en enkel security.allowDomain ring, hvor vi passerer i apiPath som parameter.

Vi lager deretter en ny URLRequest objekt, som får apiPath sendt inn til konstruktøren, en ny loader objekt, og legg til en hendelseslytter for lasteren som ringer loadComplete når ferdig.

Sist, vi ringer loader.load og passere i vår forespørsel (den nyopprettede URLRequest objekt, som inneholder apiPath av Kongregate API). Hvis du forstår hva som nettopp skjedde, bra; Hvis ikke, ikke svett det, siden du ikke trenger å berøre dette på nytt.

Ikke glem å ringe det!

Nå som initKongregateAPI-funksjonen er opprettet, og inneholder all tilkoblingskoden, bør vi nok sørge for at denne funksjonen faktisk blir kalt! Bare gå tilbake til i det fungere som vår Main.as filen som allerede finnes, og legg til et funksjonsanrop til initKongregateAPI etter linjen som "inngangspunkt" -linje, slik som det,

 privat funksjon init (e: Event = null): void removeEventListener (Event.ADDED_TO_STAGE, init); // inngangspunkt initKongregateAPI (); 

Til slutt må vi legge til det loadComplete funksjon, å bli kalt når FULLSTENDIG Hendelsen avfyres fra vår tidligere kode. Legg til denne funksjonen under initKongregateAPI fungere i Main.as.

 // Denne funksjonen kalles når lasting er fullstendig privat funksjon loadComplete (event: Event): void // Lagre Kongregate API referanse kongregate = event.target.content; // Koble til back-end kongregate.services.connect (); // Du kan nå få tilgang til API via: // kongregate.services // kongregate.user // kongregate.scores // kongregate.stats // etc ...

Ovennevnte kode er super enkel; la oss gå over det. Vi starter med å lagre en referanse til Kongregate API. Som du kan se, refererer vi Kongregate API gjennom passordet i event parameter, via event.target.content - enkelt nok.

Nå er alt vi trenger å koble til, og vår SWF er bra å gå. Som du kan se, forbinder vi ved å ringe kongregate.services.connect metode. Ingen argumenter kreves.

Selv om det kan ha virket som mye arbeid, var det egentlig ikke det. Jeg gikk ganske enkelt over tilkoblingsprosessen i detalj, slik at du kan forstå hvordan vi faktisk får tilgang til API, i stedet for bare å ha tilgang og bruk av den. Nå som du forstår det, kan du bruke alle ovennevnte som boilerplate-kode.


Trinn 4: Statistikk og utfordringer API

Nå som vi er koblet, kan vi se på det viktigste elementet i hele API: delen Statistikk og utfordringer. Denne API-en sender spillerrelatert statistikk til Kongregate-serveren, som muliggjør en rekke ting.

For det første er dette den mest grunnleggende måten å la brukerne konkurrere om høyeste poeng på Kongregate. Med API integrert, vil Kongregate sidebjelke inkludere en ny fan med tittelen "PRESTASJONER", som du finner ved siden av "CHAT" -fanen. Spillere kan vise topplister for hvilken stat du sender til serverne, noe som kan være alt fra en grunnleggende høy poengsum til det totale antall fiender som beseires.

Den andre og langt viktigere bruken er å la Kongregate bruke statistikken du sender til å lage "merker" for spillene dine. Merker er en sentral del av Kongregate brukeropplevelse, og er mye som prestasjonssystemene på plattformer som Xbox LIVE.

Det beste ved å ha merker lagt til i spillet er at spillet ditt vil bli omtalt i kort varighet, og øker antall visninger du får, og øker dermed annonsenes inntekt. Selv etter at spillet ditt er ute av fokus, fortsetter alle badged-spillene på Kongregate å få økt utsikt over normale spill, noe som gir deg en utmerket lang haleinntektsstrøm.

Legg merke til at merkene ikke legges til av utviklere, men er i stedet opprettet av Kongregate-staben. Du trenger et høyverdiert spill for å bli valgt, men du må også ha API-en opprettet - så la oss få den halve kampen ut av veien!


Trinn 5: Tilbakestilling

For å faktisk bruke statistikken som vi skal sende, krever Kongregate først at vi skal la serveren få vite hvilken informasjon den skal være forberedt på å motta fra oss.

For å gjøre dette, går vi ganske enkelt til statistikk siden for vårt spill på Kongregate nettside. Dette kan du finne på siden "Rediger spill", eller ved å legge til /statistikk til slutten av spillets nettadresse (for eksempel http://www.kongregate.com/games/EpicShadow/pixel-purge/statistics). For denne opplæringen vil vi bare laste opp vår test SWF som "spill".

Før du legger til statistikk i API for statistikk og utfordringer, må vi først forstå de fire typer statistikk som kan brukes, og reglene de er bundet til. Verdiene må være positiv, og må være hele heltall. De fire typene er som følger:

  • Max: Verdien på serveren vil bli erstattet dersom den nye verdien er høyere enn den lagrede verdien. For eksempel ville en høy score på 152 000 erstatte en gammel høy score på 120 000.
  • min: Verdien på serveren vil bli erstattet hvis den nye verdien er lavere enn den lagrede verdien. For eksempel, i et løpsspill, ville en omgangstid på 31 sekunder erstatte en eldre verdi på 35.
  • Legg til: Den nye verdien vil bli lagt til den lagrede verdien. En vanlig bruk av dette ville være totalt fiender beseiret, spillerdød, etc. For mange forespørsler til serveren kan resultere i unøyaktige data, så det anbefales at data kun sendes i bulk, for eksempel når et nivå er fullført eller når spilleren dør.
  • Erstatte: Den nye verdien erstatter den lagrede verdien uansett hva. Dette kan brukes til en rekke ting, for eksempel gjennomsnittlig overlevelsestid eller spillerrangering.

Å vite hvilken av de ovennevnte typene du må bruke for hver av spillstatistikken din, er ekstremt viktig, så sørg for at du er kjent med listen ovenfor. Du vil åpenbart ha en liste over statistikker som du vil at spillet ditt skal sende til Kongregate, så sørg for at du har de forberedt før du dykker inn i neste trinn når du faktisk sender inn et spill.

For denne veiledningens skyld bruker vi bare følgende statistikk:

  • Totalt antall klikk (legg til)
  • Maks. Klikk (Maks)
  • Siste X (Erstatt)

Når listen er utarbeidet, gå til statistikksiden til spillet ditt, og skriv inn de nødvendige dataene. Når back-end-arbeidet er gjort på statistikksiden, vil spillet være klar til å sende inn data til Kongregate-serveren.


Trinn 6: Slik sender du statistikker

For å sende data til serveren, kaller vi bare "send" -funksjonen, som ser slik ut:

 send inn (statnavn: streng, verdi: tall): ugyldig

Som du kan se, tar funksjonen to parametere:

  • statName er navnet på din stat. Det er veldig viktig at strengen som passerer, er identisk (saksfølsom) til navnet på den stat du har oppført i forrige trinn når du prepper serveren for å håndtere statistikken din.
  • verdi er den faktiske numeriske verdien som skal bestås. Selv om datatypen er nummer, husk at verdien din må være a positivt hel heltal.

For å ringe denne funksjonen i spillet, gjør du bare følgende:

 kongregate.stats.submit ("Your Stat String", statValue); // stat verdi kan være 1, 500, 5342324, etc.

Selv om vi hadde fire forskjellige typer statistikker vi kunne sende, sender denne funksjonen bare verdien; serveren selv vil se på informasjonen vi oppgav i forrige trinn for å bestemme hvordan du behandler innkommende data. Det er så enkelt; nå vet vi hvordan du sender data til serveren.


Trinn 7: Prepping vårt prosjekt for å sende statistikk

Nå som vi har prepped back-end på Kongregate nettsted, og vi nå vet hvordan å sende data, la oss gi dette prosjektet en tur.

Det første vi må gjøre er å legge til kode i prosjektet vårt for å sende vår statistikk. Siden det enkleste å spore er musinngang, har jeg valgt muselatert statistikk. Som du så i vårt forrige trinn, valgte jeg Maks. Klikk, Totalt klikk og Siste X.

Max Klikk vil være høy poengsum for hvor mange ganger vi klikker i et enkelt spill for å demonstrere Max-typen; Totalt antall klikk vil være summen av alle klikkene vi har gjort, for å demonstrere tilleggstypen; og Last X vil være x-posisjonen til vårt nyeste klikk, for å demonstrere erstattetypen.

For å spore våre museklikk må vi importere Mouseevent klasse. Gå tilbake til Main.as, og legg til følgende for importen din:

 importer flash.events.MouseEvent;

Nå må vi legge til en variabel for vår Max Clicks stat, for å holde oversikt over totalt antall klikk per spill økt. Rett under der vi la til Kongregate referansevariabel (av datatype *), legg til følgende:

 private var maxClicks: int;

Vi skal trenge en Event Listener for å lytte etter våre klikk, så vi legger til det nå. I i det funksjon, rett under anropet til initKongregateAPI, legg til følgende:

 // Eventlytter for museklikk stage.addEventListener (MouseEvent.CLICK, klikket);

Som du kan se i koden ovenfor, kalles funksjonen når hendelsen den sparket kalles klikket. La oss gå videre og skape den funksjonen. Legg til følgende under din loadComplete funksjon:

 privat funksjon klikket (hendelse: hendelse): void maxClicks ++; kongregate.stats.submit ("Total klikk", 1); kongregate.stats.submit ("Max Klikk", maxClicks); kongregate.stats.submit ("Last X", mouseX); 

Alt vi gjør her øker maxClicks variabel av 1, og sender deretter all nødvendig informasjon til Kongregate-serveren. Dette vil legge til 1 i Total klikk, send gjeldende maxClicks variabel til serveren, som deretter bestemmer om den er høyere enn den forrige verdien, og erstatt den i så fall, og send x-stillingen til vårt forrige klikk, som automatisk erstatter den forrige verdien.

Vår SWF kan bare være en blank skjerm, men mye skjer, og vi er i ferd med å se det i aksjon. Pass på at du kompilerer prosjektet før du går videre.


Trinn 8: Testing vårt prosjekt

Nå er det på tide å faktisk laste opp prosjektet vårt, og se det i aksjon.

Gå tilbake til Kongregate-nettstedet, hør til spill siden, og last opp den endelige versjonen av prosjektet vårt. Når du har lastet opp prosjektet, kommer du til en forhåndsvisningsskjerm, hvor vi kan teste prosjektet vårt før du publiserer det. For å redde Kongregate-staben mye tid og energi, gjør alle en tjeneste og ikke trykk på publisering på testen din SWF. (Hvis du jobber med et ekte spill, fortsett, men for denne veiledningens skyld vil vi ikke publisere dette prosjektet.)

Når du er på testsiden, gi spillet et par klikk. Oppdater siden, og du bør nå se at det er en "HIGH SCORES" -fan ved siden av "CHAT" og "GAME" -fanen. Hvis du har gjort alt riktig opp til dette punktet, bør du ha en rullegardinboks som for øyeblikket leser "Siste X" som også inneholder "Maks. Klikk" og "Totalt klikk". Vær oppmerksom på at raskt å klikke vil resultere i innacurate statistikk, da serveren ikke kan følge med på alle forespørsler, så klikk sakte for best resultat. Derfor anbefalte jeg tidligere at du sender store grupper av data ved døden, eller når du er ferdig, når det er mulig.

Vel, det går du: Du har nå fått den viktigste delen av Kongregate API opp og ned. Hvis prosjektet ditt ikke virker på dette punktet, må du kontrollere at ditt Kongregate back-end statnavn er skrevet akkurat som de er i din sendefunksjon - saksensitiv - som det vanligvis er problemet.

Du kan også finne den fullførte koden i siste filer mappe i kilde nedlastingen, så sammenlign koden din til det hvis du fortsatt har problemer.


Trinn 9: Massemeldingskommunikasjon

Har du noen gang gitt ut et spill, så senere ønsket du virkelig å nå ut til alle dine fans? Vel, med Kongregate API, kan du bare gjøre det - i hvert fall for alle dine Kongregate fans.

Det er noen begrensninger på hvem som kan gjøre dette, men disse begrensningene er veldig i beste interesse for både utviklere og spillere. For å kvalifisere, må spillet ditt få en 3.75 rating eller høyere, og ha minst 10k gameplays.

Du kan sende en "aktiv spillere" melding maksimalt en gang hver syv dager. Disse meldingene vil bli sendt til alle spillere som har spilt spillet minst tre ganger noensinne, og minst en gang innen de siste ti dagene.

Du kan sende en "inaktiv spillere" melding maksimalt en gang hver 30. dag. Disse meldingene vil bli mottatt av spillere som har spilt minst fem ganger totalt, men ikke innen de siste ti dagene.

Det er mange grunner til å sende disse meldingene til spillerne dine, for eksempel å varsle dem om feilrettinger, eller kanskje informere dem om en kommende oppfølger. Uansett hva du bruker dette til, er det et utrolig nyttig system som virkelig kan hjelpe deg med å utnytte fansen din.

For mer informasjon, se denne veiledningen.


Så mye mer…

Mens vi har dekket mye i denne opplæringen, er Kongregate API i stand til å gjøre mye mer. Unfortuantely, jeg må skrive en liten bok for å gå over alle funksjonene, spesielt de som er nyttige for nettbaserte MMOer. Hvis du er interessert i å sjekke ut hvilke andre funksjoner APIen har å tilby, anbefaler jeg at du sjekker ut Kongregate Developers Center for mer.

Nå som du vet hvordan du får Kongregate API opp og ned, anbefaler jeg deg sterkt å legge det til alle dine fremtidige spill; hvis du er heldig, kan du til og med få noen merker, og det er da den virkelige moroa begynner.