Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Android / Empaquetado de texturas en LibGDX

Empaquetado de texturas en LibGDX

Autor jc mouse lunes, octubre 7, 2013

Continuando con los tutoriales sobre LibGDX (Librería para el desarrollo de videojuegos), en esta ocasión veremos como empaquetar nuestras texturas con una herramienta de esta librería llamada GDX-TOOLS.JAR

Pero antes de comenzar a utilizar esta herramienta, debemos saber para que es que empaquetamos texturas. En el desarrollo de videojuegos, antes ahora y seguramente en el futuro, una de las tareas de los desarrolladores a sido la de optimizar recursos. Cuando se desarrolla un juego, se hace uso de muchos archivos, imágenes entre ellos y para evitar tener que estar cargando uno a uno las texturas, lo mejor es cargar de una sola vez una textura que esta formada por todas las texturas y luego extraer cuando los necesitemos la imagen que nos interese.

Esto lo veremos más adelante con un ejemplo práctico, pero primero, aprenderemos a utilizar GDX-TOOLS.JAR.

EMPAQUETANDO TEXTURAS CON GDX-TOOLS.JAR

1. En este ejemplo, utilizaremos la versión de libgdx, «libgdx-nightly-latest«, si no lo tienes descarga y descomprime en tu pc, yo lo hice en «C:/java/libgdx-nightly-latest/», si ya utilizas libgdx, salta este paso y dirígete a la carpeta donde tienes la librería.

2. La herramienta que buscamos se encuentra en: «libgdx-nightly-latest/extensions/gdx-tools/«, esta herramienta no cuenta con interface gráfica así que debemos usar instrucciones por linea de comandos.

Para no tener que escribir una y otra vez largas direcciones y/o nombres de archivos, creo yo que lo más sencillo es hacer uso de un archivo *.bat que es de fácil edición y ejecución. Si te gusta escribir en la consola, igual puedes hacerlo eso ya es cosa tuya 🙂

La sintaxis de la instrucción para gdx-tools es la siguiente:

java -classpath [ruta de libgdx]/gdx.jar;[ruta de libgdx]/extensions/gdx-tools/gdx-tools.jar com.badlogic.gdx.tools.imagepacker.TexturePacker2 "[carpeta donde estan las texturas]" "[carpeta donde se guardara la textura final]" "[nombre del archivo].atlas"

En este momento nos encontramos en la carpeta de «gdx-tools/«, en esta carpeta, encontramos los archivos:

– gdx-tools.jar (herramienta de empaquetado)

– sources/ (carpeta de fuentes de gdx-tools)

crea 2 nuevas carpetas con los nombres

– textures/ (carpeta donde colocaremos las texturas que queremos empaquetar)

– output/ (Carpeta donde se generaran los archivos de salida)

Crea un nuevo archivo de texto con el notepad el cual debes guardar con extensión BAT. Dale el nombre que quieras, pero no te olvides de cambiar la extensión.

En mi caso, dada la ruta de mi librería libgdx en mi PC, el archivo *.BAT tiene el código:

java -classpath C:/java/libgdx-nightly-latest/gdx.jar;C:/java/libgdx-nightly-latest/extensions/gdx-tools/gdx-tools.jar com.badlogic.gdx.tools.imagepacker.TexturePacker2 "textures/" "output/" "mistexturas.atlas"

Abrimos la consola MS-DOS y ejecutamos el archivo empaquetador.bat (el nombre que yo le di a mi archivo BAT)

C:\java\libgdx-nightly-latest\extensions\gdx-tools>empaquetador.bat

C:\java\libgdx-nightly-latest\extensions\gdx-tools>java -classpath C:/java/libgd
x-nightly-latest/gdx.jar;C:/java/libgdx-nightly-latest/extensions/gdx-tools/gdx-
tools.jar com.badlogic.gdx.tools.imagepacker.TexturePacker2 "textures/" "output/
" "mistexturas.atlas"
textures
Packing.........
Writing 256x256: output\mistexturas.png

C:\java\libgdx-nightly-latest\extensions\gdx-tools>

Se ejecuta la instrucción y se crea la textura en la carpeta «output/«, ademas del archivo final «mistexturas.png«, se crea otro archivo «mistexturas.atlas«, este archivo contiene las coordenadas de cada imagen que utilizamos en el empaquetado ademas del nombre de cada imagen que nos servirá para identificarlo desde eclipse cuando llamemos a las texturas.

En el ejemplo de este tutorial, utilice tres imágenes en formato PNG que son «ie.png» (el logo de internet explorer), «rei.png» (una caricatura de rei ayanami) y «start1.png» (una pequeña estrella).

gdx-tools.jar por tanto me genero el archivo mistexturas.atlas con el siguiente código:

mistexturas.png
format: RGBA8888
filter: Nearest,Nearest
repeat: none
ie
  rotate: false
  xy: 100, 83
  size: 128, 128
  orig: 128, 128
  offset: 0, 0
  index: -1
rei
  rotate: false
  xy: 2, 20
  size: 96, 191
  orig: 96, 191
  offset: 0, 0
  index: -1
start1
  rotate: false
  xy: 2, 2
  size: 16, 16
  orig: 16, 16
  offset: 0, 0
  index: -1

