RPG Maker XP Converter - Conversão de Mapas para o Tiled - 1º Etapa
Autor: João Neto | Publicado: 2014-06-16T09:23:00-03:00

Salve Amigos!


Estou empolgado em manter ativo este blog, e com este novo objetivo em andamento, acho que não terei problemas pra isso :D

No post anterior falei sobre a extração e conversão de dados do RPG Maker XP para um formato legível por outra ferramenta. Antes de qualquer outra coisa, seria preciso ter certeza que os Mapas de jogo do RMXP poderiam ser renderizados no LibGDX, já que há todo um aparato por trás (Tileset, SpritesetMap, Eventos) que fazem o mapa funcionar e, é óbvio, não se tem um jogo de RMXP sem mapas!



Para mim, a opção mais óbvia era usar o Tiled. É uma ferramenta Free, extremamente bem cotada no mercado indie de jogos e o principal: É completamente compatível com o LibGDX! Como eu já havia feito um código de extração de mapas para XML (posso mudar isso para JSON a qualquer momento :P) usei este padrão para fazer a etapa de conversão de mapas. Veja um pouco do que é gerado pelo RGSS como saída para os mapas:

MapInfos
Tilesets

Algumas coisas são bem parecidas, e facilitou muito, como por exemplo:


RXMP e Tiled usam 0 para uma região vazia;
RMXP e Tiled colocam os tiles como sequencia numérica, ou seja, não usam posição X/Y do tile e sim um ID que o identifica;
O RMXP guarda os IDs de 1 a 383 para os Autotiles, independente de haver um configurado ou não. No Tiled, usando o parametro firstgid é possível definir a partir de qual ID o tileset irá começar;


Até aqui tudo normal, consegui transformar o XML de saída do RMXP no XML de entrada do Tiled APENAS PARA O TILESET. &nbsp;

Certo, mas e os Autotiles?
Bom, sinseramente eu não imaginei que seria tão complicado. como é explicado neste post do CodeProject&nbsp;o mapeamento por usando autotiling é bem complexo, e eu teria que desdobrar pra descobrir como fazer isso usando o Tiled. Daí pesquisando um pouco, descobri que o próprio RMXP desdobra os AutoTiles em uma imagem já mapeada e numerada, como a do exemplo abaixo:



Pensando nisso, foi questão de tempo até fazer uma ferramenta que transforma um arquivo de autotile comum e um arquivo com o mapeamento acima. Qual o ganho disso? Este arquivo entra como tileset no arquivo do Tiled, mapeado com o&nbsp;firstgid&nbsp;baseado na sua posição (veja que usei como exemplo uma imagem que&nbsp;começa no ID 48) e então, VOILA! Um mapa completo, incluindo Autotiles!




A primeira etapa esta completa, com isso seria possível construir um modelo usando o LibGDX que carregasse este mapa!

MAS...

O principal problema, que ainda não pensei a melhor forma de fazer é com o AutoTiles animados. O RMXP usa um algoritmo muito complexo que muda apenas os tiles daquela posição se o AutoTile for animado, e isso é bem complexo de fazer usando o Tiled + LibGDX. Como o foco é fazer funcionar bem básico e ir melhorando com o tempo, já tenho uma idéia de como fazer, espero que funcione.
Ainda falta muita coisa, pra falar aqui, mas já posso dar a dica:


Como a proposta é que funcione para Celulares, o movimento do Herói será usando Click-To-Move, ou movimento com o Mouse como muitos conhecem. Já tenho Know-how nisso (Chama-se A* PathFinding) e pelos meus testes vai funcionar bala;
O Mapeamento de colisão vai ser básico por enquanto, ou seja, nada daquela mapeamento complexo que é feito no RMXP, apenas se colide ou não colide;
Deslocamento do Mapa quando o Player Andar: No LibGDX isto é feito com cameras, já sei como fazer e já testei :D


No mais é isso. Próximo Post espero falar mais sobre os mapas, e quem sabe já falar sobre os eventos!

E como eu digo sempre : Be Brave, Be Bold, Create !!
Até a próxima !