Universidad de Costa Rica Facultad de Ingeniería Escuela de Ciencias de la Computación e Informática CI2354-Dispositivos Móviles Resumen de exposición de AndEngine Estudiantes: Marco Artavia Rubén Jiménez Mario Monge Ordoñez II Semestre - 2012 Exposición AndEngine 1 2 3 4 5 Reseña historica ¿Por qué usarlo? comparación con otras herramientas (Corona, AndEngine, Emo Framework, E3roid, Unity) ¿Para cuál versión surge?, por ejemplo: versiones compatibles ¿Cómo instalarlo?, ¿cómo configurar el emulador? Ejemplos Preguntas Introducción El mercado de los videojuegos es uno de los más importantes en el sector móvil y de los que actualmente está creciendo más. Según datos de PricewaterhouseCoopers, el sector de los videojuegos va a ser el mercado de mayor crecimiento en el sector multimedia sólo por detrás del propio Internet. Con respecto al uso de juegos de video en dispositivos móviles, tenemos este interesante gráfico en la figura 1 acerca del crecimiento en el uso de videojuegos por tipo de hardware utilizado: Figura #1: Estimación del uso de videojuegos por tipo de hardware utilizado En el mismo, podemos observar que el mercado movil tiene un potencial alto de crecimiento para el siguiente año, creciendo en total un 10%. También, según el grupo NPD, que es un líder en estudios de mercado, sólo en Estados Unidos el crecimiento en el uso de juegos de video en móviles pasó de representar un 13% en el 2011 al 22% en este 2012 en el consumo total de juegos. También indica que los usuarios gastan aproximadamente $16 en contenido digital. Al ser un mercado creciente, que junto con medios como la conexión con redes sociales, para aumentar la interactividad y competencia entre usuarios, es importante saber de las herramientas que disponen los programadores para poder desarrollar sus aplicaciones. En este caso, se procederá a dar detalles de AndEngine, un motor libre para el desarrollo en Android. Reseña Histórica El projecto AndEngine fue ideado por el programador alemán Nicolas Gramlich, como respuesta a la falta de motores libres para el desarrollo de videojuegos para Android. En el 2010 publica la primera versión de su motor, el GLES1, bajo licencia LGPL. Con esta licencia, se le permite al desarrollador proteger su código. Los fuentes del juego no necesariamente tienen que ser publicados, ya que lo único que se debe publicar son los cambios que se le haya realizado a la librería (al AndEngine). Ante los logros conseguidos con su motor, la empresa de videojuegos Zynga lo contrató para que trabaje en el departamento de juegos para móviles y basándose en el motor de juego creado por él mismo. En diciembre del 2011, se introdujo un gran cambio al motor, al ser presentada la rama GLES2. El objetivo de esta rama, según Gramlich, era poder mejorar la eficiencia en algunos métodos debido a las aplicaciones pesadas que estaba desarrollando en Zynga, demostrando que el desarrollo de la herramienta sigue en pie a pesar de que él es el único que aporta al mismo. Extensiones Periodicamente, Nicolas desarrolla diferentes extensiones para su motor de juego. Las que se encuentran disponibles actualmente son: Realidad Aumentada: Permite un mejor manejo de la cámara en el juego. Live Wallpaper: Permite crear Wallpapers animados con el AndEngine. Reproductor .MOD: Permite reproducir archivos de música de tipo .MOD y varios similares con el AndEngine. Multijugador: Le agrega la posibilidad de conectar varios dispositivos a través de un sistema cliente/servidor para permitir múltiples jugadores en línea. Multitouch: permite el manejo de múltiples eventos Touch a la vez. PhysicsBox 2D: Es un motor de alto rendimiento, basado en una librería hecha por Erin Catto para el manejo de eventos físicos, por ejemplo, que los objetos “caigan” por la gravedad y se vean afectados por otros objetos en el escenario. CocosBuilder: Una extensión para poder utilizar AndEngine con cocos, que es una aplicación para el desarrollo de interfaces. AndEngineSVGTextureRegion: Una extensión que permite renderear SVG a texturas. Componentes Importantes de una Aplicación usando AndEngine SimpleBaseGameActivity: Las actividades que se realizarán utilizando el motor tendrán que ser heredadas de BaseGameActivity. Cada SimpleBaseGameActivity tiene un motor. Engine(motor): Permite que el juego avance en pequeños pasos discretos de tiempo. Ayuda a sincronizar los dibujos que se realizan periódicamente y también ayuda a actualizar la Escena. Ejemplo de uso: new Engine(new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), this.mCamera)) Scene(Escena): Es el contenedor de todos los objetos que son dibujados en la pantalla. Ejemplo de uso: final Scene scene = new Scene(1); scene.setBackground(new ColorBackground(0, 0, 0.8784f)) Camera: Define el rectángulo de la escena que es dibujada en la pantalla. Hay subclases de escena que permiten modificar aspectos como el zoom. Ejemplo de uso: this.mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); IResolutionPolicy: Le dice a AndEngine como lidear con los diferentes tamaños de pantalla de los dispositivos. Los diversos tipos que hay son: ● ● ● ● FillResolutionPolicy : Llena toda la pantalla como pueda sin importar la resolución. RatioResolutionPolicy : Trata de usar lo más que se pueda la pantalla, pero intenta mantener la relación que tiene el ancho y largo. RelativeResolutionPolicy : Usa un X y un Y predefinidos para el escalado y cambia las dimensiones actuales. FixedResolutionPolicy : Usa un tamaño fijo. Entity: Es un objeto que puede ser dibujado. Texture: Es una imagen en la memoria del chip gráfico que sirve para poner otros objetos en él. El tamaño debe ser potencia de 2. Ejemplo de uso: mTexture = new Texture(256, 256, TextureOptions.BILINEAR); TextureRegion: Define un rectángulo en la textura. Es usado por sprites para hacer saber al sistema que parte de la textura se encuentra Ejemplo de uso: ballTtextureTegion = TextureRegionFactory.createFromAsset(this.mTexture, this, "ball.png", 0, 0) Comparación con otras herramientas Licencia y Precio AndEngine LGPL Lenguaje Java API API de android y Propio No 2D 2.2 Multiplataforma Renderizado Primera versión de Android soportada Otras características No posee documentación. Unity $400-$3000(pro, Android) $800-$4500(pro, IOS, Android) C#/UnityScript (Javascript)/Boo API propio Corona $200 (android) / $350 (IOS, Android, Kindle) EMO framework New BSD License E3roid New BSD License LUA Java API propio Squirrel/C/C++/ Objective C/Java API propio Si 3D o 2D 2.2 (Parcial 2.1) Si 3D o 2D 2.2 Si 2D 2.3 Es una de las plataformas más utilizadas. Es muy sencillo de aprender. Maneja 5 lenguajes distintos, sí posee documentación. Más fácil que E3roid. API de android y propio No 2D(3D parcial) 2.1 No ha sido actualizado desde el 2011, sí posee documentación. ¿Cómo instalar AndEngine? 1 2 3 4 Descargar Eclipse de http://www.eclipse.org/downloads/ Instalar Eclipse Instalar el plugin de Git Ir al sitio de AndEngine http://www.andengine.org/ 5 6 Hacer click en Source. Este link lleva a un sitio que redirige al de GitHub https://github.com/nicolasgramlich/AndEngine Copiar el link del repositorio 7 8 Volver a Eclipse Ir a Archivo, seleccionar la opción de importar 9 Escribit “git” en el texto de búsqueda. Seleccionar “Projects from Git” . Continuar a la siguiente pantalla 10 Seleccionar URI . Continuar a la siguiente pantalla 11 Pegar el link de GitHub en donde dice URI, escoger el protocolo https. Continuar a la siguiente pantalla 12 Seleccionar todos los branch. Continuar a la siguiente pantalla 13 Escoger un directorio de destino para AndEngine o dejarlo en el que viene por defecto. 14 Eclipse descargará el contenido del repositorio 15 Seleccionar la opción de “Importar proyectos existentes“ 16 Seleccionar AndEngine 17 Hacer click en Finish 18 Con estos pasos el proyecto librería AndEngine debería haber sido importado exitosamente a Eclipse 19 Si hay errores: a Verificar que esté seleccionada la versión 1.6 del compilador de Java en las opciones del proyecto. b Verificar que el target de Android sea el más reciente. 20 Para utilizar AndEngine en un proyecto propio, hay que ir a las opciones del proyecto y agregarlo como librería. ¿Cómo configurar el emulador? 1 Añadir la siguiente línea al manifiesto 2 3 Comprobar el sdk mínimo del proyecto sea el 8 Configurar una máquina virtual de la siguiente forma. Para añadir “GPU Emulation” hay que hacer click en “New” Bibliografía http://www.tonylea.com/2011/best-iphone-game-frameworks/ https://store.unity3d.com/products http://www.coronalabs.com/store/ http://www.andengine.org/forums/gles2/how-to-get-emulator-working-t9456.html http://www.fiercemobilecontent.com/story/npd-mobile-gamers-now-largest-gaming-segmentus/2012-09-07 http://www.cartagena-capital.com/news-and-events/news/256-online-social-and-mobile-thefuture-of-the-video-games-industry