Está en la página 1de 8

Programacin de Juegos

4 Grado en Ingeniera Informtica

PROGRAMACION DE JUEGOS EN ANDROID CON LIBGDX


Introduccin
El objetivo de la prctica es la aplicacin de los conceptos del paradigma de programacin orientado a objetos para programar un sencillo videojuego en 2D para dispositivos mviles Android. El videojuego en 2D ser programado en el lenguaje Java (utilizando el entorno de desarrollo Eclipse) mediante el uso de libGDX, un framework multiplataforma para el desarrollo de juegos escrito en Java (con una mezcla de C/C++ para dar soporte y rendimiento a tareas relacionadas con el uso de la fsica y procesamiento de audio) que permite que un mismo cdigo pueda ser ejecutado en mltiples plataformas sin ninguna modificacin (libGDX nos asegura que la misma aplicacin puede funcionar correctamente en diferentes dispositivos), haciendo de esta manera que el proceso de pruebas y depuracin se realice de forma ms rpida y cmoda. LibGDX actualmente tiene soporte para Windows, Linux, Mac OS X, Android, iOS y JavaScript/WebGL, de forma que podemos por ejemplo generar una aplicacin en nuestro PC y utilizar el mismo cdigo en Android (la aplicacin se desarrolla y prueba en el PC y al final se porta al dispositivo definitivo, haciendo las pruebas relativamente rpidas al no tener que esperar a que se cargue el emulador, o que se ejecute en nuestro dispositivo). LibGDX est compuesto por una serie de componentes que sern comunes a todas las aplicaciones: Un marco de Aplicacin, que manejar el bucle principal y adems estar encargado del ciclo de vida, es decir, los eventos de creacin, destruccin, pausa y resume de la misma. Un componente de Grficos que nos permitir gestionar la representacin de imgenes y objetos grficos en la pantalla (expone OpenGL ES 1.x y 2.0 y permite consultar / configurar los modos de video y cosas similares). Un componente de Audio, que nos facilitar el acceso a los sonidos y msica de la aplicacin. Un componente de Archivos para leer y escribir los diferentes ficheros de datos (imgenes, archivos de configuracin, sonidos, msica, texturas, etc.) Un componente de Entrada que gestionara la entrada a travs del teclado, pantalla tctil o acelermetro.

Programacin de Juegos

4 Grado en Ingeniera Informtica

Adicionalmente podramos ampliar la gama de mdulos con otros dos ms: Math, permite la gestin rpida de clculos matemticos orientados al desarrollo de videojuegos. Physics, que bsicamente es un wrapper (envoltorio o capa de cdigo que traduce una librera existente en otra compatible) de Box2D y permite controlar la gestin de colisiones

Este grfico muestra en mayor detalle el sistema de mdulos de libGDX:

Realmente, estos mdulos son slo interfaces pblicas que ofrece la librera. La propia aplicacin ser la encargada de la gestin de los diferentes mdulos. 2

Programacin de Juegos

4 Grado en Ingeniera Informtica

Como hemos dicho anteriormente LibGDX soporta mltiples plataformas, como los sistemas operativos de escritorio (Windows, Linux, Mac OS X), Android, iOS o el navegador (JavaScript/WebGL). Cada plataforma cuenta con diferentes mecanismos a la hora de configurar la ventana de la aplicacin, el procesamiento de la entrada del usuario, la interaccin con el sistema de archivos, reproduccin de audio y as sucesivamente. LibGDX intenta abstraer esas diferencias a travs de un conjunto de interfaces que ocultan los detalles de la plataforma. Para cada plataforma de soporte de apoyo de libGDX, hay un back-end, implementando esas interfaces. Un desarrollador de aplicaciones no se refiere a la parte Back-end directamente, sino que se desarrolla contra estas interfaces. Libgdx actualmente soporta 4 back-ends, 2 de aplicaciones de escritorio (Lwjgl, Jogl), adems de HTML5 y Android.

Ciclo de vida de una aplicacin libGDX


Una aplicacin libGDX tiene un ciclo de vida bien definido, que regula los estados de una aplicacin, como creacin, pausado y reanudacin del juego, lo que hace y la eliminacin de la aplicacin. APPLICATION Es el principal punto de entrada para cualquier aplicacin libGDX. La interfaz Application determina la plataforma y los grficos de fondo que sern utilizados por la aplicacin. La interfaz tambin proporciona los mtodos para acceder a grficos, audio, archivos de entrada y mdulos de E/S. Tambin da acceso a un mdulo de Logging el cual funciona en todas las plataformas. APPLICATION LISTENER Para crear una aplicacin libGDX, primero se ha de implementar la interfaz ApplicationListener, que es la responsable de la inicializacin de la aplicacin, la actualizacin del estado del juego (es decir, la lgica del juego), renderizacin de la imagen, pausado del juego, almacenamiento del estado y la liberacin de los recursos al salir de la aplicacin. Es tambin el lugar donde los eventos del ciclo de vida son manejados. Cada aplicacin/juego, sin importar el back-end y/o plataforma de destino tendr que implementar la interfaz ApplicationListener. La implementacin es exactamente la misma para todas las plataformas. Por tanto, Application es responsable del circuito de juego y ApplicationListener es el lugar donde se implementa la lgica del juego (la aplicacin llamar al ApplicationListener cada vez que un evento de nivel de aplicacin se produce).

Programacin de Juegos

4 Grado en Ingeniera Informtica

La implementacin de la interfaz ApplicationListener tiene la siguiente estructura:


public class MyGame implements ApplicationListener { public void create () {} public void render () {} public void resize (int width, int height) {} public void pause () {} public void resume () {} public void dispose () {} }

