December 2016 development updates

Week 48 (continued)

Tiled Friday

As I had written about in the previous development update, I was working on reversing the display order of the objects in the Objects view. This is to match the rendering order when using manual object ordering, with the last rendered object appearing at the top of the list. The list of layers was already reversed, so it made sense to do the same for objects.

For this I wrote a ReversingProxyModel. While it was quite a bit more work that I had anticipated, it’s a useful thing to have because it avoids having to take into account the reversed display order in a lot of other code. I then used it to reverse the order of the objects in the Objects view.

I also merged a pull request that removed reflection from the TMXMapReader in libtiled-java (#1398). Mike has been doing a good amount of cleanups and updates to this library recently, something I personally never got around to. I hope the library will become more useful again for developing both games and tools in Java.

Week 49

Tiled Tuesday

I skipped the Monday because we were celebrating St. Nicolaus at my parents. Also, from this week on I will be spending each Monday and Tuesday on Tiled, instead of Monday and Friday.

Tuesday was a productive day with some very good progress on the wip/tilesetdocument branch:

  • Finished restoring the broken links widget (3d1d44b)
  • Fixed file modification indicator in a rare case (e3cb653)
  • Added a few maps for testing of error handling (a71eeab)
  • Fixed the “Import Tileset” action, now called “Embed Tileset” (9b330d2)
  • Fixed the “Export Tileset” action (d62a13f)
  • Restored ability to add embedded tilesets to a map (c96a15b)

The wip/tilesetdocument branch was now really close to being ready for merging into master.

I also merged another pull request by Mike, adding a basic isometric renderer to libtiled-java (#1401).

Qbs on macOS

On Wednesday, Jake Petroules helped to get Qbs building Tiled on macOS again (#1405). I hope some day the time will come that I can drop the qmake based project files entirely.

Sticker Knight

On Thursday, @ponywolf posted about his awesome Sticker Knight example project. It demonstrates very well how you could use Tiled without any tile layers at all, and since such an example was really missing I’m happy to ship it with Tiled in the next release.

Week 50

Tiled Monday

In the morning I finished the last known blocker on the wip/tilesetdocument branch, by making the Command button available again on the main tool bar (f8a16d5). Now that the branch was ready for merging, I had to consider whether branching off a release beforehand would make sense. So I updated the file with the changes since Tiled 0.17.2. The long list, even though it consisted of mainly smaller features, made it clear that a Tiled 0.18 release should be done with the current state before the really big change was merged in.

So I prepared the 0.18 branch, imported some translations from Weblate and synchronized all translation files with the source code. I’ll announce the string freeze to translators soon.

With that done, I merged the wip/tilesetdocument branch into master. The master branch will now eventually become Tiled 1.0. I’ve also synchronized the snapshot branch, so the current snapshots already reflect that state and I’m now eager to hear any feedback about this big change as well as to see what things remain to be done.

Here’s a screenshot of the new main window layout, also showcasing one of the new Sticker Knight example maps:

The merge also closed two issues:

  • You can now choose the background color of the tileset view per tileset (#227)
  • Tiled remembers active layer and view position also for closed maps (#905)

Looking Ahead

So, soon there will be a Tiled 0.18 release (probably either next week, or early January, due to the holidays in between) and in the meantime we’re going full steam ahead towards Tiled 1.0. There are some features that have gone up in priority that will likely be added, but otherwise there is the 1.0 milestone to track the remaining tasks.