AS3 – Juegos – Calculadora y Generador de caracteres de prueba para mapas basados en tiles

Útilidad: Generador de caracteres para mapas de tiles Año: 2011 V.: AS3
Generador de tiles [e]

Esta utilidad tuve que hacerla porque estuve programando y experimentando con un motor 2D basado en súper tiles por capas y para mapas muy grandes con el objetivo de hacer por ejemplo juegos de rol, el motor se encarga de ir cargando los tiles por donde el personaje va avanzando y descargando los que ya están fuera de pantalla, por lo tanto no existe limitación de tamaño de mapa y se pueden hacer mapas realmente de gran tamaño, excepto por parte de la base de datos.

La idea es poder guardar en un solo campo de una bdd mapas muy grandes o saber como de grandes pueden ser nuestro mapas por cada campo.

Imaginad que tenemos un campo mysql donde solo caben 23 caracteres entonces solo podríamos guardar en dicho campo el nombre de 4 imágenes junto con el separador que sería por ejemplo una coma, en ese caso solo podríamos guardar algo como esto–> 1.jpg,2.png,3.jpg,4.png ya que en total la cadena suma 23 caracteres.

Ahora supongamos que esas 4 imágenes cada una mide 150x150px cada una, entonces en total tendríamos un mapa con una resolución de 300×300 px, este sería el tamaño máximo de nuestro mapa, claro está que también depende del tamaño de cada tile, podríamos poner tiles de 250px de resolución con lo que nuestro mapa pasaría a ser de 500x500px en definitiva cuanto más grande el tile mayor mapa por menos caracteres, Aunque esto conlleva un problema y es que a tiles más grandes, mayor será el tiempo de carga por cada uno.

También podemos conseguir mapas mayores si buscamos una abreviación para los nombres de las imágenes, por ejemplo en vez de utilizar 3 caracteres para la extensión podemos especificar 1 solo, con lo que para identificar una imagen .jpg pondríamos .j para una .png seria .p para cargar una swf como tile animado pues seria .s de esta manera teniendo en cuenta la limitación de nuestro campo de 23 caracteres en vez de cabernos 4 imágenes nos cabrían 6, ejemplo: «1.j,2.j,3.j,4.j,5.j,6.j», en cuyo caso si la resolución de cada tile fuera de 150px obtendríamos un mapa de 450x300px algo mayor que los 300×300 px anteriores.

Incluso podríamos quitar el punto que separa el nombre del archivo de la extensión, ya que sabríamos que al convertir toda la cadena en un array y recuperar el nombre de la imagen/tile solo tenemos que sustraer el ultimo carácter para averiguar la extensión del archivo y así cargarlo correctamente, además si nuestra idea fuera cargar imágenes en un solo formato no necesitaríamos especificar ni la extensión con el consecuente ahorro de caracteres, tan solo necesitaríamos especificar el nombre del tile y el separador que para los ejemplos yo he usado la coma.

Podríamos ir más lejos y ni tan siquiera especificar la coma, si vamos a utilizar un gran número de tiles diferentes en un mapa, supongamos que vamos a utilizar 99 tiles diferentes para un mapa, algo realmente bestia, porque por lo general para ambientar un terreno del desierto no necesitas tantos tiles diferentes por lo menos en la primera capa, pero bueno, vamos a suponer que utilizamos 99 tiles diferentes para representar un terreno, sabiendo que cada uno se llamara de la siguiente manera, 00.jpg 01.jpg 02.jpg hasta 99.jpg bien pues sabiendo esto no necesitaríamos ni especificar la extensión ni un separador, porque sabríamos que tendríamos que cortar la cadena cada par de valores e introducirlos en un arreglo por lo tanto podríamos guardar la info de nuestro mapa tal que así 00010203040506070809101112 con lo que con una limitación de 23 caracteres conseguiríamos guardar 11 imágenes con lo que obtendríamos un mapa mayor.

Bien ahora supongamos que queremos mapas mas grandes porque con 23 caracteres no tenemos suficientes, bueno pues calculando la posición en el mapa se podrían ir cargando dinámicamente los caracteres de otros campos de la bdd.

Ahora sabiendo esto y sabiendo que en un campo mysql caben más de 23 caracteres algo así como 50.000 caracteres o más, pues comprenderéis que asignar los nombres de los tiles para un mapa grande se podía complicar bastante, ósea para hacer pruebas y cálculos para montar mapas de prueba y testear tamaños y el comportamiento del motor de manera rápida era algo complicado, así que la carga dinámica de mapas extra grandes basado en Súper tiles tuve que hacerme una utilidad básica que lo hiciera por mí.

El programa mediante el formato de la imagen dado el separador a utilizar y la resolución que escojamos te dice la cantidad de tiles que se van a utilizar la resolución que alcanzara según el tamaño de cada tile y la cantidad de caracteres que serán necesario guardar en la base de datos, a su vez genera una cadena con todos los tiles necesarios par a dicha resolución y con el formato indicado que solo es necesaria copiar y pegar en un campo de la base de datos para poder generar el mapa. El programa solo genera los tiles con un nombre, por lo que todas las texturas cargadas serán las mismas con lo que genera un terreno con todos los tiles iguales pero ya digo es un programa básico para realizar cálculos y pruebas de funcionamiento y para hacerse una idea del tamaño de los mapas no es un editor de mapas de tiles.(Aunque también hubiera tenido que hacer el editor al final)

Una cosa que quería comentar es que si quisiéramos importar más 80.000 caracteres de un campo mysql a flash es posible hacerlo cargando el contenido del campo mysql por partes.

 
 
[SWF]http://jvm.bricobit.com/wp-content/uploads/juegos/tilegen/generadorPruebas.swf,550,1150 [/SWF]

[download id=»12″ format=»2″]