Tooché #6 — Eligiendo framework de desarrollo para un juego móvil

Jordi
5 min readMar 4, 2018

--

Durante estos días, he estado dando vueltas al framework de desarrollo que voy a utilizar para desarrollar Tooché. He aquí las conclusiones.

Entre las opciones que he estado barajando, se encuentran las siguientes:

Desarrollo web puro

Soy un desarrollador de apps y web, no he desarrollado juegos profesionales como tal. Tengo conocimiento de Angular y VueJS y una de las opciones, por qué no, sería abordar el juego como si una app se tratara, trabajando con el DOM, etc.

Uno de mis pet projects del año pasado fue Simonly, un juego tipo Simon totalmente personalizable. Lo tienen mis sobrinos instalados en sus iPads con sus caras y voces :) Lo hice con VueJS y con HTML puro y duro.

https://bit.ly/simonlychiquito

Aprendizajes: Mientras en Chrome funciona bastante bien (chrome en portátil y android), en Safari “renquea” un poco (tanto en IOS como en Mac). Además, las restricciones web hace que existan problemas asociados a la seguridad del audio y al full screen (no se pueden disparar audios o poner la pantalla en full screen si no está relacionada dicha petición con un click o gesture específico del usuario).

Me gustaría en Tooché aprender algo diferente a esta línea, ya que entiendo que ya aprendí las limitaciones de este modo de trabajar gracias a Simonly. Probablemente se pueda optimizar mucho más, pero creo que el esfuerzo que requiere con respecto a la ganancia no compensa. Principalmente porque entiendo que la web no se pensó para esto.

Desarrollo web con HTML5 y canvas.

He estado mirando diferentes frameworks HTML5, y me he encontrado con esto: http://www.html5gamedevs.com/ Un punto de encuentro para desarrolladores HTML5.

En él, encontré conversaciones agrupadas por frameworks, y descubrí Phaser, PixiJS, Babylon, MelonJS, etc. Frameworks en su mayoría open source y gratuitos.

Me centré en PixiJS y Phaser, y aprendí que PixiJS es un motor de renderizado para elementos WebGL, y que Phaser es una capa sobre PixiJS para desarrollo de juegos (añade trabajo con sprites, audios, elementos multiplayer, etc.).

Me gusta mucho la idea de que todo se renderice en el canvas vía WebGL, y he visto que la cantidad de FPS que se gestionan es bastante alta. La fluidez de las diferentes demos me ha sorprendido mucho, no sabía que los navegadores podían hacer eso.

Para desarrollar, se utiliza javascript sobre el browser, y por tanto, todo es testable. No sé hasta qué punto hacer TDD y Unit Testing puede ayudar al desarrollo o no. He encontrado conversaciones al respecto que dicen que no ayuda, ya que, cuando haces juegos, el acoplamiento de la lógica al juego y su interfaz es muy elevada, y que la lógica no es tan complicada, y por tanto, no tiene mucho sentido hacer testing.

Me motivaría trabajar en esa línea y ver si coincido con esas conversaciones o no. Supongo que desarrollar la lógica vía TDD para mi ya es algo.

Unity

Desde hace tiempo, con el auge de la Realidad Virtual, tenía ganas de tocar algo que no fuera web. En aquel momento empezó a llamarme la atención Unity, y desde entonces tengo ganas de tocarlo.

Sin embargo, una barrera de entrada para comenzar en Unity es su coste. Quizás no el inicial, pero sí el posterior (35 $ / mes si quiero un splash screen personalizado).

En su día me instalé el entorno e hice algunas pruebas. Enseguida me di cuenta que desarrollar vía Unity no es como desarrollar una app web. Su curva de aprendizaje me pareció elevada. Creo que me faltan conceptos de desarrollo de juegos.

Estuve mirando vídeos que me demostraron que sí se puede hacer TDD con Unity. Sin embargo, también parecía que hacer un setup del entorno no era sencillo, además de que se usaban herramientas o IDEs a las que no estoy acostumbrado.

Conclusiones

Tras mi incursión en el mundo de los juegos con web “a pelo” con Simonly, descarté esta opción, y he estado dudando principalmente entre Unity y Phaser.

Finalmente, la facilidad de portar un juego HTML5 a diferentes plataformas (portátil, móviles, tablet), teniendo en cuenta que actualmente tengo incertidumbre sobre cómo voy a distribuir el juego (si acaba distribuyéndose), y por tanto, este hecho no me va a “atar” tanto como el uso de Unity, ha hecho que decidiera finalmente trabajar con Phaser.

A eso hay que añadirle que las demos de Phaser me han dejado bastante sorprendido del alto FPS que se consigue aunque sean juegos que funcionan en browsers.

https://phaser.io/examples

Así que en los próximos días os contaré un poco más las pruebas que estoy haciendo con Phaser y hasta dónde me está llevando.

¡Hasta pronto!

Recuerda que si no quieres perderte nada sobre este proyecto, seguiré informando en el Google Groups al que te puedes suscribir vía este formulario: https://goo.gl/forms/aOWBVu8DP71QeYJk2

He actualizado el prototipo para jugar, y ya se puede jugar entre 2 personas, sin necesidad de un intermediario. Y sí, lo he hecho con Phaser. Esto os lo contaré en el próximo post. http://bit.ly/toocheapp

--

--

Jordi
Jordi

Written by Jordi

Learning and growing in teams that develop software and create impact. I work in @lifullconnect

No responses yet