Posted August 20, 2017 by Thorbjørn Lindeijer
#Snapshot
This latest development snapshot includes a huge amount of changes, mostly made by our three Google Summer of Code students as part of their respective projects. This snapshot is essentially a "Tiled 1.1 Alpha" release, including much of the features that can be expected in Tiled 1.1, but not in their final form. I will give a summary for these major additions below.
Ben has been working to add support for Wang tiles. In this snapshot, this change is largely functional and we're eager to get feedback on this feature.
In Tiled, a set of Wang tiles has a certain number of edge or corner colors, which are associated with each edge and/or corner of each tile in the set. Using these colors, you tell Tiled which tiles fit next to each other within the set. Then, you can use this with the existing Stamp and Fill tools to randomly tile certain areas while making sure the tiles fit nicely together. This can help a great deal in avoiding repetitiveness, and it can be used as a way to generate mazes.
In addition, Ben has added a new tool called the "Wang Brush". It is a brush that is aware of the currently selected color, so that you can paint with only that color and it will adjust the tiles accordingly. This works similar to the existing "Terrain Brush", but it is more flexible since it can work with edges as well as corners.
In the future I hope we can merge the terrain tool with the new Wang tool, but their implementation is quite different so this will be a challenge.
Mohamed added the ability to define map object templates. Any already created object can be saved as an object template, as part of a template group. These templates can then be instantiated on object layers. This can save a lot of tedious work of setting up the object type and properties, or even just finding the right tile in the tileset. The template groups can be part of your project and are referred to by the map. You can save them in either XML or JSON format, just like map and tileset files.
Template instantiation works by either dragging and dropping the template from the Templates view into the map, or by using the new "Insert Template" tool, which is more convenient when you want to create many instances.
Templates can be edited in the a dedicated view next to the list of templates. Edits will be immediately visible on affected template instances on the map, except for changes to properties that have been overridden. Work is still being done on the ability to reset overridden properties.
With the addition of "infinite maps", it is no longer necessary to specify the map size when you create a map. Instead, you can specify that your map is infinite and Tiled will allow you to paint tiles anywhere. To do this efficiently, tile layers now only allocate memory for areas where you have placed tiles.
This feature affected a large amount of existing functionality, since there were a lot of places making the assumption that the map was a fixed size. The main noticeable remaining issue is that the scrollable areas isn't getting updated correctly yet, but there are also still fixes needed for Automapping. In addition, the map storage formats still store each tile layer as a single rectangular area, which can waste a lot of memory for large empty areas.
For using maps with currently available frameworks and libraries, it will be necessary to disable "Infinite" in the map properties before saving the map.
Many thanks to Mike for picking up libtiled-java maintainership and doing stuff I could never imagine to get around to!
I'd like to release Tiled 1.1 about a month from now. Until then, the Google Summer of Code students have one last week to make further changes and to write documentation. Personally I will be looking for things to polish as well as to add a few other requested features and of course to update the documentation as well.
So the next two weeks or so would be the best time for feedback that could still be taken into account for the Tiled 1.1 release. Please post on the Tiled forum, create issues on GitHub or visit #tiled on chat.freenode.net (you can join via Riot). We're listening!