Qu’est-ce que l’Automapping ?

Automapping can automatically place or replace tiles based on predefined rules. This enables complex or repetitive tile placement to be entirely automated, which can make level creation faster and more enjoyable. It can also help to avoid certain types of errors.


The Automapping feature changed significantly in Tiled 1.9. It became 10-30x faster, no longer needs input and output regions to be explicitly defined, works very well while drawing since it no longer produces separate undo steps and a lot of new options were added. Make sure you are up to date, or look for an older version of the documentation!

Setting Up The Rules File

Automapping rules are defined in regular map files, which we’ll call rule maps. These files are then referenced by a text file, usually called rules.txt. The rules.txt can list any number of rule maps, in the order in which their rules should be applied.

There are two ways to make the rule maps defined in the rules.txt apply to a map:

Since Tiled 1.4
  • Open Project > Project Properties and set the « Automapping rules » property to the rules.txt file that you created in your project. If you have only a single rule map, you can also refer to that map file directly.

  • Alternatively, you can save your rules.txt in the same directory as the map files to which you want the rules to apply. This can also be used to override the project-wide rules for a certain set of maps.

Each line in the rules.txt file is either:

  • A path to a rule map.

  • A path to another .txt file which has the same syntax (e.g. in another directory).

  • A map filename filter, enclosed in [] and using * as a wildcard.

  • A comment, when the line starts with # or //.

New in Tiled 1.9

By default, all Automapping rules will run on any map you Automap. The map filename filters let you restrict which maps rules apply to. For example, any rule maps listed after [town*] will only apply to maps whose filenames start with « town ». To start applying rules to all maps again, you can use [*], which will match any map name.

Setting Up a Rule Map

A rule map is a standard map file, which can be read and written by Tiled (usually in TMX or JSON format). A rule map can define any number of rules. At a minimum, a rule map contains:

  • One or more input layers, describing which kind of pattern the working map will be searched for.

  • One or more output layers, describing how the working map is changed when an input pattern is found.

In addition, custom properties on the rule map, its layers and on objects can be used to fine-tune the overall behavior or the behavior of specific rules.

Finally, you may need some special tiles to set up certain rules. Tiled provides a built-in « Automapping Rules Tileset », which can be added to your rule map through Map > Add Automapping Rules Tileset.

Defining the Rules

Multiple Rules in one Rule Map

If multiple rules are defined in one rule map, there must be at least one tile of unused space between the rules. Adjacently placed tiles are interpreted as a single rule. Diagonal connections are considered adjacent as well.


If the output tiles are not adjacent to the matching input tiles, special ignored tiles can be used to connect the two parts of the rule. See Matching Special Cases.

Since Tiled 1.9, the rules within one rule map are matched concurrently by default, so they can’t take into account changes made by other rules defined in the same rule map.

If you have some rules that depend on the output of other rules, you have two options. The easiest is to use the MatchInOrder option to disable concurrent matching of rules. In this case, each match will apply its changes directly, affecting the further application of rules (including the current one).

Alternatively, use multiple rule maps and define the desired sequence within the rules.txt file. This can provide better performance since it still allows the rules within each rule map to be matched concurrently.

Rules are applied (and matched, if using MatchInOrder) in the order in which they appear in the rule map. Rules with smaller Y value come first, and if there are rules at the same Y value, then the rules with smaller X come first. On orthogonal maps this ordering scheme is the same as for reading in most western countries (left to right, top to bottom).

Définition des Entrées

Les entrées sont généralement définies par les calques de tuiles dont le nom suit ce procédé :


où le [not] et [index] sont optionnels. Le nom du calque d’entrée apparaît après le premier tiret du bas. Le nom du calque d’entrée peut bien sûr contenir plus de tirets de bas.

Le nom détermine quel calque de la carte de travail est examinée. Par exemple, le calque input_Sol va examiner le calque nommé Sol de la carte de travail pour cette règle. input_cas_de_test va examiner le calque cas_de_test de la carte de travail pour cette règle.

