Come imparare Flash e AS3 per lo sviluppo del gioco

Oggi, Adobe Flash è fortemente orientato allo sviluppo del gioco. Oltre ai portali di gioco basati su browser come Kongregate, Newgrounds e Armour Games, i giochi realizzati con Flash possono essere trovati su desktop, dispositivi mobili e tablet (come Machinarium, Super Hexagon e Wonderputt), come app native. In questo articolo, condivideremo libri, esercitazioni e suggerimenti per l'apprendimento di Flash e del suo linguaggio di programmazione AS3 nel modo più fluido possibile.


Non è Flash Dead?

Flash ha avuto un periodo difficile negli ultimi anni. A Steve Jobs non piaceva. iPad, iPhone e dispositivi Android più recenti non verranno eseguiti nel browser. HTML5 è migliorato rapidamente, consentendo ai browser di fare cose nuove ogni giorno che in precedenza erano possibili solo con Flash. E tutti si imbattono in un fastidioso banner pubblicitario realizzato in Flash, oppure il plugin Flash si blocca e porta con sé l'intero browser.

Quindi Flash riceve molta cattiva stampa tra gli sviluppatori Web e il pubblico in generale, ed è certamente una scelta obsoleta oggi in molte aree in cui era un tempo re, come lo sviluppo di siti Web multimediali. Ma è ancora un'ottima piattaforma per lo sviluppo del gioco.

Perché Flash è ancora ottimo per Gamedev

Una ragione per questo è la tecnologia. Il linguaggio di programmazione predefinito di Flash, AS3, è molto diverso da ActionScript degli anni passati; è un potente linguaggio di programmazione orientato agli oggetti con accelerazione hardware, funzionalità di networking online e supporto per la grafica 3D. Inoltre, anche se Flash Player non è supportato dalla maggior parte dei browser mobili e tablet, i giochi Flash possono essere esportati come app native per iPhone, iPad, Android, Kindle Fire e BlackBerry.

Un'altra ragione è l'ecosistema. I portali web Flash potrebbero essere stati avviati come siti per i bambini per ospitare i loro grezzi giochi a figure stilizzate, ma ora costituiscono un settore da molti milioni di dollari, con molti giochi tecnicamente complessi e hit critici. E poiché i giochi Flash possono essere eseguiti su dispositivi mobili e tablet, possono essere venduti su App Store, Google Play Store, Amazon Appstore e così via.

L'altra grande ragione, secondo me, è la comunità. A causa della peculiare evoluzione di Flash, si rivolge a designer e programmatori, un melting pot perfetto per lo sviluppo del gioco. Oltre a formare una grande comunità di cui far parte, gli sviluppatori di giochi Flash hanno scritto un sacco di utili librerie, strumenti, libri e (ovviamente) tutorial.

Ma ... HTML5!

Devo ammettere, c'è una sorta di pressione dei colleghi online contro l'utilizzo di Flash per qualsiasi scopo, e questo può essere scoraggiante. In qualsiasi discussione su Flash, indipendentemente dal contesto, qualcuno entrerà e ti dirà che dovresti usare HTML5 invece - è come la legge di Godwin per le tecnologie web.

Vale la pena esaminare anche HTML5: vale la pena imparare diverse piattaforme diverse, ma non trascurare i molti punti di forza di Flash. La situazione non è così semplice come "HTML5 è la sostituzione di Flash".

Oltre a tutte quelle ragioni commerciali, come ha detto Will Blanton in una recente conversazione su questo:

Amo essere esposta alle nuove tecnologie, ma gamedev non è solo tecnologia, è un mezzo per l'espressione (arte), ed è solo rozzo chiedere ad un artista di cambiare il proprio toolset per riflettere una sorta di zeitgeist globale percepito.


Installazione di strumenti di sviluppo Flash

Non è necessaria una copia di Flash Professional per creare giochi Flash. È abbastanza utile come strumento per mettere insieme GUI e sprite animate, ma non è bello per scrivere codice.

Invece, se sei su Windows, ti consiglio di scaricare l'editor di codice FlashDevelop gratuito - è il mio preferito. Ho scritto una guida per principianti e ci sono ulteriori informazioni sul sito ufficiale.

Sfortunatamente, FlashDevelop è solo su Windows. Se sei su un Mac, prova FDT: c'è una versione gratuita che dovrebbe essere più che sufficiente per iniziare. Michael Plank ha scritto una guida per principianti all'editor, e c'è tutta la documentazione (inclusa una guida introduttiva) sulla homepage di FDT.

