Tiled como editor de mapas en GNU/Linux

Soporte técnico sobre los lanzamientos de MojonTwins y comentarios sobre los güegos. Ofrecemos soporte técnico con Fourspriter, te ayudamos con ZX Basic o Z88DK, te damos pistas some cómo saltarse un bicho y cosas así.

Moderador: na_th_an

Avatar de Usuario
son_link
Mensajes: 467
Registrado: Mar, 01 Oct 2013, 11:49
Ubicación: Atlantis, Galaxia Pegaso
Contactar:

Tiled como editor de mapas en GNU/Linux

Mensajepor son_link » Sab, 05 Oct 2013, 14:27

Bueno, como algunos ya sabréis por el hilo de la Churrera Installer andaba buscando alternativas de algunos de los programas usados que solo están para Windows sustituyéndolas por alternativas que corran nativamente en GNU/Linux y D_Skywalk comoento Tiled.
Pues bien, esta mañana lo he estado probando y la verdad es que no esta mal, quitando que no tiene una opción del Mappy, y es poder poner guías para dividir la pantallas del juego, si bien abajo te dice en que casilla estas (por ejemplo 16,0, por lo que ya sabrías que estas en la segunda pantalla de arriba)
Para hacer la prueba he creado una de las pantallas del juego del tutorial y guardado al formato nativo (.TMX, que no es mas que un fichero en formato XML) y exportado a un fichero en formato JSON. Esto es una muestra del archivo generado:

TMX (lo he recortado un poco, que son muchas lineas):

Código: Seleccionar todo

<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="orthogonal" width="15" height="10" tilewidth="16" tileheight="16">
 <tileset firstgid="1" name="mappy" tilewidth="16" tileheight="16">
  <image source="mappy.bmp" width="256" height="16"/>
 </tileset>
 <layer name="Capa de Patrones 1" width="15" height="10">
  <data>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="8"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="8"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="8"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="8"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="8"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="7"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="8"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="7"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   <tile gid="1"/>
   ...
  </data>
 </layer>
</map>


JSON:

Código: Seleccionar todo

{ "height":10,
 "layers":[
        {
         "data":[8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 1, 1, 1, 8, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 12, 12, 12, 8, 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
         "height":10,
         "name":"Capa de Patrones 1",
         "opacity":1,
         "type":"tilelayer",
         "visible":true,
         "width":15,
         "x":0,
         "y":0
        }],
 "orientation":"orthogonal",
 "properties":
    {

    },
 "tileheight":16,
 "tilesets":[
        {
         "firstgid":1,
         "image":"mappy.bmp",
         "imageheight":16,
         "imagewidth":256,
         "margin":0,
         "name":"mappy",
         "properties":
            {

            },
         "spacing":0,
         "tileheight":16,
         "tilewidth":16
        }],
 "tilewidth":16,
 "version":1,
 "width":15
}


La parte importante en ambos casos esta dentro de data, que esta dentro de layer (Tiled permite múltiples capas)
Como se ve guarda un numero correspondiente al numero del tiled usado, siendo leído de izquierda a derecha y de arriba hacia abajo.
Yo creo que se puede usar Tiled en lugar de Mappy en Linux, y crear un conversor en Python que coja uno de los 2 formatos que comento (si bien prefiero JSON por que es mucho mas sencillo de usar en Python) y que crease directamente el archivo .h listo para ser usado.
¿Que opináis?
LOAD TAPE ERROR
Imagen
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Tiled como editor de mapas en GNU/Linux

Mensajepor na_th_an » Sab, 05 Oct 2013, 18:17

Considero que no poder poner guías es una putada bastante grande a la hora de hacer un juego por pantallas. Me parece un poco increíble que un editor tan completo no permita algo tan sencillo. Mappy tiene un sistema de plugins bastante potente y se puede añadir funcionalidad programando pequeñas funciones en LUA... ¿No tiene algo parecido tiled? Porque si pudiésemos dotarle de esta característica que falta, sería perfecto.

También está la opción de ponerse a mirar los fuentes o contactar con el autor.

En resumen: me parece guay, pero mucho me temo que hacer un juego con esto sin tener guías de pantallas puede llegar a ser un poquito coñazo :D Solo hay que contar y mirar las coordenadas, pero no me veo yo haciendo un mapa sin guías.

Un conversor sería muy sencillo. Si lees el json y los datos de la capa te quedan en un array, escribir un conversor se me antoja una tarea harto sencilla :)
Como diría Rorshach: "Urm..."
Avatar de Usuario
son_link
Mensajes: 467
Registrado: Mar, 01 Oct 2013, 11:49
Ubicación: Atlantis, Galaxia Pegaso
Contactar:

