May 2016 development updates

Week 17

Moving Into My Own Office

On Friday I moved my PC into my new office. It turned out that no internet was available yet so I quickly requested this, and I was glad to hear it was made available that evening. Here’s an impression of my new place to work on Tiled, after rearranging the furniture to my liking and connecting everything:

As you can see, I even have a fridge to keep the beverages cool (for now, since it’s not my fridge).

Of course, this move from my previous spot in the bedroom into a decent office room is only possible because of all of you who support Tiled financially, and I greatly appreciate that! I think it will be really worth it, especially since I plan to soon start working 2 full days/week on Tiled (hopefully in two months).

Tiled Sunday

On Sunday I entered the almost completely deserted office building and started working on moving the editing of terrain information from a pop-up dialog into a mode of the new tileset editor (first two hours live-stream). This change turned out to require much more work than I had anticipated and raised some UI questions, so by lunch time it was still far from done.

After lunch, I noticed the server hosting the Tiled snapshot builds for OS X had disappeared (though that server has come back in the meantime). I wasn’t sure since how long it had been gone, but I decided to host these files on the same server hosting the snapshots for Windows instead. So you can now find them at

Then I resumed work on the terrain editing, streaming another two hours. By the end of the day, I was almost done and made some notes on the remaining things to do.

Week 18

Thursday was a day off and I went to my office for a half-day to finish the above change. It ended up taking all the available time, but I was eventually able to push that change to the wip/tilesetdocument branch. Here’s how it looks currently:

Tiled Friday

This week I decided to try working on Tiled on Friday, hoping I may meet some other people to have lunch with and to take care of some things like finding somebody who knows how to adjust the height of the desks. I failed on both accounts, but I’ll try again tomorrow.

