Como hemos mencionado en entradas anteriores, nuestro lenguaje escogido para la programación del lado del cliente va a ser Javascript. Desafortunadamente, no podemos limitarnos a usar Javascript a secas, ya que nuestras aplicaciones para el cliente tienen un alto componente de gráficos y animaciones (al fin y al cabo, la mayoría son juegos). Necesitábamos, pues, encontrar una biblioteca o framework que nos ayudara en las tareas de programar los juegos para el cliente en Javascript.
Hay que reconocer que la búsqueda no fue tan larga como nos habíamos esperado en un principio. El primer framework que encontramos fue gameQuery, una extensión para jQuery que facilita la realización de animaciones y juegos en general. No obstante, descartamos su uso porque se basaba en la manipulación del DOM, en lugar de usar elementos canvas de HTML (dibujando sobre estos).
A nosotros, que teníamos poca experiencia en desarrollo web, nos resultaba más cómodo usar un canvas, un lienzo sobre el que dibujar nuestras aplicaciones, que jugar con el DOM. Además, en nuestras indagaciones en la red en busca de guía y consejo también descubrimos que, si bien la manipulación del DOM presenta una mayor compatibilidad con diferentes navegadores/versiones, el uso de canvas, por lo general, parece dar resultados más eficientes, especialmente cuando se están dibujando muchos elementos en pantalla o a un alto FPS.
Continúa nuestra búsqueda, pues. Hemos encontrado numerosas opciones como GameMaker (una opción potente, pero de pago y, por tanto, desechada) o LimeJS (requiere ¿Python? para la ¿compilación?), pero la final nos decidimos por usar CreateJS.
CreateJS en realidad es una suite compuesta por 4 sub-frameworks:
-
EaselJS: Probablemente el componente más importante de la suite, ya que es el que incluye toda la funcionalidad necesaria para pintar en el canvas, así como crear y manejar animaciones personalizadas.
-
TweenJS: Tween (o Inbetweening) consiste en animar un elemento de forma que una (o varias) de sus propiedades evolucionen de forma más o menos suave en el tiempo. Esto permite realizar animaciones de carácter más general de forma automática (sin usar código específico de control en el bucle de animación), como puede ser desplazar o escalar una imagen en el tiempo.
-
SoundJS: Este componente es el que, como su nombre indica, permite el uso de sonido en las aplicaciones.
-
PreloadJS: Por último, este componente permite realizar la carga de recursos (imágenes o sonidos) de forma automatizada y proporciona callbacks para su coordinación.
¿Por qué nos decidimos por usar CreateJS? Después de examinar la API y demos que había en la web no podíamos quedar más convencidos: no solo los resultados vistos en las demos cumplían con nuestras expectativas, sino que además el estilo de uso de las funciones para dibujado y animación era bastante similar al que estábamos acostumbrados a usar en proyectos y prácticas anteriores.
Para más información sobre diferentes bibliotecas/frameworks gráficos en el lado del cliente, se puede consultar el siguiente enlace: