Mostrando entradas con la etiqueta unity3d. Mostrar todas las entradas
Mostrando entradas con la etiqueta unity3d. Mostrar todas las entradas

Desarrollo en iOS con Cocos2D+LevelHelper+SpriteHelper

4 comentarios

Ahora que estamos a punto de sacar al mercado nuestro producto Rita la lagartija, merece la pena echar la vista atrás y repasar lo que ha sido el proceso de desarrollo de esta historia interactiva para niños (aká, "cuento infantil").


Y es que cuando uno se embarca en la construcción de un proyecto de estas características, lo primero que le viene a la mente es: "¿Qué voy utilizar que me facilite la vida?". Comienza pues el proceso, bien llamado "googlear", en el que básicamente pasan por delante de tus ojos decenas de webs, blogs, referencias, preguntas, respuestas, etc etc etc. Idealmente, la solución a la pregunta pasa por el siguiente timeline:


  1. Anotar referencias de herramientas y frameworks
  2. Descargar dichas referencias y frameworks
  3. Evaluarlas
  4. Decidir con quién te casas...


Puesto que nunca se tiene tiempo infinito, al final has de hacer una apuesta y arriesgarte con algo sin estar completamente seguro (a no ser que ya tengas experiencia en el uso de varias de ellas). Para ello uno se hace básicamente tres preguntas: ¿Para qué mercado lo voy a publicar (AppStore, GooglePlay, etc)? ¿Para qué terminales lo quiero desarrollar (Smartphone, Tablet, etc)? ¿Qué tipo de tecnología necesito?


En nuestro caso las respuestas son: 1. iOS, 2. iPad, 3. OpenGL. El punto 1 y 2 lo dominamos sin problemas, pero el punto 3 es donde estamos más flojos. Basado en estas premisas, nuestra decisión ha sido la de utilizar Cocos2D como framework de desarrollo de nuestro cuento. Sin duda, una gran experiencia teniendo en cuenta nuestras carencias y el resultado.


Cocos2D es un framework de desarrollo basado en OpenGL mediante el cual se pueden implementar la mayoría de juegos y aplicaciones 2D sin ningún tipo de problemas. Incorpora soporte para el motor de físicas Box2D que es perfecto si lo necesitas. La curva de aprendizaje es baja y te permite implementar bastantes de las interactividades que este tipo de proyectos necesitan, además de ser fácilmente extensible, ya sea en funcionalidad o complejidad gráfica (OpenGL).


Pero claro, Cocos2D no deja de ser un framework de desarrollo, pero una vez revisado el material gráfico para el proyecto, te das cuenta que necesitas alguna herramienta para construir las diferentes escenas (en nuestro caso, del cuento interactivo). Con la experiencia de LevelSVG y CocosBuilder, hemos decidido utilizar LevelHelper y SpriteHelper.


Estas dos herramientas te permiten definir visualmente el aspecto que van a tener tus escenas. Es como reconstruir el archivo PSD de Photoshop original pero orientado a Cocos2D. Digo el archivo PSD de Photoshop porque normalmente los diseñadores e ilustradores utilizan esta herramienta para construir y transmitir su material.


Ambas herramientas son de pago, aunque su precio es pequeño en comparación con lo que aportan. El autor da un soporte muy valioso, respondiendo al e-mail casi al momento en caso de duda. LevelHelper te permite definir las escenas y las características de los elementos que forman parte ellas (físicos o no), además de incorporar características comunes en este tipo de juegos/aplicaciones (animaciones y parallaxes). Aunque tiene algunas carencias, como el soporte para UI's, la herramienta evoluciona muy rápidamente en el tiempo. SpriteHelper te permite generar los atlas de imágenes (Sprite Sheets) tan valiosos para un buen rendimiento de tu juego/aplicación (es una herramienta similar a TexturePacker o Zwoptex, menos potente, pero imprescindible para usar LevelHelper).


Para acabar, que nadie se piense que mediante el uso de Cocos2D,LevelHelper y SpriteHelper las cosas se mueven o interactúan sólas. ¡La lógica del juego/aplicación la construyes tú!

M.

"Arrejunta" y vencerás

0 comentarios
Aquí estamos de vuelta, por segunda vez. Y es que escribir en el blog es bastante más complicado de lo que nos parecía en principio. No sólo por pensar temas de interés y saber darles forma, sino más bien por el tiempo. Espero que este segundo retorno del blog sea el definitivo.

