Hoe leer je Flash en AS3 voor Game Development

Tegenwoordig is Adobe Flash sterk gericht op het ontwikkelen van games. Naast browsergebaseerde gameportals zoals Kongregate, Newgrounds en Armor Games, zijn games die met Flash zijn gemaakt, ook te vinden op desktop, mobiel en tablet (zoals Machinarium, Super Hexagon en Wonderputt) als native apps. In dit artikel delen we boeken, zelfstudies en suggesties om Flash en de AS3-programmeertaal zo soepel mogelijk te leren.


Is Flash Dead niet?

Flash heeft de afgelopen jaren het zwaar gehad. Steve Jobs vond het niet leuk. iPads, iPhones en nieuwere Android-apparaten zullen het niet in de browser uitvoeren. HTML5 is snel verbeterd, waardoor browsers elke dag nieuwe dingen kunnen doen die voorheen alleen mogelijk waren met Flash. En iedereen is een irritante banneradvertentie tegengekomen die in Flash is gemaakt, of de Flash-plug-in heeft gecrasht en de hele browser meeneemt.

Dus Flash krijgt veel slechte pers bij webontwikkelaars en het grote publiek, en het is zeker een achterhaalde keuze vandaag in veel gebieden waar het vroeger koning was, zoals de ontwikkeling van multimediadiensten. Maar het is nog steeds een uitstekend platform voor game-ontwikkeling.

Waarom Flash nog steeds goed is voor Gamedev

Een reden hiervoor is de technologie. De standaard programmeertaal van Flash, AS3, staat ver af van het ActionScript van de afgelopen jaren; het is een krachtige, objectgeoriënteerde programmeertaal met hardwareversnelling, online netwerkmogelijkheden en ondersteuning voor 3D-afbeeldingen. En hoewel Flash Player niet wordt ondersteund door de meeste mobiele en tabletbrowsers, kunnen Flash-games worden geëxporteerd als native apps voor iPhone, iPad, Android, Kindle Fire en BlackBerry.

Een andere reden is het ecosysteem. Flash-webportals zijn misschien begonnen als sites voor kinderen om hun ruwe stick-figure-games te hosten, maar ze vormen nu een multi-miljoen dollar-industrie, met veel technisch complexe games en kritieke hits. En aangezien Flash-spellen kunnen worden uitgevoerd op mobiele apparaten en tablets, kunnen ze worden verkocht in de App Store, Google Play Store, Amazon Appstore enzovoort.

De andere grote reden is naar mijn mening de gemeenschap. Door de eigenaardige evolutie van Flash spreekt het zowel ontwerpers als programmeurs aan - een perfecte smeltkroes voor game-ontwikkeling. Naast het vormen van een geweldige community om deel van uit te maken, hebben ontwikkelaars van Flash-games veel bruikbare bibliotheken, hulpmiddelen, boeken en (uiteraard) tutorials geschreven.

Maar ... HTML5!

Ik geef toe, er is een soort online groepsdruk tegen het gebruik van Flash voor welk doel dan ook, en dit kan ontmoedigend zijn. In elke discussie over Flash, ongeacht de context, iemand komt erbij en vertelt je dat je HTML5 in plaats daarvan zou moeten gebruiken - het is zoals de wet van Godwin voor webtechnologieën.

Het is de moeite waard om ook naar HTML5 te kijken - het is de moeite waard om verschillende verschillende platformen te leren kennen - maar vergeet niet de vele sterke punten van Flash over het hoofd te zien. De situatie is niet zo eenvoudig als "HTML5 is de vervanging van Flash".

Naast al die commerciële redenen, zoals Will Blanton in een recent gesprek hierover zei:

Ik hou ervan om blootgesteld te worden aan nieuwe technologieën, maar gamedev is niet alleen technologie, het is een medium voor expressie (kunst), en het is gewoon onooglijk om van een artiest te eisen dat hij zijn of haar gereedschapset verandert om een ​​soort van waargenomen wereldwijde zeitgeist te weerspiegelen.


Flash-ontwikkelingstools installeren

U hebt geen exemplaar van Flash Professional nodig om Flash-spellen te maken. Het is redelijk nuttig als een hulpmiddel voor het samenstellen van GUI's en geanimeerde sprites, maar het is niet geweldig voor het schrijven van code.

Als u Windows gebruikt, raad ik u aan de gratis FlashDevelop-code-editor te downloaden - het is mijn persoonlijke favoriet. Ik heb er een beginnersgids voor geschreven en er is meer informatie op de officiële website.

Helaas is FlashDevelop alleen op Windows. Als je op een Mac zit, probeer dan FDT - er is een gratis versie die meer dan genoeg moet zijn om je op weg te helpen. Michael Plank schreef een geweldige beginnershandleiding voor de redacteur en er is volledige documentatie (inclusief een handleiding Aan de slag) op de FDT-startpagina.

