¿Otro framework multiplataforma?

Si, otro pero este es un Framework para gobernarlos a todos, un Framework para encontrarlos, un Framework para atraerlos a todos … bueno, no realmente pero a diferencia de otros frameworks multiplataforma, que están basados en JavaScript/HTML5, Cocos2D-X utiliza la API gráfica de OpenGL ES mejorando el desempeño de la aplicación en el dispositivo.

El maestro Firtman Maximiliano lo comentaba hace unos meses:

No se puede discutir Assembler > C > Java/.NET > JavaScript/HTML5.  Escoge el apropiado según la situación, siempre se pierde algo.

Es decir, si programas en Assembler directamente obtienes un nivel de rendimiento mayor que en HTML5 (además de un puesto en el Olimpo de los programadores) y Cocos2D-X al utilizar OpenGL ES (escrito en C) permite que las aplicaciones sean más eficientes y tengan mejor desempeño gráfico.

¿Cómo empezar?

Hace unas semanas divagaba la opción de migrar una aplicación del App Store al Google Play (Find the Ball) e inicié la respectiva consulta sobre Cocos2D-X.  Por eso comparto el periplo sobre cómo configurar Cocos2D-X para desarrollar una aplicación Android en un entorno Windows basado en los articulos de Jesús BoschJean-Yves Mengant (la travesía inicial se realizo abordo de un Mac pero en pro del multiplataformismo este artículo es para entornos Windows):

1. Descargar las librerías de cocos2D-X y descomprimir en c:/dev/

2. Descargar e instalar Android SDK en la ruta c:/dev/android/

3. Descargar las librerías de Android NDK en la ruta c:/dev/android/

4. Descargar e instalar “Eclipse Classic” así como el ADT plugin. (Asegurarse de ejecutar siempre Eclipse como administrador)

5. Descargar e instalar Cygwin.  (Durante la instalación habilitar la categoría “Devel” con “Install”) [aquí puede ir a preparar café]

6. Para verificar que todo siga en su sitio ejecutar c:/dev/cocos2d-2.0-x-2.0.3/build-win32.bat  [aquí puede tomarse el café que preparó]

7. Actualizar los valores de las variables CYGBIN, ANDROIDTOOLS, NDKROOT en el archivo c:/dev/cocos2d-2.0-x-2.0.3/create-android-project.bat

set _CYGBIN=c:\cygwin\bin

set _ANDROIDTOOLS=c:\dev\android\android-sdk\tools

set _NDKROOT=c:\dev\android\android-ndk-r8b

8. Ejecutar el archivo c:/dev/cocos2d-2.0-x-2.0.3/create-android-project.bat e ingresar:

“package path” com.mdw.prueba

“project name” prueba

“id” de la última versión del Android SDK que este instalada en el equipo

9. Agregar la siguiente instrucción al inicio del archivo c:/dev/cocos2d-2.0-x-2.0.3/prueba/proj.android/build_native.sh

export NDK_ROOT=”c:\dev\android\android-ndk-r8b”

10. Ejecutar el terminal de Cygwin que debe estar en c:/cygwin/Cygwin.bat

11. Windows pide “permiso” para todo así que desde el terminal de Cygwin escribir:

$ chmod -R 777 /cygdrive/c/dev

12. Desde el terminal Cygwin acceder a la ruta de la app y ejecutar build_native.sh

$ cd /cygdrive/c/dev/cocos2d-2.0-x-2.0.3/prueba/proj.android

$ ./build_native.sh

13. Desde Eclipse: import->Existing Android Code Into Workspace

14. Desde Eclipse: Seleccionar el proyecto “click derecho” -> properties -> Java Build Path Source-> “Link Source”.  Ubicar y agregar la ruta “c:\Dev\cocos2d-2.0-x-2.0.3\cocos2dx\platform\android\java\src

15. Desde Eclipse: Seleccionar el proyecto “click derecho” -> properties -> Java Compiler-> Compiler compliance level: 1.6

16. Desde Eclipse: En caso que el AndroidManifest.xml presente error, cambiar:

android:icon=”@drawable/ic_launcher”

17. Para verificar que todo va en su sitio Desde Eclipse: Run->Run [agrego la configuración del emulador para Android]

Ahora puede programar desde cualquier editor de texto (Bloc de notas), compilar desde el terminal (Cygwin) y ejecutar la app en Eclipse.

Lo más apropiado es que Eclipse permita editar el programa, compilarlo y ejecutarlo.  Por lo tanto debe instalar el complemento para eclipse del lenguaje C/C++ y agregar esta ruta “c:\cygwin\bin” al PATH de Windows.  Una vez hecho esto, prosiga:

18. Convertir el proyecto en C/C++: seleccionar el proyecto File->New->Other  “C/C++ -> Convert to a C/C++ Project” (si aparece un cuadro de dialogo, presionar amablemente “No”)

19. Compilar desde Eclipse con Cygwin: Seleccionar el proyecto “click derecho” -> properties -> C/C++ Build.  Deshabilitar “Use default build command” y escribir en “Build command”:

bash ${workspace_loc:/com.mdw.prueba.prueba}/build_native.sh NDK_DEBUG=1 V=1

20. Project -> Build All

21. Eliminar advertencias en el código: seleccionar el proyecto “click derecho” -> properties -> C/C++ General-> Path and Symbols-> GNU C++ y agregar:

c:\dev\android\android-ndk-r8b\platforms\android-9\arch-arm\usr\include

c:\dev\cocos2d-2.0-x-2.0.3\cocos2dx\include

22. Agregar las clases principales de la App (código de la aplicación): seleccionar el proyecto “click derecho” -> properties -> C/C++ General-> Path and Symbols-> Source Location. Click “link folder” y en cuadro de dialogo habilitar “Link to a folder in the file system”

Buscar la ruta= C:\Dev\cocos2d-2.0-x-2.0.3\prueba\Classes

23. Deshabilitar errores de sintaxis que no son errores (o sí lo son pero del analizador sintáctico de Eclipse, no del código): Seleccionar el proyecto “click derecho” -> properties -> C/C++ General->Code Analysis. Seleccionar “Use Project Settings” y deshabilitar “Syntax and Semantic Errors”

Listo, ahora la aplicación se encuentra en la carpeta /Classes/ y se puede editar, compilar y ejecutar en Eclipse todo el proyecto.

Cocos2D-X al estar basado en cocos2D para iPhone conserva la misma estructura de su antecesor por lo tanto recomiendo revisar la Guía iOS que aborda este tema y explica los conceptos básicos.