miércoles, 29 de mayo de 2013

Gamekit: Crea juegos para Android desde Blender

Si en mi anterior entrada abordaba la realización de juegos y aplicaciones para Android con AppInventor, ahora analizaremos otra herramienta que también tiene un gran potencial y que permite desarrollar juegos para Android desde el propio Blender: Gamekit

Gamekit es un motor básico de videojuegos que integra dentro de Blender a Ogre para la construcción de gráficos (también existe una versión para Irrlicht), Bullet para las físicas y Open AL para el sonido. Esta integración con Blender le permite aprovechar muchos de sus elementos como Materiales, Iluminación o incluso los propios ‘logic bricks’ a la hora de desarrollar el juego.

Además, también permite la integración en otras plataformas como Linux, Windows, OSX o el propio Android mediante Eclipse. Tiene una gran versatilidad en el apartado de programación, ya que la lógica del juego puede realizarse, no sólo con los propios ‘logic bricks’ de Blender, sino también, a través de C++ y Lua.

Instalación:
Para probar GameKit no es necesario instalar nada. Sólo has de descargar el archivo que se corresponda a tu sistema operativo y descomprimirlo. Dentro de la carpeta descomprimida podrás observar una serie de archivos:
- ‘momo_ogre.blend’ es el propio juego hecho con Blender (escena y personajes).
- ‘Ogrekit’ es el ejecutable ya compilado.
- ‘OgreKit.log’ y ‘OgreKitStartup.cfg’ son los archivos de configuración del juego.

Una captura con el archivo de demostración momo_ogre.blend en funcionamiento

Para hacerlo funcionar sólo has de lanzar el ejecutable. De hecho, incluso podrías empezar a hacer pruebas con tus propios archivos sustituyendo el archivo ‘momo_ogre.blend’, aunque conservando ese nombre. Eso sí, primero es conveniente ver cómo funciona este motor a nivel de ‘logic bricks’ y materiales, porque no vale todo y existen ciertas reglas a la hora de desarrollar el juego para que GameKit pueda hacerlo funcionar correctamente.

Integración de GameKit en Blender:
Efectivamente, para que podamos comprobar al momento nuestros avances en el desarrollo, lo realmente cómodo es trabajar con este motor desde dentro del propio Blender. Para ello, lo incorporaremos como un 'Addon' dentro del propio programa.
Dentro del archivo comprimido que has descargado anteriormente deberías tener una carpeta llamada ‘BlenderAddon’. Debes copiar esos archivos en la carpeta donde tengas instalados los AddOn de Blender (archivos y carpetas en sus respectivos directorios) o si lo prefieres instalarlo desde el propio Blender:
- File > User Preferences > Addons > Install from File (localizando esos archivos)
Una vez instalado has de habilitar el plugin en esa misma ventana. Además, debes tener la carpeta de archivos temporales apuntando a una ruta correcta:
- File > User Preferences > File > Temp:'ruta de tu carpeta temporal'
Ahora GameKit debería aparecer en la lista desplegable de los motores de Render, así que cambiamos de ‘Blender Render’ a ‘GameKit’.
En la ventana lateral de ‘Render’ deberíamos ver las opciones de Gamekit. Es muy importante indicar la dirección del ejecutable en ‘Runtime’, porque de lo contrario nos dará un error.

Si todo ha ido bien, ya podemos lanzar Gamekit a través del botón ‘Start Game’, el cual abrirá una nueva ventana con nuestra escena empleando ese motor de juegos en lugar del motor de Blender.

Captura con una vista de Gamekit integrado en Blender

Integración con Eclipse:
Bueno, ya has estado un rato trasteando con él y ves que tiene buena pinta. Aunque de momento no hay rastro de Android por ningún lado... vamos con ello:
En primer lugar necesitas volver a la página de descargas del proyecto para conseguir el archivo ‘GameKit-Android-EclipseProject-v7a-r1119.zip’. Una vez descomprimido verás dos carpetas: una con el plugin para Blender y otra llamada ‘gkAndroid’ que es la que contiene los archivos del proyecto. Recuerda dónde guardas la carpeta ‘Gamekit-Android’ porque luego has de apuntar hacia ella para configurar tu proyecto.
Ahora utilizaremos Eclipse como entorno de desarrollo, así que si todavía no lo tienes instalado, es el momento de hacerlo y comprobar que tenga correctamente instaladas las herramientas para Android (ADT Plugin).
Además, como comentaba en mi anterior entrada, si tienes tu propio Tableta puedes conectarla mediante ‘ADB’ (una vez hayas instalado el SDK de Android) para poder ver al momento los resultados de tus modificaciones. También es posible trabajar a través de un emulador de Android o dispositivo virtual, aunque seguramente puede surgir más de un error con algunas librerías y finalmente no cargar tu juego (además de otras carencias como por ejemplo el acelerómetro).