Als u een Adobe Creative Suite-verzameling bezit, of als u abonnee bent van Creative Cloud, hebt u mogelijk al een exemplaar van Flash Builder, Adobe's eigen codegerichte Flash-editor. Bekijk deze handleiding om er mee aan de slag te gaan.

Ten slotte heb je eigenlijk geen fancy IDE nodig om Flash-ontwikkeling te doen; je kunt elke teksteditor gebruiken om je code te schrijven (John Cotterell wees me bijvoorbeeld op de AS3 TextMate-bundel van Simon Gregory) en de SDK van Flex / AIR om deze te compileren - hoewel ik dit niet zou aanraden als je nog niet bekend bent met programmeren.

Besteed geen tijd aan zorgen maken over welke te kiezen - u kunt later altijd van editor wisselen.


AS3 leren

AS3 (ActionScript 3.0) is de de-facto programmeertaal voor Flash. (Er zijn alternatieve talen - zoals de oudere AS2 en de cross-platform Haxe - maar ik ga ze hier niet aanraken.) Als je Flash-games wilt maken, moet je leren programmeren. In plaats van les te geven om te leren programmeren en hoe je tegelijkertijd spellen kunt maken, het is gemakkelijker om met het coderen te beginnen. Ja, dit betekent dat je dingen bouwt die geen games zijn, maar dit zal je helpen om op de lange termijn games te maken.

Als je Java, C # of een andere OOP-taal al kent, zal AS3 geen groot probleem voor je zijn. U moet echter wel lezen over:

  • De weergavelijst - zie AS3: de weergavelijst, lijstweergave programmering in AS3 en AS3 101: de weergavelijst.
  • Het gebeurtenissysteem - zie Introductie tot gebeurtenisafhandeling en AS3 101: Evenementen.
  • Garbage Collection - zie Garbage Collection begrijpen in AS3.

Als je het programmeren in het algemeen nog niet zo kent, heb je een uitgebreidere gids nodig. Ik raad AS3 101 aan, een 18-delige serie die alle kernconcepten vanuit het niets uitlegt.

Twee boeken die ik ook zou aanraden om te krijgen (en dekking te lezen) zijn Essential ActionScript 3.0) en Foundation Actionscript 3.0 Animation: Making Things Move !. Laat je niet misleiden door de titel van de laatste - het gaat niet om typische handgetekende animaties; het gaat over het gebruiken van code om dingen te laten bewegen. Dat is uitermate relevant voor game-ontwikkeling!

