1JSON Map Format
2===============
3
4Tiled can export maps as JSON files. To do so, simply select "File >
5Export As" and select the JSON file type. You can export json from the
6command line with the ``--export-map`` option.
7
8The fields found in the JSON format differ slightly from those in the
9:doc:`tmx-map-format`, but the meanings should remain the same.
10
11The following fields can be found in a Tiled JSON file:
12
13.. _json-map:
14
15Map
16---
17
18.. csv-table::
19    :header: Field, Type, Description
20    :widths: 1, 1, 4
21
22    backgroundcolor,  string,           "Hex-formatted color (#RRGGBB or #AARRGGBB) (optional)"
23    compressionlevel, int,              "The compression level to use for tile layer data (defaults to -1, which means to use the algorithm default)"
24    height,           int,              "Number of tile rows"
25    hexsidelength,    int,              "Length of the side of a hex tile in pixels (hexagonal maps only)"
26    infinite,         bool,             "Whether the map has infinite dimensions"
27    layers,           array,            "Array of :ref:`Layers <json-layer>`"
28    nextlayerid,      int,              "Auto-increments for each layer"
29    nextobjectid,     int,              "Auto-increments for each placed object"
30    orientation,      string,           "``orthogonal``, ``isometric``, ``staggered`` or ``hexagonal``"
31    properties,       array,            "Array of :ref:`Properties <json-property>`"
32    renderorder,      string,           "``right-down`` (the default), ``right-up``, ``left-down`` or ``left-up`` (currently only supported for orthogonal maps)"
33    staggeraxis,      string,           "``x`` or ``y`` (staggered / hexagonal maps only)"
34    staggerindex,     string,           "``odd`` or ``even`` (staggered / hexagonal maps only)"
35    tiledversion,     string,           "The Tiled version used to save the file"
36    tileheight,       int,              "Map grid height"
37    tilesets,         array,            "Array of :ref:`Tilesets <json-tileset>`"
38    tilewidth,        int,              "Map grid width"
39    type,             string,           "``map`` (since 1.0)"
40    version,          string,           "The JSON format version (previously a number, saved as string since 1.6)"
41    width,            int,              "Number of tile columns"
42
43Map Example
44~~~~~~~~~~~
45
46.. code:: json
47
48    {
49      "backgroundcolor":"#656667",
50      "height":4,
51      "layers":[ ],
52      "nextobjectid":1,
53      "orientation":"orthogonal",
54      "properties":[
55        {
56          "name":"mapProperty1",
57          "type":"string",
58          "value":"one"
59        },
60        {
61          "name":"mapProperty2",
62          "type":"string",
63          "value":"two"
64        }],
65      "renderorder":"right-down",
66      "tileheight":32,
67      "tilesets":[ ],
68      "tilewidth":32,
69      "version":1,
70      "tiledversion":"1.0.3",
71      "width":4
72    }
73
74.. _json-layer:
75
76Layer
77-----
78
79.. csv-table::
80    :header: Field, Type, Description
81    :widths: 1, 1, 4
82
83    chunks,           array,            "Array of :ref:`chunks <json-chunk>` (optional). ``tilelayer`` only."
84    compression,      string,           "``zlib``, ``gzip``, ``zstd`` (since Tiled 1.3) or empty (default). ``tilelayer`` only."
85    data,             array or string,  "Array of ``unsigned int`` (GIDs) or base64-encoded data. ``tilelayer`` only."
86    draworder,        string,           "``topdown`` (default) or ``index``. ``objectgroup`` only."
87    encoding,         string,           "``csv`` (default) or ``base64``. ``tilelayer`` only."
88    height,           int,              "Row count. Same as map height for fixed-size maps."
89    id,               int,              "Incremental ID - unique across all layers"
90    image,            string,           "Image used by this layer. ``imagelayer`` only."
91    layers,           array,            "Array of :ref:`layers <json-layer>`. ``group`` only."
92    name,             string,           "Name assigned to this layer"
93    objects,          array,            "Array of :ref:`objects <json-object>`. ``objectgroup`` only."
94    offsetx,          double,           "Horizontal layer offset in pixels (default: 0)"
95    offsety,          double,           "Vertical layer offset in pixels (default: 0)"
96    opacity,          double,           "Value between 0 and 1"
97    parallaxx,        double,           "Horizontal :ref:`parallax factor <parallax-factor>` for this layer (default: 1). (since Tiled 1.5)"
98    parallaxy,        double,           "Vertical :ref:`parallax factor <parallax-factor>` for this layer (default: 1). (since Tiled 1.5)"
99    properties,       array,            "Array of :ref:`Properties <json-property>`"
100    startx,           int,              "X coordinate where layer content starts (for infinite maps)"
101    starty,           int,              "Y coordinate where layer content starts (for infinite maps)"
102    tintcolor,        string,           "Hex-formatted :ref:`tint color <tint-color>` (#RRGGBB or #AARRGGBB) that is multiplied with any graphics drawn by this layer or any child layers (optional)."
103    transparentcolor, string,           "Hex-formatted color (#RRGGBB) (optional). ``imagelayer`` only."
104    type,             string,           "``tilelayer``, ``objectgroup``, ``imagelayer`` or ``group``"
105    visible,          bool,             "Whether layer is shown or hidden in editor"
106    width,            int,              "Column count. Same as map width for fixed-size maps."
107    x,                int,              "Horizontal layer offset in tiles. Always 0."
108    y,                int,              "Vertical layer offset in tiles. Always 0."
109
110Tile Layer Example
111~~~~~~~~~~~~~~~~~~
112
113.. code:: json
114
115    {
116      "data":[1, 2, 1, 2, 3, 1, 3, 1, 2, 2, 3, 3, 4, 4, 4, 1],
117      "height":4,
118      "name":"ground",
119      "opacity":1,
120      "properties":[
121        {
122          "name":"tileLayerProp",
123          "type":"int",
124          "value":1
125        }],
126      "type":"tilelayer",
127      "visible":true,
128      "width":4,
129      "x":0,
130      "y":0
131    }
132
133Object Layer Example
134~~~~~~~~~~~~~~~~~~~~
135
136.. code:: json
137
138    {
139      "draworder":"topdown",
140      "height":0,
141      "name":"people",
142      "objects":[ ],
143      "opacity":1,
144      "properties":[
145        {
146          "name":"layerProp1",
147          "type":"string",
148          "value":"someStringValue"
149        }],
150      "type":"objectgroup",
151      "visible":true,
152      "width":0,
153      "x":0,
154      "y":0
155    }
156
157.. _json-chunk:
158
159Chunk
160-----
161
162Chunks are used to store the tile layer data for
163:doc:`infinite maps </manual/using-infinite-maps>`.
164
165.. csv-table::
166    :header: Field, Type, Description
167    :widths: 1, 1, 4
168
169    data,             array or string,  "Array of ``unsigned int`` (GIDs) or base64-encoded data"
170    height,           int,              "Height in tiles"
171    width,            int,              "Width in tiles"
172    x,                int,              "X coordinate in tiles"
173    y,                int,              "Y coordinate in tiles"
174
175Chunk Example
176~~~~~~~~~~~~~
177
178.. code:: json
179
180    {
181      "data":[1, 2, 1, 2, 3, 1, 3, 1, 2, 2, 3, 3, 4, 4, 4, 1, ...],
182      "height":16,
183      "width":16,
184      "x":0,
185      "y":-16,
186    }
187
188.. _json-object:
189
190Object
191------
192
193.. csv-table::
194    :header: Field, Type, Description
195    :widths: 1, 1, 4
196
197    ellipse,          bool,             "Used to mark an object as an ellipse"
198    gid,              int,              "Global tile ID, only if object represents a tile"
199    height,           double,           "Height in pixels."
200    id,               int,              "Incremental ID, unique across all objects"
201    name,             string,           "String assigned to name field in editor"
202    point,            bool,             "Used to mark an object as a point"
203    polygon,          array,            "Array of :ref:`Points <json-point>`, in case the object is a polygon"
204    polyline,         array,            "Array of :ref:`Points <json-point>`, in case the object is a polyline"
205    properties,       array,            "Array of :ref:`Properties <json-property>`"
206    rotation,         double,           "Angle in degrees clockwise"
207    template,         string,           "Reference to a template file, in case object is a :doc:`template instance </manual/using-templates>`"
208    text,             :ref:`json-object-text`, "Only used for text objects"
209    type,             string,           "String assigned to type field in editor"
210    visible,          bool,             "Whether object is shown in editor."
211    width,            double,           "Width in pixels."
212    x,                double,           "X coordinate in pixels"
213    y,                double,           "Y coordinate in pixels"
214
215Object Example
216~~~~~~~~~~~~~~
217
218.. code:: json
219
220    {
221      "gid":5,
222      "height":0,
223      "id":1,
224      "name":"villager",
225      "properties":[
226        {
227          "name":"hp",
228          "type":"int",
229          "value":12
230        }],
231      "rotation":0,
232      "type":"npc",
233      "visible":true,
234      "width":0,
235      "x":32,
236      "y":32
237    }
238
239Ellipse Example
240~~~~~~~~~~~~~~~
241
242.. code:: json
243
244    {
245      "ellipse":true,
246      "height":152,
247      "id":13,
248      "name":"",
249      "rotation":0,
250      "type":"",
251      "visible":true,
252      "width":248,
253      "x":560,
254      "y":808
255    }
256
257Rectangle Example
258~~~~~~~~~~~~~~~~~
259
260.. code:: json
261
262    {
263      "height":184,
264      "id":14,
265      "name":"",
266      "rotation":0,
267      "type":"",
268      "visible":true,
269      "width":368,
270      "x":576,
271      "y":584
272    }
273
274Point Example
275~~~~~~~~~~~~~
276
277.. code:: json
278
279    {
280      "point":true,
281      "height":0,
282      "id":20,
283      "name":"",
284      "rotation":0,
285      "type":"",
286      "visible":true,
287      "width":0,
288      "x":220,
289      "y":350
290    }
291
292Polygon Example
293~~~~~~~~~~~~~~~
294
295.. code:: json
296
297    {
298      "height":0,
299      "id":15,
300      "name":"",
301      "polygon":[
302      {
303        "x":0,
304        "y":0
305      },
306      {
307        "x":152,
308        "y":88
309      },
310      {
311        "x":136,
312        "y":-128
313      },
314      {
315        "x":80,
316        "y":-280
317      },
318      {
319        "x":16,
320        "y":-288
321      }],
322      "rotation":0,
323      "type":"",
324      "visible":true,
325      "width":0,
326      "x":-176,
327      "y":432
328    }
329
330Polyline Example
331~~~~~~~~~~~~~~~~
332
333.. code:: json
334
335    {
336      "height":0,
337      "id":16,
338      "name":"",
339      "polyline":[
340      {
341        "x":0,
342        "y":0
343      },
344      {
345        "x":248,
346        "y":-32
347      },
348      {
349        "x":376,
350        "y":72
351      },
352      {
353        "x":544,
354        "y":288
355      },
356      {
357        "x":656,
358        "y":120
359      },
360      {
361        "x":512,
362        "y":0
363      }],
364      "rotation":0,
365      "type":"",
366      "visible":true,
367      "width":0,
368      "x":240,
369      "y":88
370    }
371
372Text Example
373~~~~~~~~~~~~
374
375.. code:: json
376
377    {
378      "height":19,
379      "id":15,
380      "name":"",
381      "text":
382      {
383        "text":"Hello World",
384        "wrap":true
385      },
386      "rotation":0,
387      "type":"",
388      "visible":true,
389      "width":248,
390      "x":48,
391      "y":136
392    }
393
394.. _json-object-text:
395
396Text
397----
398
399.. csv-table::
400    :header: Field, Type, Description
401    :widths: 1, 1, 4
402
403    bold,             bool,             "Whether to use a bold font (default: ``false``)"
404    color,            string,           "Hex-formatted color (#RRGGBB or #AARRGGBB) (default: ``#000000``)"
405    fontfamily,       string,           "Font family (default: ``sans-serif``)"
406    halign,           string,           "Horizontal alignment (``center``, ``right``, ``justify`` or ``left`` (default))"
407    italic,           bool,             "Whether to use an italic font (default: ``false``)"
408    kerning,          bool,             "Whether to use kerning when placing characters (default: ``true``)"
409    pixelsize,        int,              "Pixel size of font (default: 16)"
410    strikeout,        bool,             "Whether to strike out the text (default: ``false``)"
411    text,             string,           "Text"
412    underline,        bool,             "Whether to underline the text (default: ``false``)"
413    valign,           string,           "Vertical alignment (``center``, ``bottom`` or ``top`` (default))"
414    wrap,             bool,             "Whether the text is wrapped within the object bounds (default: ``false``)"
415
416
417.. _json-tileset:
418
419Tileset
420-------
421
422.. csv-table::
423    :header: Field, Type, Description
424    :widths: 1, 1, 4
425
426    backgroundcolor,  string,           "Hex-formatted color (#RRGGBB or #AARRGGBB) (optional)"
427    columns,          int,              "The number of tile columns in the tileset"
428    firstgid,         int,              "GID corresponding to the first tile in the set"
429    grid,             :ref:`json-tileset-grid`, "(optional)"
430    image,            string,           "Image used for tiles in this set"
431    imageheight,      int,              "Height of source image in pixels"
432    imagewidth,       int,              "Width of source image in pixels"
433    margin,           int,              "Buffer between image edge and first tile (pixels)"
434    name,             string,           "Name given to this tileset"
435    objectalignment,  string,           "Alignment to use for tile objects (``unspecified`` (default), ``topleft``, ``top``, ``topright``, ``left``, ``center``, ``right``, ``bottomleft``, ``bottom`` or ``bottomright``) (since 1.4)"
436    properties,       array,            "Array of :ref:`Properties <json-property>`"
437    source,           string,           "The external file that contains this tilesets data"
438    spacing,          int,              "Spacing between adjacent tiles in image (pixels)"
439    terrains,         array,            "Array of :ref:`Terrains <json-terrain>` (optional)"
440    tilecount,        int,              "The number of tiles in this tileset"
441    tiledversion,     string,           "The Tiled version used to save the file"
442    tileheight,       int,              "Maximum height of tiles in this set"
443    tileoffset,       :ref:`json-tileset-tileoffset`, "(optional)"
444    tiles,            array,            "Array of :ref:`Tiles <json-tile>` (optional)"
445    tilewidth,        int,              "Maximum width of tiles in this set"
446    transformations,  :ref:`json-tileset-transformations`, "Allowed transformations (optional)"
447    transparentcolor, string,           "Hex-formatted color (#RRGGBB) (optional)"
448    type,             string,           "``tileset`` (for tileset files, since 1.0)"
449    version,          string,           "The JSON format version (previously a number, saved as string since 1.6)"
450    wangsets,         array,            "Array of :ref:`Wang sets <json-wangset>` (since 1.1.5)"
451
452Each tileset has a ``firstgid`` (first global ID) property which
453tells you the global ID of its first tile (the one with local
454tile ID 0). This allows you to map the global IDs back to the
455right tileset, and then calculate the local tile ID by
456subtracting the ``firstgid`` from the global tile ID. The first
457tileset always has a ``firstgid`` value of 1.
458
459.. _json-tileset-grid:
460
461Grid
462~~~~
463
464Specifies common grid settings used for tiles in a tileset. See
465:ref:`tmx-grid` in the TMX Map Format.
466
467.. csv-table::
468    :header: Field, Type, Description
469    :widths: 1, 1, 4
470
471    height,           int,              "Cell height of tile grid"
472    orientation,      string,           "``orthogonal`` (default) or ``isometric``"
473    width,            int,              "Cell width of tile grid"
474
475.. _json-tileset-tileoffset:
476
477Tile Offset
478~~~~~~~~~~~
479
480See :ref:`tmx-tileoffset` in the TMX Map Format.
481
482.. csv-table::
483    :header: Field, Type, Description
484    :widths: 1, 1, 4
485
486    x,                int,              "Horizontal offset in pixels"
487    y,                int,              "Vertical offset in pixels (positive is down)"
488
489.. _json-tileset-transformations:
490
491Transformations
492~~~~~~~~~~~~~~~
493
494See :ref:`tmx-tileset-transformations` in the TMX Map Format.
495
496.. csv-table::
497    :header: Field, Type, Description
498    :widths: 1, 1, 4
499
500    hflip,            bool,             "Tiles can be flipped horizontally"
501    vflip,            bool,             "Tiles can be flipped vertically"
502    rotate,           bool,             "Tiles can be rotated in 90-degree increments"
503    preferuntransformed, bool,          "Whether untransformed tiles remain preferred, otherwise transformed tiles are used to produce more variations"
504
505Tileset Example
506~~~~~~~~~~~~~~~
507
508.. code:: json
509
510            {
511             "columns":19,
512             "firstgid":1,
513             "image":"..\/image\/fishbaddie_parts.png",
514             "imageheight":480,
515             "imagewidth":640,
516             "margin":3,
517             "name":"",
518             "properties":[
519               {
520                 "name":"myProperty1",
521                 "type":"string",
522                 "value":"myProperty1_value"
523               }],
524             "spacing":1,
525             "tilecount":266,
526             "tileheight":32,
527             "tilewidth":32
528            }
529
530.. _json-tile:
531
532Tile (Definition)
533~~~~~~~~~~~~~~~~~
534
535.. csv-table::
536    :header: Field, Type, Description
537    :widths: 1, 1, 4
538
539    animation,        array,              "Array of :ref:`Frames <json-frame>`"
540    id,               int,                "Local ID of the tile"
541    image,            string,             "Image representing this tile (optional)"
542    imageheight,      int,                "Height of the tile image in pixels"
543    imagewidth,       int,                "Width of the tile image in pixels"
544    objectgroup,      :ref:`json-layer`,  "Layer with type ``objectgroup``, when collision shapes are specified (optional)"
545    probability,      double,             "Percentage chance this tile is chosen when competing with others in the editor (optional)"
546    properties,       array,              "Array of :ref:`Properties <json-property>`"
547    terrain,          array,              "Index of terrain for each corner of tile (optional)"
548    type,             string,             "The type of the tile (optional)"
549
550A tileset that associates information with each tile, like its image
551path or terrain type, may include a ``tiles`` array property. Each tile
552has an ``id`` property, which specifies the local ID within the tileset.
553
554For the terrain information, each value is a length-4 array where each
555element is the index of a :ref:`terrain <json-terrain>` on one corner
556of the tile. The order of indices is: top-left, top-right, bottom-left,
557bottom-right.
558
559Example:
560
561.. code:: json
562
563    "tiles":[
564      {
565        "id":0,
566        "properties":[
567          {
568            "name":"myProperty1",
569            "type":"string",
570            "value":"myProperty1_value"
571          }],
572        "terrain":[0, 0, 0, 0]
573      },
574      {
575        "id":11,
576        "properties":[
577          {
578            "name":"myProperty2",
579            "type":"string",
580            "value":"myProperty2_value"
581          }],
582        "terrain":[0, 1, 0, 1]
583      },
584      {
585        "id":12,
586        "properties":[
587          {
588            "name":"myProperty3",
589            "type":"string",
590            "value":"myProperty3_value"
591          }],
592        "terrain":[1, 1, 1, 1]
593      }
594    ]
595
596.. _json-frame:
597
598Frame
599~~~~~
600
601.. csv-table::
602    :header: Field, Type, Description
603    :widths: 1, 1, 4
604
605    duration,         int,              "Frame duration in milliseconds"
606    tileid,           int,              "Local tile ID representing this frame"
607
608.. _json-terrain:
609
610Terrain
611~~~~~~~
612
613.. csv-table::
614    :header: Field, Type, Description
615    :widths: 1, 1, 4
616
617    name,             string,           "Name of terrain"
618    properties,       array,            "Array of :ref:`Properties <json-property>`"
619    tile,             int,              "Local ID of tile representing terrain"
620
621Example:
622
623.. code:: json
624
625    "terrains":[
626    {
627      "name":"ground",
628      "tile":0
629    },
630    {
631      "name":"chasm",
632      "tile":12
633    },
634    {
635      "name":"cliff",
636      "tile":36
637    }],
638
639.. _json-wangset:
640
641Wang Set
642~~~~~~~~
643
644.. csv-table::
645    :header: Field, Type, Description
646    :widths: 1, 1, 4
647
648    colors,           array,            "Array of :ref:`Wang colors <json-wangcolor>`"
649    name,             string,           "Name of the Wang set"
650    properties,       array,            "Array of :ref:`Properties <json-property>`"
651    tile,             int,              "Local ID of tile representing the Wang set"
652    wangtiles,        array,            "Array of :ref:`Wang tiles <json-wangtile>`"
653
654.. _json-wangcolor:
655
656Wang Color
657^^^^^^^^^^
658
659.. csv-table::
660    :header: Field, Type, Description
661    :widths: 1, 1, 4
662
663    color,            string,           "Hex-formatted color (#RRGGBB or #AARRGGBB)"
664    name,             string,           "Name of the Wang color"
665    probability,      double,           "Probability used when randomizing"
666    properties,       array,            "Array of :ref:`Properties <json-property>`"
667    tile,             int,              "Local ID of tile representing the Wang color"
668
669Example:
670
671.. code:: json
672
673    {
674      "color": "#d31313",
675      "name": "Rails",
676      "probability": 1,
677      "tile": 18
678    }
679
680.. _json-wangtile:
681
682Wang Tile
683^^^^^^^^^
684
685.. csv-table::
686    :header: Field, Type, Description
687    :widths: 1, 1, 4
688
689    tileid,           int,              "Local ID of tile"
690    wangid,           array,            "Array of Wang color indexes (``uchar[8]``)"
691
692Example:
693
694.. code:: json
695
696    {
697      "tileid": 0,
698      "wangid": [2, 0, 1, 0, 1, 0, 2, 0]
699    }
700
701.. _json-objecttemplate:
702
703Object Template
704---------------
705
706An object template is written to its own file and referenced by any
707instances of that template.
708
709.. csv-table::
710    :header: Field, Type, Description
711    :widths: 1, 1, 4
712
713    type,             string,              "``template``"
714    tileset,          :ref:`json-tileset`, "External tileset used by the template (optional)"
715    object,           :ref:`json-object`,  "The object instantiated by this template"
716
717.. _json-property:
718
719Property
720--------
721
722.. csv-table::
723    :header: Field, Type, Description
724    :widths: 1, 1, 4
725
726    name,             string,           "Name of the property"
727    type,             string,           "Type of the property (``string`` (default), ``int``, ``float``, ``bool``, ``color`` or ``file`` (since 0.16, with ``color`` and ``file`` added in 0.17))"
728    value,            value,            "Value of the property"
729
730.. _json-point:
731
732Point
733-----
734
735A point on a polygon or a polyline, relative to the position of the object.
736
737.. csv-table::
738    :header: Field, Type, Description
739    :widths: 1, 1, 4
740
741    x,                double,           "X coordinate in pixels"
742    y,                double,           "Y coordinate in pixels"
743
744Changelog
745---------
746
747Tiled 1.7
748~~~~~~~~~
749
750* The :ref:`json-tile` objects in a tileset are no longer always saved with
751  increasing IDs. They are now saved in the display order, which can be changed
752  in Tiled.
753
754Tiled 1.6
755~~~~~~~~~
756
757* The ``version`` property is now written as a string ("1.6") instead of a
758  number (1.5).
759
760Tiled 1.5
761~~~~~~~~~
762
763* Unified ``cornercolors`` and ``edgecolors`` properties of :ref:`json-wangset`
764  as the new ``colors`` property.
765
766* :ref:`json-wangcolor` can now store ``properties``.
767
768* Added ``transformations`` property to :ref:`json-tileset` (see
769  :ref:`json-tileset-transformations`).
770
771* Removed ``dflip``, ``hflip`` and ``vflip`` properties from
772  :ref:`json-wangtile` (no longer supported).
773
774Tiled 1.4
775~~~~~~~~~
776
777* Added ``objectalignment`` to the :ref:`json-tileset` object.
778* Added ``tintcolor`` to the :ref:`json-layer` object.
779
780Tiled 1.3
781~~~~~~~~~
782
783* Added an ``editorsettings`` property to top-level :ref:`json-map` and
784  :ref:`json-tileset` objects, which is used to store editor specific settings
785  that are generally not relevant when loading a map or tileset.
786
787* Added support for Zstandard compression for tile layer data
788  (``"compression": "zstd"`` on :ref:`tile layer objects <json-layer>`).
789
790* Added the ``compressionlevel`` property to the :ref:`json-map` object,
791  which stores the compression level to use for compressed tile layer data.
792
793Tiled 1.2
794~~~~~~~~~
795
796* Added ``nextlayerid`` to the :ref:`json-map` object.
797
798* Added ``id`` to the :ref:`json-layer` object.
799
800* The tiles in a :ref:`json-tileset` are now stored as an array instead
801  of an object. Previously the tile IDs were stored as string keys of
802  the "tiles" object, now they are stored as ``id`` property of each
803  :ref:`Tile <json-tile>` object.
804
805* Custom tile properties are now stored within each
806  :ref:`Tile <json-tile>` instead of being included as
807  ``tileproperties`` in the :ref:`json-tileset` object.
808
809* Custom properties are now stored in an array instead of an object
810  where the property names were the keys. Each property is now an object
811  that stores the name, type and value of the property. The separate
812  ``propertytypes`` and ``tilepropertytypes`` properties have been
813  removed.
814
815Tiled 1.1
816~~~~~~~~~
817
818* Added a :ref:`chunked data format <json-chunk>`, currently used for
819  :doc:`infinite maps </manual/using-infinite-maps>`.
820
821* :doc:`Templates </manual/using-templates>` were added. Templates can
822  be stored as JSON files with an :ref:`json-objecttemplate` object.
823
824* :ref:`Tilesets <json-tileset>` can now contain
825  :doc:`Terrain Sets </manual/terrain>`. They are saved in the
826  new :ref:`json-wangset` object (since Tiled 1.1.5).
827