Una vez esté todo listo, necesitarás crear un nuevo proyecto en Eclipse para Android. Para ello:
- Inicia Eclipse
- File > Import > General > Existing Projects into Workspace > Next
- Navega hasta la carpeta ‘gkAndroid’ que has descomprimido antes > Ok
- Selecciona GamekitAndroid > Finish
- Ahora verás en la ventana lateral izquierda una lista con los archivos del proyecto.


Cargando un nuevo proyecto en Eclipse

Para ejecutar el archivo de demostración:
- Haz clic con el botón secundario sobre tu proyecto (en la ventana lateral) > Run as > Android Application.
- Ahora deberías ver a Suzanne saltando en una pequeña escena llena de obstáculos y que puede ser controlada mediante el acelerómetro de tu Tableta.

Para ejecutar tus propios archivos:
- Copia tu archivo ‘.blend’ dentro de la carpeta ‘assets’ y renómbralo como gk_android.blend
- Si lo has hecho desde fuera de Eclipse (el navegador de archivos de tu sistema), tendrás que refrescar los archivos de tu proyecto: clic derecho sobre tu proyecto > Refresh
- Ahora cuando lo ejecutes podrás ver tu propia escena funcionando en la Tableta.

Es bastante aconsejable conservar una copia de todos los archivos originales. Así, podrás observar su estructura y cómo están realizados, ya que dan muchas pistas que pueden ser utilizadas como base para tus propios trabajos.

Conclusiones:
Con todas estas premisas y después de trastear un poco, el resultado ha sido un poco agridulce. En efecto, en los últimos meses parece observarse un descenso en la actividad de desarrollo dentro de ese proyecto. Este parón limita bastante las opciones para realizar algún juego más elaborado, puesto que muchas de las características que ya están reportadas podrían dar un salto cualitativo importante al proyecto. Así las cosas, las limitaciones actuales son un escollo importante si quieres realizar algún juego más elaborado.

Videojuego de prueba desarrollado con Gamekit en Blender para Android

Destacaría algunos inconvenientes detectados durante la realización del juego de prueba (y que deberíais tener en cuenta si os lanzáis a la aventura):
- De momento, no soporta eventos multitáctiles. Problema importante cuando intentas configurar botones de control simultáneos.
- El sonido para  Android no está configurado de serie, ya que existen ciertos problemas de licencia en las librerías OpenAL para Android.
- Las sombras están deshabilitadas en la versión para Android.
- No acaba de soportar de manera correcta las imágenes con mapas de Normales dentro de los Materiales.

Como ventajas destacaría naturalmente la integración con Blender y sus ‘logic bricks’, la posibilidad de utilizar un motor de juegos tan potente como Ogre dentro del propio Blender y, sobretodo, su capacidad multiplataforma a la hora de exportar los juegos.


Algunos enlaces de interés sobre Gamekit:
- Página oficial del proyecto: http://code.google.com/p/gamekit
- Para acceder directamente a todas sus descargas: http://code.google.com/p/gamekit/downloads/list
- Documentos de ayuda en formato .chm
- Foro oficial donde puedes resolver muchas de tus dudas: http://gamekit.org/forum/

_______________________________________________________

ADENDA.
En este apartado iré añadiendo material que ayude a resolver algunas de vuestras dudas que me habéis hecho llegar en vuestros comentarios.

Adenda 1. Sobre eventos de teclado en Blender:
Para simular 'Touch Events' mediante los 'Logic Bricks' de Blender puedes utilizar una combinación de dos sensores tipo 'Mouse':
- 'Left Button' simula el clic.
- 'Mouse Over' determina la posición del cursor sobre el objeto.


Adenda 2. Un modo sencillo de abrir tus modelos de Blender en Android
Desde el siguiente enlace podrás descargar un archivo .apk que permite visualizar tus archivos de Blender en Android (con algunas limitaciones, claro):
http://download.blender.org/demo/android/BlenderPlayer_08_02_12_4.apk

INSTALACIÓN
- Asegúrate que tienes activada la opción de permitir la instalación de aplicaciones de origen desconocido en tu dispositivo Android (Ajustes > Seguridad).
- Copia el archivo .apk que has descargado a tu dispositivo Android e instálalo como una aplicación normal.
- Copia los juegos que quieras ejecutar también en tu dispositivo (Deben tener la extensión .blend).

EJECUTAR JUEGO
- Abre BlenderPlayer (la aplicación que se habrá instalado en tu dispositivo). Selecciona el archivo .blend que contiene tu juego o modelo y haz clic en StartBlenderPlayer.
- También puedes localizar tu archivo .blend con un explorador de archivos > Abrir .blend > Con BlenderPlayer.


AddThis