Sunday, May 8, 2011

Tiled Qt 0.6.2 released

This release fixes a few minor bugs reported by users. Since it didn't seem likely that much more fixes would accumulate, it was time to get them out there. The changes are:

  • Fixed object layers losing their color when resizing the map
  • Fixed the tabs in the Tilesets dock to use scroll buttons on MacOS X
  • Fixed window title to update when saving a map with a different name

The 0.7.0 release is expected to be still quite a bit off, but meanwhile you can already compile Tiled yourself from the git master branch to try out some of the new features. These include merging layers, copy & paste support for objects and various improvements to the support for running external commands. Maybe you could even try adding your own favorite feature to the list!

42 comments:

  1. Hello, I'm basically taking a crash course on tile mapping. So far this program has been really easy to work with! I have a couple questions though. I have Tiled 0.6.2. Max OS

    1) I can't figure out how to create objects other than squares and rectangles. I thought I saw a circle object but I can't figure out how to get it. This leads to question 2.
    2) Within my game I would like one contact point be a star. When user/character touches the start it disappears. If I draw a rectangle object within Tiled and assign a star PNG to that object in the code would the boundary of the star be the contact point or would the boundary of the rectangular object be the contact point? I would like the star itself to be the contact point but if that is not possible then I will have to draw a rectangle to match the size of the star as closely as possible.
    3) Consider a tile within a layer that is semi transparent. Let's say a tile contains a semi-circle shape and the rest is transparent. I want the game to end when a player touches the semi-circle and not when they touch the transparent section of the tile. Is this possible or am I limited to each tile. If that is the case I will just reduce the size of my tiles to match the curve of the semi circle as close as possible.

    I will check this thread again. Or email me: Nickadren@gmail.com
    Thank you for your time.

    ReplyDelete
  2. @nickadren

    1) It is currently not possible to create objects in shapes other than rectangles. Some work on this has been done, but it's not finished yet. The circle objects you may have seen were probably 0-sized objects in old Tiled versions, which used to draw as a small circle.

    2) Note that since Tiled 0.6 it's possible to use a tile graphic for your objects. So if you make your star part of a tileset then you can place it visually and don't have to manually associate this png with the object. How you handle collision in your game engine is up to you.

    3) This is also a case of collision detection that's simply up to you to handle. You write the collision code in your game engine, so you just implement what you need there.

    ReplyDelete
  3. That is great information. Thank you for the quick response.
    1) I look forward to seeing the work on these other shapes.
    2) The programmer wants me to create the Tile Map. If I make my star part of the tile set it will be contained within one of the tile map squares. It will have a transparent background. I'm afraid that the contact point will be with the corners of the tile and not that star within the tile. It sounds like this is something that the programmer can handle. Since I'm not familiar with programming this is a little difficult for me to understand.

    3) Sounds good. I will have to talk to the programmer and see what they can do.

    ReplyDelete
  4. Hello.

    It might be easy, but, how can I import an entire map into Tiled? I have a map whose dimensions are 1630x830 and want to convert it into a tiled map. I don´t see any form of doing it by importing it. I´ve tried some things but with no fortune. I want to import the entire map and then convert it into tiles, no being adding tiles but just one big tile that I can convert later into little tires to avoid going one by one. Any help would be grateful, thanks.

    ReplyDelete
  5. Solved. Created one layer with two tiles and then two parts of the image, another layer with the tiles I need.

    ReplyDelete
  6. I need to divide maps into different regions by assigning a number to each tile. Is that possible, by editing maps in a fast grid like fashion and typing cell values directly ?

    ReplyDelete
  7. @Stefan

    No, this is not possible. Instead of assigning a number to each tile though, you could use an object layer and indicate your regions using objects, and then associate the number as an object property.

    Alternatively, if you only have a limited range of numbers, you can create a tileset consisting of numbered tiles (or something more graphical like colors or icons when applicable), and use that tileset on a special tile layer that you will handle in your engine. You can use either the tile index or tile properties to be able to identify the tiles in your engine.

    ReplyDelete
  8. I think placing "virtual value tiles" on object layers using the mouse would be best for me, too bad you switched from Java to C++, otherwise I would have tried to add that feature :)

    ReplyDelete
  9. Hi,

    I've noticed the attributes 'width' and 'height' in the 'tileset' block. Couldn't they be used to resize tileset horizontaly? They save the size the tileset was imported with and when the tileset gets resized in width Tiled automaticly shifts the ids of the tiles.
    Just an idea...

    ReplyDelete
  10. @m0r3y

    Yes, this possibility is one of the reasons that information was added (somewhat recently) to the TMX file. But so far I haven't gotten around to actually using this information to correctly map tile IDs to the right tiles.

    ReplyDelete
  11. @maqibooy

    You may follow this issue: https://github.com/bjorn/tiled/issues/1

    It's not a high priority for me though. Either you can help to get it in, or wait until you get lucky. :)

    ReplyDelete
  12. @tl

    If it's only a new renderer it feels simple enough for me to look into. But I'm also in need of the json exporter I saw someone working on... If you have the json exporter into your trunk I will submit the renderer!

    ReplyDelete
  13. @maqibooy

    I will look at the JSON exporter as soon as I have time, but you can already try it out by pulling it from here: https://github.com/porfirioribeiro/tiled

    ReplyDelete
  14. Just wanted to start by saying that this is an amazingly powerful yet intuitive program, and it's exciting that the program is still being actively built!

    One factor I'm curious about is the translational orientation of a tile image relative to the placement cursor when placing a tile into a map layer. For example if one defines a map with tile dimensions 16x16, but then creates a new tileset with tile dimensions 32x32, it seems that when any tile from that tileset is placed onto the map, the image contained within the tile is oriented so that its *lower-left* corner is anchored into the tile slot of placement in the map. Is this intended to be a *feature*? I bring this issue up, because the couple of game engines I've worked with in the past and present define objects and images such that their origin is located at the *upper-left* of the given image/object, and so seeing Tiled treat tile images in the same fashion would definitely be helpful from a coding perspective!

    I'm just a hobbyist game programmer, so my apologies if I'm suggesting a change that goes against "industry standards" :). (I've got a copy of the source code and have been actively trying to track down where tile image origins are defined during map placement, in the event this change isn't implemented into the main source code!)

    Thanks for reading!
    Nick

    ReplyDelete
  15. I'm not sure how at all to do plugins... I need one that makes a simple binary file that the first two bytes are Width and Height (in tiles) of the map, 1 byte for number of layers, has 61 bytes of "00", then all the layers from bottom to top in a 1 byte per tile, read like a book sort of file... extension .RDF

    Soo... for a 32x32 with 3 layers...

    20, 20, 03, (61x) 00, [Bottom drawn layer = 1024 bytes], [Middle drawn layer = 1024 bytes], [Top drawn layer = 1024 bytes] = 3136 byte file

    Is anyone able to help me accomplish this?

    P.S. - Other than that, I find this program PERFECT for the large game I'm making. Thanks a lot! Free is usually better (and better cared for). Great work! Keep it up! Might I suggest an easier way to may custom output? :p

    ReplyDelete
  16. @Nicholas

    Bottom alignment was chosen because it's common for games to let tiles overlap a bit with the previously drawn tiles. You can see this happening in for example the isometric example. However, I recognize for some use-cases it would be nicer if they top-aligned, so eventually the alignment could be made an option.

    I hope by now you found where it was (OrthogonalRenderer::drawTileLayer), but it will also need some adjustments in MapScene::repaintRegion or you'll get repaint errors.

    @BricksLamp

    If you get the Tiled source code you will see at least two plugins already implemented (tmw and tengine) that you can use as an example. I think the 'tmw' plugin comes closest to the kind of file you want to write. I haven't gotten around to documenting the process yet but it's actually not that hard. I guess the worst part is that you'll have to compile Tiled yourself to add plugins, basically.

    Thanks to both of you for the good feedback! :)

    ReplyDelete
  17. Hi,

    I'd like to start by saying, thank you very much for making such a great editor for tiled maps. I am creating a 2d game, with multiple layers. I am working off of the latest version in the main GIT branch. Here are a few features I'd love to see.

    (1) I was able to select a region, but am not sure how to copy & paste the region to another location in the tiled map. If I re-size to a larger map and want to insert rows or columns somewhere in the middle of the map, or duplicate some tiles (across all layers) how would I do that?
    (2) It would be nice if the stamp brush can be assigned tiles (or multiple tiles across all layers) directly from the map enabling drag & drop or copy & paste.
    (3) Is it possible to change the background color of the tiled map, or assign a background image?

    Note: I added a feature to my local copy of tiled map editor that you might find useful. What it does is, if you have multiple tilesets and multiple layers, when you select a tileset, the current layer with a matching name is automatically selected. This is nice because I have layers for spawns, properties, and other information and matching tilesets, and would like to see the tilesets automatically placed in the correct layers. The implementation is very simple, in BrushItem::setTileLayer, loop through all layers until a match between tileset and layer name is found, then set the matching current layer on the map document object. Let me know if you find this useful, and I can share it.

    Thanks, and I really appreciate it,
    - Wael

    ReplyDelete
  18. @Wael

    Glad you're enjoying Tiled! However, it seems I really need to write a manual. :)

    (1) Once you have selected a region (I'm assuming with the Rectangular Selection tool), you can just use Ctrl+X and Ctrl+V to cut and paste it. However, it currently works only on the selected layer!

    (2) With the Stamp tool selected, you can obtain a stamp directly from the map using Right-click-drag. Again, just from the current layer, since the stamp is currently one layer only.

    (3) Not yet, but this feature is being worked on and may be available in the next release.

    Your modification sounds useful, though of course in plain Tiled this feature would have to be optional. Please do share your patch. :) In some future version of Tiled it would be nice to support associating tilesets with layers and switch automatically to keep them in sync.

    ReplyDelete
  19. Idea: it would be great to add a "hand" navigation scroller like in Photoshop. Pressing a spacebar would switch current tool to a hand tool that will allow to grabcurrent view and scroll.

    ReplyDelete
  20. @Андрей

    You can drag the map using the middle mouse button, but I agree spacebar would be nicer. I don't think there is a need to make this a tool though.

    ReplyDelete
  21. I'm new to Mac OS X. I'm following along with an older Cocos2D book and the author uses Tile Map Editor 0.5.0. Is there a dmg version available for download? I downloaded the tar.gz version but haven't a clue as to how to install it to my Mac.

    Thanks for any input....

    ReplyDelete
  22. Hi stargames66,

    here http://sourceforge.net/projects/tiled/files/tiled-qt/
    you will find all the different releases.

    So here is 0.5.0 as well
    http://sourceforge.net/projects/tiled/files/tiled-qt/0.5.0/tiled-qt-0.5.0.dmg

    But you can also use the latest as found at this page here, since as of now only new features are added, none are removed ;)

    ReplyDelete
  23. @Андрей

    I've implemented space bar scrolling, see: https://github.com/bjorn/tiled/issues/28

    ReplyDelete
  24. Hi~

    I'm new to the tiled and I have some questions about the usage.

    1). If I want to output the map, it will specify which tile sets being used. Is there a way for me to create a new map with different tile Id which is really used? I mean that if I import an image as tile set and use them for the map, maybe 10 among 100 tiles are really used. Can I merge the really used tiles into new tileset and use that for the map?

    2). The map supports isomatric, can the tile set support that too? I mean to import a image and divide it in different shape just meet the tile. Or is there a way to import a image as the map (instead of tileset) and create the tile grid on the image?

    I would like to know whether tiled has the desired functionality before implementing it into tiled by myself. ^_^

    Thanks...

    ReplyDelete
  25. Hi Ruda,

    1) Have a look here https://github.com/falanxia/tileset_baker/wiki
    That is a project 'baking' together all needed (and only used) tiles to a new tileset. That is not part of tiled (yet;)

    2) Importing an image to a map is done in this project:
    http://sourceforge.net/apps/mediawiki/tiled/index.php?title=Automatically_generating_maps_from_bitmaps
    Well apart from that wiki-entry I am not sure, how you mean tileset support for isometric maps?

    ReplyDelete
  26. Hi Stefan~

    Thanks for the information for the projects. I'll try those scripts and to see whether to implement them in tiled to make the usage more smooth.

    For the tile set question, I meant that when an image is included as tile set, it's divided into tiles in rectangle shape. If we use isometric map, is it possible to divide the image into diamond shape. I mean the tile itself is still rectangle, but only the diamond shape inside it has filled with images, others are left transparent. This may help to make the map. Thanks...

    ReplyDelete
  27. @Ruda

    About creating an optimized tileset for your map, I think that's something that is better to integrate into your tool chain (as part of the build process) rather than doing it manually each time you modify your map. Though of course, there is nothing really against also offering that functionality in the Tiled interface.

    It would be very nice to be able to import a map from an image. The only tricky thing there is that a tileset image will need to be created, which at the moment would mean that at some point a separate file needs to be written. I'm not sure what's the best approach there. Probably the "import from image" action should just ask for a file name at some point.

    Contributions to these features are welcome in any case. :-)

    As for reading isometric tiles, since images are always rectangular this would mean Tiled will have to apply a mask to the tile images in order to avoid part of other tiles to be drawn. If your engine can already do that maybe you have experience with doing this, but are you sure it's worth it? And what about higher isometric tiles like grass or trees that extend beyond the isometric shape?

    ReplyDelete
  28. I have a single tile layer that is 600 tiles wide. What I'd like to do is take that layer and generate 12 tile layers that are 50 tiles wide (i.e. segment1, segment2, etc).

    I'm using AutoMap and I generate that 600 tile wide layer of tiles without any problem. But I was hoping AutoMap would be able to generate the tiles into 12 separate layers. Here's what I tried:

    -I created 12 empty tile layers in my Main map (each 50 tiles wide).
    -I created 1 tile layer in the Main map (600 tiles wide) where I draw my auto mapping tiles.
    -I created 12 tile layers in the Ruleset map, each targeting my Main layers: rule_segment1, rule_segment2, etc.

    When I hit AutoMap in my Main map, each target layer receives all of the tiles from every other layer stacked on top of each other. So I end up with 12 messy layers with the exact same tile layout.

    Any tips or tricks or another way to go about doing this?

    ReplyDelete
  29. Hi Mitch,

    as of now you have 12 segments, containing each the same output in 12 different layers.
    If I got you right, you want a function similar to "Map->Resize Map...", but just for one layer and not the whole map.
    With such a function you could resize&offset each of the 12 layers, so it covers only the desired segment. Unfortunately that function is not (yet;) available.


    As of now you could setup 12 maps by copying each segment into one of these 12 maps. In that map you can delete all the other unneeded layers there and copy back the needed layer into one huge map.

    Did you think about doing 12 different maps?
    (So your game engine could dynamically load the needed maps, resulting in more tricky game engine code, but less memory usage at runtime.)


    Another approach solving your problem would be to extend the capabilities of the AutoMap function:
    You would need 2 set layers, whereas one of them is like the set layer now, and the other is to indicate the segment/level you are in. Then the rules would only apply in an area where you marked it as segment1, segment2...


    As of now you could think of restructuring your automapping rules, so that the rules only contain one output segment, but therefore you'd have more rules.
    (lots of copy&paste I guess)

    I hope it helps.

    ReplyDelete
  30. Thanks for the help. :-)

    I save a lot of time drawing out the tiles using AutoMap since I only need a handful of generic tiles to generate the actual tiles (edges, corners, platforms, etc). It's fine having AutoMap generate the tiles into one long layer, but the copy/pasting into all 12 segment layers is a little tedious since I have to click and select each layer and line up the stamp to paste in the same place each time.

    If I could select multiple layers (all the segment layers) and use just one Paste command to stamp all layers, that would be ideal.

    ReplyDelete
  31. @Mitch

    Maybe you can try to explain why you need your layers set up that way. Possibly you could do this in your game code instead, or write an export plugin for Tiled that does it?

    In any case please use the mailing list or IRC (links in the sidebar), since they are rather more suitable for discussions than the comments section here.

    ReplyDelete
  32. i noticed that tiled starts indexing on 1 and the library that I have for tiling starts on 0, is there any way to change this on tiled?

    ReplyDelete
  33. @prozaker

    In the TMX format, index 0 means "no tile". You should just translate that to whatever is appropriate in your library (either whatever your library uses for representing no tile, or some default base tile in your tileset if this is not supported).

    ReplyDelete
  34. My tiles are 24x24. I'd like to snap my objects on a grid with increments of 12. I wouldn't know how to go about adding a grid subdivision feature, but maybe there's a way I could make the snap-to-grid less snappy (by half). Does that make sense?

    ReplyDelete
  35. Hello Mitch,

    I think you would need to modify around this line:
    https://github.com/bjorn/tiled/blob/master/src/tiled/createobjecttool.cpp#L88
    so

    newSize = newSize.toSize();

    would need a replacement like
    newSize = ....(allowing also half way tiles);

    Stefan

    ReplyDelete
  36. @Mitch

    A little more context: since object positions and sizes are stored in floating point tile coordinates internally, the snapping works by simply rounding this number to the nearest integer (which is what toSize() does). There are several other places in the code that are affected by the snapping option.

    Btw, we've noticed you've made several attempts to ask for help on IRC. However, you always left within a few minutes, making it impossible for anyone to answer you. The way IRC works, is that you're expected to join the channel, ask your question, and then stick around. There's no need to be watching your screen all the time, but just check again later to see if anybody answered you. The other people in the channel are not watching their screen all day either, so give them some time (they even need to sleep, as well).

    ReplyDelete
  37. Hi, I was wondering if you could help me on something.

    I recently downloaded the 0.6.2 version of this program and I'm having some trouble adding object layers.

    When I add an object layer, then click on the map, there is no grey, expandable square that comes up. I am following a few tutorials on tiled maps and I cannot get past this point.

    When I click the "Insert Objects" button on the toolbar and click the map, the program crashes.

    Any help would be greatly appreciated!

    ReplyDelete
  38. the problem seems to have solved itself, thanks!

    ReplyDelete
  39. @agreenape

    This is caused by a known bug in Qt. You can vote on it here, to try getting it fixed for 4.8: https://bugreports.qt.nokia.com//browse/QTBUG-14712

    As a workaround you can close the 'History' dockwindow.

    ReplyDelete
  40. Is there a way to set a certain color so it would be transparent in Tiled?

    ReplyDelete
  41. @steve

    Yes, if you choose 'Map -> New Tileset...' the resulting dialog has a checkbox to enable this feature and a button that allows you to define the color you want to use as transparent.

    ReplyDelete