Multiple layers having the same name and index is explicitly allowed and is intended. Having multiple layers of the same name and index, will allow you to define different possible tiles per coordinate as input.

L’index est utilisé pour créer des conditions d’entrée complètement différentes. Tous les calques ayant le même index sont pris en compte pour former une condition. Chacune de ces conditions sont validées séparément.

  1. L’index ne peut pas contenir un tiret du bas.

  2. L’index ne doit pas commencer par not.

  3. L’index peut être vide.

S’il y a des tuiles sur les calques de tuiles standards, une de ces tuiles doivent être présente pour suivre la règle. Le [not] optionnel inverse la signification de ce calque. Donc s’il y a des calques inputnot, les tuiles placées sur ceux-ci ne peuvent pas exister sur la carte de travail dans la région examinée afin que la règle soit suivie. Vous pouvez combiner l’utilisation des calques input et inputnot pour créer des conditions de règles d’entrée aussi précises ou aussi confuses que vous avez besoin.

New in Tiled 1.9

Matching Special Cases

In addition to placing any of your own tiles on an input or inputnot layer, there are a few special cases that are covered by tiles in the « Automapping Rules Tileset » mentioned previously:


This tile matches any empty cell.


This tile does not affect the rule in any way. Its only function is to allow connecting otherwise disconnected parts into a single rule, but it can also be used for clarity.


This tile matches any non-empty cell.


This tile matches any non-empty cell, which contains a tile that is different from all the tiles used on the current input layer in the current rule.


This tile negates the condition at a specific location. It is effectively the same as swapping all tiles from any input layer with all tiles from any inputnot layer, but might in some cases be more convenient or more readable.

Note that the meaning of these tiles is derived from their custom « MatchType » property. This means that you can set up your own tiles for matching these special cases as well!

Définition des Sorties

Outputs are generally defined by layers whose name follows this scheme:


ce qui est très similaire à la section sur les entrées. En premier le mot output doit être présent. Puis un [index] optionnel peut suivre. Le nom du calque cible apparaît après le premier tiret du bas. Le nom du calque cible peut bien sûr contenir plus de tirets du bas.

Tous les calques ayant le même index sont traités comme une seule sortie possible. Donc les index dans les sorties des règles sont seulement utilisés pour une sortie aléatoire.

The indexes in the output section have nothing to do with the indexes in the input section, they are independent. In the output section they are used for randomness. In the input section they are used to define multiple possible layers as input. So when there are multiple indexes within one rule, the output will be chosen fairly (uniformly distributed) across all indexes. Only the output layers with the chosen index will be put out into the working map.

Note that the output is by default not being checked for overlapping on itself. This can be achieved by setting the map property NoOverlappingOutput to true. This option applies independently for each rule, so different rules can still overlap each other.

Propriétés de Carte

The following map properties can be used to customize the behavior of the rules in a rule map:


This map property is a boolean property: it can be true or false. If rules of this rule map get applied at some location in your map, this map property determines if all other tiles are deleted before applying the rules. Consider a map where you have multiple layers. Not all layers are filled at all places. In that case all tiles of all layers should be cleared, so afterwards there are only the tiles which are defined by the rules. Since when not all tiles are cleared before, you will have still tiles from before at these places, which are not covered by any tile.


Cette propriété de carte est un nombre : 1, 2, 3… Elle détermine combien de tuiles autour de vos changements seront aussi testées pour refaire l’Automapping lors de l’Automapping en direct.

Since Tiled 1.2

Cette propriété de carte détermine si les règles peuvent trouver une correspondance même si leur région d’entrée est partiellement en dehors de la carte. Par défaut c’est false pour les cartes bornées et true pour les cartes infinies. Dans certains cas cela peut être utile de l’activer pour les cartes bornées. Les tuiles en dehors des limites de la carte sont simplement traitées comme vides sauf si OverflowBorder ou WrapBorder sont aussi true.

Tiled 1.0 et 1.1 agissaient comme si cette propriété était true, tandis que les versions de Tiled antérieures agissaient comme si cette propriété était false.

