Intervju om Facebook, Spel och Flash
Christoffer Enedahl är spelutvecklare på spelföretaget Muskedunder. För tillfället jobbar han främst med casualspel riktade mot Facebook. Jag fick en chans att ställa några frågor om spel, Facebook och Flash.
(missa inte tidigare intervjuer om hur kampanjen Tackfilm producerades och iPhoneutveckling ur en flashutvecklares perspektiv)
Kan du berätta lite kort om dig själv och din bakgrund när det gäller både flashplattformen i stort, och kanske lite mer hur du kombinerar det med spelutveckling?
Jag heter Christoffer Enedahl och jobbar som spelprogrammerare på Muskedunder Interactive. Jag har varit intresserad av att utveckla spel sen skoltiden och har nu privilegiet att kunna göra det på arbetstid. När jag vill göra ett nytt spel väljer jag först och främst Flash som utvecklingsmiljö. Det går snabbt att få resultat, utvecklingsspråket är moget, prestandan är tillräcklig och du kan köra spelet i många miljöer.
Vad använder du för verktyg och kodbibliotek när du utvecklar spel?
Program:
- Jag använder FlashDevelop för att skriva kod. Den har en aggressiv auto-complete funktion som är beroendeframkallande.
- Flash, för layout, animering och vectorgrafik.
- PhotoShop för bitmapgrafik. Paint.Net fungerar skapligt som substitut.
- Sfxr: Ett program för att skapa chipliknande ljudeffekter. När jag gör egna spel hemma använder jag ofta detta suveräna program.
Nödvändiga bibliotek:
- As3-Signals. Robert Penners tolkning av C# events och Qt signals. Jag bara älskar signals. Istället för att skriva en egen eventklass skapar man bara en instans av en Signal klass. Man ser direkt på en klass vilka events den sänder ut. När man städar upp i sin klass behöver man inte avregistrera alla lyssnare manuellt, man kör bara signal.removeAll(). Snyggare, mer översiktligt och färre rader kod.
- Tweener för interpolering och animering.
- Box2D när det behövs avancerad fysik. Det finns även en Alchemy-variant som jag inte hunnit titta på. Men det kommer jag göra i nästa fysikbaserade spel jag ska göra.
- PixelBender använder jag för att göra egna filter när de inbyggda inte fyller mina behov. Jag kommer nog göra ett GlowFilter som ignorerar pixlar med alpha härnäst.
Det finns ju en uppsjö av spelmotorer att använda. Vad är din syn på det? Är det en bra väg att gå när man vill göra spel i flash?
Det första man skall fråga sig är vill man göra spel eller programmera spel? Ganska stor skillnad. Har du en spelidé och vill få den realiserad fort rekommenderar något du redan kan. Vill du lära dig något nytt, plocka upp Flixel eller PushButtonEngine och kolla in ett gäng tutorials om dem. Nu säger jag inte att det är enkelt att göra spel med en spelmotor. Men 9 fall av 10 tror jag det är rätt val. Är du mer som jag, dvs om du vill programmera spel, är valet lätt: gör det själv. Det kommer gå långsammare, du kommer göra fel, men det är dina fel och du lär dig massor på vägen. http://www.flashrealtime.com/flash-game-library-engine-list/
Just Facebook har ju visat sig vara en utmärkt plattform för sociala ”casual games”. Hur ser du på framtiden för den kombinationen?
Om man nu skall spekulera så tror jag att det kommer utvecklas mer på det sociala planet. Multiplayer och mer direkt kommunikation / interaktion mellan spelare. Det är i alla fall det jag vill se.
Kan man tjäna pengar på Facebookspel? Hur?
Här har vi tre olika sätt att tjäna pengar på Facebookspel:
- Reklam: Man har helt enkelt banners bredvid sitt spel. Ifall användaren inte gillar ditt spel kanske du kan få ett klick på din banner iallafall.
- Innehåll: Du säljer innehåll, tex banor eller själva spelet i sig. Detta verkar inte vara så vanligt som man kan tro.
- Mikrotransaktioner: Du säljer virtuella ting i spelet, det kan vara bonusar, kläder, tid, saker som du kan uttrycka dig själv med. Detta alternativet är det som jag tror är det man tjänar mest på.
Har du några tips att ge till flashutvecklare som vill göra spel. Då tänker jag dels rent allmänt, men även specifikt på spel förl Facebook?
Gör en snabb prototyp på kanske 2-3 dagar. Se ifall din idé fungerar. Blir spelet inte kul efter en eller två dagars justerande är det antagligen spelidén det är fel på. Verkar spelet fungera och du vill köra vidare på det bör du nu skapa ett nytt projekt och lyfta in de delar som du är nöjd med och skriva om de delarna som ser ut som spaghetti.
Försök få ut en spelbar version på Facebook så snabbt som möjligt. Tänk XP (eXtreme Programming), dvs utveckla endast det som behövs för att klara av din uppgift för tillfället. Var inte för rädd att stuva om i koden när det behövs. Är man rädd för att ändra strukturer har man antagligen tappat kontrollen, dags att ta tillbaka kommandot (I alla fall när det gäller typade språk).
Hur vet jag nu att spelet är skoj? Jo man behöver feedback från de som spelar spelet. Ett enkelt formulär som sparar spelarnas åsikter räcker.
Lite senare kanske det blir dags att mäta vad spelarna gör. Hur långt de kommer, hur länge de spelar olika banor etc…
Använd det som underlag för hur du skall gå vidare med spelet. Räkna med att spelet inte kommer bli som du tänkt från början.
Spel handlar mycket om att ge belöningar. Tex poäng, pickups och XP är en form av belöning. En annan typ av belöning är audiovisuell feedback. Ljudeffekter och tex partiklar när man utför saker i spelet. Jag kan nästan påstå att audiovisuell feedback är viktigare.
Vilka är de största svårigheterna när det kommer till att utveckla spel som använder Facebooks plattform?
Att komma igång, ta reda på hur man skall göra är nog det svåraste. Vi valde att använda Adobes Facebook-bibliotek till att börja med. Det blev ganska snabbt utdaterat så vi har bytt till att kommunicera med Facebook via JavaScript, om de ändrar något i framtiden behöver vi troligtvis inte ändra i spelen utan bara i vårt JavaScript-lager. Detta underlättar även till att sprida spelen på andra sociala nätverk.
Har ni någon gång råkat ut för att Facebook ändrat något som påverkat spel som ligger live?
Javisst ett flertal gånger. De ändrar i api:n och i regler titt som tätt. Senast ändrade Facebook hur iframes kan ändras i storlek och tusentals sidor fick fula skrollar eller blev kapade på fel ställe.
Just spel är ett område som de flesta är tycker det är vettigt att använda Flash till. När man ser på utvecklingen av HTML5 så känns det som det bara är en tidsfråga innan det är tillräckligt moget även för spelutveckling. Ser du något annat problem med att använda HTML5/JS än att det är svårt att stödja olika webbläsarversioner?
Utvecklingstiden kommer bli längre. Mest med tanke på att as3 är typat och kompilerat medan JS inte är det så blir det svårare att hitta buggar i JS.
Facebook har nyligen uttalat sig om att de kommer fokusera på HTML5. Det finns även indikationer att detta även gäller spel på Facebook. Vad är dina tankar om det?
Tja, jag har inget emot det, men jag föredrar att utveckla i Flash framför HTML5 beroende på utvecklingstiden och att det enkelt går att se källkoden för HTML5-spel. Obfuskering bör kanske undersökas. Som spelare är jag bara intresserad av att spelet fungerar bra, inte vilken teknik som används.
Har du hunnit läsa något om Molehill, flashspelarens kommande stöd för hårdvaruaccellererad grafik på lågnivå? Kommer det att förändra hur flash används, både rent generellt och mer specifikt för spel?
Givetvis kommer cross-platform, hårdvaruaccelererat, 3d-stöd förändra användningen av Flash. Jag tror att även rena 2d applikationer kommer utnyttja denna nya processorkraft. Nya UI-bibliotek med hårdvarustöd blir lika självklara som Tweener-biblioteket är idag. Fler Flash-spel kommer göras i 3d, på gott och ont. Mest ont antagligen. Kanske kommer stora spelhus göra 3d-online-spel i Flash med mikrotransaktioner som inkomstkälla.
Förutom hårdvaruaccelerering, är det något annat du saknar i flashspelaren som skulle förbättra eller förenkla spelutveckling?
Gamepad-stöd, vilket kommer med Molehill enligt Adobe. Att kunna sätta muspekarens position på skärmen kommer bli mycket önskat när 3d stödet finns på plats, då det är en nyckelfunktion för att kunna göra första persons-spel.
I as3 vill jag gärna få in templates så som Vector är implementerat.
När man embeddar symboler från swfer följer inte framescripts med. Detta är ganska irriterande. Jag undviker gärna skript i grafik men det är väldigt smidigt att slänga in en stop() eller gotoAndPlay() i animationerna.
Det är ju ingen tvekan om att vi ser en boom, sedan några år tillbaka, för avancerade mobiltelefoner och andra mobila enheter. Speciellt iPhone har ju skapat en helt ny marknad för applikationer och då inte minst spel. Hur ser du på framtiden för mobila spel?
Ja, det är på mobilen det händer just nu. App Store och Android Market är nyckeln till boomen på mobilmarknaden. De gör det möjligt att leverera och ta betalt på ett smidigt sätt. Folk som aldrig spelat datorspel eller köpt program till sin dator förut sitter nu och köper och laddar hem appar till sin telefon pga detta. För spelutvecklare betyder det nya konsumenter men också nya krav på användarvänlighet och anpassning till olika telefoner, inte en trivial problematik.
Vilken strategi ska man ha när det kommer till mobila plattformar? Finnas på så många som möjligt, bara de största, eller till och med enbart koncentrera sig på en specifik plattform?
Jag läste en bra artikel om just detta från en flashutvecklares perspektiv.http://www.doomsday.no/esn/2011/02/my-2-on-android-dev-vs-iphone-dev/
Vad som är rent affärsmässigt bäst kan man ju argumentera för och emot alla möjliga alternativ. Vilken marknad är störst? Var finns min målgrupp? Vilken marknad ger mitt spel minst konkurrens? Jag skulle välja att börja på en plattform som passar mig själv bäst, göra klart mitt spel, lansera och sen se responsen på den plattformen. Går spelet så pass bra att det är värt att jobba vidare på det så skulle jag helt klart porta det till andra plattformar. Vill man att ens suveräna spel skall bli riktigt stort behövs nog tyvärr en massa publicitet och reklam.
Har du själv börjat med spelutveckling för mobiltelefoner?
Jag har precis startat ett enkelt litet spelprojekt för att lära mig Java och Android. Jag tycker att det är effektivast att lära sig nya saker genom att göra ett projekt.
Till sist, tusen tack för att du tog dig tid för den här intervjun! Är det några spel som du varit med att utveckla som du vill tipsa om?
Kul att få vara med! Jag hoppas att jag haft något vettigt att säga. Jodå jag har en massa halvklara spel-projekt där hemma och hittills tre släppta Facebook-spel sen jag blev anställd på Muskedunder. Här är två länkar för den intresserade:
FloodDiggR (http://blog.enedahl.com/?p=81)
Ett experiment med vatten, kaniner och fiskar.

Hello Adventure (http://apps.facebook.com/helloadventure/?src=bryngfors)
Ett Dungeon-crawl-spel på Facebook som vi på Muskedunder utvecklat. Vi använder mät-data som guide till vidareutvecklingen.


