TMX Changelog
Below are described the changes/additions that were made to the TMX Map Format for recent versions of Tiled.
Tiled 1.10
Tiled 1.9
Added
class
attribute to <map>, <tileset>, <layer>, <imagelayer>, <objectgroup>, <group>, <wangset> and <wangcolor>.Added
x
,y
,width
andheight
attributes to the <tile> element, which store the sub-rectangle of a tile’s image used to represent this tile. By default the entire image is used.Added
tilerendersize
andfillmode
attributes to the <tileset> element, which affect the way tiles are rendered.
Tiled 1.8
Added support for user-defined custom property types. A reference to the type is saved as the new
propertytype
attribute on the <property> element.The <property> element can now contain a <properties> element, in case the property value is a class and at least one member value has been set. The
type
attribute will have the new valueclass
.Added
parallaxoriginx
andparallaxoriginy
attributes to the <map> element.Added
repeatx
andrepeaty
attributes to the <imagelayer> element.
Tiled 1.7
The <tile> elements in a tileset are no longer always saved with increasing IDs. They are now saved in the display order, which can be changed in Tiled.
Tiled 1.5
The colors that are part of a <wangset> are no longer separated in corner colors and edge colors. Instead, there is now a single <wangcolor> element to define a Wang color. This new element also stores <properties>.
The
wangid
attribute on the <wangtile> element is now stored as a comma-separated list of values, instead of a 32-bit unsigned integer in hex format. This is because the number of colors supported in a Wang set was increased from 15 to 255.Valid transformations of tiles in a set (flipping, rotation) are specified in a <transformations> element. The partial support for the
vflip
,hflip
anddflip
attributes on the <wangtile> element has been removed.The <wangset> element has replaced the now deprecated <terraintypes> element.
Added
parallaxx
andparallaxy
attributes to the <layer>, <objectgroup>, <imagelayer> and <group> elements.
Tiled 1.4
Added the
objectalignment
attribute to the <tileset> element, allowing the tileset to control the alignment used for tile objects.Added the
tintcolor
attribute to the <layer>, <objectgroup>, <imagelayer> and <group> elements, allowing for a number of graphical effects like darkening or coloring a layer.Added a new
object
property type, which refers to an object by its ID.
Tiled 1.3
Added an <editorsettings> element, which is used to store editor specific settings that are generally not relevant when loading a map.
Added support for Zstandard compression for tile layer data (
compression="zstd"
on <data> elements).Added the
compressionlevel
attribute to the <map> element, which stores the compression level to use for compressed tile layer data.
Tiled 1.2.1
Text objects can now get their horizontal alignment saved as
justify
. This option existed in the UI before but wasn’t saved properly.
Tiled 1.2
Added an
id
attribute to the <layer>, <objectgroup>, <imagelayer> and <group> elements, which stores a map-unique ID of the layer.Added a
nextlayerid
attribute to the <map> element, which stores the next available ID for new layers. This number is stored to prevent reuse of the same ID after layers have been removed.
Tiled 1.1
Added a map.infinite attribute, which indicates whether the map is considered unbounded. Tile layer data for infinite maps is stored in chunks.
A new <chunk> element was added for infinite maps which contains the similar content as <data>, except it stores the data of the area specified by its
x
,y
,width
andheight
attributes.Templates were added, a template is an external file referenced by template instance objects:
<object id="3" template="diamond.tx" x="200" y="100"/>
Tilesets can now contain Terrain Sets. They are saved in the new <wangsets> element.
A new <point> child element was added to <object>, which marks point objects. Point objects do not have a size or rotation.
Tiled 1.0
A new <group> element was added which is a group layer that can have other layers as child elements. This means layers now form a hierarchy.
Added Text objects, identified by a new <text> element which is used as a child of the <object> element.
Added a tile.type attribute for supporting Typed Tiles.
Tiled 0.18
No file format changes.
Tiled 0.17
Added
color
andfile
as possible values for the property.type attribute.Added support for editing multi-line string properties, which are written out differently.
Tiled 0.16
The <property> element gained a
type
attribute, storing the type of the value. Currently supported types arestring
(the default),int
,float
andbool
.
Tiled 0.15
The
offsetx
andoffsety
attributes are now also used for <imagelayer> elements, replacing thex
andy
attributes previously used. This change was made for consistency with the other layer types.The tiles in an image collection tileset are no longer guaranteed to be consecutive, because removing tiles from the collection will no longer change the IDs of other tiles.
The pure XML and Gzip-compressed tile layer data formats were deprecated, since they didn’t have any advantage over other formats. Remaining formats are CSV, base64 and Zlib-compressed layer data.
Added
columns
attribute to the <tileset> element, which specifies the number of tile columns in the tileset. For image collection tilesets it is editable and is used when displaying the tileset.The
backgroundcolor
attribute of the <map> element will now take the format#AARRGGBB
when its alpha value differs from 255. Previously the alpha value was silently discarded.
Tiled 0.14
Added optional
offsetx
andoffsety
attributes to thelayer
andobjectgroup
elements. These specify an offset in pixels that is to be applied when rendering the layer. The default values are 0.
Tiled 0.13
Added an optional
tilecount
attribute to thetileset
element, which is written by Tiled to help parsers determine the amount of memory to allocate for tile data.
Tiled 0.12
Previously tile objects never had
width
andheight
properties, though the format technically allowed this. Now these properties are used to store the size the image should be rendered at. The default values for these attributes are the dimensions of the tile image.
Tiled 0.11
Added
hexagonal
to the supported values for theorientation
attribute on themap
element. This also addsstaggerindex
(even
orodd
) andstaggeraxis
(x
ory
) andhexsidelength
(integer value) attributes to themap
element, in order to support the many variations of staggered hexagonal. The newstaggerindex
andstaggeraxis
attributes are also supported when using thestaggered
map orientation.Added an
id
attribute to theobject
element, which stores a map-unique ID of the object.Added a
nextobjectid
attribute to themap
element, which stores the next available ID for new objects. This number is stored to prevent reuse of the same ID after objects have been removed.
Tiled 0.10
Tile objects can now be horizontally or vertically flipped. This is stored in the
gid
attribute using the same mechanism as for regular tiles. The image is expected to be flipped without affecting its position, same way as flipped tiles.Objects can be rotated freely. The rotation is stored in degrees as a
rotation
attribute, with positive rotation going clockwise.The render order of the tiles on tile layers can be configured in a number of ways through a new
renderorder
property on themap
element. Valid values areright-down
(the default),right-up
,left-down
andleft-up
. In all cases, the map is drawn row-by-row. This is only supported for orthogonal maps at the moment.The render order of objects on object layers can be configured to be either sorted by their y-coordinate (previous behavior and still the default) or simply the order of appearance in the map file. The latter enables manual control over the drawing order with actions that “Raise” and “Lower” selected objects. It is controlled by the
draworder
property on theobjectgroup
element, which can be eithertopdown
(default) orindex
.Tiles can have an
objectgroup
child element, which can contain objects that define the collision shape to use for that tile. This information can be edited in the new Tile Collision Editor.Tiles can have a single looping animation associated with them using an
animation
child element. Each frame of the animation refers to a local tile ID from this tileset and defines the frame duration in milliseconds. Example:<tileset name="Animations"> ... <tile id="[n]"> <animation> <frame tileid="0" duration="100"/> <frame tileid="1" duration="100"/> <frame tileid="2" duration="100"/> </animation> </tile> </tileset>
Tiled 0.9
Per-object visibility flag is saved (defaults to 1):
<object visible="0|1">
Terrain information was added to tileset definitions (this is generally not very relevant for games):
<tileset name="Terrain"> ... <terraintypes> <terrain name="Name" tile="local_id"/> </terraintypes> <tile id="local_id" terrain="[n],[n],[n],[n]" probability="percentage"/> ... </tileset>
There is preliminary support for a “staggered” (isometric) projection (new value for the
orientation
attribute of themap
element).A basic image layer type was added:
<imagelayer name="..."> <image source="..."/> </imagelayer>
Added ellipse object shape. Same parameters as rectangular objects, but marked as ellipse with a child element:
<object name="..." x="..." y="..."> <ellipse/> </object>
Added map property for specifying the background color:
<map backgroundcolor="#RRGGBB">
Added initial (non-GUI) support for individual and/or embedded tile images (since there is no way to set this up in Tiled Qt but only in Tiled Java or with pytmxlib, this is not very important to support at the moment):
<tileset name="Embedded images"> ... <tile id="[n]"> <!-- an embedded image --> <image format="png"> <data encoding="base64"> ... </data> </image> </tile> <tile id="[n]"> <!-- an individually referenced image for a single tile --> <image source="file.png"/> </tile> ... </tileset>
Tiled 0.8
Tilesets can now have custom properties (using the
properties
child element, just like everything else).Tilesets now support defining a drawing offset in pixels, which is to be used when drawing any tiles from that tileset. Example:
<tileset name="perspective_walls" tilewidth="64" tileheight="64"> <tileoffset x="-32" y="0"/> ... </tileset>
Support for tile rotation in 90-degree increments was added by using the third most significant bit in the global tile id. This new bit means “anti-diagonal flip”, which swaps the x and y axis when rendering a tile.