Tile layers
A tile layer is a 2D grid of integers. Each cell holds a global tile ID (GID): a number that points into the tileset list. A 0 means the cell is empty.
You can stack as many tile layers as you want. The order in the layer panel is the draw order, top of the list draws on top. Hide a layer and the renderer skips it; lock a layer and the brushes refuse to paint into it.
GIDs and flip flags
GridCraft follows the Tiled GID convention. The low 29 bits are the tile index. The top 3 bits are flip flags:
0x80000000 flipped horizontally 0x40000000 flipped vertically 0x20000000 flipped diagonally (combine with H or V for 90 / 270 rotation)
When you press X, Y, or D over a tile, GridCraft toggles those bits on the value in the cell. Exporters either preserve those bits (Tiled JSON, CSV) or translate them into the target engine's rotation encoding.
Map size and infinite maps
A finite map has a fixed width and height. Every layer shares those dimensions. An infinite map stores data in chunks instead: the editor only allocates a chunk where you actually paint. You can pan out as far as you want.
Both modes round-trip with Tiled. Infinite maps export to engines that support them (Tiled JSON), and get flattened to a finite bounding box for engines that don't (Godot, GameMaker, Defold, and the binary server export).
Properties
Tile layers carry their own properties (name, opacity, visible, offset, parallax). Tilesets carry per-tile properties. Object layers carry per-object properties. They all round-trip through the .tmj exporter.