Quarter-Tile Autotiling

Since Oskar posted about it, I see an increasing amount of praise for his Dual Grid proposal for autotiling terrains. It works by drawing tiles at a half-cell offset to the base grid, creating a dual grid, and using marching squares autotiling to select which tile to draw based on the terrains the corners of the dual grid, which is the centers of base grid.

This is a great scheme. It’s simple, only needs a few tiles and can be extended quite easily. It’s used in many games.

But, it does have some drawbacks. The dual grid is difficult to get your head around. You have to worry about ambiguous tiles. And despite being a substantial improvement over the blob pattern, it still requires drawing quite a number of different tiles.

I’m here to explain an alternative, quarter-tile autotiling. Quarter-tiling has also been called sub-tiles, meta-tiles (when doubling instead of halving). I’ve previous described as micro blob, which is the same thing with precomposition. It’s best known for being the tiling built into the RPG Maker engine.

Quarter-tiling is pretty easy to implement, and requires substantially less effort to create tiles for, as it uses fewer, smaller tiles. That does mean it’s not possible to produce as much tile variation as marching squares. But there’s plenty of techniques for adding that back.

Later, we’ll look at ortho-tiles – an extension of quarter-tiles to irregular, non-square, grids.

Quarter-tiles

Quarter-tile autotiling, as it names suggests, is based on splitting each cell in the base grid, into 4 cells, each half the height and width of the base cell. We then fill those quarter-cells with half size tiles called quarter-tiles.

Each quarter-tile is chosen based on the terrain of the current cell, and the 3 other cell it’s adjacent or diagonal to. So, the bottom right quarter-tile would look one cell right, one cell down, and one cell down and right.

There’s 6 rules total to chose which quarter tile to use, shown below. A “*” indicates we don’t care what terrain that tile has.

Alternatively, you can use a bitmask to find the matching tile:

The rules for the other three quadrants are the same, just rotated. If your tiles rotate, then only the 5 quarter-tiles above are needed for the entire tileset. Otherwise, it requires 14-20 tiles, depending on how much you share the same quarter-tile in different quadrants.

Applying them, you can get something like this:

A 2 by 2 set of cells filled with 16 quarter tiles using the rules above.

Feature Comparison and Drawbacks

So why would you want to use quarter tiles, when marching squares is so handy? Well, it really comes down to there being fewer, smaller tiles, and not having to deal with the confusion of a dual grid.

But less tiles comes at a cost. This sort of tiling has far less variation between tiles, which can give it an artificial look. And some popular styles of tile are simply not possible. Because all the quarter-tiles are half size, you cannot make swooping curves of radius larger than half the size of a tile, something perfectly possible with marching squares.

You also cannot draw tiles where both terrains are roughly equal in spacing. Doing so would mean that the border between them ends up on the dividing line between quarter-tiles, which causes problems. Instead you need one terrain to shrink or grow a bit, so that the border ends up wholly contained inside the quarter tiles.

Two tiles that can’t be easily done quarter tiles as they sprawl too much.
Marching Squares would handle this
Marching SquaresQuarter-tiles
Tiles needed (with rotation)65 half size
Tiles needed (no rotation)1614-20 half size
Terrain data stored on…Vertices (dual grid)Cells
Handles larger curves and bordersYesNo
Multiple terrainsYesNo

In 3d

In 3d it works much the same, you’d split a cube into 8 smaller cubes, and the choice of which eighth-tile to use would depend on the cell, 3 adjacent cells, and 4 other cells. I think with full rotations and reflections, 10 tiles are needed (vs 15 for marching cubes).

The 10 cases of eighth-tiles. “Don’t care” vertices not shown.

Precomposition

Splitting up the grid into quarter-cells is a lot of coding, and not all that well supported in engines. In practise, it’s far more common to assemble the quarter-tiles into every possible full tile ahead of time. This gives you the 48 tiles of the blob pattern. Then those tiles can be handled normally by the game engine, including normal autotiling.

There’s a number of tools that do this step for you, such as TileGen or Tilesetter. I cover this idea a bit more in this article on autotiling, and on an older article.

Multiple Terrains

Marching squares extends quite logically to multiple terains, instead of using just solid/empty booleans. I’ve got a whole article on it. But it does require quite a lot of tiles.

There’s no obvious extension for quarter tiles. Generally, i’ve seen games take one of two approaches:

1) Overlap multiple seperate autotilings with transparency, one per terrain.

Base terrains
Lots of overlap

2) Design tiles for each pair of terrains, and pick the two most prominent one for each quarter tile. You end up with some “sharp” transitions, but often the main features are still preserved.

Dwarf Fortress uses a mix of tile transitions and no transitions, and it looks great

Non-Square Grids

In my next article, I discuss ortho-tiling, an extension of quarter-tiles to any grid of polygons.