I dag er Adobe Flash sterkt rettet mot spillutvikling. Foruten nettleserbaserte spillportaler som Kongregate, Newgrounds og Armor Games, kan spill som er laget med Flash, finnes på skrivebordet, mobilen og nettbrettet (som Machinarium, Super Hexagon og Wonderputt), som innfødte apps. I denne artikkelen deler vi bøker, opplæringsprogrammer og forslag til å lære Flash og dets AS3 programmeringsspråk så jevnt som mulig.
Flash har hatt en tøff tid de siste årene. Steve Jobs likte det ikke. iPads, iPhones og nyere Android-enheter vil ikke kjøre den i nettleseren. HTML5 har forbedret seg raskt, slik at nettlesere kan gjøre nye ting hver dag som tidligere kun var mulig med Flash. Og alle er kommet over en irriterende bannerannonse laget i Flash, eller hadde Flash-plugin-krasjen og tar hele nettleseren med det.
Så Flash får mye dårlig press blant webutviklere og allmennheten, og det er sikkert et foreldet valg i dag på mange områder der det pleide å være konge, som multimediewebstedutvikling. Men det er fortsatt en utmerket plattform for spillutvikling.
En grunn til dette er teknologien. Flashs standard programmeringsspråk, AS3, er langt fra ActionScript fra år tidligere; Det er et kraftig, objektorientert programmeringsspråk med maskinvareaccelerasjon, nettverksfunksjoner og støtte for 3D-grafikk. I tillegg, selv om Flash Player ikke støttes av de fleste mobil- og nettbrettavlesere, kan Flash-spill eksporteres som innfødte apps til iPhone, iPad, Android, Kindle Fire og BlackBerry..
En annen grunn er økosystemet. Flash-webportaler kan ha startet som nettsteder for at barna skal være vert for deres råstangspill, men de utgjør nå en million dollarindustri, med mange teknisk komplekse spill og kritiske treff. Og siden Flash-spill kan kjøre på mobil- og nettbrett-enheter, kan de selges i App Store, Google Play Butikk, Amazon Appstore og så videre..
Den andre store grunnen er etter min mening samfunnet. På grunn av Flashs særegne utvikling appellerer det til både designere og kodere - en perfekt smeltedigel for spillutvikling. I tillegg til å danne et flott samfunn for å være en del av, har Flash-spillutviklere skrevet mange nyttige biblioteker, verktøy, bøker og (selvfølgelig) opplæringsprogrammer.
Jeg innrømmer at det er en slags nettpersertrykk mot å bruke Flash for noe formål, og dette kan være motløs. I enhver diskusjon om Flash, uansett kontekst, noen vil hoppe inn og fortelle deg at du skal bruke HTML5 i stedet - det er som Godwins lov for webteknologi.
Det er verdt å se på HTML5 også - det er verdt å lære flere forskjellige plattformer - men overser ikke Flashs mange styrker. Situasjonen er ikke så enkel som "HTML5 er Flash erstatning".
I tillegg til alle de kommersielle årsakene, som Will Blanton sa i en nylig samtale om dette:
Jeg elsker å være utsatt for ny teknologi, men gamedev er ikke bare teknologi, det er et medium for uttrykk (kunst), og det er bare uhyggelig å kreve at en kunstner forandrer sitt verktøy for å gjenspeile en slags oppfattet global zeitgeist.
Du trenger ikke en kopi av Flash Professional for å lage Flash-spill. Det er ganske nyttig som et verktøy for å sette sammen GUIer og animerte sprites, men det er ikke bra å skrive kode.
I stedet, hvis du er på Windows, anbefaler jeg at du laster ned gratis FlashDevelop-kodeditoren - det er min personlige favoritt. Jeg har skrevet en nybegynners guide til den, og det er mer informasjon på den offisielle nettsiden.
Dessverre er FlashDevelop bare på Windows. Hvis du er på en Mac, gi FDT en prøve - det er en gratis versjon som bør være mer enn nok til å komme i gang. Michael Plank skrev en flott nybegynners guide til redaktøren, og det er full dokumentasjon (inkludert en startveiledning) på FDT hjemmeside.
Hvis du eier en Adobe Creative Suite-samling, eller du er abonnent på Creative Cloud, kan du allerede ha en kopi av Flash Builder, Adobes egen kodefokuserte Flash-editor. Sjekk ut denne veiledningen for å lære hvordan du kommer i gang med det.
Til slutt trenger du faktisk ikke en fancy IDE for å gjøre Flash-utvikling; Du kan bruke noen tekstredigerer til å skrive koden din (John Cotterell pekte meg mot Simon Gregorys AS3 TextMate-pakke, for eksempel) og Flex / AIR SDK for å kompilere det - selv om jeg ikke vil anbefale dette hvis du er ny til programmering.
Ikke bruk noen tid til å bekymre deg for hvilken du skal velge - du kan alltid bytte redaktør senere.
AS3 (ActionScript 3.0) er de facto programmeringsspråket for Flash. (Det finnes alternative språk - som den eldre AS2 og kryssplattformen Haxe - men jeg kommer ikke til å berøre dem her.) Hvis du vil lage Flash-spill, må du lære å programmere. Snarere enn å lære å lære å kode og hvordan å lage spill samtidig, er det lettere å starte med koding. Ja, det betyr å bygge ting som ikke er spill, men dette vil hjelpe deg med å lage spill i det lange løp.
Hvis du allerede kjenner Java, C # eller et annet OOP-språk, vil AS3 ikke være en stor strekk for deg. Du bør imidlertid lese om:
Hvis du er ny for programmering generelt, trenger du en mer omfattende guide. Jeg anbefaler AS3 101, en 18-delt serie som forklarer alle kjernekonceptene fra grunnen av.
To bøker jeg også vil foreslå å få (og lese dekselet til å dekke) er Essential ActionScript 3.0) og Foundation Actionscript 3.0 Animasjon: Making Things Move !. Ikke la deg lure av tittelen til sistnevnte - det handler ikke om typisk hånddraget animasjon; Det handler om å bruke kode til, vel, gjør ting flytte. Det er ekstremt relevant for spillutvikling!
Alternativt anbefaler Matt Barker denne store (600 sider) gratis guideboken, av Adobe: Programmering ActionScript 3 [pdf].
Du trenger også en referanseguide. Adobe Livedocs er flott, og i de fleste tilfeller vil være alt du trenger. (Søket er litt wonky, men hvis du bare Google for [livedocs "sikt du faktisk trenger"] det vil dukke opp.)
Og som med alle programmeringsmiljøer, er Stack Overflow og Gamedev Stack Exchange gode tekniske spørsmål og tilbakemeldinger. AS3-taggen er action-3
.
Det er mange bøker og opplæringsprogrammer spesielt om Flash-spillutvikling, men det er vanskelig å finne en som bruker god praksis uten å forutse for mye forkunnskap.
Jeg tror det beste i denne kategorien er Advanced Game Design med Flash. Du bør kunne forstå det hvis du har grep med AS3 fra tidligere anbefalinger, selv om du har liten eller ingen faktisk spillutvikling erfaring.
Jeg vil gjerne inkludere noen gratis online opplæringsprogrammer her, for å gå sammen med (eller til og med å erstatte) den boken ... men jeg vet egentlig ikke om noen omfattende tut som passer til regningen. De fleste Flash-gamedev-opplæringene ser ut til å anta at du heller ikke vet veldig lite om AS3, eller du har nok erfaring med spillutvikling til å bruke et bestemt bibliotek eller rammeverk.
Selvfølgelig er det opplæringsprogrammer der ute - bare ingenting definitivt. Ta en titt gjennom Activetuts + spillarkivene, utforsk alles plattformer, og prøv å i det minste gjøre noe enkelt som Pong eller Space Invaders for å lære det grunnleggende.
Du har grep med Flash-plattformen, du kan kode i AS3, og du har et anstendig grunnlag i Flash-spillutvikling. På dette tidspunktet kan du følge de fleste gjennomføringsveiledningene på dette nettstedet, selv om de er skrevet i en annen utviklingsplattform.
Men det er fortsatt så mye mer du kan lære om Flash-spillutvikling spesielt! Jeg har avrundet et sett med ressurser, i ingen bestemt rekkefølge - velg det du er mest interessert i akkurat nå, og lær deg.
Flixel og FlashPunk er to populære, gratis, open source-biblioteker skreddersydd for 2D-spillutvikling.
Begge er godt støttet, med et godt samfunn og mange opplæringsprogrammer, og hver har blitt brukt til å lage massevis av spill.
For å lære Flixel, ta en titt på linkene på den offisielle hjelpesiden, samt Photon Storms utmerkede samling av Flash Game Dev Tips.
For å lære FlashPunk, sjekk ut de offisielle opplæringene.
Du kan finne dette biblioteket mer behagelig hvis du allerede har erfaring med Game Maker, da den var basert på Game Maker skriptspråk.
Stage3D-APIene lar deg bruke GPU-maskinvareakselerasjon i spillene dine, for super-rask 3D-rendering. Sjekk ut Christer Kaitila's bok, Stage3D Game Programming: Beginner's Guide, for en grundig veiledning til dette.
(Det er også verdt å se på Away3D, en avansert 3D-motor for Flash.)
Til tross for navnet, er Stage3D også flott for 2D-spill, og gir vanlige reningshastigheter på 60 fps. Christer har også skrevet en seksdelers opplæringsserie om å bygge en 2D shoot-'em-up ved hjelp av Stage3D - de tre første delene er helt gratis!
Hvis du vil ta det videre, se på Starling Framework, et bibliotek spesielt utviklet for 2D-spillutvikling, noe som gir deg kraften til Stage3D-gjengivelse uten å måtte berøre Stage3D selv. Thibault Imbert har skrevet en introduksjon og en flott bok for rammen - begge er gratis!
Som jeg nevnte i begynnelsen av denne artikkelen, begrenser Flash ikke deg til nettleserutvikling - du kan lage spill som kjører som innfødte iPhone-, Android- eller BlackBerry-apper, og til og med selge dem på de ulike appbutikkene.
Faktisk er det ikke spesielt vanskelig å få spillet til å eksportere i opprinnelig appformat, bare Google [flashdevelop android]
eller [fdt ios]
eller hvilken annen kombinasjon av verktøy og plattform som passer for deg for å få de siste instruksjonene.
Det som er vanskeligere er å optimalisere spillet ditt for en annen plattform, og bruk av maskinvarefunksjoner som akselerometer og berøringsskjerm. Jeg anbefaler Flash Development for Android Cookbook og Flash iOS Apps Cookbook for dette, ledsaget av vanlig lesing av søstersiden Mobiletuts + for å lære om mobilgrensesnittdesign.
Det er mange flere bibliotek jeg kan gå inn i - som Box2D, GreenSock og MinimalComps - men jeg må stoppe et sted.
Jeg vil avrunde denne listen med noen gode nettsteder for Flash-spillutviklere:
Jeg vet bare at jeg har savnet noen gode steder av den listen. Vennligst legg igjen en kommentar hvis du tror noe fortjener å bli lagt til!
Jeg sa dette i XNA-guiden, og jeg vil si det igjen her. Når du kommer i gang, gjør ikke noe komplisert som en MMO, eller noe som krever enorme mengder kunstverk og historie som en RPG. Begynn med noe enkelt at du kanskje kan utvide senere.
For eksempel: Et enkeltknappspill som Canabalt kan bli utvidet til å lage en plattformspiller; en Pong klon kan bli omgjort til et mursteinspill med flere nivåer; et avoider spill kan bli en space invaders klone og deretter en fullblåst shoot-'em-up.
Ikke bekymre deg for å lære avanserte programmeringsteknikker heller, heller; du får tid til å ta tak i designmønstre og generell kodearkitektur senere. Fokuser på å fullføre noen spill, selv om de første blir bare små.
Stor takk til Djordje Radakovic, Matt Barker, Joseph Burchett, Will Blanton og John Cotterell for deres hjelp med å sette denne veiledningen sammen!
Hvis du har noen forslag til Flash og AS3 læringsressurser som vi har savnet, vennligst gi oss beskjed i kommentarene.