Se possiedi una collezione di Adobe Creative Suite o sei abbonato a Creative Cloud, potresti già avere una copia di Flash Builder, l'editor Flash di Adobe dedicato al codice. Dai un'occhiata a questa guida per imparare come iniziare.

Infine, non hai realmente bisogno di un IDE di fantasia per lo sviluppo di Flash; puoi usare qualsiasi editor di testo per scrivere il tuo codice (John Cotterell mi ha indirizzato verso il bundle ASM TextMate di Simon Gregory, per esempio) e Flex / AIR SDK per compilarlo - anche se non lo consiglierei se sei nuovo alla programmazione.

Non perdere tempo a preoccuparti di quale scegliere: puoi sempre cambiare editor in un secondo momento.


Imparare AS3

AS3 (ActionScript 3.0) è il linguaggio di programmazione de facto per Flash. (Esistono linguaggi alternativi, come il vecchio AS2 e l'Haxe multipiattaforma, ma non li toccherò qui.) Se vuoi creare giochi Flash, devi imparare a programmare. Piuttosto che insegnare per imparare a codificare e come creare giochi allo stesso tempo, è più facile iniziare con la programmazione. Sì, questo significa costruire cose che non sono giochi, ma questo ti aiuterà a fare giochi a lungo termine.

Se conosci già Java, C # o un altro linguaggio OOP, AS3 non sarà un grande sforzo per te. Dovresti comunque leggere su:

  • La lista di visualizzazione - vedi AS3: la lista di visualizzazione, la programmazione di liste di visualizzazione in AS3 e AS3 101: la lista di visualizzazione.
  • Il sistema degli eventi - vedi Introduzione alla gestione degli eventi e AS3 101: Eventi.
  • Raccolta dei rifiuti: vedere Informazioni sulla raccolta dei rifiuti in AS3.

Se sei nuovo alla programmazione in generale, avrai bisogno di una guida più completa. Raccomando AS3 101, una serie di 18 parti che spiega da zero tutti i concetti base.

Due libri che suggerirei di ottenere (e di leggere le copertine per coprirli) sono Essential ActionScript 3.0) e l'animazione Foundation Actionscript 3.0: Making Things Move !. Non lasciatevi ingannare dal titolo di quest'ultimo - non si tratta di tipiche animazioni disegnate a mano; si tratta di usare il codice per, bene, fare muovere le cose. Questo è estremamente importante per lo sviluppo del gioco!

In alternativa, Matt Barker consiglia questa enorme guida (di 600 pagine) gratuita, di Adobe: Programming ActionScript 3 [pdf].

