Razón Artificial

La ciencia y el arte de crear videojuegos

Engine VI: El formato TMX

Escrito por adrigm el 1 de junio de 2010 en Desarrollo Videojuegos, Noticias, Programación | 1 Comentario.

En este artículo vamos a analizar el archivo que nos ha generado el Tiled Map Editor, un fichero con extensión .tmx que hemos guardado en la carpeta maps. Es un archivo XML, para el que no sepa lo que es, es un lenguaje de marcas que guarda información mediante etiquetas (a grandes rasgos, podéis buscar más en la red). Pues bien al ser simple texto plano lo podemos abrir con cualquier editor de textos (El geany que utilizo yo me resalta las etiquetas). Vamos a analizarlo:

<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="35" height="25" tilewidth="40" tileheight="40">
 <tileset firstgid="1" name="tile_bosque" tilewidth="40" tileheight="40">
  <image source="../graphics/tilesets/tile_bosque.png" trans="#ff00ff"/>
 </tileset>
 <layer name="Base" width="35" height="25">
  <data encoding="base64" compression="gzip">
   H4sIAAAAAAAAA+2Tuw6AIAxFWRl9DaiL+v//KAtJc5NaEismeoczQdtTwo0hh...
  </data>
 </layer>
 <layer name="Montañas" width="35" height="25">
  <data encoding="base64" compression="gzip">
   H4sIAAAAAAAAA+2W2UpDQQyG+...
  </data>
 </layer>
 <layer name="New Layer" width="35" height="25">
  <data encoding="base64" compression="gzip">
   H4sIAAAAAAAAA2NgGHrAH4gDSFC/EYg3AfFmKN+DinaHA3EEEfqQ7dwFxLup4AZ0u...
  </data>
 </layer>
 <objectgroup name="Eventos" width="35" height="25">
  <object name="heroe" x="625" y="544"/>
 </objectgroup>
</map>


La primera línea está en todos los documentos XML e indica que tipo de documentos es y la codificación. Luego comienza el árbol de nuestro mapa, la primera etiqueta “map” contiene la orienteción, los tiles de ancho y largo de nuestro mapa y el tamaño de los tileset. Todos los que definimos cuando creamos el mapa.

A continuación viene la información de los tilesets. Nos indica el número de tileset que es “firstgid” (un mapa puede tener varios tilesets a la vez. Luego el tamaño de los tiles del tilesets y dentro contiene una etiqueta con la dirección de la imagen del tileset y el color transparente (si hemos definido uno).

Luego carga las diferentes capas nos da el nombre, el ancho, dentro contiene una etiqueta data muy extraña. Esta etiqueta data tiene dos atributos encoding=”base64″ y compression=”gzip” esto quiere decir que la cadena que contiene esta codificada en base64 y comprimida con gzip ¿Por qué esto? Pues porque contiene la etiqueta data es una lista de etiquetas por cada uno de los tiles de nuestro mapa que contiene el número de tile del tileset que está usando (y esta lista es enorme) por lo que para que los ficheros de mapa no ocupen tanto se codifican y se comprimen. En el próximo tutorial veremos como decodificarlo y descomprimirlo con Python.

Por último está la capa objectgroup. Esta son las capas de “eventos”, vemos que contiene el nombre que hemos puesto “Eventos” y el ancho y el alto (por defecto como todas es igual al tamaño del mapa). Dentro contiene un solo evento, porque solo uno creamos. Los eventos se llaman object y vemos que contiene el nombre que le pusimos y la posición x e y.

Hay más datos que se guardan que en este mapa no aparecen porque no hemos puesto, pero creo que se capta la idea de como guarda la información de nuestro mapa el archivo tmx. En el siguiente artículo veremos como leer esta información con Python para cargar los mapas.

Un Comentario en "Engine VI: El formato TMX"

  1. […] Engine VI: El formato TMX […]

Deja un comentario