Flambe: Motor de Juegos 2d multiplataforma

En ocasiones me encuentro con algunos proyectos en donde no es posible trabajar con las herramientas con las que uno tiene más afinidad....

En ocasiones me encuentro con algunos proyectos en donde no es posible trabajar con las herramientas con las que uno tiene más afinidad. El cliente presenta una lista de requerimientos específicos para el proyecto y a uno le toca adaptarse e esta situación. Este caso se me presento hace unas semanas atrás y la verdad es que las impresiones finales solo las puedo describir como: satisfacción, asombro, frustración, ira, alivio y decepción. Este es el resultado de un proyecto en donde se me solicito trabajar con un motor de juegos llamado FLambe. Es un motor basado en Haxe que permite producir en multiplataforma.

La verdad es que no entrare en detalles de código aquí. Pero si deseo que esto sirva para aquellos que estén en la misma situación ya sea por gusto personal o por necesidad y sepan que esperar.

Comentare algunos puntos que me parecieron los mas sobresalientes de la experiencia como: instalación, exclusividades del motor, animar con el motor, responsividad para móviles y problemas del motor.

Instalación: no es nada del otro mundo pero no es el tipo al que uno esta acostumbrado en el ambiente de Flash/As3. La verdad es que es mas parecido al ambiente de aplicaciones en JS. La instalación consta de requisitos como tener NodeJS, instalador de haxe y tener Java. luego de eso. Usaremos la consola para instalar FLambe desde la linea de comandos. No es difícil. Pero puede ser algo intimidante para alguien que este acostumbrado a usar instaladores que hacen todo el trabajo por uno.

Exclusividades del motor: Si comparo el motor con AS3 normal, de inmediato notaremos que cuenta con exclusividades, que a veces vienen del mismo Haxe otras veces son del mismo FLambe. Es muy probable que sean muchas mas de las que menciono, pero estas son las que encontré:

Sintaxis de código es propia de el, en algunos casos como los loops, eventos, declaración de tipos, objetos, itinerar entre elementos de un array Haxe/FLambe lo manejan de forma un poco diferente.

Los tweens, FLambe cuenta con su propio formato para tweens, pero al final me ayudo mucho contar con una clase que encontré para poder manejarla de una manera mas familiar ( estilo TweenMax ) Trate de implementar una libreria de Tweens de Haxe junto con FLambe pero no fue posible porque FLambe tiene un tipo especial en las propiedades que uno deseaba animar, no es Float como en la mayoria de los Tweeners sino Animated Float, lo que hacia imposible poderlas usar en conjunto.

Eventos: FLambe permite usar los mismos eventos de Flash, el problema es que si uno desea que el proyecto sea multiplataforma esto no te lo permitirá, hacer esto solo te permitirá exportar un SWF. Para que el proyecto sea multiplataforma era necesario usar los eventos propios de FLambe, el los llama Signals.

En este caso particular no lo utilice mucho, pero me pareció curioso la compilación condicional. Esto permite compilar ciertas partes del código o ignóralas dependiendo del las condiciones que uno le indique, por ejemplo si estamos compilando para flash o HTML, si estamos usando la opción de debug o no.

Animar: Animar en FLambe si bien es un formato familiar, es un verdadero laberinto para configurar. En esencia utiliza animaciones de Flash, exportadas a través de un programa llamado Flump. Pero estas animaciones deben tener un formato muy rígido en la librería y me costo un poco configurarlo. También hay que considerar que no todas las animaciones de Flash son exportables, por ejemplos ni filtros, ni animación por código es reconocido al final Trate de utilizar una librería para animar sprite sheets, pero para variar, FLambe prefiere su propio flujo. Cuenta con opción de insertar código para generar efectos con partículas, pero es necesario usar editores online para tener el código final. FLambe utiliza bastantes programas alternos para su contenido.

Responsividad para móviles: la verdad es que este tema no le compete estrictamente al FLambe. Aquí en realidad hay que ajustar mediante CSS o JS o algún framework responsivo en contenedor de nuestro juego, después de esto nuestro canvas final se puede adaptar al espacio del que dispone.

Problemas del motor: los problemas con FLambe aparecieron desde un inicio y no fue sencillo resolverlos… ¿ Porque ? Principalmente porque no cuenta con una comunidad muy grande y a pesar de que el motor ya tiene bastante tiempo lo sentí algo inmaduro o incompleto. Por ejemplo: uno esta acostumbrado a que la clase timer le podemos dar pausa/resumir/detener/reiniciar, eliminar, en FLambe solo tiene iniciar, detener, eliminar para esto nuevamente me ayudo encontrar una clase que completo las funcionalidades faltantes, pero FLambe no lo tiene de fabrica.

La compilación no era estable siempre.  ¿ Que quiero decir con esto ? que en algunas ocaciones las compilaciones ( a pesar de no haber cambiado nada ) al final resultaban incompletas o cortadas. Lo que encontré para resolver esto era reiniciar el servidor, eliminar algún espacio en el código, cambiar algún parámetro en la configuración y luego regresar al original… esto la verda que si me hacia perder el tiempo.

Tenía que tener cuidado de no incluir código exclusivo de flash, ya que al final si me compilaba para el SWF, pero no para HTML

FLambe cuenta con la opción de activar la el debug, pero me di cuenta que algunos parámetros del archivo de configuración daban problemas si esto estaba o no. La idea es que activar el debug sea solamente ver o no los mensajes en la consola, pero en en caso de FLambe también afectaba algunos parámetros de compilación y provocaba errores.

crédito de imagen: Design vector created by freepik - www.freepik.com

Deje un Comentario

Please Login to comment
Do NOT follow this link or you will be banned from the site!