Programación de videojuegos con libGDX

Click here to load reader

  • date post

    30-Nov-2015
  • Category

    Documents

  • view

    392
  • download

    6

Embed Size (px)

Transcript of Programación de videojuegos con libGDX

  • Programacin de videojuegoscon

  • Introduccin a libGDXDescargar la libreraCrear un proyecto JAVA nuevoPortar el proyecto JAVA a un proyecto Android

    Ciclo de vida de una aplicacin libGDXGrficos

    Texturas e InterpolacinTextureRegion

    TextuimagrePackerEmpaquetar imgenes automaticamenteCarga de imgenes empaquetadasDibujar imgenes en pantalla

    EntradaDetectar pulsaciones en la pantalla tctil

    AudioSounds

    Cargar sonidosReproducir sonidosDescargar sonidos

    MusicCargar una msicaDescargar una msica

    Navegando entre pantallas del juegoVibracinCmarasAnimacinManual de buenas prcticas

    Separar la lgica de la presentacinPginas para Desarrollo de JuegosSolucin de problemas

  • OBJETIVOEste documento pretende ser una gua de uso del Framework LibGDX para el desarrollo de videojuegosmultiplataforma. Para la redaccin del mismo se va a recopilar la informacin de diversas fuentes como puede ser lapropia documentacin de la API del framework, foros, blogs y videoblogs.

    La idea es tener una documentacin bsica en castellano que est viva, es decir, que se vaya actualizando con el pasodel tiempo e incluyendo las nuevas funcionalidades de las nuevas versiones.

  • INTRODUCCINEn el mundo del desarrollo de aplicaciones actualmente existen multitud de Frameworks que ayudan al desarrolladora realizar sus proyectos minimizando el tiempo de desarrollo y simplificando tareas que, utilizando las herramientasusuales de cada plataforma, pueden llegar a ser complicadas o largas y tediosas.

    Entre estos Frameworks, tenemos algunos que son propietarios en el que es preciso pagar una licencia para lacreacin de proyectos comerciales como pueden ser Corona SDK, Unity 3D, Gideros (aunque en este caso, hay unaversin gratuita que se puede usar para proyectos comerciales con una intro mostrando el logo de Gideros), etc...Otros, por el contrario, siguen la filosofa del software libre y pueden ser usados para el desarrollo de software tantocomercial como privado sin el pago de licencia alguna como pueden ser Moai, Cocos 2D-X, libGDX...

    Como se puede observar hay una gran cantidad de opciones donde elegir. En mi caso, he decidido dar el paso porlibGDX por varias razones: la comunidad es bastante activa, existe bastante documentacin, usa Java como lenguajede programacin que es el nico que medio-domino, hace uso de herramientas contrastadas en el desarrollo devideojuegos como OpenGL, Open AL, Box-2D, etc...

    LibGDX es un framework multiplataforma de desarrollo de juegos para Windows, Linux y Android. Est escrito enJava con una mezcla de C/C++ para dar soporte y rendimiento a tareas relacionadas con el uso de la fsica yprocesamiento de audio.

    LibGDX permite generar una aplicacin en su PC y utilizar el mismo cdigo en Android, de esta manera el procesode pruebas y depuracin se realiza de forma ms rpida y cmoda ya que el PC es mucho ms rpido que eldispositivo Android.

    Con LibGDX nos aseguramos de que la misma aplicacin puede funcionar correctamente en diferentes dispositivos.

    LibGDX est compuesto por una serie de componentes que sern comunes a todas las aplicaciones:

    Marco de Aplicacin (application): manejar el bucle principal y adems estar encargado del clico devida, es decir, los eventos de creacin,destruccin, pausa y resume de la misma.

    Componente de Grficos (graphics): nos permitir gestionar la representacin de imgenes y objetosgrficos en la pantalla.

    Componente de Audio (audio): nos facilitar el acceso a los sonidos y msica de la aplicacin.

    Componente de entrada (input): para leer y escribir los diferentes ficheros de datos como por ejemplo, imgenes, archivos de configuracin, sonidos, msica, texturas,...

    Componente de Entrada/Salida (Files): gestionara la entrada a travs del teclado, pantalla tcil o acelermetro.

  • Los mdulos descritos anteriormente pueden ser accedidos va campos estticos de la clase Gdx. Esto, en esenciason un juego de variables globales que permiten el fcil acceso a cualquier mdulo de libgdx. Por ejemplo, paraacceder al mdulo de audio, simplemente hay que escribir lo siguiente:

    // Crea un objeto de tipo AudioDevice en el que poder cargar fragmenos deaudio de tipo PCM de 16 bitsAudioDevice audioDevice = Gdx.audio.newAudioDevice(44100, false);

    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 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.

    Ventajas: Soporte 2d full (bajo y alto nivel) Mucha documentacin, tutoriales, ejemplos de cdigo Releases en forma peridica Se puede probar en escritorio (antes de subir a dispositivo mvil) Maneja Audio, eventos de entrada del usuario (Input), fsica,matemtica,archivos Soporta 3d aunque no es su fuerte. libGDX te da un acceso ms fcil a Bajo nivel Posibilidad de tomar un juego hecho en java jar 2d o 3d y adaptarlo a libgdx para q funcione nativo en

    android,eso hicieron con el juego Droid Invaders 3d.

    Desventaja: El soporte de alto nivel en 3d esta en construccin actualmente

  • Links de referencia: Pagina Oficial Wiki del proyecto Blog Foro Juego en 3d ya realizado: Droid Invaders Listado de Ejemplos

    Video Tutoriales Video Tutoriales en castellano

    Documentacin

  • Uso de la libreraExisten dos mtodos para el uso de la librera: el primero, ms manual, que consiste en descargarla misma e importarla en nuestro proyecto de forma manual y el segundo mtodo que es el msrpido y el que yo recomiendo que es usando un GUI creado en Java que crea un proyecto contodo lo necesario de forma automtica para nicamente importarlo desde Eclipse.

    Mtodo 1: ManualmenteDescargar la libreraPara descargar la librera debemos ir a la web de la misma: http://libgdx.badlogicgames.com/

  • Una vez en la web, pinchar en la opcin Download & Source. A continuacin seleccionamos ladistribucin Nightly Builds que es la ltima versin que contiene las ltimas actualizaciones (yalgunos bugs, tambin) pinchando en el botn Latest Nightly Build.

    En la ltima ventana ya slo queda pinchar en la ltima versin que se llama libgdx-nightly-latest.zip

    Crear un proyecto nuevoAunque se puede programar con cualquier IDE que permita programar en Java (como Netbeans,InteliJ IDEA, etc... ), la mayora de usuarios suele preferir usar Eclipse, por lo tanto es el IDEque se usar en este manual.

    Para crear un nuevo proyecto usando LibGDX, lo ms simple es usar una herramienta creada porAurelien Ribbon llamada LibGDX Project Setup. Simplemente hay que descargarlo del blog deAurelien Ribbon (http://www.aurelienribon.com/blog/). Una vez descargado, hay quedescomprimir el fichero y nos encontraremos con un programa realizado en Java, por lo tantosimplemente hay que ejecutarlo haciendo doble click en el fichero .jar.

    Para crear un proyecto JAVA en Eclipse simplemente en el men vamos a File > New > JavaProject. Le damos un nombre al proyecto (en este caso Demo1). Elegimos la ruta donde secrear en memoria y le damos a Finish.

  • Una vez creado el proyecto el siguiente paso ser aadir la librera. Para ello una buena prctica es crear un directorio dentro del proyecto donde incluir las libreras que usemos.Para ello click derecho sobre nuestro proyecto y New > Folder. En nuestro ejemplo esta carpeta la llamaremos libs.

    Una vez creada esta carpeta, simplemente tendremos que aadir a la misma lo que necesitamos para este proyecto. Para aadir, nos vamos al directorio donde hemos guardado la librera descargada en el apartado anterior y podemos arrastrar o copiar los archivos que necesitamos (en la imagen).Nos quedara el proyecto de esta forma:

  • Ya tenemos las libreras en el directorio que hemos creado dentro del proyecto. Pero an no forman parte del mismo,el siguiente paso es aadirlas. Para ello seleccionamos los cuatro ficheros dentro de la carpeta libs, hacemos clickderecho y en el men contextual seleccionamos Build Path > Add to Build Path. El proyecto queda de la siguienteforma:

    Otra buena prctica, aunque no necesaria es aadir la informacin contenida en el Javadoc de la librera. El objetivode esto es que cuando se muestre la ayuda emergente de eclipse veamos la informacin contenida en el Javadoc de lalibrera.

  • Para ello hacemos click derecho sobre el proyecto y en el men contextual Build Path > Configure Build Path...tras lo que se nos muestra lo siguiente:

    En esta ventana desplegamos gdx.jar y tal como se ve en la imagen seleccionamos Javadoc location. Una vez hechoesto pulsamos sobre Edit...

    Pulsamos en Browse... y buscamos la localizacin del Javadoc que se encuentra en libgdx-nightly > docs > api.Una vez seleccionado este directorio pulsamos sobre Ok para confirmar el cambio. Y ya tenemos esta caractersticahabilitada.

    Una vez preparado Eclipse y nuestro proyecto JAVA ya podemos empezar a trabajar.

  • Lo primero ser crear la clase principal del juego, que ser la encargada de manejar y controlar todo lo que ocurra enel juego.

    Para ello click derecho sobre src > New > Class.

    Creamos la clase en el paquete com.desarrolladoresandroid.libgdx.demo1 El nombre de la misma es Demo1Game Esta nueva clase heredar de Game (com.badlogic.gdx.Game).

    Una vez creada la clase principal del proyecto, crearemos el punto de entrada para la ejecucin de la aplicacinJAVA. Una clase que nos permitir lanzar el juego.