Als alternatief raadt Matt Barker deze enorme (600 pagina's) gratis handleiding aan, door Adobe: Programming ActionScript 3 [pdf].

U hebt ook een naslaggids nodig. De Adobe Livedocs zijn geweldig, en in de meeste gevallen is alles wat u nodig hebt. (De zoekopdracht is een beetje wonky, maar als je gewoon Google gebruikt voor [livedocs "term die je echt nodig hebt-"] het zal verschijnen.)

En net als bij elke programmeeromgeving zijn Stack Overflow en de Gamedev Stack Exchange geweldige technische Q & A-sites. De AS3-tag is actionscript-3.


Je eerste spellen maken

Er zijn veel boeken en tutorials specifiek over de ontwikkeling van Flash-games, maar het is lastig om een ​​game te vinden die goede werkwijzen gebruikt zonder al te veel voorkennis aan te nemen.

Ik denk dat het beste in deze categorie is Geavanceerd spelontwerp met Flash. Je zou het moeten kunnen begrijpen als je AS3 te pakken hebt gekregen van de vorige aanbevelingen, zelfs als je weinig of geen ervaring hebt met het ontwikkelen van games.

Ik wil hier ook een paar gratis online tutorials opnemen, naast dat boek gaan staan ​​(of zelfs vervangen) ... maar ik ken eigenlijk geen uitgebreide tuts die bij de rekening passen. De meeste Flash gamedev tutorials lijken te veronderstellen dat je heel weinig weet over AS3, of dat je genoeg ervaring hebt met het ontwikkelen van games om een ​​specifieke bibliotheek of framework te gebruiken.

Natuurlijk zijn er tutorials die er zijn - gewoon niets definitiefs. Neem een ​​kijkje in de Activetuts + Games-archieven, verken de Platformer van iedereen en probeer op zijn minst iets eenvoudigs te maken, zoals Pong of Space Invaders, om de basis te leren.


Meer meer meer

Je hebt grip op het Flash-platform, je kunt in AS3 coderen en je hebt een goede basis in de ontwikkeling van Flash-spellen. Op dit punt kunt u de meeste implementatietutorials op deze site volgen, zelfs als deze zijn geschreven in een ander ontwikkelingsplatform.

Maar er is nog steeds zoveel meer dat u specifiek kunt leren over de ontwikkeling van Flash-spellen! Ik heb een aantal bronnen bijeengebracht, in willekeurige volgorde - kies waar je nu het meest geïnteresseerd in bent en leer het.

Flash Game-motoren

Flixel en FlashPunk zijn twee populaire, gratis, open source-bibliotheken die zijn afgestemd op 2D-game-ontwikkeling.

Beide worden goed ondersteund, met een goede community en veel tutorials, en elk is gebruikt om een ​​hoop spellen te maken.

Als u Flixel wilt leren kennen, bekijkt u de links op de officiële Help-pagina, evenals de uitstekende verzameling Flash Game Dev Tips van Photon Storm.

Om FlashPunk te leren, bekijk de officiële tutorials.
U vindt deze bibliotheek wellicht comfortabeler als u al ervaring hebt met Game Maker, omdat deze bibliotheek sterk is gebaseerd op de scripttaal van Game Maker.

Stage3D

Met de Stage3D API's kunt u GPU hardwareversnelling gebruiken in uw games, voor supersnelle 3D-rendering. Bekijk Christer Kaitila's boek, Stage3D Game Programming: Beginner's Guide, voor een uitgebreide handleiding voor dit.

(Het is ook de moeite waard om naar Away3D te kijken, een geavanceerde 3D-engine voor Flash.)

Ondanks de naam is Stage3D ook zeer geschikt voor 2D-spellen, met gemeenschappelijke rendering-snelheden van 60 fps. Christer heeft ook een zesdelige tutorialserie geschreven over het bouwen van een 2D shoot-'em-up met behulp van Stage3D - de eerste drie delen zijn volledig gratis!

Als je verder wilt gaan, kijk dan eens naar Starling Framework, een bibliotheek die specifiek is ontworpen voor 2D-game-ontwikkeling en die je de kracht geeft van Stage3D-weergave zonder Stage3D zelf aan te raken. Thibault Imbert heeft een introductie en een geweldig e-boek voor het raamwerk geschreven - beide zijn gratis!

Mobiele en tabletontwikkeling

Zoals ik aan het begin van dit artikel al zei, beperkt Flash je niet tot de ontwikkeling van je browser - je kunt games maken die als native iPhone-, Android- of BlackBerry-apps worden uitgevoerd en ze zelfs verkopen in de verschillende app stores.

Het is niet zo moeilijk om je game daadwerkelijk in native app-indeling te laten exporteren, alleen Google [flashdevelop Android] of [fdt ios] of welke andere combinatie van hulpmiddelen en platform dan ook geschikt is om de nieuwste instructies te krijgen.

Het lastiger is om je game te optimaliseren voor een ander platform en gebruik te maken van hardwarefuncties zoals de accelerometer en het aanraakscherm. Ik raad hiervoor de Flash Development voor Android Cookbook en het Flash iOS Apps Cookbook aan, vergezeld van het regelmatig lezen van onze zustersite Mobiletuts + voor meer informatie over ontwerp van mobiele interfaces.

Diversen

Er zijn veel meer bibliotheken waar ik in zou kunnen gaan - zoals Box2D, GreenSock en MinimalComps - maar ik moet ergens stoppen.

Ik zal deze lijst afronden met enkele geweldige websites voor Flash-game-ontwikkelaars:

  • Adobe Gaming
  • FGL
  • gotoAndLearn.com
  • Playtomic
  • Mochi Media
  • AS3 Game Gears
  • Flash Game Dojo

Ik weet gewoon dat ik een aantal uitstekende sites van die lijst heb gemist. Laat alsjeblieft een reactie achter als je denkt dat iets verdient te worden toegevoegd!


Games maken

Ik zei dit in de XNA-gids, en ik zal het hier opnieuw zeggen. Maak als je begint niet iets complexs zoals een MMO, of iets dat enorme hoeveelheden artwork en verhaal vereist als een RPG. Begin met iets eenvoudigs dat je later misschien kunt uitbreiden.

Bijvoorbeeld: een spel met één knop zoals Canabalt kan worden uitgebreid om een ​​platformer te creëren; een Pong-kloon kan worden omgezet in een baksteenbrekend spel met meerdere niveaus; een avoider-game zou een kloon van de ruimtevaarder kunnen worden en vervolgens een volledige shoot-'em-up.

Maak je ook geen zorgen over het leren van geavanceerde programmeertechnieken; je hebt de tijd om vat te krijgen met ontwerppatronen en algemene codearchitectuur later. Richt je op het voltooien van sommige games, ook al zijn je eerste games maar klein.


Grote dank aan Djordje Radakovic, Matt Barker, Joseph Burchett, Will Blanton en John Cotterell voor hun hulp bij het samenbrengen van deze gids!

Als u suggesties voor Flash- en AS3-leerbronnen heeft die we hebben gemist, kunt u ons dit laten weten in de opmerkingen.