Encontronazos con ActionScript 3: Cómo hacer juegos con Flash/Flex/ActionScript y FlashDevelop gratis

Este artículo es la parte 2 de 6 de la serie Encontronazos con ActionScript 3

Free Beer

En este artículo explicaremos cómo hacer juegos con Flash/Flex/ActionScript y FlashDevelop en Windows sin costo monetario y completamente legal. La proliferación de herramientas que producen películas SWF ha permitido que se puedan utilizar sin mayor costo que el esfuerzo de instalar y levantar el ambiente de desarrollo. Foto por AGoK.

En la primera parte explicaremos cómo hemos llegado hasta acá, en la segunda parte explicaremos qué software utilizaremos para montar un ambiente gratuito de desarrollo en ActionScript, y en la tercera parte explicaremos paso a paso cómo montarlo.

¿Cómo es eso de desarrollar SWFs gratis?

La herramienta Flash ha pasado a lo largo de estos años de ser una alternativa para hacer animaciones en páginas web a un importante movimiento dentro de Internet para hacer aplicaciones tan o más atractivas que las aplicaciones de escritorio y con una funcionalidad similar o superior.

Macromedia, ahora parte de Adobe, supo desde hace ya varias versiones de Flash que debía orientar tanto la herramienta como su lenguaje de programación, ActionScript, hacia la creación de estas aplicaciones, lo que implicaba la mejora del flujo de trabajo para los programadores de oficio. La culminación de este esfuerzo son dos productos: ActionScript 3, y Flex.

ActionScript 3 (AS3) es más que una actualización de la versión anterior. Programar AS3 implica pensar las cosas de manera un tanto distinta de AS2, de manera mucho más explícita y con conceptos más simples de manejar. Por otra parte, Flex ha traído una nueva forma de producir películas en formato SWF (el formato al que exporta Flash), al tener el programador un mayor protagonismo para hacer aplicaciones.

¿Qué necesitamos para hacer un ambiente gratuito de desarrollo en Actionscript?

Para hacer este ambiente necesitamos específicamente dos programas: el SDK de Flex y FlashDevelop. Ambos se consiguen de manera gratuita.

Flex es un programa que, como Flash, produce archivos SWF, pero en vez de tener una interfaz gráfica, se tiene una librería de componentes y un lenguaje de programación basado en XML que permite crear aplicaciones de manera muy rápida y efectiva.

Flex específicamente es un compilador de ActionScript 3 cuyo producto es un SWF. Flex también trae una librería muy poderosa de componentes que permiten hacer muy rápidamente aplicaciones para Internet en Flash y con el atractivo de las aplicaciones hechas en Flash, además de otro compilador que convierte un formato de archivo XML llamado MXML en ActionScript (y de ahí a SWF). Estos dos compiladores más la librería conforman el SDK de Flex, y están disponibles gratuitamente en la página correspondiente de Adobe: http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3

Ahora, lo importante es la parte del compilador y ActionScript 3: con Flex es posible crear proyectos de cero (sin necesidad de la librería de componentes), lo cual permite hacer juegos muy pequeños sin necesidad de Flash (aunque podría necesitarse en caso de que se quieran usar dibujos vectoriales).

