Skip to content

Spec: tileset

Tilesets are files that are used to draw a map by copying individual cells from an image into the screen by repeating those. A unique tileset can be reused by several maps to avoid recreating every collision and animations each time a new map is created.

They can be used directly as C code but can be written and read from files as well.

Tilesets consists of:

  • An image to use as a sprite,
  • Dimensions of individual cells in that image,
  • Set of animations for specific tiles,
  • Set of collision masks for specific tiles.

Tilesets have an extension of .tileset.

File format

The file format is a simple plain text where each each line consist of a directive.

Caution

Order is important. You must make sure that every directives are listed in the same order.

The file format must be defined as following where each <> must be replaced by the appropriate C type name.

tilewidth|<unsigned int>
tileheight|<unsigned int>
image|<const char *>
tiledefs
<unsigned short>|<int>|<int>|<unsigned int>|<unsigned int>
...
animations
<unsigned short>|<const char *>|<unsigned int>

Description of directives:

tilewidth
Cell width in the image.
tileheight
Cell height in the image.
image
Path to image to use (must be relative).
tiledefs

Start a list of tile definitions to describe a collision mask for a given tile. Each line after this directive describe a unique rectangle for one tile by specifying tile id, x, y, width, height in order.

This section is optional and can be omitted entirely.

animations
Start a list of tile animations that should be used instead of drawing from the image sprite itself. Each line after this directive describe an animation for a given tile by specifying tile id, animation file, delay in order.

Examples

The following file is a tileset using the image world.png that has 64x64 dimensions for each cell.

tilewidth|64
tileheight|64
image|world.png

The following file adds some collision rectangles on tiles 3 and 5. The rectangle collision for the tile id 3 has dimensions of W=30, H=30, X=5, Y=5 and the rectangle for the tile id 5 has dimensions of W=10, H=15, X=10, Y=10.

tilewidth|64
tileheight|64
image|world.png
tiledefs
3|30|30|5|5
5|10|15|10|10

The following file adds an animation for the tile id 3 using the file animation-water.png with a delay of 500 ms per tile.

tilewidth|64
tileheight|64
image|world.png
animations
3|animation-water.png|500