Comparamos Unity y Cocos2D para desarrollo de juegos 2D

El equipo de Casual Arena lleva desde 2008 en el desarrollo de juegos Flash para navegador. Desde hace un año se han especializado en el desarrollo de juegos multiplataforma para móvil y tablet, estudiando diferentes tecnologías y especializándose en desarrollo de juegos para Unity 3D y Cocos 2D. Les hemos pedido que nos escriban una comparativa entre estos 2 entornos, explicando sus diferencias y éste es el resultado.

Unity 3d vs Cocos 2D desarrollo de juegos

DESARROLLO DE JUEGOS 2D MULTIPLATAFORMA

La mayoría de los desarrolladores de juegos para móviles y tablets quieren hacer sus juegos multiplataforma, o por lo menos disponibles para iOs y Android. Por supuesto, siempre es posible hacer 2 o más desarrollos paralelos usando código nativo (Objective-C para iOS, Java para Android…), y existen juegos de estilo, pero esta opción no es la más recomendable. Lo más eficiente es usar un entorno de desarrollo que te permita compilar para varias plataformas a partir de un mismo desarrollo. Y aquí llega la primera gran pregunta: ¿Qué tecnología uso?

Existen diversos frameworks o tecnologías disponibles para el usuario: Unity3D, Cocos2D, Marmalade o incluso Adobe Flash, entre otras. Adobe Flash prácticamente solo se usa cuando tu aplicación ya está desarrollada en Flash para navegador y quieres hacer una migración rápida para móvil. Si tu aplicación es muy ligera (un juego de mesa, un bingo…) es posible usar esta tecnología, pero si tu aplicación requiere más carga de procesamiento (juegos de billar, juegos con física o con animaciones pesadas, etc), Flash deja de ser una opción viable. Cocos2D es un framework muy completo, de código abierto y totalmente gratuito. Por este motivo es la tecnología más usada actualmente, superando a Unity o Marmalade, que no son completamente grauitos. Unity3D ha sido y sigue siendo la opción más utilizada para desarrollar juegos 3D. Con las nuevas versiones de Unity, que incluyen funcionalidades específicas para el desarrollo de juegos 2D, se ha posicionado también como una opción muy sólida para este tipo de juegos, haciendo que Cocos y Unity sean las dos opciones más escogidas actualmente para el desarrollo de juegos 2D. Desde nuestra experiencia recomendamos escoger una de estas 2 tecnología para el desarrollo de juegos 2D. Pero queda todavía la gran pregunta:

¿Cuál es la mejor tecnología para hacer juegos 2D: Unity 3D o Cocos 2D?

En Internet se pueden encontrar muchas comparativas entre estas 2 tecnologías. Cuando comenzamos los desarrollos de nuestros juegos las leímos todas y nos basamos en ellas para tomar nuestra decisión. El problema de estas comparativas es que eran casi todas muy subjetivas. Aquellos desarrolladores que se habían especializado en Cocos defendían Cocos. Los que lo habían hecho en Unity, defendían Unity. Hay realmente muy pocas comparativas de desarrolladores expertos en ambas plataformas. Nosotros hemos estudiado y desarrollado para los 2 entornos y creemos tener una opinión objetiva: la mejor plataforma es claramente Unity. Realmente la respuesta sería: “si puedes pagarlo, Unity, si no, Cocos”. Unity3D es una tecnología mucho más potente que Cocos2D, mientras que Cocos2D es gratuita y de código abierto. Veamos las diferencias entre ambos. En todo momento cuando hablemos de Cocos2D (o simplement Cocos), nos referimos a Cocos2D-x, que es la extensión multiplataforma de Cocos2D (inicialmente orientada a iPhone).

VENTAJAS DE COCOS2D FRENTE A UNITY3D

Cocos2D es gratuito, de código libre y el más usado hasta la fecha. Unity, por el contrario, es caro. Dispone de una licencia gratuita, pero insuficiente para desarrollos profesionales. Su licencia oscila entre los 1500 $ y más de 4500 $ por persona (más impuestos), lo cual es una barrera importante para nuevos desarrolladores. Cocos2D usa C++ como lenguaje de programación y librerías ligeras, lo que lo hace algo más ligero para el procesador que Unity. Puedes ver el código completo de Cocos2D, editarlo o adaptarlo a tus necesidades. Si eres experto en C++ y no quieres pagar las caras licencias de Unity, Cocos2D es la mejor opción. Tiene otras características muy positivas, pero no son ventajas, pues las comparte con Unity. Dispone de buenos motores de física, enorme cantidad de ejemplos de todas y cada una de las funcionalidades de Cocos2D, una amplia comunidad de desarrolladores que lo apoyan y mejoran cada día, etc. Pero todo esto es compartido por Unity.

VENTAJAS DE UNITY3D FRENTE A COCOS2D

Todo lo demás. Por supuesto hablamos siempre de 2D, pues Cocos simplemente no admite 3D.

Entorno de diseño

