Intervju med Adam Saltsman

Adam Saltsman (AdamAtomic) är en spelutvecklare och skaparen av flixel (ett opensource AS3-spelbibliotek). Han tillbringade nyligen tid på att svara på några frågor om hur han började i Flash och det arbete han för närvarande gör.

Hej Adam, berätta lite om din bakgrund och hur du började bygga Flash-spel. Är du en självlärd utvecklare?

Jag tog några programmeringskurser på universitetet och arbetade sedan ett par år som mjukvaruutvecklare för ett litet företag här i Austin. Jag lämnade där för att vara frilansartist i några år, och det var under det jobbet jag började hämta Flash. Min vän Ivan tog ett par timmar ur hans dag för att visa mig repen och jag var borta! Cirka 6 månader efter att jag började är när jag började experimentera med högre prestanda pixel flash saker. Det tog åtminstone ett år eller så av sidarbete att få den första versionen av flixel formaliserad.

Många människor, inklusive mig själv, började med Flash på grund av spel. Vad bidrar du till din framgång som en oberoende spelutvecklare och vilka råd har du för andra som vill leva drömmen?

Gör små spel! Gör småpolerade demos eller prototyper och dela dem med alla. Detta är inte nödvändigtvis vägen till ekonomisk framgång, men enligt min erfarenhet är det det bästa och snabbaste sättet att lära sig hur man utformar spel. Jag har gjort ett dussin eller så 1 veckors spel och jag börjar bara känna mig riktigt bekväm med min designprocess.

Dina Flash spel har en retro pixelated look till dem. Prata om hur du hanterar bitmappar på scenen, använder du en kakelmotor, blits eller andra tekniker för att uppnå snabb respons, lågt minne och höga bildhastigheter?

Flixel använder en skiktad rendering. Första flixel kontrollerar om grafiken har skalats eller roterats, om den har, använder den Flash-vektoråtergivaren för att rita den, precis som ett normalt Sprite- eller Movieclip-objekt. Om det inte har blivit roterat, även om det har blivit tonat eller alfabetet har ändrats, använder Flixel ett mycket snabbt blickande samtal (copyPixels) för att stämpla grafiken på grafikbufferten. Grafikbufferten skalas och renderas med hjälp av vektorreferensen (för att uppnå den tjocka zoomade pixel-effekten).

Det är intressant att se att du inte bara utvecklar spel i ActionScript. Prata om de andra plattformar du utvecklar och om det finns någon likhet med att arbeta i Flash?

Mitt "dagjobb" som det var är att bygga spel för iPhone i C ++ och Objective C. Objektiv C är faktiskt konstigt liknande Flash på vissa sätt, bara med fler parenteser!

Paper Moon, som gjordes i Unity 3d, är ett otroligt plattformsspel med en slick cutout pappersstil. Kan du berätta om ditt bidrag till spelets utveckling?

Paper Moon var ett samarbete med kanadensiska studio Infinite Ammo, som var intresserad av att lära Unity för framtida projekt. Jag var bara för glad att tvinga dem med lite konstverk!

Att utveckla spel är otroligt krävande på systemets resurser, speciellt Flash, vilket saknar GPU-acceleration. Prata lite om de steg du tar för att säkerställa optimal prestanda inom själva koden.

Flixel gör bara några saker för prestanda, men väljer att använda copyPixels istället för vektoråtergivaren när det är möjligt. Det ger ungefär 90% ökning i prestanda större delen av tiden. Att använda de zoomade upp-tjocka pixlarna är trevligt eftersom du fortfarande fyller mycket i webbläsarfönstret, men den verkliga återställningsoperationen utförs på ett ganska litet utrymme. Slutligen uppmuntrar flixel men kräver inte att du återvinner dina spelobjekt. Alla demo spel upp på github använder fördelade arrays för saker som kulor eller partikel effekter. Objekt har nu en återställningsfunktion () som hjälper till att göra det ännu enklare att göra.

På ett vanligt spelprojekt, hur många personer brukar du jobba med och vad är de typiska tidsramarna?

Bara jag, och 4-7 dagar. Detta kan ändras men jag har några större grejer på min platta för nästa år ...

Om du kunde välja en sak, vad skulle du överväga din favorit del av ActionScript 3? På samma sätt, vad skulle du vilja ändra eller vill implementera?

Generellt sett älskar jag hur slarvigt det är. Om det var ett strängare språk tycker jag att prototyper och iteration skulle vara en mycket långsammare, mer frustrerande process. Vissa saker som jag har problem med är att tilldela värden till primitiva parametrar från en funktion (jag kan bara vara okunnig för en viss uppdragsoperatör för detta) och även skapa referenser till funktioner som hör till andra föremål i fluga. Det kan också bero på min egen okunnighet, men här kan något som C # hantera funktionspekare (delegater?) Vara användbart.