October 2016 development updates

October started out as a tough time for getting around to Tiled, because there were so many other things to take care of like my daughter’s birthday, family visiting, my overdue tax declaration and setting up new hardware. This meant that I had very little time to catch up on e-mails, and the half-days I had for Tiled got eaten up by mostly doing that.

Week 40

Tiled Monday (half day)

I spent the morning setting up my office in the bedroom again. Now with an additional 27" UHD screen, but unfortunately my video card (GTX 460) was too old to display at 4K. So I’ve also looked for and ordered a new video card.

In the afternoon my mother in law arrived to celebrate my daughter’s birthday tomorrow.

Tiled Sunday

My daughter’s birthday party with other children from her kindergarten was on Friday, so I tried to work on Tiled on Sunday instead. Unfortunately it was hard to concentrate, partly because the kids were both at home.

I’ve reviewed and merged a pull request changing the Java projects in the Tiled repository to build with Maven instead of Ant. This in preparation to eventually have libtiled-java in the Maven repository.

I’ve written the last development update.

I also had to do some preparations for the contract project I mentioned in my previous update.

Week 41

Tiled Monday

Today my new video card arrived (a Radeon RX 480). I picked it because of FreeSync and its open source drivers that are part of the Linux kernel, as well as being generally good value. 4K worked pretty much painless in Windows 10, where I mostly worked on the contract project.

Tiled Friday

In the morning I made further adjustments to the contract project. Then, in the afternoon I wasted a lot of time trying to get 4K to work nicely on Linux. While the video card and screen are working fine out of the box, Linux software in general is so fragmented on the 4K support that it’s impossible to get a consistent experience.

The DPI is configured in lots of places, and often only affects the fonts. And while both Qt and GTK support scaling up applications, it is configured differently and neither will adjust the application to the screen you’re putting it on like what happens on Windows 10 (in theory Qt will based on QT_SCREEN_SCALE_FACTORS, but I’ve not been able to figure out the right parameters). Using scaling also means you need to keep the DPI on 96, which breaks fonts in applications that rely on that for sane font sizes.

Depending on your setup, Tiled looks quite good or quite horrible. Here’s what I got now, just using a DPI of 160 to get readable fonts:

Problems include too small icons, too small buttons and too small graphics. And when you fix that using a QT_SCALE_FACTOR of 2, you get:

This look decent, but notice that because of the DPI being set to 96 now, other parts of the desktop, like the title bar of the window, are barely readable.

I think there’s little I can do about these issues in general (I’m hoping that Wayland will help standardize on a solution here). But in the meantime, I can make sure Tiled works a little bit better. For example by using vector icons (which will also be more easily adapted to a dark theme) and not hard-coding the size of the small tool bars buttons in pixels.

Finally I got a small fix in on the wip/tilesetdocument branch, to have the tile animation and collision editors restore their window position and size again.

Looking Ahead

My goals remain the same. I’m working on fixing remaining issues on the wip/tilesetdocument branch to get it into a releasable state. My current main issue is to find a good way of displaying the right tilesets. I’m changing Tiled such that it will display all open tilesets (not just the ones from the current map), but at the same time it should not display embedded tilesets from other maps since that could lead to a lot of duplication.

I’d also still like to do a Tiled 0.17.1 release. It should be pretty quick, but with recent Xcode versions it seems the Python plugin is giving problems so I’ll need to look into that.

In any case, I should have more time to focus on getting these things done as well as adding other nice things again!

1 Like

Week 42

Tiled Monday

I picked up the wip/tilesetdocument branch again and wanted to continue with the change that will make the Tilesets view show all open tilesets rather than just the ones from the current map. I ended up doing mostly some cleanup in the MainWindow class.

In the meantime on IRC somebody asked how to deselect the selected area, and it turned out there was no convenient way to do so in two of the three selection tools. Only the Rectangular Selection tool allows you to click without moving to clear the selection. Now I made it possible to deselect using right-click in all tile selection tools. I should probably reconsider how the Rectangular Selection tool works as well, since people are sometimes confused by the way it determines the area to select (which was mainly to allow a simple click to deselect).

I also wrote the previous development update and merged further changes by Mike Thomas needed to get libtiled-java deployed to OSSRH.

Tiled Friday

Probably the best way to run Qt applications on a HiDpi screen is to use QT_AUTO_SCREEN_SCALE_FACTOR=1. This automatic scaling factor doesn’t affect the fonts, and it adjusts dynamically when moving applications between screens. I’ve enabled this behavior for Tiled by default and also improved the quality of some of the icons (80a73171).

I worked the rest of the day on the wip/tilesetdocument branch, trying to finish the change towards showing all currently opened tilesets in the Tilesets view. By the end of the day I thought I was almost done, but I kept finding new ways of triggering wrong behavior.

Week 43

Tiled Monday

There was a question on the forum related to scrolling past the map boundaries when using the mouse wheel. So I looked into implementing this and came up with a reasonable patch to allow scrolling past map edges with mouse wheel. The patch might also improve the scrolling experience a little for OS X users with a high precision mouse, but this is still untested.

Then I made some long due documentation updates, updating the TMX map format page with the file and color custom property types added in Tiled 0.17.

Finally, after being stuck on a crash for a long time, I managed to finish the changes necessary to show all open tilesets in the Tilesets view. The tilesets are now simply ordered by name, and all loaded tilesets are shown, except for embedded tilesets that are not part of the current map. While embedded tilesets remain supported, I want to discourage their use in the next version of Tiled and fully enable the advantage of using external tilesets. The reason not to show them for other maps is mainly that it would lead to a lot of duplicates when multiple maps are open.

Tiled Friday

A bug report had come in from somebody trying to use predefined custom file properties, which turned out to be due to some code I forgot to update when adding the color and file custom property types. I decided to fix it right away.

Then I prepared for a 0.17.1 release by updating the NEWS file. I plan to make this release either Monday or Tuesday.

I’ve also been trying out linuxdeployqt, which provides a convenient way of shipping the necessary libraries along with a Linux binary of Tiled and can even pack it into an AppImage. Its author, Simon Peter, has been helping me getting it running on Travis CI and I’m hopeful that eventually it will be able to automatically push new releases to itch.io. I will in any case make an effort to release Tiled 0.17.1 also for Linux, along with Windows and macOS.

Then I continued working on the wip/tilesetdocument branch, because there are still some things to do before I can merge this into master. I had just made the random mode accessible again when I was reminded on IRC about a small feature I had promised to add. So the last thing I did this day was to add a way to reset tile objects back to the size of the tile.

Looking Ahead

Especially that last day I’ve felt more productive than I’ve been in a while, and I hope to be able to keep up that momentum. In general, in the past two weeks I’ve managed to implement several nice improvements while also finally making good progress towards the next new feature release. Maybe I can still make it to Tiled 1.0 this year!

just like to say thank you for the perfect app

1 Like