Feature(s) Request: Tile management and CSV export estructure

30 views
Skip to first unread message

Thiago M.

unread,
Jul 30, 2014, 10:38:53 PM7/30/14
to mape...@googlegroups.com
Hi, my name is Thiago and I'm a developer for hobby and profession (indie game dev aspirant in the free time). First of all I would like to thank the creator of Tiled for delivering this awesome tool that helps a lot of devs out there to build there games.
 
I'm going to highlight some aspects of Tiled that could be improved (in my humble opinion) or I miss when using it. I really don't know if someone else already asked for that or if is even in the roadmap, so I apologize in advance for the inconvenient if that is the case. I want to point out that I'm totally aware of the costs and the time necessary to implement this possible features since I do this for living, but I still want to share my thoughts with you guys.

-Improved tile management:  We all know that Tiled has his own generic way of managing tiles by using just an spritesheet to keep track of the tiles indexes (and a xml file if you save it); it's good because is fast and without much pain we can start to build something, but is really easy to corrupt a map structure if we have a big project and we need to change our spritesheet (increase/decrease, change tile's position or organisation). My suggestion is to create a simple CRUD for tile management so we can edit/set properties and change tile's individual images or group them as tilesets and of course export/import tileset configurations. It's basically what RPG Maker does but in a small proportion: http://goo.gl/q0PYzN.

-Project structure: I think one of the greatest things ever, would be if Tiled had a project structure instead of just saving and keep tracking of the maps in a .tmx file. In that case the project could be divided in folders (tree view) for easy manipulation and the individual maps can be exported in .tmx files as artifacts. In that case we can separate our project from our maps, like a common IDE would do.

-New export format: My last suggestion is based on my recent efforts to import data from Tiled maps with flipped tiles in it. 
I noticed after some research that when we rotate or flip tiles, Tiled does this weird thing to store the tile information, I think is just awful to use that encrypted notation to hold data because is obscure and do not seem obvious at first sight their purpose like it should (represent tiles id's). So for a more readable and easy way to parse data I came with an idea for a new format that I'm calling: Comma Separated Objects or CSO for short. It's based mainly in Javascript anonymous objects representation with the CSV notation for easy visualization and parsing. (In the worst case scenario is not so slower than parsing a CSV file).
In that case we can represent a range of attributes that could make developer's life a lot easier.

Every entry is an object that contains attributes as a xml tag per say. Applying that notation to Tiled's maps we could for instance, have three attributes called i|r|f that stands for Id, rotation and flipping in that order. 
So, a value of +90 could mean that the tile was flipped 90 degrees (clock-wise) and a value of x/y means the tile was vertically/horizontally flipped. The structure can be something like this:

{i:0|r:+90|f:0},{i:0|r:0|f:y},{i:0|r:90|f:y},{i:0|r:0|f:y},
{i:0|r:+90|f:0},{i:0|r:0|f:y},{i:0|r:90|f:y},{i:0|r:0|f:y},
{i:0|r:+90|f:0},{i:0|r:0|f:y},{i:0|r:90|f:y},{i:0|r:0|f:y},
{i:0|r:+90|f:0},{i:0|r:0|f:y},{i:0|r:90|f:y},{i:0|r:0|f:y},
{i:0|r:0|f:0},{i:0|r:-90|f:y},{i:0|r:90|f:y},{i:0|r:0|f:y},
{i:0|r:0|f:0},{i:0|r:-90|f:y},{i:0|r:90|f:x},{i:0|r:0|f:y},
{i:0|r:0|f:0},{i:0|r:-90|f:y},{i:0|r:90|f:x},{i:0|r:0|f:y},
{i:0|r:0|f:0},{i:0|r:-90|f:y},{i:0|r:90|f:x},{i:0|r:0|f:y},
{i:0|r:0|f:0},{i:0|r:-90|f:y},{i:0|r:90|f:x},{i:0|r:0|f:y},
{i:0|r:0|f:0},{i:0|r:-90|f:y},{i:0|r:90|f:x},{i:0|r:0|f:y},
{i:0|r:0|f:x},{i:0|r:-90|f:y},{i:0|r:90|f:x},{i:0|r:0|f:y},
{i:0|r:0|f:x},{i:0|r:0|f:y},{i:0|r:90|f:x},{i:0|r:0|f:y},
{i:0|r:0|f:x},{i:0|r:0|f:y},{i:0|r:90|f:x},{i:0|r:0|f:y},
{i:0|r:0|f:x},{i:0|r:0|f:y},{i:0|r:90|f:x},{i:0|r:0|f:y},
{i:0|r:0|f:x},{i:0|r:0|f:y},{i:0|r:90|f:y},{i:0|r:0|f:y},
{i:0|r:0|f:x},{i:0|r:0|f:y},{i:0|r:90|f:y},{i:0|r:0|f:y},
{i:0|r:0|f:y},{i:0|r:0|f:y},{i:0|r:90|f:y},{i:0|r:0|f:y},
{i:0|r:0|f:y},{i:0|r:0|f:y},{i:0|r:90|f:y},{i:0|r:0|f:y},
{i:0|r:0|f:y},{i:0|r:0|f:y},{i:0|r:90|f:y},{i:0|r:0|f:y}

Observation: That same attribute structure could be used in xml by adding two more attributes in the tile tag to represent flip and rotation. <tile gid=1 flipping=x rotation=90></tile>
Reply all
Reply to author
Forward
0 new messages