Automapping

Qu’est-ce que l’Automapping ?

L’Automapping est un outil avancé permettant de rechercher des combinaisons de tuiles dans les calques d’une carte et de remplacer ces parties par d’autres combinaisons de tuiles. Cela permet à l’utilisateur de dessiner des structures avec un gain de temps significatif car l’Automapping sera capable de générer des scénarios complexes, qui auraient requis bien plus de temps s’ils avaient été créés manuellement.

Le but de l’Automapping est donc que vous n’avez qu’à dessiner que dans un seul calque puis tout sera créé pour vous. Cela apporte quelques avantages :

  • Vitesse de travail - moins de temps requis pour créer une carte.

  • Moins d’erreurs - le but principal est de réduire la quantité d’erreurs. Si les règles ont été créées convenablement, il n’y a aucune erreur cachée.

Mise en Place

The Automapping feature looks for a text file called rules.txt in the folder where the current map is located. If there isn’t one, it uses the Automapping rules file set in your Project. Each line in this text 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 //.

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.

A rule map is a standard map file, which can be read and written by Tiled (in TMX or JSON format). A rule map can define any number of rules. It consists of 4 major parts:

  1. The definition of regions describes which locations of the rule map are actually used to create Automapping rules.

  2. La définition des entrées décrit quel type de motif la carte de travail cherchera.

  3. La définition des sorties décrit de quelle manière la carte de travail sera changée lorsqu’un motif d’entrée a été trouvé.

  4. Les propriétés de carte sont utilisées pour affiner la localisation du motif d’entrée et la sortie de toutes les règles comprises dans ce fichier de règles.

Définir les Régions

Up to three special layers can be used to define the input and output region of each rule:

  • A layer called regions defines the shared input and output region for each rule. Using this layer can save some work when the input and output regions are entirely or mostly the same.

  • A layer called regions_input defines just the input region for each rule.

  • A layer called regions_output defines just the output region for each rule.

Since both input and output regions need to be defined, there must be both a regions_input and a regions_output layer if there is no regions layer.

It does not matter which tiles are used to define the regions. So either use any tile or no tile at a coordinate to indicate if that coordinate belongs to a rule or if it doesn’t. Any tiles placed on input or output layers outside of the respective region are ignored.

If multiple rules are defined in one rule map, the regions must not be adjacent. That means there must be at least one tile of unused space in between two rules. If the regions are adjacent (coherent) then both regions are interpreted as one rule. Since Tiled 1.9, diagonal connections are considered adjacent.

Note

If the output tiles are not adjacent to the matching input tiles, the output region can be used to connect the two parts of the rule, since empty output tiles are ignored by default.

Multiple Rules in one Rule Map

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é :

input[not][index]_nom

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.

Plusieurs calques ayant le même nom et index sont explicitement accepté et même voulu. Avoir plusieurs couches ayant le même nom et index permet de définir plusieurs tuiles possibles par coordonnée en tant qu’entrée.

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.

Note

Empty tiles within input or inputnot layers are normally ignored. However, when there are no inputnot layers and all of the input layers contain an empty tile at a given location, it has a special meaning. In this case, it only matches on any tiles that are not empty, and that also are not one of the other input tiles used in the same rule. This can be useful, because normally to achieve this logic you could need a lot of inputnot layers. It is used in the Littoral Basique example.

If this special case is not the desired behavior, there are a few possible workarounds:

  • Adding an empty inputnot layer. This disables the special behavior, causing empty tiles to be ignored.

  • Defining the regions_input and regions_ouput separately, reducing your input region such that it does not contain empty tiles.

  • Setting the StrictEmpty boolean property on the input layer to true. This causes the empty tiles to only match against empty tiles.

Définition des Sorties

Les sorties sont généralement définies par des calques dont le nom suit ce procédé :

output[index]_nom

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.

Les index de la section de sortie n’ont rien à voir avec les index de la section d’entrée, ils sont indépendants. Ils sont utilisés en tant que caractère aléatoire dans la section de sortie. Dans la section d’entrée, ils sont utilisés pour définir plusieurs calques possibles en tant qu’entrée. Donc quand il y a plusieurs index dans une seule règle, la sortie sera choisie justement (distribué uniformément) entre tous les index. Donc un dé sera lancé et un seul index sera choisi. Tous les calques d’entrée portant cet index seront alors copiés dans la carte de travail.

Note that the output is not being checked for overlapping on itself. This can be achieved by setting the map property NoOverlappingRules to true.

Propriétés de Carte

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

DeleteTiles

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.

AutomappingRadius

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
MatchOutsideMap

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
OverflowBorder

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
WrapBorder

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.

NoOverlappingRules

Cette propriété de carte est une propriété booléenne : Une règle est pas autorisée à se recouper sur elle-même.

New in Tiled 1.9
MatchInOrder

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.

Propriétés des Calques

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

AutoEmpty (alias: StrictEmpty)