Re: Tiled como editor de mapas en GNU/Linux

Mensajepor son_link » Mié, 09 Oct 2013, 09:59

He estado revisando las opciones y mirando la documentación, pero no hay nada para poner guías, salvo que alguno sepa de Java e intente hace una extensión que lo haga posible.
Buscare otras posibles opciones y comento en este mismo hilo
LOAD TAPE ERROR
Imagen
Avatar de Usuario
angel
Mensajes: 23212
Registrado: Vie, 09 Ene 2009, 13:04
Ubicación: Torreznolandia
Contactar:

Re: Tiled como editor de mapas en GNU/Linux

Mensajepor angel » Mié, 09 Oct 2013, 10:46

Echadle un vistazo a este:

http://gbamapedit.sourceforge.net/

Igual sirve :D
(_\_) (_|_) (_/_) (_|_) ILLO KE HEHEHEHEHEHEEEHEHEHEH!

¡Activa tu rainbow pechónico!
Avatar de Usuario
son_link
Mensajes: 467
Registrado: Mar, 01 Oct 2013, 11:49
Ubicación: Atlantis, Galaxia Pegaso
Contactar:

Re: Tiled como editor de mapas en GNU/Linux

Mensajepor son_link » Mié, 09 Oct 2013, 11:38

angel escribió:Echadle un vistazo a este:

http://gbamapedit.sourceforge.net/

Igual sirve :D

Es viejo, no se actualiza desde el 2005 y no compila con la versión 4.8 de GCC. Probare con versiones anteriores a ver
LOAD TAPE ERROR
Imagen
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: Tiled como editor de mapas en GNU/Linux

Mensajepor antoniovillena » Vie, 25 Oct 2013, 10:41

He creado unas utilidades para pasar los mapas de Mappy a Tiled y exportar a código los mapas de Tiled. De hecho iba a crear un hilo nuevo al respecto pero como ya estaba este, pues os lo robo.

La aplicación es ésta:

http://retrolandia.net/foro/showthread. ... 78&pid=441

Como véis he resuelto el tema de las líneas divisorias de una forma cutre pero eficaz. Lo siguiente a integrar son los enemigos para así poder prescindir del colocador. Todavía no me he empapado muy bien en el formato de enemigos/colocador, aun así prefiero pedir ayuda para ver cómo metemos los enemigos en el mapa.

La idea base es crear una nueva capa del tipo "Capa de objetos", intruducir el tileset de los sprites (sprites.png) como segundo tileset y ubicar los sprites dos veces por cada enemigo (como objeto en la capa de objetos, no como tile en la capa de patrones original). Supongo que el tipo de enemigo ya viene identificado por el sprite por lo que no hace falta añadir esa información. Sin embargo sí que es necesario indicar que ambos sprites pertenecen al mismo enemigo mediante un identificador, y la velocidad que llevan. También habría que introducir los hotspots, ubicando un único punto. El caso es que no sé cual es la forma más apropiada para hacerlo. Cada objeto tiene 2 atributos (nombre y tipo) y todas las propiedades que queramos. Podemos poner por ejemplo una propiedad que se llame speed y valga 1, 2 ó 4 y cosas así.

¿Sugerencias?
Avatar de Usuario
son_link
Mensajes: 467
Registrado: Mar, 01 Oct 2013, 11:49
Ubicación: Atlantis, Galaxia Pegaso
Contactar:

Re: Tiled como editor de mapas en GNU/Linux

Mensajepor son_link » Vie, 25 Oct 2013, 10:57

La idea me parece buena.
A ver que opina el resto
LOAD TAPE ERROR
Imagen
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Tiled como editor de mapas en GNU/Linux

Mensajepor na_th_an » Vie, 25 Oct 2013, 11:05

Una cosa sobre los enemigos:

Aunque actualmente el colocador, además del formato propio .ene, exporta archivos de código .h con todo lo necesario, tengo terminado un "conversor total" que genera un binario completo del nivel (mapa, gráficos, colocaciones de enemigos/objetos). Este conversor utiliza los archivos .ene del colocador, así que si váis a hacer algo, es necesario conservar ese tipo de archivos "intermedio".

