Hola chatos.
(os podeis saltar la historia hasta el párrafo que tiene negrita)
Tenía yo unos editores (5, nada menos) para los metatiles y mapas del World Rally, hechos en BASIC, en una carpeta que abría con el OpenMSX teniendo la carpeta de datos como disco B: Eso me permitía guardar, lanzar el make y probar el resultado en otro emulador. No es que fueran los mejores editores del mundo, pero los piqué en un rato y cumplían su función.
El problema es que los he ido a abrir esta mañana y los .BAS estaban corruptos los. Podría haber tirado de
Fossil para recuperar versiones válidas, pero entre el miedo de que se pudieran corromper de nuevo en el futuro y que ya tenía ganas de replantearme el tema editores, decidí empezar a buscar alternativas.
Lo más interesante que encontré fue Tiled:
- la interfaz me resultaba cómoda.
- el formato de salida es "en claro" (que si el día de mañana deja de existir, se abre con un editor y tienes ahí los datos).
La pega es que no soporta edición de metatiles. Pero pensé que podía editarlos como si fueran un mapa más y sólo era cuestión de reorganizar luego los datos. Ya que iba a hacer el programita para la reorganización, pues si lo hacía que leyera directamente del .tmx lo podía meter en el makefile y que no hubiera ningún paso manual entre editar los mapas y probar el resultado. Y eso hice
(ya acabó la historia; ahora vamos con lo güeno)
Adjunto una herramienta para
convertir mapas de Tiled a binario. El código fuente va incluido.
Es para mapas sencillitos, ya convierte sólo la primera capa.
Como añadido, soporta que el mapa en realidad sea un array de metatiles, organizando la información de forma secuencial metatile a metatile en el fichero de salida (en el readme.txt viene mejor explicado con un ejemplo). Otro uso de esta característica sería poder hacer un mapa completo y que te lo dividiera en pantallas*.
Espero que os resulte útil si ya usais Tiled, o si teneis pensado empezar a usarlo
¡Un saludo!
* si soportara tiles no-cuadrados. Es que esto lo he pensado
a posteriori y el código actual no lo soporta. Si alguien lo necesita que me lo diga, o que toquetee el código que para eso es público