Posted June 20, 2020 by Thorbjørn Lindeijer
#Release
At long last I can announce the immediate release of Tiled 1.4.0! The biggest change in this release is the support for projects and sessions, but there have been many other welcome improvements as well.
Until now, Tiled has been pretty comfortable to work with on a single project at a time. It remembered the tile size or export format you used last time, reopened the files you had open, etc. Unfortunately, all of that is rarely helpful as soon you’re doing multiple projects. There was also a Maps view that shows you any maps in a certain folder, but you’d have to navigate to another folder when switching projects. This is why for a long time I wanted to add support for projects, and now they are finally there!
Once you add a project file, it’s suddenly easier to collaborate. Teammates can open the project and will immediately get a new session and can see the maps and tilesets in your project in the new Project view. The last used settings, open files and loaded worlds, all of that is now stored in the session that is created alongside your project. And you can quickly open any file in the project using the new Open File in Project (Ctrl+P) action.
The project can also come with its own extensions, Automapping rules, object types and custom commands. And we’ll surely be adding more to this list in the future!
With the addition of the Project view, the Maps view is now removed, as is the file system view that was part of the Templates view (now called Template Editor, which works together with the files shown in the Project view).
Tiled can now render connections between objects on your map. To enable this, there is a new type of custom property called “object”, which is stored as the unique ID of the object that is referenced. The object reference can be set using a search dialog or by directly picking the target object on the map.
Each connection is rendered as an arrow matching the color of the target object. A “Go to Object” context menu action was added, which is useful if you have the connections turned off or the target object is far away.
The worlds feature added in Tiled 1.2 so far required manually editing the JSON file, which was especially annoying if you were positioning each map individually. For this case, there is now a new World Tool which allows easily adding, removing and moving around maps within the world.
There’s now also a Map -> New World… action that makes it easy to start using this feature.
The inconsistent alignment for tile objects (usually bottom-left) vs. rectangle objects (top-left) has been a long-standing frustration to many. To resolve this problem, a new tileset property Object Alignment was added, which controls the alignment for any tile objects referring to that tileset.
By setting this property to Top Left, tile objects align consistently with rectangles. But it can also be used for example to have your sprites bottom-center aligned or to center them at their position.
The support for extending Tiled with JavaScript, which was added in Tiled 1.3, also saw a number of improvements. The Console now automatically assigns numbered variables to the result of evaluations. APIs were added for coordinate conversion, working with file paths and accessing inherited custom properties. Also, scripts can now access and use any registered file formats and scripted file formats are now available when exporting via the command-line.
Maps can now be used as images, for example as the source image of a tileset. This is useful to create a kind of virtual tilesets where you combine smaller tiles into larger tiles (also known as metatiles).
Layers can now also be tinted with a custom color, which is also supported by the GameMaker: Studio 1.4 export.
A number of usability improvements were made as well. All buttons now show their shortcuts in their tool tips, there’s a new action to reopen the last closed file (Ctrl+Shift+T), the status bar gained a toggle button for the Console, etc. Check out the changelog below for the full list!
Ctrl+P) actionCtrl+Shift+T) action__filename global value (with konsumer)ObjectGroup.insertObjectAt to use the indexThanks to everybody who contributed to this release with bug reports, suggestions, patches or translation updates!
The 1.4 release started with a small plan that included only two major features. The idea was that this would shorten the development time on the release. While those features implied more work than I had anticipated, the release was also delayed because of the huge amount of other things that got done.
I’d like to do new feature releases more often, for example every three months. My idea is to do this by always keeping the main branch in a releasable state. The main branch will be the stable branch and development (including testing and documentation) of new features will happen on temporary branches. If this works out, we can expect Tiled 1.5 around September, including whatever got done until then.
On the list of things I’d like to work on are currently to extend the custom property system to include custom types, compounds, arrays and enums. There are also some scripting APIs still pending and I’d like to try a number of visual improvements, including making a unified and scalable icon set. In the end though, I’m driven mostly by feedback, especially from those who are supporting me, so let me know what you’d like to see!
This new release was made possible by about 300 patrons and sponsors supporting me on a monthly basis as well as many people choosing to pay for Tiled on itch.io and some who donated through Liberapay. To ensure I will be able to keep developing Tiled at this pace, please set up a small monthly donation!
Your donation primarily enables me to work 2 full days/week on Tiled. With additional funds I can spend more time on Tiled every once in a while. Let’s make this tool even better!