Los archivos .ene son muy sencillos:

Código: Seleccionar todo

CABECERA

Offset  Size    Qué
========================================================
0       128     nombre del archivo del mapa (.MAP)
128     128     nombre del archivo del tileset (.BMP)
256     1       map_w
257     1       map_h
258     1       scr_w (siempre 15 para la churrera)
259     1       scr_h (siempre 10 para la churrera)
260     1       n_enem (siempre 3 para la churrera)

ENEMY CHUNK. Habrá map_w * map_h * 3 de estos
a partir del byte 261:

Offset  Size    Qué
========================================================
0       1       tipo de enemigo
1       1       posición x inicial (en tiles, 0 - 14)
2       1       posición y inicial (en tiles, 0 - 9)
3       1       posición x final (en tiles, 0 - 14)
4       1       posición y final (en tiles, 0 - 14)
5       1       velocidad (en píxels por frame, 0, 1, 2, 4, 8)
6       1       sin usar
7       1       sin usar

HOTSPOT CHUNK. Habrá map_w * map_h de estos,
a partir del byte 261 + (map_w * map_h * 3) * 8:

Offset  Size    Qué
========================================================
0       1       xy, posición del hostpot (en tiles, packed, XXXXYYYY)
1       1       t, tipo del hotspot
Como diría Rorshach: "Urm..."
antoniovillena
Mensajes: 494
Registrado: Jue, 24 Oct 2013, 15:52

Re: Tiled como editor de mapas en GNU/Linux

Mensajepor antoniovillena » Vie, 25 Oct 2013, 11:37

na_th_an escribió:Aunque actualmente el colocador, además del formato propio .ene, exporta archivos de código .h con todo lo necesario, tengo terminado un "conversor total" que genera un binario completo del nivel (mapa, gráficos, colocaciones de enemigos/objetos). Este conversor utiliza los archivos .ene del colocador, así que si váis a hacer algo, es necesario conservar ese tipo de archivos "intermedio".


No hay problema, puedo hacer una utilidad Tmx2Ene o algo parecido.

na_th_an escribió:Los archivos .ene son muy sencillos:

Código: Seleccionar todo

CABECERA

Offset  Size    Qué
========================================================
0       128     nombre del archivo del mapa (.MAP)
128     128     nombre del archivo del tileset (.BMP)
256     1       map_w
257     1       map_h
258     1       scr_w (siempre 15 para la churrera)
259     1       scr_h (siempre 10 para la churrera)
260     1       n_enem (siempre 3 para la churrera)

ENEMY CHUNK. Habrá map_w * map_h * 3 de estos
a partir del byte 261:

Offset  Size    Qué
========================================================
0       1       tipo de enemigo
1       1       posición x inicial (en tiles, 0 - 14)
2       1       posición y inicial (en tiles, 0 - 9)
3       1       posición x final (en tiles, 0 - 14)
4       1       posición y final (en tiles, 0 - 14)
5       1       velocidad (en píxels por frame, 0, 1, 2, 4, 8)
6       1       sin usar
7       1       sin usar

HOTSPOT CHUNK. Habrá map_w * map_h de estos,
a partir del byte 261 + (map_w * map_h * 3) * 8:

Offset  Size    Qué
========================================================
0       1       xy, posición del hostpot (en tiles, packed, XXXXYYYY)
1       1       t, tipo del hotspot


Gracias por la info, os muestro la idea que tengo en mente. Echadle un vistazo a este mapa (de dogmole) en el que he pasado a mano los enemigos de la primera pantalla. Para los hotspots he usado un círculo porque no me convence ninguno de los sprites, pero se puede cambiar. También podemos poner la velocidad en parte del nombre o el tipo, y así no tener que usar atributos. Os aconsejo mirar también el código XML con un editor. Por cierto tenéis que ubicar este archivo en el directorio /map, para que estén accesibles los tilesets en ..\gfx\work.png y ..\gfx\sprites.png
Adjuntos
mapa.zip
(1.58 KiB) Descargado 178 veces
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Tiled como editor de mapas en GNU/Linux

Mensajepor na_th_an » Vie, 25 Oct 2013, 11:54

Ahora mismo no me puedo poner a instalarme cosas en el curro, pero cuando arrive a casa, mereche un premio ;)
Como diría Rorshach: "Urm..."

Volver a “Ayuda”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado