Friday, April 26, 2013

Tiled Development Update

It's been a while since the 0.9 release and meanwhile several new features have been added and are already available in the daily builds which are worth mentioning.

Object Flipping and Rotation

First of all it is now possible to flip objects horizontally and vertically. This works on both tile objects as well as polygons, using the same keys as for flipping tiles (X and Y). Second, all object types now feature free 360 degree rotation. Work on these features was sponsored by Ben Wales, who is making his maps primarily by placing tile images.

I started the rotation support by accepting pull request #168, which associated an angle with each object. I then changed the behavior so that instead of drawing an arrow, the objects were rotated. The most time-consuming part was to make it possible to interactively rotate objects, but it was worth it. It's possible to rotate objects either individually or as a group using handles placed at the corners, modeled after Inkscape behavior. You can also hold Control for changing the rotation in increments of 15 degrees.

One point of discussion was where the rotation origin should be. I tried both rotating objects around their position as well as rotating them around their visual center. The latter seemed more intuitive when changing the rotation value by hand, however it caused problems in other cases. The visual center changes for example while resizing an object or when adjusting points on a polygon, which in turn caused rotated objects to shift around while doing such operations. In the end I settled for rotating objects around their position.

Docked Properties Editor

Another major new feature, which had been a long-time goal since years, has recently been triggered by a donation from Victor Chelaru (known for FlatRedBall). Until now the "Properties" dialog in Tiled was an unloved feature. While being the cornerstone for Tiled's flexibility, its user experience was quite bad as modal dialog and its simple table view was behaving strange in some cases and wasn't very intuitive.

This all changed now with the new Properties dock! You can leave it open and it will immediately display the properties of whatever you're clicking on. Also, it displays both built-in as well as custom properties in a single unified tree view, based on the Qt Property Browser solution.

Its unified structure also opens the way for allowing more existing built-in properties to be edited as well as to define types on custom properties (some work has been done on that by Christian Ivicevic at issue #365).

Writing Import/Export Scripts in Python

Thanks to a major effort by Samuli Tuomola, a new Tiled plugin adds support for writing import and export scripts in Python. For some people this greatly simplifies the task of adding support for certain map formats to Tiled. As an example Samuli has added read & write support for maps created in Mappy as well as support for editing maps from the game Pekka Kana 2. More information is available at the pull request.

Feedback Welcome

If you're interested in trying any of these features, please install a daily build or compile Tiled from the master branch. Your feedback is welcome and will help polishing up Tiled for the next feature release!

Finally, if you enjoy using Tiled and would like to help speeding up its development in general, please consider making a small weekly donation through gittip. When just 100 Tiled users would tip an average of $2.50 a week, this would allow me to spend a full day a week on moving Tiled forward!