Lo único que faltaría es un IDE para programar. Flex Builder es la alternativa comercial y sin duda una de las mejores, pero el programa es pag. Al estar basado en Eclipse es realmente lo mejor para programar. Una tremenda alternativa que no se queda atrás, gratuita, y la que usaremos en este post, es FlashDevelop (http://www.flashdevelop.org/community/).

¿Cómo hacemos, paso a paso, para montar este ambiente?

  1. Descargar el SDK de Flex en la página Flex 3 SDK Downloads. Lo más recomendable es ir a la parte de Stable Builds, y descargar el primer enlace debajo de la columna Adobe Flex SDK. Si estás preocupado por desarrollar únicamente con herramientas libres, puedes descargar el correspondiente a Open Source Flex SDK. El primer enlace describe con detalle la diferencia entre ambos paquetes, siendo que sólo trae código licenciado bajo la Licencia Pública de Mozilla. Si no sabes de que estoy hablando ahora, no te preocupes, simplemente descarga el primero y estarás bien.
  2. Descargar FlashDevelop. Entra a la sección de Releases, y descarga la última versión. Las versiones Final son las más recomendables, pero en este post trabajaré con la versión FlashDevelop 3.0.0 Beta7.
  3. Descomprimir el SDK de Flex con tu descompresor favorito. Para este artículo crearemos un directorio en C:\flex, y allí adentro descomprimiremos el contenido de lo que descargamos en el paso 1.
  4. Instalar FlashDevelop. Es un instalador común y corriente de Windows. Creará unos atajos de inicio.
  5. Ejecutar FlashDevelop. Al llegar a la pantalla inicial iremos a Tools -> Program Settings…. En la nueva ventana Settings nos vamos a la sección AS3Context y cambiamos la ubicación de la instalación del SDK de Flex en Flex SDK Location. Colocamos el mismo directorio donde descomprimimos el archivo del paso 3, en este caso C:\flex.

    Configuración de Flash Develop
    Configuración de Flash Develop
  6. Estamos listos. Podemos crear un proyecto nuevo en Project -> New Project. En la nueva ventana New Project escogemos un Default Project en la sección ActionScript 3, un directorio, y hacemos click en OK.

    Vista de Proyecto de FlashDevelop
    Vista de Proyecto de FlashDevelop
  7. En Project -> Test Movie podemos probar la película que genera este proyecto por defecto. Veremos una pantalla en blanco solamente, pero eso significa que a partir de ahora podremos desarrollar en ActionScript sin ningún problema.

En siguientes entregas veremos cómo se desarrollan aplicaciones con este método. La literatura recomenda por ahora es la relacionada con el Document Class de Flash y cómo trabajar con él.

Pensando en la situación política

Venezuelan Politics

Casi siempre que ocurre un suceso político en mi país (Venezuela), tiendo a imaginar cómo se representaría todo eso en un videojuego. Sí, un juego. Como un cartucho que inserte en su consola vieja favorita, la prenda y se ponga a jugar. Cuando se fastidie, lo quita y sigue con su vida.

No se centre en el hecho de que quiera representarlas como situaciones que se pueden olvidar y pasar de largo fácilmente. Ese no es el punto. El punto es: cómo representar aisladamente un hecho noticioso, cómo empaco una gran cantidad de ‘historia previa’ para que este juego tenga sentido.

Tomemos, por ejemplo, la noticia de hace un año de cuando el alcalde Barreto se peleó con un profesor en el Estadio Universitario. Mi primera aproximación, y la más directa, era algo tipo juego de pelea, donde uno se enfrentaba al otro. La idea era que el alcalde por fin le tumbara la gorra al profesor, y realmente no recuerdo cómo hacía para que el profesor ganara el juego.

Un juego de pelea
Un juego de pelea

Después de eso comencé a pensar en el final para cada situación. La primera conclusión es que el juego no suma cero, es decir, la derrota de una parte no es el triunfo del otro. Me explico: imaginé que el final en el que ‘gana el alcalde’ era que la situación iba a escalar fuera de control (después de todo había un montón de gente en el estadio). De igual manera, el final donde ‘gana el profesor’ no iba a solucionar la confrontación, quizás postergarla.

No es el único juego en el que he pensado. De hecho, esta suerte de post a lo ‘flujo de conciencia’ (escribiendo lo primero que se me va ocurriendo) surge del hecho de que imaginé un juego de estrategia, y a medida que lo iba escribiendo sentía que las propias reglas del juego eran incendiarias: invariablemente iban a molestar a todas las partes involucradas. Primero, porque estaba simplificando su situación (y simplificar es necesario para que las reglas de juego sean claras), y segundo, porque era muy probable que esa representación de la parte involucrada no iba a ser del todo correcta.

Lo que me hace volver al punto: ¿cómo simplifico un tema tan complicado como nuestra política venezolana?, ¿cómo aíslo estos hechos para hacer algo que representarlos con cierta precisión?

* Foto por quapan.

Concurso de TIGSource: Bootleg Demakes

La gente de los foros de The Independent Gaming Source (sí, una de mis páginas favoritas) se está luciendo con los temas de los concursos de juegos que hacen mensualmente. El tema de este mes es «Bootleg Demakes«, en inglés lo definen escuetamente: «Demakes: remakes of games on older generation hardware. Bootleg: not infringing on anyone’s intellectual property.»

Básicamente, rehacer un juego con «menor tecnología», sin utilizar recursos de algún otro juego (puro contenido original). Ah, quién tuviera tiempo 😛 …

TIGSource Bootleg Demakes Contest Poster
TIGSource Bootleg Demakes Contest Poster

Encontronazos con ActionScript 3: El sistema de dibujo y los Display Objects

Este artículo es la parte 2 de 6 de la serie Encontronazos con ActionScript 3

Oops! - Part II by Kyle May

Hace ya bastante tiempo que salió ActionScript 3 (AS3) y los programas que lo utilizan, como Flash CS3 y Flex 3. Hasta hace poco no había tenido el chance de revisarlos un poco, y experimentar con una técnica que voy a utilizar dentro de poco. Para aquellos que conocen ActionScript 2 (AS2), su versión 3 es un campo de minas totalmente distinto 🙂 .

AS 3 cambia el concepto de dibujar cosas en la pantalla y colocar clips. El sistema de AS3 es más explícito, al crear el concepto de Display List. El Display List es una lista que se recorre cada vez que se dibuja un frame (o fotograma) en la pantalla. El recorrido de esta lista asemeja el recorrido de un árbol, en el que en el tope se encuentra la película principal, también conocido como el Stage. La lista la conforman objetos que se pueden dibujar. Algunos de ellos contienen sus propias listas de dibujo que son recorridas cuando se dibuja un frame.

Por ser una estructura muy similar a la de un árbol, los objetos se agregan y se eliminan en lo que llamaremos contenedores. Entonces, el proceso para crear y agregar MovieClips se simplifica:

  1. Se crea una película con una llamada a new MovieClip(); y se asignan las propiedades que tenga.
  2. Se agrega esta película al contenedor, como otro MovieClip o al Stage si no hay nada más en la pantalla. Esto se hace con la función addChild() en el contenedor, o addChildAt() si se quiere hacer en un lugar específico.

¿Cuál es la ventaja de esta aproximación a los gráficos con respecto a AS2? Que es más fácil de comprender. El concepto de «profundidad» (depth) que había en AS2 no se utiliza aquí: el orden en el que se dibujan los objetos está determinado por el orden en el que están insertados en su respectivo contenedor.

AS 3 tiene un enfoque mucho más estricto que su versión anterior con respecto a la orientación de objetos. La programación en AS 3 es 100% orientada a objetos, cosa que gustará mucho a aquellos que ya programan en lenguajes como Java. Ellos van a encontrar que ActionScript 3 va a tener una forma muy similar de programación. En futuros artículos iremos complementando esta información.

Para saber más acerca de los Display Lists, consultar los Livedocs de Adobe concernientes a los Core Display Classes.

* Foto por Kyle May

«Tengo una idea para un juego y quiero protegerla»

Últimamente ha llegado gente a este sitio buscando cómo proteger las ideas que tengan para sus juegos. Puedo suponer que el tren de pensamiento es: «He pasado mucho tiempo desarrollando esta idea y poniéndola en el papel, y no quiero nadie me la robe». Y puede ser que, efectivamente, tengas toda una cuestión puesta en papel y quieras asegurarte que nadie se copie tu idea.

La verdad es la siguiente: a nadie le importa tu idea. Lo realmente importante es la implementación. Me explico en términos un poco más diplomáticos: lo realmente importante en un videojuego es tener una implementación de la idea que hayas tenido. ¿Por qué? Porque siempre en el trayecto de la idea a la implementación habrá un trecho largo, en el que verás que algunas cosas no funcionan, o las cambiarás, o agregarás cosas nuevas. El hecho es que la dinámica de las reglas de juego sólo se puede ver cuando una sesión de juego está en marcha. Y ahí está la diversión para el jugador, no está en el papel con los bocetos del juego.

En conclusión, si tienes una idea para un juego, y quieres protegerla, implementa tu idea. Llévala a un videojuego o a un juego de mesa. Un producto tangible como ello puede ser protegido por el copyright. Un simple conjunto de ideas en papel no puede serlo, más allá de el valor artístico de las páginas donde las hayas plasmado 😛 .

* Foto por C.A.P.

Plagio Sonoro: el curioso caso de Limbo of the Lost

Limbo of the Lost parecería un juego típico de aventura en el que hay que apuntar y clickear para mover un personaje. La cosa es que a un editor de GamePlasma le tocó por casualidad reseñarlo, y al verlo notó que ciertos fondos del juego se parecían un poco bastante a los gráficos de otros juegos…

Imágenes cortesía de GamePlasma. Otras imagenes tomadas del foro GamesRadar. A la izquierda screenshots de Limbo of the Lost, y a la derecha la de los juegos originales. Las cinco primeras de Oblivion, y la última de Thief.

A primera vista el juego utiliza screenshots y algunos otros elementos de The Elder Scroll IV: Oblivion, y Thief: Deadly Shadows. De acuerdo a la entrada de Wikipedia correspondiente a la fecha, la lista incluye Morrowind, Unreal Tournament 2004, Unreal Tournament 2003, Diablo II, Thief: The Dark Project, Return to Castle Wolfenstein, Painkiller, Vampire: The Masquerade – Bloodlines, The Lord of the Rings: The Battle for Middle-earth, Hexen y World of Warcraft. El motor del juego de aventura aparentemente es el poco conocido Wintermute, que permite colocar personajes 3D sobre fondos 2D.

Y quizás esto no pasaría de ser un simple caso de plagio más: en las comunidades de creadores de juegos amateurs siempre existen personas que crean juegos con recursos tomados de juegos AAA (y creen que se la están comiendo). Publicar juegos con esta clase de recursos está mal visto por la comunidad, pues el resultado es burdo, se ve feo, es como hacer una película con retazos de blockbusters. En fin, de quedar este juego dentro de estos circuitos no habría mucho problema: el juego pasaría al olvido.

El problema con Limbo of the Lost es que es un juego hecho en el Reino Unido, que ya tenía un acuerdo de distribución con Tri Synergy para este país, y para Estados Unidos, inclusive con cajas ya vendiéndose en las tiendas. Digamos que a estas alturas del partido es un desastre de marca mayor, más para la distribuidora que para los 3 empleados de Majestic Studios, la «creadora» de este juego, que ya tienen una raya gigantesca con este asunto.

Lamentablemente esto puede repercutir negativamente para muchos actores de esta industria, y un caso como este puede dificultar los acuerdos de otros pequeños estudios con distribuidoras, que probablemente se pongan más exigentes a la hora de ver el progreso y el contenido del juego. Ya estoy pensando que esas cajas compradas se venderán en eBay a buen precio: el recuerdo de una estafa.

The Register reporta sobre este asunto también. Slashdot resume muy bien el problema.