Cómo aprender Flash y AS3 para el desarrollo de juegos

Hoy en día, Adobe Flash está fuertemente orientado hacia el desarrollo de juegos. Además de los portales de juegos basados ​​en navegador como Kongregate, Newgrounds y Armor Games, los juegos hechos con Flash se pueden encontrar en computadoras de escritorio, dispositivos móviles y tabletas (como Machinarium, Super Hexagon y Wonderputt), como aplicaciones nativas. En este artículo, compartiremos libros, tutoriales y sugerencias para aprender Flash y su lenguaje de programación AS3 de la mejor manera posible..


No es Flash Dead?

Flash ha tenido un momento difícil en los últimos años. A Steve Jobs no le gustó. iPads, iPhones y dispositivos Android más recientes no lo ejecutarán en el navegador. HTML5 ha estado mejorando rápidamente, permitiendo a los navegadores hacer cosas nuevas todos los días que antes solo eran posibles con Flash. Y todos se han topado con un anuncio publicitario molesto hecho en Flash, o se ha bloqueado el complemento Flash y se lleva el navegador completo..

Así que Flash recibe mucha mala prensa entre los desarrolladores web y el público en general, y ciertamente es una opción obsoleta hoy en muchas áreas donde solía ser el rey, como el desarrollo de sitios web multimedia. Pero sigue siendo una excelente plataforma para el desarrollo de juegos..

¿Por qué Flash sigue siendo grande para Gamedev?

Una razón para esto es la tecnología. El lenguaje de programación predeterminado de Flash, AS3, está muy lejos del código ActionScript de años anteriores; es un potente lenguaje de programación orientado a objetos con aceleración de hardware, capacidades de red en línea y soporte para gráficos 3D. Además, aunque la mayoría de los navegadores de dispositivos móviles y tabletas no admiten Flash Player, los juegos Flash se pueden exportar como aplicaciones nativas para iPhone, iPad, Android, Kindle Fire y BlackBerry.

Otra razón es el ecosistema. Los portales web flash pueden haber comenzado como sitios para que los niños alberguen sus juegos crudos de figuras de palo, pero ahora conforman una industria multimillonaria, con muchos juegos técnicamente complejos y éxitos críticos. Y como los juegos Flash pueden ejecutarse en dispositivos móviles y tabletas, pueden venderse en la App Store, Google Play Store, Amazon Appstore, etc..

La otra gran razón, en mi opinión, es la comunidad. Debido a la peculiar evolución de Flash, atrae tanto a los diseñadores como a los programadores, un crisol perfecto para el desarrollo de juegos. Además de formar una gran comunidad para formar parte, los desarrolladores de juegos Flash han escrito muchas bibliotecas, herramientas, libros y tutoriales útiles, por supuesto..

Pero ... HTML5!

Admito que hay una especie de presión de los compañeros en línea contra el uso de Flash para cualquier propósito, y esto puede ser desalentador. En cualquier discusión sobre Flash, independientemente del contexto., alguien intervendrá y te dirá que deberías usar HTML5 en su lugar, es como la ley de Godwin para las tecnologías web.

También vale la pena ver HTML5, vale la pena aprender varias plataformas diferentes, pero no pase por alto los puntos fuertes de Flash. La situación no es tan simple como "HTML5 es el reemplazo de Flash".

Además de todas esas razones comerciales, como dijo Will Blanton en una conversación reciente sobre esto:

Me encanta estar expuesto a las nuevas tecnologías, pero gamedev no es solo tecnología, es un medio de expresión (arte), y es grosero exigir que un artista cambie su conjunto de herramientas para reflejar algún tipo de zeitgeist global percibido.


Instalación de herramientas de desarrollo de Flash

No necesitas una copia de Flash Professional para hacer juegos Flash. Es bastante útil como herramienta para armar GUI y sprites animados, pero no es bueno para escribir código.

En cambio, si está en Windows, le recomiendo que descargue el editor de código gratuito de FlashDevelop, es mi favorito personal. He escrito una guía para principiantes y hay más información en el sitio web oficial..

Desafortunadamente, FlashDevelop está solo en Windows. Si está usando una Mac, pruebe FDT: hay una versión gratuita que debería ser más que suficiente para comenzar. Michael Plank escribió una excelente guía para principiantes del editor, y hay documentación completa (incluida una guía de introducción) en la página de inicio de FDT.