One thing I had wanted to do for a long time, was to make archives available as alternative to the installer. Recently this also looks interesting for distribution on So I spent the morning enabling the creation of a 7-zip archive containing a runnable Tiled build using the Qbs build system (685c13). I also enabled this on AppVeyor, so the Windows snapshots now include these archives. One problem with the archives is that currently they still contain the default update check, which will actually download the MSI installer and not a newer 7-zip archive. I’ll have to disable this soon. I’d like to extend these archives in the future to enable shipping a Tiled as a Portable App (#366) and to ship binary packages for Linux.

After lunch, I noticed that the Tiled 0.16.0 release for Windows actually did not include the WinSparkle auto-updater, due to a small mistake in the AppVeyor file. Some other fixes and two translation updates had been done as well, so I decided it was time to roll a Tiled 0.16.1 release. This took me the rest of the day unfortunately, where especially the OS X part was time-consuming because the first attempt failed the Sparkle DSA signature check for some reason. To speed up the release process I’ll need to update this wiki page with the latest instructions, which I’ll try to get to soon.

Looking Ahead

Tomorrow I want to work on some smaller features, like adding a color property type and possibly looking at enabling multi-line editing for string properties. I’ll see tomorrow what else I have time for.

I did notice that the internet connection is very slow on regular working days, probably because the connection isn’t strong enough for the many companies depending on it. I’m not sure if streaming will work. In any case, this is why I’ll probably go back to working on Sundays.

Thanks for following Tiled development!

1 Like

Week 19

Tiled Friday

As I wrote last time, there were some smaller improvements I wanted to get around to. The first thing I did was adding a color type for custom properties. This feature was requested by a long time patron, and it also simply made sense to have it.

The other thing I finally wanted to implement, and which was requested at least a dozen of times, was multi-line property editing. This will make it much easier to have custom properties with values containing lists or short scripts. It works by supporting “\n” to mean a newline in the Properties view, and providing a “...” button that opens a multi-line text editor:

In the meantime, I also took some time to accept a pull request that makes the deletion of objects that fall outside the boundaries when resizing a map optional. The checkbox also makes this behavior more visible:

Thanks @IMMZ!

Week 20

Monday was a national day off and I took half the day to work on Tiled. Recently, somebody had reported an issue with updating the drag cursor when hovering the resize handles, and I wanted to fix it. Unfortunately, the issue stemmed from the way Qt implemented mouse cursors on QGraphicsItem instances, which does not work nicely when the mouse cursor on the viewport is changed in the meantime. I couldn’t think of a fast workaround so the fix became quite involved.

While struggling with that code a bit, I realized several other small behaviors that could use some polishing. Heavy users of object layers will probably quite appreciate the various object selection tool improvements I made the rest of the day.

Tiled Sunday

In the morning I realized the OS X snapshot builds were broken again because of an Xcode update, which always wipes the Sparkle framework that I was copying into its Frameworks directory. Of course, that is not the proper place to put custom frameworks in the first place!

So I struggled with the qmake project for a bit to improve this situation, and with some help on IRC from one of the guys working on Sparkle (Jake Petroules) eventually had it set up so that now Tiled expects the Sparkle framework to sit in /Library/Frameworks (e727abde).

I spent a lot of time working towards enabling a binary package for Linux, and after some follow-up fixes, there’s now a generic Linux 64-bit Tiled binary available on It can also easily be installed through the app (which will keep it up to date).

In the meantime, @Ablu worked towards re-enabling the Tiled snapshots for Fedora. I think they’re working again now, though I can’t test it personally.

At the end of the day I was working on adding a “file reference” type for custom properties, but I didn’t manage to finish that yet (it’s on the wip/file-property-type branch).

Reaching My Second Goal

As anybody who may have kept an eye on my progress bar probably noticed, I’m getting really close to my second goal, to work on Tiled two full days/week. This is thanks to ever increasing support received on Patreon, as well as increasing income through sales (due to which I could reduce my goal on Patreon a second time).

I’ve been asking my employer about a work time reduction since a while, but currently it is difficult due the deadline of the project I’m on, and the large amount of work remaining. Personally I’d like to spend more time on Tiled as soon as possible, but it may take until August before I can actually do it.

I’ll keep you updated and a huge thanks to everybody who is making this possible!

Looking Ahead

I’ll be away for some days for a family gathering, but I will work on Tiled upcoming Monday. My goal is to return to the wip/tilesetdocument branch and make some progress there, since it is the biggest change coming for Tiled 1.0.

In the meantime, I’m curious to hear your feedback on recent improvements. You can try them out in a snapshot build.

See you next time!

Week 21

Tiled Monday

First of all I wanted to finish the change I had started last time, which was to add “file” as custom property type. This turned out to be a little more complicated than I had anticipated, so it took already half the day, but I finished it and I think it works quite nicely. Advantages of using the “file” type instead of “string” to refer to a file are that the input field features a file picker button and that the reference to the file will be stored as a relative path from where the map is saved. Later I’d like to also add a quick way to open the file.

The rest of the day I spent fixing several smaller things. I noticed the JSON plugin failed to load custom properties on terrains (29089b2). I fixed the missing export of object layer drawing order in the Lua plugin (#1289). And I made Tiled compile against Qt 5.6 when using MinGW (4c8a4b7), as well as on OS X (d67bae0).

There was also a request to add %layername and %objectid to available command variables, which were easily added (e0d867f).

Week 22

Tiled Sunday

In the morning I first spent some time trying to work towards building the OS X packages on Travis CI, but I gave up for now since I think it may be quite tricky to get it to work and it’s not a high priority. In the meantime, I also made sure the OS X snapshots now build against Qt 5.6, which I hope will fix some issues. I also fixed Tiled to compile again when using Qt 5.6 with Visual Studio (291c354), so now all snapshots are built against Qt 5.6.

After lunch, Will Luongo joined me for his second pair-programming session, which is part of this Patreon reward. We chose to work on adding support for panning the tileset view with middle mouse button, a highly requested feature. Will did all the typing and it was actually easier than expected, but it was still a good experience.

I then looked into a bug where the cursor would always jump to the end while editing custom string properties (#1292). It was a regression from the multi-line editing support, which was fortunately not too hard to fix.

Finally, I enabled some more flexibility in arranging the various views (#1291). I think this request is reasonable, and my only worry is that arranging the views may now be a bit too fiddly for some people. Also, for builds against Qt 5.6, you now have to drag the views by their tab to move them individually, since when dragging them by the title it will now take the whole group, when multiple views are tabbed. I’m curious to hear any feedback about this new behavior. Here’s an example screenshot of a layout that wasn’t possible before:

Looking Ahead

I recently introduced an “Urgent” label on GitHub, which I want to use mainly on small issues that have a relatively large impact, as well as for things I promised to look at soon. This should make it easier to get started on the things that matter. In general, I’ll aim to have no more than two days of work tagged as “Urgent”.

Contrary to what I wanted to do, I didn’t yet get around to continuing work on the wip/tilesetdocument branch. I’ll try again to get to that next time, but then again the “Urgent” list generally takes priority, which I think is in most people’s best interest.

Thanks again to everybody who is supporting me and see you next time!

1 Like