(+34) 958084455 informacion[arroba]academiaandroid.com
Logo LibGDX

Framewok libGDX para programación de videojuegos

Post Series: Programación de Videojuegos con libGDX

En esta serie de tutoriales vamos a presentar al framework libGDX para desarrollo de videojuegos y realizaremos un primer proyecto con él.

Si quieres aprender más sobre este tema, realizando tu propio proyecto y ayuda de un Tutor para resolver tus dudas, consulta nuestro curso de Programación de Juegos en Android (libGDX)

¿Qué es un Framework?

Tanto si tienes experiencia como desarrollador de software, como si no, te habrás tropezado alguna vez con el término de framework, cuya traducción aproximada sería la de “marco de trabajo”. Sus objetivos principales son los de acelerar los procesos de desarrollo, promover buenas prácticas de programación a través de los patrones de diseño o incluso reutilización de código.

Si nos centramos en frameworks dedicados al desarrollo de videojuegos en la plataforma Android, están diseñados para ofrecernos ayuda en el diseño de gráficos en 2D y 3D, motor de físicas, animación gráfica y rendimiento hardware, y todo esto, ofreciéndonos una estructura ordenada para la programación de videojuegos.

Un motor de físicas es un sistema software que implementa simulaciones a ciertos sistemas físicos, cómo dinámica de sólidos rígidos (por ejemplo, la detección de colisiones) o dinámica de fluidos, en tiempo real.

Introducción a libGDX

LibGDX es un framework para el desarrollo de videojuegos escrito principalmente en Java, con algunas características que lo hacen muy atractivo, como el ser multiplataforma o estar bajo licencia Apache 2.0. De esta forma contamos con un framework libre y gratuito que nos permite trabajar con gran simplicidad, al poder escribir el código en un único proyecto, para posteriormente trasladarlo a otras plataformas sin modificar nada.

Logo libGDX

Mencionaremos algunas de las herramientas que implementa LibGDX:

  • Framework para el manejo del ciclo de vida de la aplicación.
  • Módulo de entrada para controlar la comunicación con el usuario, a través del acelerómetro, pantalla táctil etc.
  • Proporciona una librería para el diseño, manipulación y representación de objetos gráficos.
  • Módulo para reproducción y efectos de audio.

Ya adelantamos algunas de sus características. Veamos un resumen de las más destacadas:

  • Soporta OpenGL ES 2.0 y 3.0 compatible con dispositivos actuales.
  • Proporciona una serie de módulos (conjunto de APIs), que posibilitan el manejo de gráficos, audio y entradas de usuario tales como teclado, ratón o dispositivos con pantalla táctil.
  • Es un framework multiplataforma, entre las que destacan las siguientes:
    • Windows.
    • Linux.
    • Android (para versiones 1.5 y superiores).
    • Javascript/WebGL (GWT–> Google Web Toolkit).
    • Mac OS X.
    • IOS (es necesario el uso de monotouch, cuya licencia es de pago).
  • Uso de Sprites, Textures, fonts, sistemas de partículas etc.
  • Integración de Box 2D (librería que implementa un motor físico en dos dimensiones).
  • Es Open Source (licencia Apache 2.0), por lo que es posible acceder a su código fuente, además de usarlo tanto para proyectos personales como proyectos comerciales.
  • Escrito principalmente en Java, implementa algunas partes en C/C++ (soporte a tareas que requieren de alto rendimiento como el motor de físicas y el procesamiento de audio)
  • Gran documentación, complementada con un repositorio formado por numerosos ejemplos:

Comenzando a trabajar con libGDX

A continuación, describiremos un proyecto realizado con el framework libGDX, para desarrollar un videojuego destinado a la plataforma Android.

Antes de comenzar a describir y comentar el código del proyecto, es conveniente enumerar los elementos y pasos necesarios para la creación de dicho proyecto:

  • En primer lugar se descargará del archivo “gdx-setup-ui.jar” para la creación de un proyecto con el framework libGDX: enlace de descarga –> https://github.com/AurelienRibon/gdx-setup-ui/downloads.
  • Ejecutaremos el archivo comentado anteriormente, cumplimentando los datos del formulario que se mostrará, al igual que cuando se realiza un nuevo proyecto en el IDE Eclipse (pincha en la imagen para ampliarla):Setip libGDX
  • Una vez completado el formulario, abriremos nuestro entorno de desarrollo, e importaremos los proyectos creados para comenzar a implementar nuestro código (en Eclipse debemos ir al menú: File > Import… > General > Existing Projects into Workspace  y seleccionaremos el directorio donde se crearon los proyectos).
  • En nuestro caso, solo nos interesaría el proyecto para la plataforma Android, aunque nos proporcionará un proyecto común para el resto de plataformas, que será donde desarrollaremos el videojuego:

Estructura de proyectos con libGDX:

Proyecto libGDX

 

Como podemos comprobar en la imagen superior, el proyecto denominado “JuegoslibGDX-android“, será desde el que se invoque al proyecto común, para un videojuego en la plataforma Android. En la carpeta “assets“, se incluirán todos los recursos necesarios para el funcionamiento de nuestro juego.

Abriremos la clase creada dentro del proyecto común y definiremos la lógica de nuestro videojuego. En este ejemplo, se ha desarrollado un videojuego cuyo misión principal será la de controlar una nave espacial, evitando chocar con las naves enemigas, utilizando la pantalla táctil del dispositivo. Vemos una imagen de la misma:

Captura juego libGDX

Proyecto JuegoslibGDX:

JuegoslibGDX/src/com.academiaandroid.libgdx/MiJuegoGDX.java

Nota: este proyecto se explicará a lo largo de las 4 publicaciones que componen esta serie de tutoriales, por lo que algunos elementos utilizados (texturas, colisiones, métodos que se llaman durante el ciclo de vida de la aplicación,…) pueden incluirse en el código antes de que los presentemos más en detalle.

  1. Se define una clase llamada MiJuegoGDX, que implementará la interfaz ApplicationListener, que sobrescribe una serie de métodos para la creación, pausa y destrucción de los elementos que intervienen en el videojuego:
 

  1. Se declaran e inicializan las variables que representarán, tanto los elementos visuales del videojuego, como los parámetros de velocidad de movimiento de los diferentes objetos en pantalla:

 

  1. Se inicializan las texturas (dentro del método create() , que será invocado al crear la aplicación por primera vez), indicando como recurso las imágenes añadidas en el directorio assets del proyecto “JuegoslibGDX-android“:

 

  1. Se liberan los recursos de memoria, destruyendo los objetos creados. Este método será invocado al cerrar la aplicación:

 

  1. Definimos un método para controlar la nave del jugador a través de la pantalla táctil del dispositivo. Además se actualizan las posiciones de los objetos nave_enemiga1 y vida_jugador1, mediante el cálculo de tiempo entre frame y frame, multiplicándolo por el parámetro de velocidad establecido, y desplazándolos desde el eje de coordenadas +X a -X (de derecha a izquierda de la pantalla):

 

  1. Por último, se define un método encargado de pintar los objetos en pantalla. Este método será invocado por el método render() , que se invocará por cada frame de pantalla:

Proyecto JuegoslibGDX-android:

JuegoslibGDX-android/src/com.academiaandroid.libgdx/MainActivity.java

Esta clase se encargará de realizar la llamada a la clase MiJuegoGDX, para la ejecución del videojuego:

Atentos a la próxima publicación semanal donde continuaremos explicando este proyecto de videojuego.

This Post Has 2 Comments

Comments are closed.