Cette propriété de calque est une propriété booléenne. Elle peut être ajoutée à des calques input et inputnot pour personnaliser le comportement pour les tuiles vides dans la région d’entrée.

In « AutoEmpty » mode, empty tiles in the input region match empty tiles in the set layer. So when an « input » layer contains an empty tile within the input region, this means an empty tile is allowed at that location. And when an « inputnot » layer contains an empty tile within the input region, it means an empty tile is not allowed at that location.

Exemples

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

Nom

tiles 1 and 2

input_Ground

tiles 3 and 4

input_Ground

tiles 5 and 6

input_Ground

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

Nom

tiles 1 and 2

input_Ground

tiles 3 and 4

input_Ground

tiles 5 and 6

input2_Ground

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.

../../_images/before.png

Voici ce que nous voulons dessiner.

../../_images/flow1.png

Ici nous appliquons les littoraux droits.

../../_images/flow2.png

Ici nous avons quelques coins.

../../_images/flow3.png

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

../../_images/flow4.png

Ici toutes les tuiles infranchissables sont balisées.

../../_images/flow5.png

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

Littoral Basique

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.

Basiquement, la signification que nous allons définir dans la région est : Toutes les tuiles qui sont au Sud d’une tuile d’eau et qui ne sont pas une tuile d’eau elles-même seront remplacées par une tuile de littoral

Calque de tuiles

Nom

../../_images/regions.png

regions

../../_images/input.png

input_Ground

../../_images/output.png

output_Ground

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 topleft 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

Avec cette règle, nous voulons donc placer une tuile de littoral courbé à l’intérieur dans le coin en haut à gauche, voilà pourquoi on ne prête pas attention à la tuile qui s’y trouve actuellement. Nous ne prêtons pas non plus attention à la tuile dans le coin en bas à droite. (probablement de l’eau, mais cela peut aussi être une tuile d’eau décorative, donc ignorez-la).

../../_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

Maintenant nous voulons ajouter tous les neuf motifs possibles que nous avons pu observer comme entrée possible pour cette règle. Nous pouvons bien sûr définir neuf calques différents nommés de input1_Ground à input9_Ground

Neuf calques de tuiles ? ! Quel bazar, on va réordonner tout ça.

Veuillez aussi considérer ne pas avoir que 3 tuiles possibles à ces deux endroits, mais 4. Alors nous aurons besoin de 4*4=16 calques de tuiles pour satisfaire toutes les conditions. Un autre désavantage arrive lorsqu’on considère avoir plus de locations requises : Essayez d’avoir plus que 2 locations requises pour construire une entrée de règle. Donc pour 3 locations, alors toutes les locations peuvent avoir les 3 possibilités, donc vous aurez besoin de 3*3*3=27 calques de tuiles. Ça ne s’arrange pas…

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

Nom

../../_images/input_Ground1.png

input_Ground

../../_images/input_Ground2.png

input_Ground

../../_images/input_Ground3.png

input_Ground

Calque de Sortie

La sortie est simple, puisqu’une seule tuile est requise. Nous avons besoin d’aucun caractère aléatoire, donc l’index ne doit pas être changé, donc il reste vide. Le calque de sortie désiré est nommé Ground, donc le nom du calque de sortie sera output_Ground. La tuile correcte est placée à l’emplacement correct dans ce calque.

../../_images/output_Ground.png

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

Nom

../../_images/input_Ground11.png

input_Ground

../../_images/input_Ground21.png

input_Ground

../../_images/input_Ground31.png

input_Ground

../../_images/output_Ground1.png

output_Ground

../../_images/regions_input1.png

regions_input

../../_images/regions_output1.png

regions_output

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

Nom

../../_images/regions1.png

regions

../../_images/input_Ground.png

input_Ground

../../_images/output_Collision.png

output_Collision

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

Nom

../../_images/regions2.png

regions

../../_images/1.png

input_Ground

../../_images/2.png

input_Ground

../../_images/3.png

input_Ground

../../_images/4.png

input_Ground

../../_images/5.png

input_Ground

../../_images/1.png

output1_Ground

../../_images/2.png

output2_Ground

../../_images/3.png

output3_Ground

../../_images/4.png

output4_Ground

../../_images/5.png

output5_Ground

Un Mur Alternatif

Cet exemple va démontrer comment on peut facilement mettre en place un mur en tant que transition entre une aire explorable et le vide noir infranchissable. Un calque dédié va être utilisé en tant qu’entrée.

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

Nom

../../_images/regions3.png

regions

../../_images/input_Ground4.png

input_Ground

../../_images/output_Ground2.png

output_Walls

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.

../../_images/desired.png

Les tuiles sont alternantes verticalement.

../../_images/firstattempt.png

A broken version of the rule, because NoOverlappingRules 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 NoOverlappingRules to the rule map and setting it to true.

Veuillez garder en tête que la propriété de carte est appliquée pour toutes les règles dans cette carte de règles.