Monday, July 29, 2013

Mac OS X daily builds thanks to new sponsor

Tiled daily builds have been available since a while for Windows, Ubuntu, Fedora and several other GNU/Linux distributions. Now there are daily builds available for Mac OS X as well!

These builds have been made possible by Steffen Itterheim from Kobold Kit, who sent me his Mac mini with a fresh install of Mac OS X 10.8. In addition he also offered to host the builds on his server. A huge thanks to Steffen for this amazing contribution!

Having access to a Mac of course has some other advantages as well. New releases will now always be available for OS X immediately, while before it would usually take a few days. Also, I should now be able to reproduce (and hopefully fix) issues that only happen on OS X.

If you're a Mac OS X user who enjoys making maps with Tiled, be sure to check out Steffen's Kobold Touch and Kobold Kit game engines. They integrate very well with Tiled and add new features based on custom properties like parallax scrolling and physics, and should be a quick way to get a headstart on your game.

Saturday, July 27, 2013

Tiled Qt 0.9.1 released

This is mostly a bug fixing release, adding only some minor things here and there. Notable changes include making sure the JSON format stores everything, fixing string quoting issues in the Lua export and allowing double-click on objects to open their properties dialog. And for those who like to have a lot of maps open at the same time, Tiled should now close a lot faster. Here's the full list of changes:

  • Added saving of map background to JSON format (by Petr Viktorin)
  • Added saving of terrain information to JSON format (by Petr Viktorin)
  • Object Selection tool now always start selecting objects when holding Shift
  • Increased maximum for tileset margin and spacing to 9999
  • Some updates to libtiled-java (by Oskar Wiksten)
  • Install the automappingconverter application (relevant on Linux)
  • Avoid using Windows 95 style (was used on some Linux desktop environments)
  • Removed layer name checks from the Flare export plugin (by Stefan Beller)
  • Double-clicking an object now opens the Object Properties dialog
  • Fixed Object Properties dialog not remembering its size
  • Fixed object drawing order for image saving and mini-map
  • Fixed some plurals in English translation
  • Fixed line widths when zooming in Qt 5
  • Fixed updating of image layer when its opacity or image is changed
  • Fixed display of grid in tileset view on certain zoom levels
  • Fixed save in wrong format after opening a map with plugin (by Mike Hendricks)
  • Fixed closing Tiled being very slow with many maps
  • Fixed saving of image layer properties in the Lua format
  • Fixed escaping of special characters in the Lua format
  • Fixed handling of relative paths for image layers in the JSON plugin

Meanwhile, a lot of new features have already been added for the next feature release of Tiled. I have described some of them in the first Tiled development update and I plan to blog about some other new stuff soon. Don't be afraid to try a daily build! Apart from being able to try the new features, it is also your chance of providing feedback before they enter a stable release.

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!

Wednesday, March 13, 2013

New Tiled website launched

The past month I've been working on a new website for Tiled. The new site communicates better what the main features of Tiled are and improves the visibility of links to related pages and available download options. I also hope you agree it looks a lot better!

An important change I made is to make the option to donate more obvious. My spare time has been very limited since my daughter was born, which will get even worse when the paternity leave runs out (which currently allows me to work part-time for a few months). So, my plan is that when enough people donate to Tiled regularly, I will switch my current full time job to part-time permanently, and spend the freed up time on Tiled instead.

This means the donations will no longer be only a motivation for me to work on Tiled (which can be frustrating when I don't actually have the time), but they will contribute directly to the amount of time I will be able to spend on further Tiled development. The more that comes in, the less I will depend on my current job so the more time I will have for Tiled. I found the most suitable service for this is Gittip, which allows anybody to start or stop contributing at any time and does not charge additional fees. Other options and a rough future roadmap are provided on the Donate page.

With the new homepage, this blog is now a little more in the background. However, I plan to use it more actively so instead of only announcing the new releases I can write a little about new features when they are done for example, or highlight projects related to Tiled. Something in between what the blog was until now and the Google+ page (where of course new blog posts will also be shared).

I'm excited about this new period in Tiled's development. I hope you are too!

Monday, January 28, 2013

Tiled Qt 0.9.0 released

At long last there is a new feature release of Tiled! Ever since 0.8 was released new features have kept accumulating at pretty much the usual pace, so there is a lot of new stuff in this one. It's hard to pick favourites, so I'll only highlight a couple.

Several new dockable windows have been added. There's now a file system view, an object list and a mini-map. These should really help navigating your ever growing world.

Also, many improvements have been made to the automapping system, which can now produce object layers and apply rules while editing. New in this area is the terrain tool, which really helps if its corner-based algorithm works with your tiles.

Here follows the full list of changes:

  • Added objects dock and per-object visibility toggle (by Tim Baker)
  • Added maps dock (by Tim Baker)
  • Added terrain tool for automatic terrain transitions (by Manu Evans)
  • Added a minimap (by Christoph Schnackenberg)
  • Added a staggered isometric map renderer, still without object layer support
  • Added basic image layer support (by Gregory Nickonov and Alexander Kuhrt)
  • Added display of current layer to the status bar (by Tim Baker)
  • Added editable combo box for changing the zoom level (by Tim Baker)
  • Added support for multiple input layers to automapping (by Stefan Beller)
  • Added option to apply automapping rules while editing (by Stefan Beller)
  • Added a converter to update old automapping rules (by Stefan Beller)
  • Added support for objects layers to automapping (by Stefan Beller)
  • Added support for random mode to the fill tool (by Stefan Beller)
  • Added Replica Island plugin (by Eric Kidd)
  • Added option to change the grid color (by Stefan Beller)
  • Added support for ellipse objects (by devnewton and Christoph Schnackenberg)
  • Added name labels for objects on isometric maps (by Andrew Motrenko)
  • Added map property for changing the background color (by Emmanuel Barroga)
  • Added shortcut to manually reload tilesets (Ctrl-T) (by Michael Williams)
  • Added toggle for showing tile object outlines
  • Added support for pinch zooming (by Pierre-David Bélanger)
  • Added initial (non-GUI) support for individual and/or embedded tile images (by Petr Viktorin)
  • Added reading support to Flare plugin (by Stefan Beller)
  • Added a TMX rasterizer command line tool (by Vincent Petithory)
  • Added man pages and desktop file (by Erik Schilling)
  • Made the size and position of most dialogs persistent
  • Respect the original layer data format of a loaded map (by Ben Longbons)
  • Marked Tiled as high-resolution capable on Mac OS X
  • Improved handling of external tilesets in Lua export
  • Reverted tilesets view back to tabs, but with menu button (by Stefan Beller)
  • Allowed plugins to support multiple file name filters (by Samuli Tuomola)
  • Allow saving in any format that can also be read (by Stefan Beller)
  • Fixed eraser skipping tiles when moving fast
  • Fixed bug in Flare plugin (by Clint Bellanger)
  • Fixed compile against Qt 5 (by Kenney Phillis)
  • Fixed resolving of symbolic links while loading map
  • Fixed a crash that could happen after trying to load a faulty map
  • Updated Portuguese, Dutch, German, Spanish, Russian, French, Japanese, Chinese, Brazilian Portuguese, Hebrew and Czech translations (thanks to all translators!)

As evident by the above changelog, this release is the result of a record number of contributors (a total of 33 since 0.8.1). A big thanks to everybody who opened pull requests and persisted through the code reviews!

For authors of frameworks and libraries supporting the TMX format, I've summarized the additions on the wiki.