Since Tiled 1.3

Cette propriété de carte personnalise le comportement attendu par ma propriété MatchOutsideMap. Lorsque cette propriété est true, les tuiles en dehors des limites de la carte sont considérées comme des copies de la tuile dans la zone valide de la carte la plus proche, ce qui « déborde » les bords de la carte sur la région extérieure.

Quand cette propriété est true, elle implique MatchOutsideMap. Veuillez noter que cette propriété n’a aucun effet sur les cartes infinies (car il n’y a pas de notion de bord).

Since Tiled 1.3

Cette propriété de carte personnalise le comportement attendu par ma propriété MatchOutsideMap. Lorsque cette propriété est true, la carte « s’enroule » autour d’elle même, ce qui veut dire que les tuiles sur un bord de la carte influence les régions sur le bord opposé et vice versa.

Quand cette propriété est true, elle implique MatchOutsideMap. Veuillez noter que cette propriété n’a aucun effet sur les cartes infinies (car il n’y a pas de notion de bord).

Si WrapBorder et OverflowBorder sont tous les deux true, WrapBorder est prioritaire sur OverflowBorder.

New in Tiled 1.9

When set to true, each rule is applied immediately after a match is found. This disables concurrent matching of rules, but allows each rule to rely on the fact that the modifications resulting from any previous match have already been applied (as used to be the case before Tiled 1.9).

Alternatively, split up your rules over multiple rule maps. They are always applied in-order so one rule map can rely on any modifications by previous rule maps having been applied.

These properties are map wide, meaning it applies to all rules which are part of the rule map. If you need rules with different properties you can use multiple rule maps.

A number of per-rule options are also supported and can be specified as object properties. These can also be placed on the rule map, in which case they apply to all rules in the map.

Propriétés des Calques

Les propriétés suivantes son supportées sur un base par calque :

AutoEmpty (alias: StrictEmpty)

This layer property is a boolean property. It can be added to input and inputnot layers to customize the behavior for empty tiles within a rule.

In « AutoEmpty » mode, empty tiles within the rule match empty tiles in the set layer. This can only happen when you have multiple input/inputnot layers and some of the tiles that are part of the same coherent rule are empty. Normally these tiles would be ignored, unless the special « Empty » tile was placed. With this option they behave as tiles matching « Empty ».

New in Tiled 1.9

Object Properties

A number of options can be set on individual rules, even within the same rule map. To do this, add an Object Layer to your rule map called « rule_options ». On this layer, you can create plain rectangle objects and any options you set on these objects will apply to all rules they contain.

The following options are supported per-rule:


Only apply a rule every N tiles on the X axis (defaults to 1).


Only apply a rule every N tiles on the Y axis (defaults to 1).


An offset applied in combination with ModX (defaults to 0).


An offset applied in combination with ModY (defaults to 0).


The chance that a rule is skipped even if its input layers would have matched, from 0 to 1. A value of 0 effectively disables the rule, whereas a value of 1 (the default) means it is never skipped.


A convenient way to (temporarily) disable some rules (defaults to false).


When set to true, the output of a rule is not allowed to overlap on itself.

All these options can also be set on the rule map itself, in which case they apply as defaults for all rules, which can then be overridden for specific rules by placing rectangle objects.


Exemples de Calques d’Entrée Abstraits

Avoir Plusieurs Calques d’Entrée avec le Même Nom

En sachant que les 3 calques de tuiles sont des entrées, quelles entrées possibles sont dans la carte de travail ?

Calque de tuiles


tiles 1 and 2


tiles 3 and 4


tiles 5 and 6


Les parties suivantes seraient détectées en tant que correspondance pour cette règle :

tiles 1 and 2 tiles 3 and 2 tiles 5 and 2
tiles 1 and 4 tiles 3 and 4 tiles 5 and 4
tiles 1 and 6 tiles 3 and 6 tiles 5 and 6

Calques d’Entrée Utilisant Plusieurs Index

Étant donné les 3 calques de tuiles suivants :

Calque de tuiles


tiles 1 and 2


tiles 3 and 4


tiles 5 and 6


Le dernier calque a un index inégal aux autres index (qui sont vides). Toutes les parties suivantes seraient reconnues en tant que correspondances dans cette carte de travail :

tiles 1 and 2 tiles 3 and 2
tiles 1 and 4 tiles 3 and 4
tiles 5 and 6

Exemples de The Mana World

Les exemples de The Mana World vont démontrer le fonctionnement de beaucoup de fonctionnalités d’Automapping. En premier un littoral sera construit, en ajoutant en premier les parties droites puis ensuite une autre règle corrigera les coins pour qu’ils suivent le jeu de tuiles courant. Après la construction du littoral, les milieux aquatiques seront balisés comme infranchissable pour le moteur de jeu. En dernier, l’herbe doit être constituée de tuiles aléatoires en utilisant 5 tuiles d’herbe différentes.


Voici ce que nous voulons dessiner.


Ici nous appliquons les littoraux droits.


Ici nous avons quelques coins.


Ainsi que les coins de l’autre côté.


Ici toutes les tuiles infranchissables sont balisées.


Si vous regardez l’herbe attentivement, vous verrez qu’elle est maintenant aléatoirement placée.

Littoral Basique


The below examples are not adjusted yet to Tiled 1.9! They still work, since compatibility has been largely maintained, but they use explicit region layers to achieve what you can now do with special Automapping tiles.

Cet exemple va expliquer comment un littoral droit peut être facilement mis en place entre des tuiles d’eau peu profonde et les tuiles d’herbe. Dans cet exemple, nous allons seulement ajouter le littoral, qui a de l’herbe au Sud et de l’eau au Nord.

So basically the meaning we will define in the input region is: All tiles which are south of a water tile and are not water tiles themselves, will be replaced by a shoreline tile.

Calque de tuiles








La région dans laquelle cette règle d’Automapping doit être définie est de 2 tuiles de hauteur et 1 tuile de longueur. Nous avons donc besoin d’un calque nommé regions et il aura 2 tuiles placées pour indiquer cette région.

Le calque d’entrée nommé input_Ground est représenté au milieu. Seule la tuile du haut est remplie par une tuile d’eau. La tuile du bas ne contient aucune tuile. Ce n’est pas une tuile invisible, juste aucune tuile du tout.

Et quand il n’y a aucune tuile dans un endroit d’une région de règle dans un calque d’entrée, quel type de tuiles va être accepté ici ? Toutes les tuiles sont acceptées sauf les tuiles utilisées dans tous les calques d’entrée ayant le même index et nom.

Ici nous avons seulement un calque de tuiles en tant que calque d’entrée ayant seulement la tuile d’eau. Donc à cette position, là où il n’y a aucune tuile, toutes les tuiles sauf cette tuile d’eau sont acceptées.

Le calque de sortie appelé output_Ground affiche les tuiles qui sont placées, si cette règle est suivie.

Coins pour un Littoral

This example is a continuation of the previous example. Now the corners of the given shoreline should be implemented automatically. Within this article we will just examine the bent in corner shoreline in the top left corner. The other shoreline corners are constructed the same way. So after the example is applied, we would like to have the corners of the shoreline get suitable tiles. Since we rely on the other example being finished, we will put the rules needed for the corners into another new rule map (which is listed afterwards in rules.txt).

../../_images/pattern1.png ../../_images/pattern2.png ../../_images/pattern3.png
../../_images/pattern4.png ../../_images/pattern5.png ../../_images/pattern6.png
../../_images/pattern7.png ../../_images/pattern8.png ../../_images/pattern9.png

Le littoral peut avoir plus de coins proche, ce qui veut dire qu’il peut y avoir des tuiles différentes que les tuiles de littoral droites. Dans cette image nous allons voir toutes les entrées qui doivent être couvertes.

Les deux tuiles dans le coin en haut à droite et le coin en bas à gauche sont directement adjacentes à la tuile désirée (légèrement transparente) dans le coin en haut à gauche.