Si posee una colección de Adobe Creative Suite, o está suscrito a Creative Cloud, es posible que ya tenga una copia de Flash Builder, el editor de Flash centrado en el código de Adobe. Echa un vistazo a esta guía para aprender cómo comenzar con ella..

Finalmente, no necesitas un IDE sofisticado para realizar el desarrollo Flash; puedes usar cualquier editor de texto para escribir tu código (John Cotterell me señaló hacia el paquete AS3 TextMate de Simon Gregory, por ejemplo) y el SDK Flex / AIR para compilarlo, aunque no lo recomendaría si eres nuevo en la programación.

No pierda tiempo pensando en qué elegir, siempre puede cambiar de editor más tarde.


Aprendiendo AS3

AS3 (ActionScript 3.0) es el lenguaje de programación de facto para Flash. (Hay idiomas alternativos, como el AS2 más antiguo y el Haxe multiplataforma, pero no los voy a tocar aquí). Si desea crear juegos Flash, deberá aprender a programar. En lugar de enseñar a aprender a codificar y Cómo hacer juegos al mismo tiempo, es más fácil comenzar con la codificación. Sí, esto significa construir cosas que no son juegos, pero esto te ayudará a hacer juegos a largo plazo..

Si ya conoce Java, C # u otro lenguaje OOP, AS3 no será un gran esfuerzo para usted. Deberías, sin embargo, leer sobre:

  • La lista de visualización: vea AS3: La lista de visualización, programación de la lista de visualización en AS3, y AS3 101: la lista de visualización.
  • El sistema de eventos: consulte Introducción al manejo de eventos y AS3 101: Eventos.
  • Recolección de basura: consulte Descripción de la recolección de basura en AS3.

Si eres nuevo en la programación en general, necesitarás una guía más completa. Recomiendo AS3 101, una serie de 18 partes que explica todos los conceptos básicos desde cero..

Dos libros que también sugeriría obtener (y leer de principio a fin) son ActionScript 3.0 esencial y Animación Foundation Actionscript 3.0: ¡Haciendo que las cosas se muevan! No se deje engañar por el título de este último, no se trata de la típica animación dibujada a mano; Se trata de usar código para, bueno, hacer que las cosas se muevan. Eso es extremadamente relevante para el desarrollo del juego.!

Alternativamente, Matt Barker recomienda esta enorme guía gratuita de 600 páginas, de Adobe: Programming ActionScript 3 [pdf].

También necesitarás una guía de referencia. Los Adobe Livedocs son excelentes, y en la mayoría de los casos serán todo lo que necesita. (La búsqueda es un poco torcida, pero si solo busca en Google para [livedoc "término que realmente necesitas-"] aparecerá.)

Y como con cualquier entorno de programación, Stack Overflow y Gamedev Stack Exchange son excelentes sitios de preguntas y respuestas técnicas. La etiqueta AS3 es actionscript-3.


Haciendo tus primeros juegos

Hay muchos libros y tutoriales específicamente sobre el desarrollo de juegos Flash, pero es difícil encontrar uno que use buenas prácticas sin asumir demasiado conocimiento previo..

Creo que lo mejor en esta categoría es el diseño avanzado de juegos con Flash. Deberías poder entenderlo si tienes que enfrentarte a AS3 de las recomendaciones anteriores, incluso si tienes poca o ninguna experiencia real de desarrollo de juegos..

También me gustaría incluir algunos tutoriales en línea gratuitos aquí, para acompañar (o incluso reemplazar) ese libro ... pero en realidad no conozco ninguna descripción completa que se ajuste a la ley. La mayoría de los tutoriales de Flash gamedev parecen suponer que o bien sabes muy poco acerca de AS3, o tienes suficiente experiencia en el desarrollo de juegos para usar una biblioteca o un framework específico.

Por supuesto, hay tutoriales por ahí, simplemente nada definitivo. Eche un vistazo a los archivos de Activetuts + Games, explore el Platformer de todos y, al menos, intente hacer algo simple como Pong o Space Invaders para aprender lo básico..


Más más más

Debes enfrentarte a la plataforma Flash, puedes codificar en AS3 y tienes una base decente en el desarrollo de juegos Flash. En este punto, puede seguir la mayoría de los tutoriales de implementación en este sitio, incluso si están escritos en una plataforma de desarrollo diferente.