Avrai bisogno anche di una guida di riferimento. Gli Adobe Livedoc sono fantastici e nella maggior parte dei casi saranno tutto ciò di cui hai bisogno. (La ricerca è un po 'vistosa, ma se solo Google per [livedocs "termine di cui hai effettivamente bisogno-"] verrà visualizzato.)

E come in qualsiasi ambiente di programmazione, Stack Overflow e Gamedev Stack Exchange sono ottimi siti di domande e risposte tecniche. Il tag AS3 è actionscript-3.


Fare i tuoi primi giochi

Ci sono un sacco di libri e tutorial specifici sullo sviluppo di giochi Flash, ma è difficile trovarne uno che usi le buone pratiche senza assumere troppe conoscenze pregresse.

Penso che il meglio di questa categoria sia AdvancED Game Design con Flash. Dovresti essere in grado di capirlo se hai familiarità con AS3 rispetto ai consigli precedenti, anche se hai poca o nessuna esperienza di sviluppo del gioco reale.

Mi piacerebbe includere anche qui alcuni tutorial online gratuiti, per affiancare (o anche solo sostituire) quel libro ... ma non conosco effettivamente tuts esaurienti adatti al progetto. La maggior parte delle esercitazioni di Flash gamedev sembrano presumere che tu sappia molto poco di AS3 o che tu abbia sufficiente esperienza nello sviluppo di giochi per utilizzare una libreria o un framework specifico.

Naturalmente, ci sono tutorial là fuori - semplicemente niente di definitivo. Dai un'occhiata agli archivi di Activetuts + Games, esplora il Platform di Tutti e prova almeno a creare qualcosa di semplice come Pong o Space Invaders per imparare le basi.


Di più di più di più

Hai a che fare con la piattaforma Flash, puoi codificare in AS3 e hai una base decente nello sviluppo di giochi Flash. A questo punto, è possibile seguire la maggior parte delle esercitazioni di implementazione su questo sito, anche se sono scritte in una piattaforma di sviluppo diversa.

Ma c'è ancora molto di più che puoi imparare nello sviluppo di giochi Flash in particolare! Ho arrotondato una serie di risorse, senza un ordine particolare: scegli quello a cui sei più interessato in questo momento e apprendi.

Motori di gioco Flash

Flixel e FlashPunk sono due popolari librerie open source su misura per lo sviluppo di giochi 2D.

Entrambi sono ben supportati, con una community appassionata e un sacco di tutorial, e ognuno è stato utilizzato per fare un sacco di giochi.

Per imparare Flixel, dai un'occhiata alla pagina ufficiale della Guida, oltre all'eccellente raccolta di Flash Game Dev Tips di Photon Storm.

Per imparare FlashPunk, dai un'occhiata ai tutorial ufficiali.
Potresti trovare questa libreria più comoda se hai già esperienza con Game Maker, poiché si basava molto sul linguaggio di scripting di Game Maker.

Stage3D

Le API Stage3D ti consentono di utilizzare l'accelerazione hardware della GPU nei tuoi giochi, per un rendering 3D velocissimo. Controlla il libro di Christer Kaitila, Stage3D Game Programming: Beginner's Guide, per una guida approfondita a questo.

(Vale anche la pena esaminare Away3D, un motore 3D avanzato per Flash.)

Nonostante il nome, Stage3D è ottimo anche per i giochi 2D, offrendo velocità di rendering comuni di 60 fps. Christer ha anche scritto una serie di tutorial in sei parti sulla costruzione di uno sparatutto in 2D usando Stage3D - le prime tre parti sono totalmente gratuite!

Se vuoi fare questo, guarda in Starling Framework, una libreria appositamente progettata per lo sviluppo di giochi 2D, che ti dà la potenza del rendering Stage3D senza dover toccare Stage3D stesso. Thibault Imbert ha scritto un'introduzione e un ottimo ebook per il framework, entrambi gratuiti!

Sviluppo mobile e tablet

Come ho detto all'inizio di questo articolo, Flash non ti limita allo sviluppo del browser: puoi creare giochi che funzionano come applicazioni native per iPhone, Android o BlackBerry e persino venderli nei vari negozi di app.

Realmente il tuo gioco da esportare in formato app nativo non è particolarmente difficile - solo Google [flashdevelop android] o [fdt ios] o qualsiasi altra combinazione di strumenti e piattaforma appropriata per ottenere le ultime istruzioni.

Ciò che è più difficile è l'ottimizzazione del gioco per un'altra piattaforma e l'utilizzo di funzionalità hardware come l'accelerometro e il touch screen. Raccomando lo sviluppo Flash per Cookbook Android e il ricettario Flash iOS Apps per questo, accompagnato da una lettura regolare del nostro sito gemello Mobiletuts + per conoscere il design dell'interfaccia mobile.

miscellaneo

Ci sono molte altre librerie in cui potrei entrare - come Box2D, GreenSock e MinimalComps - ma ho bisogno di fermarmi da qualche parte.

Completerò questa lista con alcuni grandi siti Web per gli sviluppatori di giochi Flash:

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

So solo che ho perso alcuni siti eccellenti fuori da quella lista. Per favore lascia un commento se pensi che qualcosa meriti di essere aggiunto!


Crea giochi

L'ho detto nella guida XNA, e lo dirò di nuovo qui. Quando inizi, non creare qualcosa di simile a un MMO o qualcosa che richieda enormi quantità di opere d'arte e storie come un gioco di ruolo. Inizia con qualcosa di semplice che potresti essere in grado di espandere in seguito.

Ad esempio: un gioco a pulsante singolo come Canabalt potrebbe essere esteso per creare un platform; un clone di Pong potrebbe essere trasformato in un gioco rompicapo con più livelli; un gioco avoider potrebbe diventare un clone di invasori spaziali e quindi uno sparatutto in piena regola.

Non preoccupatevi di apprendere ancora abbastanza tecniche di programmazione avanzate; avrai tempo per familiarizzare con i modelli di progettazione e l'architettura generale del codice più tardi. Concentrati sulla conclusione di alcuni giochi, anche se i tuoi primi saranno solo piccoli.


Un grande ringraziamento a Djordje Radakovic, Matt Barker, Joseph Burchett, Will Blanton e John Cotterell per il loro aiuto nel mettere insieme questa guida!

Se avete suggerimenti per le risorse di apprendimento Flash e AS3 che abbiamo perso, fatecelo sapere nei commenti.