create (): Se llama una vez cuando se crea la aplicacin. Es el mtodo que se ejecuta cuando se crea la actividad, el mtodo donde debemos cargar las imgenes, sonidos y msicas en memoria para poder usarlas. resize(int width, int height): Se llama a este mtodo cada vez que la pantalla del juego cambia su tamao y el juego no est en el estado de pausa. Tambin se le llama slo una vez justo despus del mtodo create (). Los parmetros son la nueva anchura y altura de la pantalla. render (): Mtodo cclico (se ejecuta continuamente) llamado por el bucle del juego de la aplicacin cada vez que se renderiza. La actualizacin del juego tambin tiene lugar aqu antes de la representacin real. En este mtodo ser donde vamos a ir dibujando las imgenes y acciones. pause (): El mtodo de pausa se llama justo antes que se destruya la aplicacin. En Android se llama cuando el botn de inicio se presiona o haya una llamada entrante. En el escritorio se llama justo antes de dispose () al salir de la aplicacin. Es un buen lugar para guardar el estado del juego en Android, ya que no se garantiza que sea reanudado. resume (): Este mtodo es llamado slo en Android, cuando la aplicacin recibe el foco al volver al juego desde el mtodo pause(). En el escritorio este mtodo no ser llamado nunca. dispose (): Se le llama cuando la aplicacin se destruye. Es precedido por una pausa (). Es el contrario al mtodo create () y en l se suele liberar el espacio de memoria que hemos usado en el mtodo create

Los mtodos anteriores son provocados por la aplicacin durante su ciclo de vida.

Programacin de Juegos

4 Grado en Ingeniera Informtica

El siguiente diagrama muestra las diferentes fases por las que pasa una aplicacin libGDX:

Objetivo
Como comentamos al inicio, el objetivo de la prctica es programar en Java un sencillo videojuego en 2D para dispositivos mviles Android, haciendo uso del framework libGDX. Plantearemos un modelo estndar tipo MVC para el funcionamiento bsico que puede utilizarse en otros juegos. El Modelo Vista Controlador (MVC) es un patrn de arquitectura de software que separa los datos y la lgica de negocio de una aplicacin de la interfaz de usuario y el mdulo encargado de gestionar los eventos y las comunicaciones. Para ello MVC propone la construccin de tres componentes distintos que son el modelo, la vista y el controlador, es decir, por un lado define componentes para la representacin de la informacin, y por otro lado para la interaccin del usuario. Este patrn de diseo se basa en las ideas de reutilizacin de cdigo y la separacin de conceptos, caractersticas que buscan facilitar la tarea de desarrollo de aplicaciones y su posterior mantenimiento.

Programacin de Juegos

4 Grado en Ingeniera Informtica

A grandes rasgos, la arquitectura MVC del juego ser la siguiente:

Capa Game Colocaremos las clases que arrancan el juego como la clase que tiene el mtodo main(). Esta capa se encarga de llamar e inicializar los objetos Screens del juego. Es responsable de cargar los recursos en memoria como la msica o las imgenes.

Capa Screen Se encarga de dibujar la pantalla, el mtodo ms usado es render() que es el mtodo que dibuja la pantalla y el mtodo dispose() que es usado para eliminar los objetos que no se utilicen. Por ejemplo cuando cambiamos de una pantalla (screen) a otra. En este ejemplo hemos creado dos screens, la screen del menu principal y la screen del juego en s mismo. Estas clases implementan la interfaz Screen.

Programacin de Juegos

4 Grado en Ingeniera Informtica

Capa Model Se utilizar para el modelo de lgica del juego, no puede faltar la clase World, que es el que se encarga de inicializar los otros objetos del mundo de este juego. Si por ejemplo el juego a implementar estuviera formado por un escenario que contiene bolas que pueden moverse y colisionar con ladrillos o barras, tendramos 2 clases ms, la Clase Ball y la Clase Bar (el objetivo del juego podra ser por ejemplo obtener el mximo nmero de puntos en el tiempo disponible, en caso de que las bolas puntuaran al colisionar con las barras, o por ejemplo, durar el mayor tiempo posible sin colisionar).

Todas las clases asociadas al problema sern programadas siguiendo una filosofa modular, creando los paquetes anteriormente mencionados (com.libgdx.game, com.libgdx.screen, com.libgdx.model) con todas las clases a utilizar (Game, Assets, MainMenuScreen,...).

Evaluacin
En la nota de la prctica se tendr en cuenta tanto el proyecto de programacin como el resultado de la entrevista y la defensa de las prcticas. Tras la entrevista de prcticas, si la prctica est aprobada, se dar opcin a mejorar la nota de la prctica corrigiendo los errores. Las prcticas que no implementen TODA la funcionalidad requerida no sern evaluadas. La copia de prcticas, aun siendo parcial, ser sancionada con el suspenso de las prcticas tanto para el grupo que copia como para el que deja copiar. Cada grupo es responsable de la custodia de sus prcticas.

Programacin de Juegos

4 Grado en Ingeniera Informtica

Entrega de prcticas
La prctica ser realizada en grupos de tres alumnos como mximo y ser desarrollada en una entrega. Una vez finalizada la prctica se realizar la entrevista de revisin y la defensa de prcticas. El plazo de entrega de la prctica finaliza el mircoles 23 de abril de 2014. La entrega de prcticas se realizar en moodle. El representante del grupo debe subir el proyecto de programacin (slo el proyecto y no el espacio de trabajo completo de Eclipse) en un fichero comprimido .zip o .rar (no olviden indicar los nombres de los integrantes del grupo).

También podría gustarte