Se ve que utiliza el nombre de cada imagen como un identificador único, ademas indica las coordenadas donde se encuentra ubicada, el tamaño de la imagen y otras propiedades. Eso es todo 🙂

USO DE ATLAS EN ECLIPSE

Previamente colocamos «mistexturas.png» y «mistextutras.atlas» en una carpeta «texturas/» en la carpeta ASSETS. Para cargar las texturas se utiliza la instrucción:

//cargamos texturas
atlas = new TextureAtlas(Gdx.files.internal("texturas/mistexturas.atlas"));
//extraemos texturas
rei = atlas.findRegion("rei");
icono_ie= atlas.findRegion("ie");

Vemos también como extraer una imagen de ATLAS, «rei» es un objeto de tipo «TextureRegion«.

gdx tools

Ejemplo «Proyecto LibGDX Atlas«

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Tojorí – Java/MySQL

Tojorí – Java/MySQL

Tojorí es una libreria Java/Mysql para la creación de aplicaciones de base de datos utilizando el IDE de Netbeans desde...

Esteganografía y encriptación de imágenes en Linux

Esteganografía y encriptación de imágenes en Linux

En un post anterior conocimos una herramienta Open Source con un conjunto de herramientas para el trabajo con imágenes e...

Juego: Acierta los colores (Código Fuente)

Juego: Acierta los colores (Código Fuente)

Acierta los colores o Adivina los colores es un sencillo juego que consiste en que dado 6 colores «rojo», «verde», «salm...

Plantilla android de aviso de página en construcción

Plantilla android de aviso de página en construcción

Cuando tenemos dominio web pero aun no tenemos el contenido listo es común colocar en su lugar una simple web de aviso q...

Shapes y evento click de jquery

Shapes y evento click de jquery

En este tutorial crearemos shapes en tiempo de ejecución y ademas les daremos un poco de movimiento. Para realizar corre...

Construye tu aplicación de mensajeria

Construye tu aplicación de mensajeria

En este post crearemos una aplicación sencilla para mandar mensajes de texto desde android. Necesitamos IDE: Eclipse + S...

11 comentarios en “Empaquetado de texturas en LibGDX”

  1. Flaco dice:

    Gracias por toda la explicación, esta muy buena. Pero es una lastima que no se puedan ver las imágenes, si las tienes podrías subirlas de nuevo o subir un PDF con toda la información? O enviármela al correo :$ (jrob.olbaid@gmail.com)

    Muchas gracias 🙂

    1. Mouse dice:

      :/ si se puede ver las imagenes

  2. darwinzitto dice:

    buenisimo jc-mouse

  3. Jonatan dice:

    Excelente codigo, bastante complejo!
    Tengo una solo 2 dudas, ¿para que utilizas?:

    /** cuando termina la manipulacion de la celda */
    @Override
    public boolean stopCellEditing() {
    value = ((Boolean)getCellEditorValue()).booleanValue() ;
    ((JCheckBox)component).setSelected( value );
    return super.stopCellEditing();
    }

    En mi caso particular no le encontré funcionalidad. ¿para que usas?:

    /** Constructor de clase */
    setOpaque(true);

    Tampoco le encontré utilidad.

    Muchas gracias por tu tiempo! Un Saludo GENIO!

  4. juan francisco dice:

    esto me sirve para que una programa que yo desarrolle en java usando netbeans use las impresoras conectadas a la pc? o se refiere al imprimir como mostrar por pantalla?

  5. vianey dice:

    excelente Jc muchisimas gracias por todos tus aportes que bien

  6. Mónica Gabriela dice:

    LUPE FUENTES… Jajajaja.

    Lindo ejemplo me srivió.

  7. zX dice:

    Hola Mouse, soy fan de página, que cada vez que tengo una duda escribo esto en el buscador: «Mi duda» + jc mouse. 😀

    Saludos desde México

  8. Manel Gomez dice:

    Hola.

    Estoy interesado en manejar sqlite en el movil. Para eso tu aplicación la he descargado. Con el Eclipse construyo el apk que mando por correo a mi movil. Se instala correctamente, pero cuando la ejecutas sale este mensaje «Lo sentimos. La aplicacion SQLite Extreme (proceso com.bolivia.sqliteextreme) se ha interrumpido inesperadamente, Intentalo de nuevo».

    De tu aplicación no he tocada nada. Por lo que supongo que debe ser del movil.
    Version de android 2.3.5.

    Pregunta

  9. diegodesdecolombia dice:

    https://www.jc-mouse.net/ Muchas gracias de nuevo

  10. zadkiel dice:

    buenisimo.. nunca deja de impresionarme… saludoss…. y sigue asi con tus posts

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Quasar es un proyecto Open Source basado en el Framework Vue que nos permite desarrollar proyectos de todo tipo, por eje...

Continuando el post de «Introducción a Retrofit» donde realizamos una breve preparación a lo que es el uso de la librerí...

Editar un documento PDF no es tan sencillo como editar un archivo de texto por ejemplo, para editar archivos PDFs necesi...

¿Alguna vez tuviste la necesidad de hacer una captura de pantalla de una página web? Si es así, seguramente buscaste y d...

Herramientas

Generador de Enlaces a Whatsapp