¡Pero todavía hay mucho más que puedes aprender sobre el desarrollo de juegos Flash específicamente! He redondeado un conjunto de recursos, sin ningún orden en particular: elija el que más le interese en este momento y aprenda.

Motores de juegos flash

Flixel y FlashPunk son dos bibliotecas de código abierto populares y gratuitas diseñadas para el desarrollo de juegos en 2D.

Ambos están bien apoyados, con una comunidad entusiasta y una gran cantidad de tutoriales, y cada uno se ha utilizado para hacer un montón de juegos.

Para aprender Flixel, eche un vistazo a los enlaces en la página de Ayuda oficial, así como a la excelente colección de Flash Game Dev Tips de Photon Storm..

Para aprender FlashPunk, echa un vistazo a los tutoriales oficiales.
Puede encontrar esta biblioteca más cómoda si ya tiene experiencia con Game Maker, ya que se basó en gran medida en el lenguaje de scripting de Game Maker..

Stage3D

Las API de Stage3D te permiten utilizar la aceleración de hardware de GPU en tus juegos, para una representación 3D súper rápida. Echa un vistazo al libro de Christer Kaitila, Stage3D Game Programming: Beginner's Guide, para obtener una guía detallada de esto..

(También vale la pena mirar en Away3D, un motor 3D avanzado para Flash).

A pesar del nombre, Stage3D también es ideal para juegos en 2D, ya que ofrece velocidades de renderización comunes de 60 fps. Christer también ha escrito una serie de tutoriales en seis partes sobre cómo construir un juego de disparos en 2D con Stage3D; las tres primeras partes son totalmente gratuitas.!

Si quieres llevar esto más lejos, busca en Starling Framework, una biblioteca diseñada específicamente para el desarrollo de juegos en 2D, que te brinda la potencia de la representación de Stage3D sin tener que tocar Stage3D. Thibault Imbert ha escrito una introducción y un gran libro electrónico para el marco, ambos gratuitos.!

Desarrollo móvil y tablet

Como mencioné al principio de este artículo, Flash no lo limita al desarrollo del navegador: puede crear juegos que se ejecuten como aplicaciones nativas de iPhone, Android o BlackBerry, e incluso venderlos en varias tiendas de aplicaciones..

En realidad, lograr que su juego se exporte en formato de aplicación nativa no es particularmente difícil, solo Google [flashdevelop android] o [fdt ios] o cualquier otra combinación de herramientas y plataforma que sea apropiada para que usted obtenga las últimas instrucciones.

Lo más difícil es optimizar su juego para otra plataforma y utilizar funciones de hardware como el acelerómetro y la pantalla táctil. Recomiendo el Desarrollo de Flash para el Libro de cocina de Android y el Libro de cocina de las aplicaciones de iOS de Flash para esto, junto con la lectura regular de nuestro sitio hermano Mobiletuts + para aprender sobre el diseño de la interfaz móvil.

Diverso

Hay muchas más bibliotecas en las que podría entrar, como Box2D, GreenSock y MinimalComps, pero necesito detenerme en algún lugar.

Completaré esta lista con algunos sitios web geniales para desarrolladores de juegos Flash:

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

Solo sé que me he perdido algunos sitios excelentes de esa lista. Por favor, deja un comentario si crees que algo merece ser añadido!


Hacer juegos

Dije esto en la guía XNA, y lo diré nuevamente aquí. Cuando estés empezando, no hagas algo complejo como un MMO, o algo que requiera grandes cantidades de ilustraciones e historias como un juego de rol. Comience con algo simple que podría ampliar más adelante.

Por ejemplo: un juego de un solo botón como Canabalt podría extenderse para crear un juego de plataformas; un clon Pong podría convertirse en un juego de romper ladrillos con múltiples niveles; un juego evitador podría convertirse en un clon de invasores espaciales y luego en un juego de disparos en toda regla.

Tampoco te preocupes por aprender técnicas avanzadas de programación; Tendrá tiempo para familiarizarse con los patrones de diseño y la arquitectura general del código más adelante. Enfócate en terminar algunos juegos, aunque los primeros solo serán pequeños.


Muchas gracias a Djordje Radakovic, Matt Barker, Joseph Burchett, Will Blanton y John Cotterell por su ayuda para preparar esta guía.!

Si tiene alguna sugerencia sobre los recursos de aprendizaje de Flash y AS3 que nos hemos perdido, háganoslo saber en los comentarios..