Intervju med Adam Saltsman

Adam Saltsman (AdamAtomic) er en spillutvikler og skaperen av flixel (et opensource AS3-spillbibliotek). Han brukte nylig tid på å svare på noen få spørsmål om hvordan han begynte i Flash og arbeidet han for øyeblikket gjør.

Hei Adam, fortell oss litt om din bakgrunn og hvordan du begynte å bygge Flash-spill. Er du en selvutdannet utvikler?

Jeg tok noen programmeringskurs på universitetet og arbeidet deretter i et par år som programvareutvikler for et lite firma her i Austin. Jeg dro dit for å være frilansskunstner i noen år, og det var under den jobben jeg begynte å plukke opp Flash. Min venn Ivan tok et par timer ut av dagen for å vise meg tauene og jeg var av! Omtrent 6 måneder etter at jeg startet, er da jeg begynte å eksperimentere med høyere ytelse pixel flash ting. Det tok minst et år eller så med sidearbeid for å få den første versjonen av flixel formalisert.

Mange mennesker, inkludert meg selv, begynte i Flash på grunn av spill. Hva bidrar du til suksess som en uavhengig spillutvikler og hvilke råd har du for andre som ønsker å leve drømmen?

Lag små spill! Lag små polerte demoer eller prototyper, og del dem med alle. Dette er ikke nødvendigvis veien til økonomisk suksess, men i min erfaring er det den beste og raskeste måten å lære å designe spill på. Jeg har laget et dusin eller så 1-ukers spill, og jeg begynner å føle meg veldig komfortabel med designprosessen min.

Flash-spillene dine har et retro-pixelert utseende til dem. Snakk om hvordan du håndterer punktgrafikk på scenen, bruker du en flisemotor, blits eller andre teknikker for å oppnå rask respons, lavt minne og høyt bildefrekvens?

Flixel bruker en lagret rendering tilnærming. Første flixel sjekker for å se om grafikken har blitt skalert eller rotert, hvis den har, så bruker den Flash-vektorgjengeren til å tegne den, akkurat som en vanlig Sprite- eller Movieclip-objekt. Men hvis det ikke har blitt rotert, selv om det har blitt tonet eller alfaet har endret seg, bruker Flixel et veldig raskt blitsnummer (copyPixels) for å stemple grafikken på grafikkbufferen. Grafikkbufferen blir skalert og gjengitt ved hjelp av vektorgjenvinningsenheten (for å oppnå den kraftige zoomede piksler-effekten).

Det er interessant å se at du ikke bare utvikler spill i ActionScript. Snakk om de andre plattformene du utvikler, og hvis det er noen likt å jobbe i Flash?

Min "dagjobb" som det var, er å bygge spill for iPhone i C ++ og Objective C. Mål C er faktisk merkelig lik Flash på noen måter, bare med flere parenteser!

Paper Moon, som ble gjort i Unity 3d, er et utrolig plattformspill med en glatt utklippsstil. Kan du fortelle oss om ditt bidrag til spillets utvikling?

Paper Moon var et samarbeid med kanadisk studio Infinite Ammo, som var interessert i å lære Unity for fremtidige prosjekter. Jeg var bare for glad for å forplikte dem med noen kunstverk!

Utvikle spill er utrolig krevende på systemets ressurser, spesielt Flash, som mangler noen GPU-akselerasjon. Snakk med oss ​​litt om trinnene du tar for å sikre optimal ytelse i selve koden.

Flixel gjør bare noen få ting for ytelse, men velger å bruke copyPixels i stedet for vektorgjengeren når det er mulig. Det gir omtrent 90% økning i ytelse det meste av tiden. Ved å bruke de zoomede bildene er det fint fordi du fremdeles fyller mye av nettleservinduet, men selve gjengivelsen utføres i en ganske liten plass. Til slutt oppfordrer flixel, men krever ikke at du skal resirkulere spillobjektene dine. Alle demo spillene på github bruker forhåndsallokerte arrays for ting som kuler eller partikkeleffekter. Objekter har nå en tilbakestillingsfunksjon () som hjelper til med å gjøre det enda enklere å gjøre.

På et normalt spillprosjekt, hvor mange personer jobber du vanligvis med og hva er de typiske tidsrammer?

Bare meg, og 4-7 dager. Dette kan endres skjønt, jeg har noen større ting på platen min for neste år ...

Hvis du kunne velge en ting, hva ville du vurdere din favoritt del av ActionScript 3? På samme måte hva ville du endre eller vil implementere?

Vanligvis elsker jeg hvor sløv det er. Hvis det var et strengere språk, tror jeg prototyping og iterasjon ville være en mye langsommere, mer frustrerende prosess. Noen ting jeg har problemer med er å tildele verdier til primitive parametere fra en funksjon (jeg kan bare være uvitende om en bestemt oppdragsoperatør for dette) og også lage referanser til funksjoner som tilhører andre gjenstander i fly. Det kan også skyldes min egen uvitenhet, men her er noe som måten C # håndterer funksjonspoints (delegater?), Kanskje nyttig.