September 2015 development updates

Week 37

Around this time last year I attempted to write weekly development updates, but they stalled after the second week, mostly since I was struggling to find time for Tiled. Things are very different now. Since the start of June I can afford to spend at least one full day per week on Tiled, thanks to the generous support from patrons. Since then I’ve been writing weekly development updates, visible only to patrons. Now, in order to raise awareness about the activity around Tiled, I’d like to start doing them in public.

As the Tiled roadmap on Trello shows, I’ve made good progress towards a Tiled 0.14 release. Its main new features will be support for external tilesets in JSON format, support for offsetting layers by some distance in pixels and the return of the object name labels.

I’ve actually finished these features in August in about 6 days funded by patrons. This month, I’ve released Tiled 0.13.1 with updated translations and I’ve been preparing the Tiled 0.14 release by announcing string freeze and fixing issues.

One thing I tried that I didn’t push to the master branch is to add an option to show the new object name labels for the hovered object. When I was done implementing this and tested it, it seemed to me mostly just annoying. I’ve pushed this to the wip/labels-on-hover branch for those who want to try it out (Windows users can find an installer with this feature on AppVeyor). Please provide feedback if you try it.

Pull Requests

  • MERGED: libtiled-java: Fixed loading of objects with floating point positions and dimensions (#1029)
  • MERGED: Updated Russian translation (#1073)
  • MERGED: Updated Spanish translation (d0e0aed)

Closed Issues

  • Fixed updating of current tile when changing map (#1058)
  • Fixed animated tile overlay to look less odd in some cases (#1061)
  • Don’t pop up a Save As dialog when saving fails (#1065)

In addition, I’ve made several commits to fix the Travis CI builds, so that compilation tests, source code checks and autotests are run on Linux again for each commit and pull request.

A Look Ahead

While I try not to forget to tackle remaining issue for Tiled 0.14, I will be starting to work on closing issues that I find important for Tiled 1.0. I need to be careful not to increase the scope of this release too much, to keep a release later this year feasible.

Another thing I will work on over the next weeks is to try increasing the support I receive to the point where I could start spending two full days/week on Tiled. I’m collecting ideas for this at issue #1064.

See you soon for the next update!


I do not understand what should happen here? For the the labels show up always and I do not see any option related to this in the settings.

If you compile the wip/labels-on-hover branch, you’ll see this option in View -> Show Object Names -> For Hovered Object.

Ah… There…

I find the menu a bit confusing. Selecting For all objects makes the For Hovered Object irrelevant…

Why not simply enable the name display on hover always? I do not find it very disturbing.

I also found the menus confusing. Seems like you shouldn’t be able to select both “For All Objects” and “For Hovered Object” at the same time, and when I selected “Never”, I kind of expected it to also disable “For Hovered Object”.

However, I think this is a great feature and didn’t find it annoying at all, once I figured out how to use it! I can see it being nice for a very dense map, for example, with lots of objects, to not have all the labels there all the time, and just show on hover. For a sparse RPG tilemap with mostly warp objects, it would be fine to have the labels there always. It’s nice to have options!

In either case, I think this is a very useful, non-annoying feature, and the labels look great!

I do sometimes see an additional name tooltip when hovering over the object, whether labels are on or off. Is this intentional?

Ok, I’ll have to figure how how to make the menu less confusing and aim for including this feature in Tiled 1.0. My problem was that actually all of the following would make sense:

  • No labels
  • Label on hover only
  • Labels on selection and label on hover
  • Labels on selection only
  • All labels

So separating the hover option I could reduce the menu to just 4 items, but I have to agree it’s confusing to combine “No labels” with “Label on hover”.

Right, with labels showing up on hover I will retire that tooltip. Though it does show also the object type field, which can be useful so that will become possible with the new name labels as well then.

Maybe I can make the labels on hover a bit less annoying (well I personally found them annoying) by delaying their appearance a little, like the current tooltip (but probably not by that long).

Right, so as per the last remark in my previous post, I should probably just consider replacing the existing standard tooltip with this label. If I just delay it a bit, it should be no problem and there should be no reason to disable it I think.

Week 38


Last Friday I worked on the Tiled Bountsource page in preparation of its announcement to people who followed me, starred Tiled or forked Tiled. The first update was sent Friday rather deep in the night.

Right now, I’m a little sad that this work has only lead to two one-time donations and no new monthly supporters. I will keep the focus on Patreon as the platform to support my work, since I think having two pages is not worth the confusion. Also, while Bountysource has some nice features, Patreon currently wins in terms of communication with supporters, which I think is a big plus.

Tiled Monday

Yesterday was an eventful day with lots of small things done and two closely related convenience features added for Tiled 0.14.

I started the morning reviewing a pull request from Jake Petroules that improved the Qbs project files. I find it awesome that this guy, who’s actually a developer of Qbs, spends time helping the Tiled project to use it properly. The improvements were mainly for building Tiled on OS X, where I hope to eventually also replace the usage of qmake with Qbs. On Linux and Windows, I already recommend people compiling Tiled themselves to use it instead of qmake.

In the afternoon I made the tile selection in the Tilesets view synchronize with captured tiles from the map view. This had actually been requested already almost a year ago and then it was requested again a week ago. It just made sense to add it, since it makes it much easier to find out which tile is used somewhere in certain situations, as well as providing quick access to its properties and its animation/collision information.

Then I did a similar thing when the user selects a tile object. It does not actually select the tile in the Tilesets view, because I am afraid that this would be annoying since it would affect which tile is then inserted by the Insert Tile tool. But it does synchronize the tile animation and tile collision editors to show the associated tile, closing another feature request made three months ago.

I spent some time unsuccessfully trying to find the cause of a recent crash report on Windows 10 (any help to reproduce this welcome).

Finally I made Tiled compile with Visual Studio 2013 again, mostly in order to enable 64-bit Tiled builds on AppVeyor, including to produce a Windows installer. These builds will not come with Python support for now, but they’re there mainly for those with > 3 GB memory requirements for editing their maps.

Summary of issue activity on GitHub

  • 6540… Updated Japanese translation - Applied
  • #822 UI pattern for collision editing from map - Implemented
  • #846 Tiled Collision Editor not working - Duplicate
  • #910 App crash when i changed settings. - Duplicate
  • #977 Open collision editor from the tile object context menu - Implemented
  • #1072 Qbs build improvements - Merged
  • #1076 Suggestion: implement support for exporting files to the Unity engine. - Out of scope
  • #1078 Updated Czech translation - Merged
  • #1080 Updated French translation - Merged
  • #1082 Win 10 constant crash - Duplicate
  • #1083 Support middle click + drag to move palette - Duplicate
  • #1085 Tiled crashes when it cannot use Hardware accelerated drawing OpenGL - Duplicate

Looking Ahead

I’m aiming to release Tiled 0.14 before next Monday, so that I will be able to focus fully on the tasks leading up to Tiled 1.0 from then on.

Week 39

As I wrote in my previous update, last week I wanted to do the Tiled 0.14 release so that on Monday I would be able to start on Tiled 1.0 tasks. Unfortunately I had pretty much no time to work on Tiled this week and then in the weekend my daughter had a cold, so all the release work ended up having to be done on Monday.

Tiled Monday

I started out in the morning trying to fix some known issues on OS X. One lead to a Qt bug report regarding missing mouse release events for the middle mouse button. Another I managed to work around by disabling an optimization. OS X is actually the platform with the highest number of open issues, but I only have an old Mac Mini (which I’m very thankful for, @TilemapKit!) so it’s never much fun to try reproducing and fixing them. But it always feels good to make some progress in this area.

In the meantime, on my PC I toyed around with clang-modernize in order to automate the process of switching to some of the features added in C++11. I managed to get it to replace all 0 with nullptr where appropriate and to add override keywords where applicable. These transitions were probably the least interesting, so I’m glad this tool is available to automate it.

I remembered that I still had to adapt the fill tool to work with tile stamp variations that were added in Tiled 0.13. This took about 2 hours, but I think it was worth it. It was also anyway a task that would have been open for Tiled 1.0.

Finally, I updated the Dutch translation, made sure all the texts with plural forms showed up correctly in English, merged an update to the Bulgarian translation and tagged the release! Unfortunately, when I was almost done writing the Tiled 0.14 release notes, a bug was reported in one of the new features. I had no time to fix it anymore, so I now aim to fix it soon in Tiled 0.14.1.

Summary of issue activity on GitHub

In recent weeks, the issue count on github was actually on a slightly downward trend, but this week more issues were created than I could close.

  • #1055 Side bar pane collapses on OS X - Fixed
  • #1075 Updated German translation - Merged

Looking Ahead

I’ve done some planning for the Tiled 1.0 milestone. It now has quite a few “missing features” added to it, and even two features which I consider very important. One is to allow plugins to be disabled, and disable a few by default since they’re a source of confusion. Another is to add an update check, which I think is important because the uptake (and thus awareness) of new Tiled releases seems to be quite slow.

I don’t know exactly how long this milestone is going to take, but I think it’ll be at least two months. I’m aiming to release Tiled 1.0 this year and I’ll keep you updated on the progress!

1 Like

Week 40

Since shortly after the Tiled 0.14 release a bug was reported with editing properties of tiles that were grabbed from the map, my first priority was to get that fixed. I managed to find and fix the issue on Sunday.

Tiled Monday

So in the morning, the first thing I did was to get a Tiled 0.14.1 release out with that bugfix, as well as a fix to add some missing data to the Lua export (#1096).

Then I did some final C++11 modernization of the code, simplifying loops and using move semantics. I will use new C++11 features where they make sense, but I have no intension to spend more time “modernizing” code.

And of course, I started working towards the Tiled 1.0 milestone, which really gained a lot of issues in the meantime. I also wanted to do some cleanup regarding the layer data formats, to make sure to provide users only with sensible options. The “XML” option was removed because it is just the worst one to use (“CSV” provides a good replacement) and “Base64 (gzip compressed)” was removed because it provides no benefit over “Base64 (zlib compressed)”.

The first bigger issue I’m addressing for Tiled 1.0 is that you can’t open a map with broken links to external tilesets or images. Instead, I want Tiled to show a dialog upon loading a map with broken links, allowing you to fix them up. One challenge here is that currently the loading process relies on tiles being instantiated as part of loading and cutting the images. Not loading images means no tiles get instantiated, which means the global tile IDs can’t be resolved to tile instances. So Tiled will need to either wait with resolving the global tile IDs, or it should instantiate tiles on-demand while loading a map and set their images later. Apart from that, information needs to be kept around to allow the loading of images and cutting of tile graphics to be done later on. I’ve made good progress on this change and expect to finish this next Monday.

Closed issues on GitHub

  • #1017 Move placed tiles on the level - Duplicate
  • #1066 Crash when trying to add the “maps” docker (win10) - Duplicate
  • #1096 Lua: Tile Render Order is not exported. - Fixed
  • #1100 RandomPicker no longer accepts things that have probability zero or less - Merged
  • #1102 Allow scrolling past the boundaries of the map - Duplicate
  • #1105 Plugin support (maybe). - Duplicate

Looking Ahead

After finishing the handling of broken links, I want to work on allowing to edit tileset parameters after the tileset has been added. This will be tricky because the parameters can affect how many tiles there are in the tileset. Since this may mean loss of data, it should probably be done with a dialog.

This update concludes September so I’ll start a new thread for October next week. October will be the month of progress towards Tiled 1.0, so please bear with me while the updates may deal with somewhat boring issues. Thanks to everybody for their support!

1 Like

Why? I’ve never had a problem with qmake.

qmake often cannot handle some situations where you add files / modify your project files. Also qbs speeds up the compilation a bit.

But I think the main point is that qbs is a lot nicer to configure and has a cleaner installation concept…

Generally qbs always install to a folder before running the application. So you never do in-source builds. With qmake you can do both, but doing one breaks the other (at least for the Tiled configuration). But then you still have two different states. One is the the result of a simple make and the other is the result of make install. Qbs simply always does an install.

I can’t do qmake without copy/pasting complex stuff for doing simple tasks from other projects. Like for compiling translation files, checking minimum Qt version or getting the RPATH right. Some things are still tricky to achieve in Qbs as well, but at least that’s because it’s still being worked on and not something that for whatever reason can’t be done properly.

Then there’s just convenient things like nice and clean build output by default and automatically choosing the right number of parallel jobs to run based on your CPU. Also it can build multiple configurations (like debug and release or different Qt versions) in parallel. And it can tell Qt Creator about the build progress whereas with qmake it can only display “probably about halfway done”. It also supports running NSIS to build the Windows installer.

But the main reason I’m recommending it is because I am personally using it, so qmake builds get less testing. And since I don’t enjoy maintaining two build systems in parallel, I’ll probably phase out qmake as soon as Qbs covers all use-cases (currently Qbs is not working properly for OS X yet).

Thanks for the explanations. QBS is new to me and I have avoided it because I wasn’t having any issues using Qmake. (If it ain’t broke, don’t fix it principle)

However, it sounds like it might be worthwhile to take a look at it.