Los mapas de tiles consisten en diseñar los niveles de los juegos reaprovechando pequeños gráficos una y otra vez, hasta terminar confeccionando un mapa que puede ser muy grande. Esto se utilizaba en los primeros videojuegos para aprovechar los recursos de memória disponible, muy limitada en las primeras máquinas en las que se ejecutaban los juegos.
Pero además este recurso tiene otra ventaja: pocos recursos gráficos necesarios. Es decir, que para diseñar un nivel más o menos grande, no necesitas tener un artista trabajando días y días para diseñar un montón de detalles, ya que si formamos el nivel a partir de pequeñas partes, estas se pueden reaprovechar. Y esto es genial para los desarrolladores independientes
Más información teórica de los mapas de Tiles en la Wikipedia.
En el caso concreto de XNA, tenemos distintas formas de trabajar con Tiles. Algunos valientes desarrollan su propio tile engine. Y muchos “mueren” en el intento –o mejor dicho, su proyecto “muere”-. No vale la pena reinventar la rueda… hay muchos tile engines disponibles, y además gratuitos, así que no nos rompamos el coco. Uno de los más usados, para distintas plataformas es el Tiled Map Editor. Es un engine open source (C++) multiplataforma (funciona en Windows / Mac / Linux). Lo bueno que tiene, además de sencillo, es que fenera ficheros en un formato estandarizado llamado TMX, que no es más que un XML con una estructura determinada. Aquí vemos una captura de pantalla:
Tiene muchas ventajas: gratuito, fácil de usar, permite establecer propiedades personalizadas a los tiles que después podemos parsear en XNA… es una pasada
Tras trabajar con esta aplicación, al final tendremos un fichero tmx y sus spritesheets asociados, de los que se compone el tilemap.
Cómo utilizamos el mapa generado desde XNA? Nada más fácil! Nick Gravelyn y Jesse Chounard han desarrollado una extensión del content pipeline que lee perfectamente el tmx con un simple Content.Load<Map>. La librería se llama TiledLib, y contiene documentación más que suficiente, así como ejemplos que se descargan junto a las dll necesarias.
Esta captura muestra la facilidad de uso de la librería en un juego muy sencillo:
Y eso es todo por hoy. Hasta pronto!