Idag är Adobe Flash starkt inriktad på spelutveckling. Förutom webbläsarbaserade spelportaler som Kongregate, Newgrounds och Armor Games kan spel som gjorts med Flash hittas på skrivbord, mobil och surfplattor (som Machinarium, Super Hexagon och Wonderputt) som inbyggda appar. I den här artikeln delar vi böcker, handledning och förslag till att lära sig Flash och dess AS3-programmeringsspråk så smidigt som möjligt.
Flash har haft en tuff tid de senaste åren. Steve Jobs tyckte inte om det. iPads, iPhones och nyare Android-enheter kommer inte att köra den i webbläsaren. HTML5 har förbättrats snabbt, så att webbläsare kan göra nya saker varje dag som tidigare endast var möjliga med Flash. Och alla har stött på en irriterande bannerannons som gjorts i Flash, eller har Flash-pluginkraschen och tar hela webbläsaren med det.
Så får Flash en massa dålig press bland webbutvecklare och allmänheten, och det är säkert ett föråldrat val idag på många områden där det brukade vara kung, som multimedia webbutveckling. Men det är fortfarande en utmärkt plattform för spelutveckling.
En orsak till detta är tekniken. Flashs standardprogrammeringsspråk, AS3, är långt ifrån ActionScript från tidigare år; Det är ett kraftfullt, objektorienterat programmeringsspråk med maskinvaruacceleration, nätverksfunktioner och stöd för 3D-grafik. Plus, även om Flash Player inte stöds av de flesta mobil- och surfplattor, kan Flash-spel exporteras som inbyggda appar för iPhone, iPad, Android, Kindle Fire och BlackBerry.
En annan anledning är ekosystemet. Flash-webbportaler kan ha börjat som webbplatser för barn att vara värd för sina ojämnaste pokerspel, men de utgör nu en industri med flera miljoner dollar, med många tekniskt komplexa spel och kritiska hits. Och eftersom Flash-spel kan köras på mobil- och surfplattformar kan de säljas i App Store, Google Play Butik, Amazon Appstore och så vidare.
Den andra stora anledningen är enligt min mening samhället. På grund av Flashs särpräglade utveckling appellerar den till både designers och kodare - en perfekt smältpotte för spelutveckling. Förutom att bilda en stor gemenskap som en del av, har Flash-spelutvecklare skrivit många användbara bibliotek, verktyg, böcker och (självklart) handledningar.
Jag kommer att erkänna, det finns en form av onlinertryck på Internet mot att använda Flash för något ändamål, och det kan vara avskräckande. I någon diskussion om Flash, oavsett kontext, någon kommer hoppa in och berätta att du borde använda HTML5 istället - det är som Guds lag för webbteknik.
Det är värt att titta på HTML5 också - det är värt att lära sig flera olika plattformar - men förbise inte Flashs många styrkor. Situationen är inte lika enkel som "HTML5 är Flash ersättning".
Förutom alla dessa kommersiella skäl, som Will Blanton sa i en ny konversation om detta:
Jag älskar att vara utsatt för ny teknik, men gamedev är inte bara teknik, det är ett medium för uttryck (konst), och det är bara ojämnt att kräva att en konstnär byter sin verktygssats för att återspegla en slags uppfattad global zeitgeist.
Du behöver inte en kopia av Flash Professional för att göra Flash-spel. Det är ganska användbart som ett verktyg för att sätta samman GUI och animerade sprites, men det är inte bra att skriva kod.
Istället, om du är på Windows, rekommenderar jag dig att ladda ner den kostnadsfria FlashDevelop-kodredigeraren - det är min personliga favorit. Jag har skrivit en nybörjarguide till den, och det finns mer information på den officiella hemsidan.
Tyvärr är FlashDevelop bara på Windows. Om du är på Mac, ge FDT ett försök - det finns en gratis version som borde vara mer än tillräckligt för att komma igång. Michael Plank skrev en bra nybörjarguide till redaktören, och det finns fullständig dokumentation (inklusive en Komma igång guide) på FDT hemsida.
Om du äger en Adobe Creative Suite-samling, eller om du är abonnent på Creative Cloud, kanske du redan har en kopia av Flash Builder, Adobes egen kodfokuserade Flash-editor. Kolla in den här guiden för att lära dig hur du börjar med det.
Slutligen behöver du inte egentligen en fancy IDE för att göra Flash-utveckling. du kan använda någon textredigerare för att skriva din kod (John Cotterell pekade mig mot Simon Gregorys AS3 TextMate-bunt) och Flex / AIR SDK för att kompilera det - även om jag inte skulle rekommendera det här om du är ny programmering.
Spendera inte någon gång oroa dig för vilken du ska välja - du kan alltid byta redaktör senare.
AS3 (ActionScript 3.0) är de facto programmeringsspråket för Flash. (Det finns alternativa språk - som äldre AS2 och plattformen Haxe - men jag kommer inte att röra på dem här.) Om du vill göra Flash-spel måste du lära dig att programmera. Snarare än att lära sig att lära sig hur man kodar och hur man gör spel samtidigt, det är lättare att börja med kodning. Ja, det betyder att du bygger saker som inte är spel, men det här hjälper dig att skapa spel på lång sikt.
Om du redan känner till Java, C # eller ett annat OOP-språk, kommer AS3 inte att vara en stor sträcka för dig. Du bör dock läsa om:
Om du är ny för att programmera i allmänhet behöver du en mer omfattande guide. Jag rekommenderar AS3 101, en 18-dels serie som förklarar alla kärnkoncept från grunden.
Två böcker som jag också skulle föreslå att få (och läsa omslaget för att täcka) är Essential ActionScript 3.0) och Foundation Actionscript 3.0 Animation: Making Things Move !. Låt dig inte lura av titeln på den senare - det handlar inte om typisk handritad animering; Det handlar om att använda kod till, ja, få saker att flytta. Det är extremt relevant för spelutveckling!
Alternativt rekommenderar Matt Barker denna stora (600 sid) gratis guidebok, av Adobe: Programmering ActionScript 3 [pdf].
Du behöver också en referensguide. Adobe Livedocs är bra, och i de flesta fall kommer allt du behöver. (Sökningen är lite wonky, men om du bara Google för [livedocs "term du faktiskt behöver"] det kommer att dyka upp.)
Och som med vilken programmeringsmiljö som helst, är Stack Overflow och Gamedev Stack Exchange stora tekniska frågor och svar. AS3-taggen är actionscript-3
.
Det finns många böcker och handledning specifikt om Flash-spelutveckling, men det är knepigt att hitta en som använder bra metoder utan att förutse för mycket förkunskaper.
Jag tycker att det bästa i denna kategori är Advanced Game Design med Flash. Du bör kunna förstå det om du har tagit hand om AS3 från tidigare rekommendationer, även om du har liten eller ingen faktisk spelutvecklingserfarenhet.
Jag skulle också vilja inkludera några gratis online-handledning här, för att gå längs med (eller till och med att ersätta) den boken ... men jag vet inte faktiskt om några omfattande tuttar som passar räkningen. De flesta Flash-gamedev-tutorials tycks antar att du antingen vet väldigt lite om AS3, eller har tillräckligt med erfarenhet av spelutveckling för att använda ett visst bibliotek eller ramverk.
Självklart finns det handledning där ute - bara inget definitivt. Ta en titt genom Activetuts + Spel arkiv, utforska Everyons Platform, och försök åtminstone göra något enkelt som Pong eller Space Invaders för att lära sig grunderna.
Du har tagit tag i Flash-plattformen, du kan koda i AS3, och du har en anständig grund i Flash-spelutveckling. Vid denna tidpunkt kan du följa de flesta implementeringshandledningarna på den här webbplatsen, även om de är skrivna i en annan utvecklingsplattform.
Men det finns fortfarande så mycket mer att du kan lära dig speciellt om Flash-spelutveckling! Jag har avrundat en uppsättning resurser, i ingen särskild ordning - välj vilken du är mest intresserad av just nu och lär dig.
Flixel och FlashPunk är två populära, gratis, open source-bibliotek skräddarsydda för 2D-spelutveckling.
Båda är välskötta, med en angelägen gemenskap och många tutorials, och var och en har använts för att göra massor av spel.
För att lära dig Flixel, ta en titt på länkarna på den officiella Hjälp-sidan, liksom Photon Storms utmärkta samling av Flash Game Dev Tips.
För att lära sig FlashPunk, kolla in de officiella handledningarna.
Du kan hitta det här biblioteket mer bekvämt om du redan har erfarenhet av Game Maker, eftersom den baserades kraftigt på Game Makers skriptspråk.
Stage3D-API: erna tillåter dig att använda GPU-hårdvaruacceleration i dina spel, för super-snabb 3D-rendering. Kolla in Christer Kaitila bok, Stage3D Game Programming: Beginners Guide, för en djupgående guide till detta.
(Det är också värt att titta på Away3D, en avancerad 3D-motor för Flash.)
Trots namnet är Stage3D också bra för 2D-spel, vilket ger vanliga återgivningshastigheter på 60fps. Christer har också skrivit en sexdelad handledningsserie om att bygga en 2D shoot-'em-up med Stage3D - de första tre delarna är helt gratis!
Om du vill ta det här, kolla in Starling Framework, ett bibliotek speciellt utformat för 2D-spelutveckling, vilket ger dig kraften i Stage3D-rendering utan att behöva röra Stage3D själv. Thibault Imbert har skrivit en introduktion och en bra ebook för ramen - båda är gratis!
Som jag nämnde i början av den här artikeln begränsar Flash dig inte till webbläsarutveckling - du kan skapa spel som kör som inbyggda iPhone-, Android- eller BlackBerry-appar och även sälja dem på de olika appbutikerna.
Att få ditt spel att exportera i inbyggt appformat är inte särskilt svårt - bara Google [flashdevelop android]
eller [fdt ios]
eller vilken annan kombination av verktyg och plattform som passar dig för att få de senaste instruktionerna.
Vad som är svårare är att optimera ditt spel för en annan plattform och utnyttja hårdvarufunktioner som accelerometer och pekskärm. Jag rekommenderar Flash Development for Android Cookbook och Flash iOS Apps Cookbook för detta, åtföljd av regelbunden läsning av vår systerwebbplats Mobiletuts + för att lära känna mobilgränssnittsdesign.
Det finns många fler bibliotek jag kunde gå in i - som Box2D, GreenSock och MinimalComps - men jag måste stanna någonstans.
Jag kommer att runda av den här listan med några bra webbplatser för Flash-spelutvecklare:
Jag vet bara att jag har missat några bra ställen utanför den listan. Vänligen lämna en kommentar om du tycker att något förtjänar att läggas till!
Jag sa detta i XNA-guiden, och jag säger det igen här. När du börjar, gör inte något komplicerat som en MMO, eller något som kräver enorma mängder av konstverk och historia som en RPG. Börja med något enkelt att du kanske kan expandera senare.
Till exempel: Ett enda knappspel som Canabalt kan utökas för att skapa en plattformsapparat; en Pong klon kan omvandlas till ett brick-breaking spel med flera nivåer; ett undvikarspel kan bli en rymdinduktörskloon och sedan en fullblåst skjutspel.
Oroa dig inte om att lära dig avancerad programmeringsteknik ganska, heller; du får tid att ta tag i designmönster och generell kodarkitektur senare. Fokusera på att avsluta några spel, även om dina första kommer bara att vara små.
Stort tack till Djordje Radakovic, Matt Barker, Joseph Burchett, Will Blanton och John Cotterell för deras hjälp med att sammanställa denna guide tillsammans!
Om du har några förslag på Flash och AS3-lärande resurser som vi har missat, var snäll och låt oss veta i kommentarerna.