Durante todos estos meses no hemos parado de hacer cosas, principalmente apps para clientes. Este ritmo de desarrollo ha provocado que dejemos de lado el desarrollo de productos propios, que siempre había sido nuestro interés principal cuando decidimos montar divertap. De hecho sigue siendo nuestro principal objetivo. Aún así, sí que hemos hecho el esfuerzo de pensar cuál debería ser nuestra estrategia de cara al desarrollo de juegos para smartphones: no buscar un hit en iOS sino abarcar más mercado para hacer pequeños productos interesantes.

Este enfoque es el que he llamado "arrejuntar", es decir, conseguir tener mucho más mercado objetivo (iOS y Android principalmente) en torno a los productos que publiquemos. Sabemos que iOS tiene un mercado muy grande, pero también una competencia feroz. Por eso apostamos por conseguir llegar a muchos más usuarios potenciales que crear un producto exclusivo de una sola plataforma. Esto no quiere decir que supongamos que por que haya mucha más usuarios posibles será más sencillo conseguir tener éxito, sino que definiendo bien una línea de productos concretos (por ejemplo apps y juegos educativos para niños), es más viable conseguir una pequeña comunidad de usuarios/clientes de nuestros productos si apostamos por varias plataformas.

Hace tiempo hicimos un primer intento de desarrollar los productos directamente en cada plataforma nativa (Objective-c y Java), resultó un fracaso. No conseguimos avanzar en la parte de Android y nosotros tampoco conseguimos tener el tiempo para aprender a desarrollar en esa plataforma. Pero es que además esa línea de desarrollo, cada plataforma por separado, es excesivamente costosa. No se las grandes compañías si pueden abordar el desarrollo de productos con equipos diferenciados, pero divertap somos dos y teníamos que asumir otra línea de desarrollo más factible.


Por "desgracia" esa apuesta nos lleva irremediablemente al desarrollo cross platform. Y digo por desgracia porque ese mundo es otra galaxia más. Si el desarrollo de apps para iOS fue un mundo nuevo, el del desarrollo cross platform es una galaxia. Lua, C++, C#, Javascript, HTML5 y un largo elenco de lenguajes y tecnologías nos venían a la pantalla con hacer una pequeña investigación. Si el conjunto de lenguajes era grande, el conjunto de productos/frameworks/skds que hay para desarrollo cross es casi infinito (http://www.mobilegameengines.com/).

Hemos estado un poco perdidos mirando y evaluando herramientas de desarrollo de juegos 2D. Muchas de ellas muy interesantes, cada una con sus pros y contras. Concretamente nosotros teníamos en mente estas características básicas que debía tener:

  1. Poder extender la sdk básica de forma relativamente sencilla
  2. Poder usar APIs nativas donde fuera necesario
  3. Poder conectarse a servidores de juegos por turnos
  4. Herramientas que faciliten el desarrollo
  5. Soporte a diferentes plataformas y resoluciones de pantalla de una manera 
  6. Buen soporte de físicas (a poder ser con motores de físicas conocidos como box2d o chipmunk)
  7. Completo catálogo de operaciones 2D
  8. Una comunidad de desarrolladores activa y con documentación abundante

Lo malo de esas 8 características es que casi todos los productos dicen que lo tienen (cómo no :) Por eso llegar a decidir qué herramienta usar es un proceso costoso: conocer el producto (formarse) y desarrollar una prueba de concepto para probar sus cualidades. En realidad ninguna cumple al 100% con esas expectativas o por lo menos no de forma sencilla y directa.


En nuestro caso no hemos hecho un estudio exhaustivo, por un lado nos hemos "casado" con una herramienta que nos parece muy interesante: LevelHelper, que te permite definir escenas, animaciones, físicas para juegos y cuentos animados en 2D. Además genera código para cocos2d-x y CoronaSDK. Y por otro lado nos hemos dejado aconsejar por Edenic Games para usar Unity3D.


Otra alternativa aún por explorar es una herramienta cross platform que está a punto de ver la luz, de forma pública. Es Strawberry, un producto de desarrollo cross que mezcla C++ y HTML5 que ha sido construido por no2. Lo han usado en todos sus productos y parece realmente interesante, le tendremos que dar una oportunidad.


No tengo como objetivo aquí explicar las diferencias entre cada herramienta ni siquiera explicar sus virtudes o defectos.  Por ahora sólo las menciono, pero seguro que iremos escribiendo sobre todos esos productos, porque los próximos meses nos acompañarán en nuestro camino.