Informacion general de los modulos - jackgris/wikiLibGDX_es GitHub Wiki

4.2 Información general de los módulos

LibGDX comprende varios módulos que proporcionan servicios para cada paso en una arquitectura típica de un juego.

  • Input - Proporciona un modelo de entrada unificada y controlador para todas las plataformas. Soporta teclado, pantalla táctil, acelerómetro y el ratón cuando estén disponibles.
  • Graphics* - Habilita el dibujo de imágenes en la pantalla usando el hardware proporcionado por la implementación de OpenGL ES.
  • Files - Nos da un acceso abstracto a archivos en todas las plataformas, proporcionando métodos convenientes para las operaciones de lectura/escritura, independientemente del medio.
  • Audio - Nos facilita la grabación y reproducción de sonido en todas las plataformas.
  • Networking - Proporciona métodos para realizar operaciones de redes, tales como sencillas peticiones HTTP get y post, y comunicaciones por socket TCP de tipo servidor/cliente.

El siguiente diagrama muestra los módulos en una arquitectura de un juego sencillo:

modules overview

Módulos

Input

El módulo de entrada nos permite el polling de los diferentes estados de entrada en todas las plataformas. Nos permite el ver del estado de cada tecla, la pantalla táctil y el acelerómetro. En el desktop la pantalla táctil se sustituye por el ratón mientras que el acelerómetro no está disponible.

También ofrece los medios para registrar los procesos de entrada para utilizar un modelo basado en la entrada de eventos.

El siguiente fragmento de código obtiene de un evento touch las coordenadas actuales si es que lo estan tocando (o del ratón en el desktop) y evento está en curso:

if (Gdx.input.isTouched()) {
  System.out.println("Input occurred at x=" + x + ", y=" + y); 
}

De manera similar se puede realizar con todos los medios de entrada soportados, donde se pueden consultar y manipular.

Graphics

El módulo de gráficos nos abstrae de la comunicación con la GPU y nos proporciona métodos convenientes para obtener la instancias de wrappers de OpenGL ES. Se ocupa de todo el código repetitivo necesario para controlar la instancia de OpenGL y se ocupa de todas las implementaciones proporcionadas por el fabricante.

Dependiendo del hardware subyacente, el wrapper puede esta o no disponibles.

El módulo de gráficos también proporciona métodos para generar Pixmaps y Textures.

Por ejemplo, para obtener una instancia del API de OpenGL 1.0, se utilizará el código siguiente:

GL10 gl = Gdx.graphics.getGL10 ();

El método devolverá una instancia que se puede utilizar para dibujar en pantalla. En el caso de que la configuración de hardware no soporte OpenGL ES v1.0, nos se devuelve null.

El siguiente fragmento de código limpia la pantalla y la pinta de rojo.

gl.glClearColor(0.1f, 0.0f, 0.0f, 1);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

Siempre nos devuelve la implementación específica de la API (lwjgl, jogl o android), por lo que la aplicación principal no necesita conocer detalles y trabajará en toda la gama de plataformas que es compatible.

Las siguientes versiones del API son compatibles:

GL Version Method para su acceso
1.0 Gdx.graphics.getGL10();
1.1 Gdx.graphics.getGL11();
2.0 Gdx.graphics.getGL20();

Para obtener más información sobre el módulo de gráficos puede ver su documentación aquí.

Files

El módulo Files nos proporciona una forma genérica para acceder a los archivos, independientemente de la plataforma. Esto hace que sea fácil leer y escribir en archivos. La escritura del archivo tiene algunas limitaciones, que se deben a las limitaciones de seguridad de la plataforma.

El caso de uso más común para el módulo Files, es cargar assets del juego (texturas, archivos de sonido) de el mismo sub-directorio de la aplicación para todas las plataformas. También es muy útil para escribir las puntuaciones altas o estados del juego en los archivos.

El ejemplo siguiente crea un Texture desde un archivo presente en el directorio $APP_DIR/assets/textures.

Texture myTexture = new Texture(Gdx.files.internal(“assets/texture/brick.png”));

Esta es una muy poderosa capa de abstracción, ya que funciona tanto en Android y en desktop.

Audio

El módulo de audio hace que la creación y reproducción de archivos de audio sea muy sencilla. También nos da acceso directo al hardware de sonido.

Maneja dos tipos de archivos de sonido. Music y Sound. Ambos tipos soportan los formatos WAV, MP3 y OGG.

Las instancias de Sound se cargan en memoria y se pueden reproducir en cualquier momento. Es ideal para los efectos de sonido en el juego que se utilizarán varias veces, como explosiones o disparos.

Las instancias de Music, por otro lado son los streams de archivos en el disco (o tarjeta SD). Cada vez que se reproduce un archivo, éste se transmite desde el archivo en el dispositivo de audio.

El siguiente fragmento de código reproduce el archivo de sonido myMusicFile.mp3 desde el disco repetidamente con el volumen a la mitad:

Music music = Gdx.audio.newMusic(Gdx.files.getFileHandle("data/myMusicFile.mp3", FileType.Internal));
music.setVolume(0.5f);
music.play();
music.setLooping(true);

Net

TBD

Enlaces