Nous pouvons voir 3 différentes tuiles pour le coin en bas à gauche, qui sont un littoral droit, courbé à l’intérieur ou courbé à l’extérieur.

Nous pouvons aussi voir 3 entrées différents pour le coin en haut à droite, qui sont aussi un littoral droit, courbé à l’intérieur ou à l’extérieur.

Régions d’Entrée et de Sortie

So with this rule we want to put the bent in shore line tile in the top left corner; we don’t care which tile was there before. We also don’t care about the tile in the lower right corner (probably water, but can be any decorative water tile, so just ignore it).

../../_images/regions_input.png ../../_images/regions_output.png ../../_images/regions_united.png

Nous aurons donc besoin de régions d’entrée et de sortie différentes. Dans cette image nous pouvons voir les deux calques de tuiles d’entrée et de sortie. La section d’entrée couvre juste ces deux tuiles tel que nous avons pu le voir. La région de sortie ne couvre que la seule tuile que nous voulons en sortie. Même si les régions d’entrée et de sortie ne se superposent pas, la région unie des régions d’entrée et de sortie est quand même une région cohérente, donc on a besoin d’une seule règle pour que cela marche.

Les régions de sortie peuvent être plus grandes que strictement nécessaire, car quand il n’y a aucune tuile dans la section de sortie, les tuiles dans la carte de travail ne sont pas remplacées mais sont gardées telles quelle, voilà pourquoi les régions de sortie peuvent être redimensionnées de façon à ce qu’elles soient la région unie entre les régions d’entrée et de sortie.

Calques d’Entrée

Now we want to put all the nine possible patterns we observed as possible input for this rule. We could of course define nine different layers input1_Ground up to input9_Ground.

Nine TileLayers?! What a mess; we’ll do it a better way.

Also, consider having not just 3 possible tiles at the 2 locations but 4. Then we would need 4*4=16 tilelayers to get all conditions. Another downside of this comes with more needed locations: Think of more than 2 locations needed to construct a rule input. So for 3 locations, each location could have the 3 possibilities, hence you need 3*3*3 = 27 tilelayers. It’s not getting better…

Essayons-donc un moyen intelligent de le faire : Tous les calques d’entrée ont le même nom, donc pour chaque position chacune des trois tuiles différentes sont valides.

Calque de tuiles








Calque de Sortie

The output is straightforward, since only one tile is needed. No randomness is needed, hence the index is not needed to be varied, so it’s kept empty. The desired output layer is called Ground, so the over all name of the single output layer will be output_Ground. The correct tile is placed at the correct location with this layer.


Les Autres Coins d’un Littoral

Ceci est pour les coins courbés dans l’autre sens. Cet exemple utilise les mêmes concepts, juste avec des tuiles différentes.

Calque de tuiles














Ajouter des Tuiles de Collision

The Mana World utilise un calque de tuiles supplémentaire nommé Collision pour avoir des informations sur si le joueur est capable de marcher sur certaines tuiles ou non. Ce calque est invisible pour le joueur, mais le moteur de jeu l’utilise, qu’il y aie une tuile ou non.

Donc nous devons décider pour chaque position si le joueur peut y marcher et ajouter une tuile dans le calque Collision si elle est infranchissable.

Comme calque d’entrée nous allons analyser le calque Ground et ajouter des tuiles de collision là où le joueur ne doit pas marcher.

En réalité cette tâche est composée de beaucoup de règles, mais chaque règle en elle-même est très simple :

Calque de tuiles








Dans le calque regions ci-dessus nous avons 14 règles différentes, car il y a 14 régions incohérentes dans le calque regions. Il y a 9 tuiles d’eau différentes qui doivent être infranchissables, et 5 tuiles d’herbe différentes qui seront placées aléatoirement dans le prochain exemple.

En entrée nous aurons une de toutes les tuiles utilisées et en sortie il y a une tuile dans le calque Collision ou non.

Avons-nous besoin de règles avec une sortie propre ? No, ce n’est pas nécessaire si vous lancez l’Automapping une seule fois. Mais si vous concevez une carte, vous allez sans doute ajouter des aires avec collision puis enlever des parties de celle-ci et cetera.

So we need to also remove the collision tiles from positions, which are not marked by a collision any more. This can be done by adding the map property DeleteTiles and setting it to true. Then all the parts in the Collision layer will be erased before the Automapping takes place, so the collision tiles are only placed at real unwalkable tiles and the history of if there has been a collision tile placed is neglected.

Tuiles d’Herbe Aléatoires

Dans cet exemple nous allons mélanger toutes les tuiles d’herbe, pour que toute tuile d’herbe soit chacune remplacée par une tuile choisie aléatoirement.

Nous allons prendre comme entrée toutes nos tuiles d’herbe. Cela peut être fait en ayant chaque tuile dans son propre calque d’entrée, pour que chaque tuile soit acceptée pour cette règle.

En sortie nous allons aussi placer chaque tuile d’herbe dans son propre calque de sortie. L”index des calques de sortie doivent être différents de tous les autres calques pour que ce processus soit aléatoire.

La règle suivante peut avoir l’air d’afficher la même chose, mais ce sont bien des tuiles d’herbe différentes. Chaque tuile d’herbe est dans un des calques d’entrée et de sortie (l’ordre des calques importe peu).

Calque de tuiles






















Un Mur Alternatif

This example will demonstrate how a wall as a transition between a walkable area and the unwalkable black void can easily be setup. As input a dedicated set layer will be used.

Vertically the tiles are alternating A dedicated set layer

À mon avis un calque dédié est plus facile à utiliser pour un brouillon, mais pour ajouter des détails tel que des informations de collision sur des tuiles décoratives l’entrée doit utiliser les décorations.

La structure des calques d’entrée, de sortie et de région est très similaire à l’exemple du littoral droit de The Mana World. La différence principale est la taille différente. Comme le mur contient plusieurs tuiles de hauteur, la hauteur des calques de règles est aussi différente. Les tuiles sont aussi alternantes verticalement. Comme vous pouvez le voir sur l’image suivante, toutes les secondes tuiles qui affichent la planche à la base du mur ont une fente, par exemple.

Calque de tuiles








La région dans laquelle cette règle d’Automapping doit être définie doit donc être de 4 tuiles de haut et 2 tuiles de long. Nous avons donc besoin d’un calque nommé regions et il aura 8 tuiles placées pour indiquer cette région. Dans l’image la région du haut montrent un tel calque de région.

Le calque d’entrée a la signification suivante :

S’il y a 2 tuiles marron adjacentes horizontalement dans le calque donné et dans les 2x3 tuiles au-dessus de celles-ci il n’y a pas de tuile marron, cette règle est respectée.

Seules les 2 coordonnées les plus basses contiennent les tuiles marron. Les coordonnées du haut ne contiennent aucune tuile. (Pas de tuile invisible, juste aucune tuile du tout.) Le calque d’entrée nommé input_set est représenté au milieu de l’image.

La sortie consiste aussi d’un seul calque nommé output_Walls. Il contient les vraies tuiles du mur.


Les tuiles sont alternantes verticalement.


A broken version of the rule, because NoOverlappingOutput was not yet set.

Lorsqu’on essaye de correspondre le calque d’entrée au calque désiré (image de droite de l’image tout au début de l’exemple), vous allez voir qu’il correspond jusqu’au bout, peu importe l’ajustement vertical.

Voilà pourquoi quand nous utilisons cette règle telle qu’on vient de le voir, nous n’aurons pas le résultat attendu, parce que la règle se superpose à elle-même. Le problème de superposition est montré dans l’image ci-dessus.

Since the overlapping is not desired, we can turn it off by adding the map property NoOverlappingOutput to the rule map and setting it to true.

Keep in mind that the map property applies for all rules on that rule map, unless we set it only for specific rules using a « rule_options » layer.