Cocos2D no tiene un entorno de diseño integrado. El diseño de tus pantallas o interfaces debe hacerse con programación, cargando las imágenes y posicionándolas con C++. Puedes, sin embargo, usar editores gráficas externos como Cocos Studio (también gratuito), que te ayudan a posicionar elementos en pantalla y configurar ciertos objetos. Pero este editor es mucho menos potente que el de Unity. El editor de Unity está completamente integrado. Cocos Studio, por el contrario, no lo está, y su funcionamiento se basa en generar un fichero xml y una serie de imágenes que Cocos importará con sus librerías. Tiene algunos bugs y no funciona siempre en todos los ordenadores. El editor gráfico de Unity permite diseñar y maquetar escenas con suma facilidad, pudiendo insertar objetos, scritps, efectos de luz, efectos físicos, etc. con solo arrastrar componentes y modificar parámetros. Reduce el tiempo de desarrollo enormemente comparado con una maquetación con Cocos2D o Cocos Studio.

Lenguaje de programación

Cocos2D usa C++, mientras que Unity3D permite usar C# o Javascript. Tanto C# como Javascript son lenguajes mucho más potentes que C++, que permiten programar acciones y algoritmos con mucho menos esfuerzo que C++. Además, para los que no son expertos en C++, su aprendizaje resulta ser tedioso y difícil, teniéndote que preocupar por problemas como la gestión de punteros o las fugas de memoria. Todos estos asuntos desaparecen con Unity, teniéndote que centrar únicamente en funcionalidades de tu juego, lo que supone, nuevamente, un ahorro de tiempo enorme. Además, los editores de código de Unity, bien sea MonoDevelop o VisualStudio, son mucho más estables, sencillos y completos que los de Cocos (XCode mayormente). En resumen, se puede decir que C#/Javascript (Unity) son lenguajes más fáciles que C++ (Cocos) que te permiten ahorrar tiempo haciendo tu trabajo más eficiente.

Multiplataforma

Ambas tecnologías son multiplataforma, pero Unity lo es más. Cocos2D permite desarrollar para diversas tecnologías móviles, incluyendo iOS y Android. Unity añade el resto: consola, escritorio y navegador. Si deseas que tu desarrollo sea compatible con navegador/Facebook, Cocos2D es insuficiente. Usar Cocos supondría tener que hacer un segundo desarrollo para navegador, por ejemplo en Adobe Flash, como es el caso de la mayoría de los juegos disponibles para móvil y navegador del mercado. Con Unity esto no es necesario, permitiendo exportar para navegador de forma sencilla. Unity permite exportar para casi todas las tecnologías de juegos del mercado: móviles y tablets (iOs, Android, Windows Phone y BlackBerry), navegador (con Unity Web Player y pronto con HTML 5), consola (Xbox, PlayStation y Wii) y escritorio (PC, Mac y Linux). Además, Unity permite hacer adaptaciones específicas para distintos dispositivos de forma más sencilla que Cocos2D (por ejemplo, para adaptar un juego a Android y iOS).

Documentación y tiempo de aprendizaje

La documentación de Unity es abundante. Sus tutoriales en vídeo o texto son claros y están (algunos) traducidos al español. El soporte es relativamente rápido y conciso. La documentación de Cocos, sin embargo, es escasa y de mala calidad. Solo se encuentran en inglés y en ocasiones solo en chino. El soporte es nulo, su foro de dudas está lleno de preguntas sin responder y obtener una respuesta es muy difícil. El tiempo de aprendizaje de Unity es mucho más rápido que el de Cocos: su editor gráfico, C#/Javascript y la abundate documentación y soporte hacen que sea una tecnología muy agradable de aprender. Todo lo contrario ocurre con Cocos2D, salvo que seas experto en C++ y XCode y quieras estudiar las librerías de Cocos2D a fondo.

Comunidad y extras

Unity3D ya es un entorno de desarrollo muy potente. Pero esta potencia se ve potenciada mucho más con los aportes de terceros a través de su Asset Store. Cientos de desarrolladores venden sus plugins, recursos y mejoras a través de esta tienda. Algunos de estos plugins son tan potentes que son de obligada compra. Modelos 3D, texturas 2D, animaciones, aplicaciones, extensiones del editor, scripts, materiales, son solo algunos de los extras que podemos comprar o descargar gratis en la tienda oficial de Unity. Entre ellas destaca NGUI, una extensión para el editor gráfico, que supone una ayuda para desarrollos 2D enorme y reduce aún más los tiempos de desarrollo. NGUI es a Unity (casi) como jQuery puede serlo a Javascript. Cocos carece de estos extras.

CONCLUSIÓN

Unity es caro, pero merece la pena. El tiempo de desarrollo se verá reducido en una proporción mucho mayor que el coste de sus licencias. Muchas de sus prestaciones no las comparte con Cocos2D y permite compilar para más dispositivos que Cocos2D. Unity3D es mejor que Cocos2D.

rp_desarrolladores_apps_webs-1024x253.png

¡Comparte si te ha gustado!