Automapping

Qu’est-ce que l’Automapping ?

L’automapping peut automatiquement placer ou remplacer des tuiles en fonction de règles que vous définissez. Cette fonctionnalité détecte les tuiles de votre carte active qui concordent avec les inputs de vos règles, et si elle en trouve, place les outputs correspondants. Cela permet d’automatiser entièrement les placements de tuiles complexes ou répétitifs, ce qui accélère grandement votre construction de cartes et peut vous aider à éviter des erreurs.

If your tiles are set up to work as corners and edges of shapes, you may want to look into using Terrains instead. Terrains provide a more convenient way to automate placement of such tiles.

L’automapping peut être appliqué manuellement via Carte > AutoMap, ou dynamiquement à mesure que vous dessinez la carte si vous activez Carte > AutoMap pendant le dessin.

Note

L’automapping a profondément changé avec Tiled 1.9. Il est désormais 10 à 30 fois plus rapide et il est bien plus intuitif de définir ses règles, mais il agit différemment de l’ancien système sur certains points. Les anciennes règles devraient toujours fonctionner de la même manière qu’avant, mais nous vous invitons à consulter la section sur l’actualisation des règles. Si vous avez besoin d’aide pour comprendre comment fonctionnaient les anciennes règles, l”ancienne documentation est disponible sur GitHub.

If you are making new rules, make sure you do not have any regions layers. These will enable the old Automapping system, and the rules will likely not behave as you intend.

Configuration du fichier de règles

Les règles d’automapping sont définies au sein de cartes standard, que nous appellerons des cartes de règles. Ces fichiers sont ensuite référencés dans un fichier texte, en général dénommé rules.txt. Le fichier rules.txt peut lister n’importe quel nombre de cartes de règles, par ordre de priorité.

Il y a deux manières pour faire en sorte que les cartes de règles définies au sein du rules.txt s’appliquent à une carte :

  • Depuis Tiled 1.4 Ouvrir Projet > Propriétés du Projet et assigner la propriété « Règles d’automapping » au fichier rules.txt que vous avez créé dans votre projet. Si vous n’avez qu’une carte de règles, vous pouvez aussi assigner le fichier de cette carte directement.

  • Alternativement, vous pouvez enregistrer votre rules.txt dans le même emplacement que les fichiers de cartes pour lesquels vous voulez que les règles s’appliquent. Cela vous permet également d’outrepasser, pour une sélection de cartes, certaines règles qui s’appliqueraient à l’entièreté de votre projet.

Chaque ligne au sein du fichier rules.txt doit être soit :

  • Un chemin vers une carte de règle.

  • Un chemin vers un autre fichier texte qui a la même syntaxe (ex : dans un autre dossier).

  • Depuis Tiled. 1.9 Un filtre des noms de fichiers de cartes, contenu à l’intérieur de [], avec la possibilité d’utiliser * comme joker.

  • Un commentaire, quand la ligne commence avec #ou //.

Par défaut, l’ensemble des règles d’automapping s’appliqueront à chaque carte sur laquelle vous activerez l’automapping. Le filtre de noms de fichiers de cartes vous permet de restreindre les cartes pour lesquelles les règles s’appliqueront. Par exemple, les règles listées après le filtre [village*] ne s’appliqueront qu’aux cartes dont le nom de fichier commence par « village ». Pour recommencer à appliquer des règles à l’ensemble des cartes, vous pouvez utiliser [*], qui correspondra à n’importe quel nom de carte.

Configurer une carte de règles

Une carte de règles est un fichier de carte standard, qui peut être lu et modifié par Tiled (généralement au format TMX ou TMJ). Il peut y avoir n’importe quel nombre de règles dans une seule carte de règles. Au minimum, une carte de règles doit contenir :

  • Un ou plusieurs calques d”input, décrivant quelle combinaison(s) de tuile(s) la carte active devra vérifier.

  • Un ou plusieurs calques d”output, décrivant comment la carte active doit être modifiée lorsqu’une combinaison d’input est détectée.

De plus, des propriétés personnalisées concernant la carte de règles, ses calques ou les objets, peuvent être utilisées pour affiner le comportement global ou spécifique de certaines règles.

Every contiguous region of tiles on the input and output layers is a rule. Tiles are considered contiguous if they’re next to each other vertically, horizontally, or diagonally (8-way connectivity). You can include many rules in one map, as long as you leave space between them. By default all the rules will match simultaneously, and apply their outputs in order from top to bottom, left to right - 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. If you want the rules to match in order and take previous rules” output into account, you can use the MatchInOrder map property.

Définition des inputs

Les calques d”input définissent la tuile ou la combinaison de tuiles qu’une règle va rechercher. Il s’agit de calques de tuiles, et leurs noms doivent suivre cette nomenclature :

input[not][index]_name

Après le premier underscore, insérez le nom du calque d’input ciblé. Par exemple, input_Sol recherchera les tuiles placées sur un calque nommé Sol. Le nom du calque d’input peut contenir plusieurs underscore, donc input_test_casse recherchera les tuiles placées sur un calque nommé test_casse. Si la carte active inclut plusieurs calques nommés de la même manière, celui situé le plus bas sera utilisé. Si la carte active ne contient pas de calque ciblé avec ce nom, la règle contre-vérifiera un calque vide fictif.

La mention not est facultative. Si incluse, elle inverse le fonctionnement du calque, donc au lieu de vérifier les tuiles sur le calque, Tiled vérifiera tout à l’exception de ces tuiles.

La mention index est facultative. Les index ajoutés aux calques d”input vous permettent de créer des règles qui chercheront des correspondances dans un ensemble d’inputs séparés. Tous les inputs avec le même index sont traités comme inclus dans la même condition, et chaque index dispose de son propre ensemble de conditions données. N’importe quelle condition correspondante comptera comme une correspondance de la règle. Un index peut être vide ou peut contenir n’importe quelle chaîne qui ne commence pas par not et ne contient aucun underscore.

Il est tout à fait possible, et même prévu, que plusieurs calques d’input aient le même index. Avoir plusieurs calques d’input de mêmes nom et de même index vous permet de définir plusieurs possibilités de tuiles par coordonnées en tant qu’input, et n’importe quelle combinaison de ces tuiles comptera comme une correspondance.

Exemple d’input

Admettons que vous vouliez chercher des correspondances au sein de sections de deux tuiles de sol, par exemple pour les rendre aléatoires et obtenir n’importe quelle combinaison de tuiles d’herbe et de fleurs, mais des rochers faisant uniquement deux tuiles de large. Vous pouvez arriver à ce résultat de la manière suivante :

Calque de tuiles

Nom

Deux tuiles d'herbe.

input1_Sol

Deux tuiles de fleurs.

input1_Sol

Un rocher réparti sur deux tuiles.

input2_Sol

Les deux premiers calques ont tous deux l’index 1, donc l’automapping cherchera n’importe quelle combinaison de ces tuiles d’herbe et de fleurs. Le dernier calque a l’index 2, donc ses tuiles sont vérifiées séparément. Cela signifie que ces entrées correspondront avec n’importe quelle partie du calque Sol qui ressemblera à :

Deux tuiles d'herbe.Deux tuiles de fleurs.Une tuile de fleur à gauche, une tuile d'herbe à droite.Une tuile d'herbe à gauche, une tuile d'herbe à droite.Un rocher réparti sur deux tuiles.

Depuis Tiled 1.9

Correspondance avec des situations particulières

Dans certains cas, vos tuiles ne suffisent pas à définir tous les scénarios que vous voulez envisager. Tiled fournit un « Jeu de tuiles de règles d’automapping » pour gérer certaines situations particulières, qui peut être ajouté à votre carte de règle via Carte > Ajouter un jeu de tuiles de règles d’automapping.

Vide

Cette tuile entre en correspondance avec n’importe quelle cellule vide. Utilisée sur un calque d”output, cette tuile sortira une tuile vide, vous permettant d’effacer des tuiles grâce à l’Automapping.

Ignorer

Cette tuile n’affecte en aucun cas la règle. Sa seule fonction est de permettre de connecter des parties qui ne le seraient pas sinon, mais elle peut aussi être utilisée dans un souci de clarté.

NonVide

Cette tuile entre en correspondance avec n’importe quelle cellule qui n’est pas vide.

Autre

Cette tuile entre en correspondance avec n’importe quelle cellule contenant une tuile différente de toutes les autres tuiles utilisées par la règle active ciblant le même calque d’entrée. Cela inclut les cellules vides, à moins que la tuile Vide soit explicitement utilisée n’importe où ailleurs par cette règle (depuis Tiled 1.10).

Négation

Cette tuile inverse la condition sur une zone précise, résultant en ce que les autres calques d”entrée ayant le même nom de calque cible agissent comme des inputnot et inversement, mais uniquement sur cette zone, ce qui peut vous aider à simplifier vos règles dans certains cas.

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 Outputs

Les calques output définissent quel sera la sortie donnée lorsque l’entrée d’une règle correspond à un élément présent sur la carte active. Il peut s’agir de tuiles ou de calques d’objets, et leurs noms doivent suivre le schéma suivant, similaire à celui appliqué aux nom de calques d”input :

output[index]_name

Tous les éléments situés après le premier underscore constituent le nom , qui détermine sur quel calque de la carte active les tuiles ou les objets seront placés. Si la carte active contient plusieurs calques ayant ce nom, celui situé le plus en bas sera utilisé. Si la règle trouve une correspondance et que la carte active ne comporte pas déjà de calque d’output avec ce nom, l’automapping créera ce calque.

L”index est facultatif et n’est pas relié aux index d’input. À l’inverse, les index d’output sont utilisés pour randomiser l’output : à chaque fois que la règle trouve une correspondance, un index d’output aléatoire est choisi, et les éléments seront placés sur les seuls calques d’output ayant cet index sur la carte active.

New in Tiled 1.11 For convenience, Tiled 1.11 introduced two changes to the behavior related to indexes. If an output index is completely empty for a given rule, it will never be chosen for that rule. This is useful when some rules have more random options than others. Also, when no index is specified, that part of the rule’s output will always apply when the rule matches. This can be used to combine an unconditional part of a rule’s output with a random part.

Exemple d’Output Aléatoire

Pour reprendre l’exemple utilisé ci-avant, vous pouvez utiliser ce genre de calque d’output pour randomiser le calque Sol :

Calque de tuiles

Nom

Un rocher réparti sur deux tuiles.

output1_Sol

Deux tuiles de fleurs.

output2_Sol

Une fleur à gauche, de l'herbe à droite.

output3_Sol

De l'herbe à gauche, une fleur à droite.

output4_Sol

By default, the output of a rule is allowed to overlap previous output from the same rule, which isn’t always what you want. In the example above, the output rocks can be partially overwritten by subsequent outputs from that rule. You can set the NoOverlappingOutput map property to true to avoid this. This will only apply to rules overlapping their own output, however - outputs from different rules will still be allowed to overlap. If you want to avoid any kind of overlap, you will need to design your inputs such that your inputs are specific enough for different rules to not overlap.

Une sortie d'automapping avec plusieurs rochers coupés en deux où différents outputs se chevauchent.

Dans la mesure où les outputs sont autorisés à se chevaucher et que les inputs ne sont pas très spécifiques, les rochers répartis sur deux tuiles sont écrasés par les outputs subséquents.

Sortie d'automapping où chaque rocher est entier.

With NoOverlappingOutput set to true, outputs don’t overlap and all the rocks are whole.

Sometimes, you may want certain outputs to appear more or less frequently than others. The above example would look much nicer if the flowers and rocks didn’t appear quite so often. You can control the probability of an output index by setting the Probability layer property on one of the layers for that index.

Sortie d'automapping où la majorité du sol est composé d'herbe, avec quelques fleurs et un seul rocher.

Setting the Probability of the grass output to 20 and the Probability of the rock output to 0.5 produces much nicer-looking results.

Avertissement

Bien que l’AutoMap soit capable de générer des Objets, certaines précautions doivent être prises lorsqu’il s’agit de vérifier s’ils font partie de la sortie d’une règle donnée :

  • La rotation de l’Objet n’est pas prise en compte.

  • L’alignement des Objets de Tuiles d’Objets n’est pas pris en compte.

  • Les Ellipses et les Objets Texte utilisent leurs rectangles de délimitation.

  • Les Points de position sont vérifiés de manière stricte : un Point doit se trouver au sein d’une cellule donnée pour être considéré comme en faisant partie ; s’il touche simplement la cellule, ce n’est pas suffisant.

  • Les Polygones et les Polylines sont vérifiés comme s’ils étaient des Points au niveau de leur position ; le reste de la forme n’est pas pris en compte.

Vous pouvez vous assurer que ces Objets seront générés en mettant [Ignore]{.tile.ignore} special tiles au sein d’un calque de sortie de tuiles au niveau de leur position. Il se peut également que vous deviez connecter cette tuile au reste de la règle avec davantage de tuiles Ignore pour être sûr qu’elle n’est pas traitée comme une règle à part.

Any custom properties set on an output layer (other than Probability) will be copied to the target layer when the output is applied. You should normally not need to add any such properties to output layers, but this can be a way to automate setting properties on your layers based on their contents.

Propriétés d’automapping

Le comportement de vos règles peut être modifié par les propriétés attribuées aux cartes de règles, aux calques d’entrée et de sortie, ainsi qu’au cas par cas via l’utilisation d’objets.

Propriétés de Carte

DeleteTiles

This is a boolean map property. When this property is true, the area covered by tiles in input layers is erased from the output layers before applying the rules. This property is mostly provided for backwards compatibility, because since Tiled 1.9 tiles can be erased by outputting the Empty special tile, which is more explicit and more flexible.

Despite the name, this property affects output Object Layers too, deleting any Objects that fully or partially overlap the erased region. This is currently the only way to delete Objects via Automapping.

Avertissement

All the caveats of outputting objects also apply when deleting them, see the warning in the Defining Outputs section.

AutomappingRadius

Cette propriété de carte est un nombre : 1, 2, 3… Si vous utilisez l’option Automapping Pendant le Dessin, cette propriété détermine jusqu’à quelle distance les tuiles affectées par vos changements sont prises en compte par l’Automapping.

MatchOutsideMap Depuis Tiled 1.2

This boolean map property determines whether rules can match even when their input region falls partially outside of a map. By default it is false for bounded maps and true for infinite maps. In some cases it can be useful to enable this for bounded maps. Tiles outside of the map boundaries are simply considered empty, unless one of either OverflowBorder or WrapBorder are also 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.

OverflowBorder Depuis Tiled 1.3

This boolean map property customizes the behavior of the MatchOutsideMap property. When this property is true, tiles outside of the map boundaries are considered as if they were copies of the nearest inbound tiles, effectively “overflowing” the map’s borders to the outside region.

When this property is true, it implies MatchOutsideMap. Note that this property has no effect on infinite maps (since there is no notion of border).

WrapBorder Depuis Tiled 1.3

This boolean map property customizes the behavior of the MatchOutsideMap property. When this property is true, the map effectively “wraps” around itself, making tiles on one border of the map influence the regions on the other border and vice versa.

When this property is true, it implies MatchOutsideMap. Note that this property has no effect on infinite maps (since there is no notion of border).

If both WrapBorder and OverflowBorder are true, WrapBorder takes precedence over OverflowBorder.

MatchInOrder Depuis Tiled 1.9

Quand cette propriété booléenne de carte est définie sur true, chaque règle est appliquée immédiatement après avoir trouvé une correspondance. Cela désactive les correspondances concurrentes, mais permet à chaque règle de prendre en compte la sortie des précédentes règles appliquées (tel que cela était le cas avant Tiled 1.9).

Alternativement, vous pouvez répartir vos règles sur plusieurs cartes de règles. Les cartes de règles sont toujours appliquées dans l’ordre, donc chaque carte de règle peut se baser sur les modifications apportées par les cartes de règles précédentes.

Propriétés des Calques

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

AutoEmpty (alias : StrictEmpty)

Cette propriété booléenne de calque peut être ajoutée à des calques input et inputnot pour personnaliser le comportement pour les tuiles vides au sein d’une règle.

Normally, empty tiles are simply ignored. When AutoEmpty is true, empty tiles within the input region match empty tiles in the target layer. This can only happen when you have multiple input/inputnot layers and some of the tiles that are part of the same rule are empty while others are not. Usually, using the Empty special tile is the best way to specify an empty tile, but this property is useful when you have multiple input layers, some of which need to match many empty tiles. Note that the input region is defined by all input layers, regardless of index.

IgnoreHorizontalFlip New in Tiled 1.11

This boolean layer property can be added to input and inputnot layers to also match horizontally flipped versions of the input tile.

IgnoreVerticalFlip

This boolean layer property can be added to input and inputnot layers to also match vertically flipped versions of the input tile.

IgnoreDiagonalFlip

This boolean layer property can be added to input and inputnot layers to also match anti-diagonally flipped versions of the input tile. This kind of flip is used for 90-degree rotation of tiles.

IgnoreHexRotate120

This boolean layer property can be added to input and inputnot layers to also match 120-degree rotated tiles on hexagonal maps. However, note that Automapping currently does not really work for hexagonal maps since it does not take into account the staggered axis.

Probability Since Tiled 1.10

This float layer property can be added to output layers to control the probability that a given output index will be chosen. The probabilities for each output index are relative to one another, and default to 1.0. For example, if you have outputA with probability 2 and outputB with probability 0.5, A will be chosen four times as often as B. If multiple output layers with the same index have their Probability set, the last (top-most) layer’s probability will be used.

Depuis Tiled 1.9

Propriétés de l’Objet

Un certain nombre d’options peuvent être choisies sur des règles individuelles, même à l’intérieur d’une même carte de règles. Pour ceci, ajoutes un Calque d’Objets à votre carte de règle, nommé rule_options. Sur ce calque, vous pouvez créer des objets rectangles et toute option que vous mettrez en place sur ces objets s’appliquera à toutes les règles qu’elle contient.

Les propriétés suivantes sont supportées sur une base par règle :

ModX

N’applique une règle que toutes les N tuiles sur l’axe X (vaut 1 par défaut).

ModY

N’applique une règle que toutes les N tuiles sur l’axe Y (vaut 1 par défaut).

OffsetX

Un décalage en X appliqué en combinaison avec ModX (vaut 0 par défaut).

OffsetY

Un décalage en Y appliqué en combinaison avec ModY (vaut 0 par défaut).

Probability

La probabilité qu’une règle s’applique, même si ses calques d’input auraient correspondu, de 0 à 1. Dans les faits, une valeur de 0 désactive la règles, tandis qu’une valeur de 1 (le défaut) signifie qu’elle ne sera jamais négligée.

Activé

Une façon pratique de (temporairement) désactiver certaines règles (vaut false) par défaut.

NoOverlappingOutput

Quand elle est mise à true, l’output d’une règle n’a pas le droit de se superposer à d’autres outputs de la même règle (vaut falsepar défaut).

IgnoreLock Since Tiled 1.10

Since Tiled 1.10, Automapping rules no longer modify locked layers. Set this property to true to ignore the lock. This can be useful when you have layers that are only changed by rules and want to keep them locked.

Toutes ces options peuvent aussi être fixées sur la carte de règle elle-même, auquel cas elles s’appliquent par défaut pour toutes les règles, et peuvent alors être surchargées pour certaines règles en plaçant des objets rectangles.

Exemples

Falaises de RPG

Un scénario d’Automapping fréquent est l’automatisation du placement des côtés des falaises. Les jeux de tuiles incluent souvent des tuiles de falaises comme ceci :

Jeu de tuiles avec des tuiles de dessus de falaises et tuiles de côtés de falaises.

Terrains can be used to place the top of the cliff, but they cannot reliably add the vertical cliffs themselves. Fortunately, they are no problem for Automapping.

Tuiles de dessus de falaises, sans côtés.

La carte de départ : le haut, plat, d’une falaise dessinée à l’aide des Terrains.

La même falaise, avec des côtés ajoutés.

L’Automapping peut ajourer les tuiles de falaises correspondantes.

Le côté inférieur et les coins inférieurs de la falaise sont les seuls qui nécessitent des tuiles falaises de ce jeu de tuiles, donc in ne faut que trois règles pour les ajouter. Les règles sont montrées ci-dessous, calque par calque.

Calque de tuiles

Nom

Le coin bas gauche, le côté bas, et le coin bas droite du sommet de la falaise.

input_Falaise

Tuiles de falaise correspondant aux tuiles ci-dessus, positionnées une tuile plus bas, puisqu'elles devraient aller en-dessous des tuiles de sommet de falaise.

output1_Falaise

Pareil qu'au-dessus, mais avec une tuile de milieu différente qui poursuit le même objectif mais qui a des détails différents.

output2_Falaise

Les deux calques d’output ne diffèrent qu’en la tuile qui est en output par la règle du milieu, les deux tuiles en output pour les coins sont les mêmes dans les deux cas. Ces trois règles nous amènent presque au but, mais il y a encore quelques petits problèmes :

Le même exemple de falaise qu'auparavant, avec les falaises ajoutées, mais certaines tuiles ne se connectent pas tout-à-fait correctement.

Le résultat des règles plus haut.

Le même exemple, avec les tuiles problématiques entourées en jaune.

Les coins inférieurs et les côtés de la falaise sont entourés ici parce qu’ils devraient utiliser différentes tuiles quand ils sont adjacents à une tuile falaise.

Ce jeu de tuiles inclut les tuiles pour les côtés et les coins inférieurs du sommet de la falaise quand ils sont adjacents à une falaise, donc vous pouvez faire une autre carte de règles pour les placer. Étant donné qu’il y a des tuiles pour les côtés gauche et droit, et des tuiles pour les coins gauche et droit, il vous faudra quatre règles.

Vous pourriez créer des règles qui vérifient la présente ce tuiles falaise à côté de ces tuiles problèmatiques, mais cela vous demanderait d’énumérer chaque tuile qui est considérée comme une falaise - toutes les variantes cosmétiques d’une section de falaise droite, les coins de falaises - et si vous ne faites pas attention, vous pourriez encore manquer quelques cas limite comme deux côtés de falaise se faisant face. Une approche plus simple serait de vérifier si les tuiles au-dessus de ce côté ou coin est une tuile de coin concave : si c’est le cas, vous pourriez alors savoir que la tuile qui lui est adjacente présentera quelquechose d’une falaise.

Calque de tuiles

Nom

Les tuiles de côté et de coins, avec les tuiles d'angle concave correspondantes au-dessus.

input_Falaise

Differentes tuiles d'angle concave.

input_Falaise

Les tuiles d'output, versions des côtés et des coins supposées être adjacentes aux tuiles de falaise.

output_Falaise

Il n’est pas nécessaire de répéter les tuiles de bord ou de coin dans le second calque « input_Cliff », vous pouvez laisser ces cellules vides et n’inclure que les tuiles d’input additionnelles dont vous avez besoin.

Avec ces règles additionnelles en place, vous devriez avoir le résultat montré en haut de cette section : toutes les falaises en place, sans trous transparents à l’endroit où les côtés et les coins touchent les falaises.

Étant donné que ces règles fonctionnent avec un calque nommé « Cliff », ils n’affecteront pas les falaises dessinées dans n’importe quel autre calque. Si vous voules automapper des falaises dans plusieurs calques différents, ce qui pourrait être nécessaire si vous voulez empiler des falaises, il vous faudra dupliquer la carte de régles et mettre à jour les noms des calques d’input et d’output.

Automapping Pendant le Dessin

Les règles ci-dessus fonctionnent bien si vous dessinez vos sommets de collines avec Terrains et activez ensuite l’Automapping manuellement, mais si vous vouliez voir les falaises apparaître au fur et à mesure que vous dessinez avec Terrains, ou que vous vouliez continuer à dessiner avec Terrains, après avoir automappé à la main ?

Animation montrant l'effacement du Terrain de sommet de falaise. Le sommet de falaise est mis à jour correctement, mais les tuiles falaise ne le sont pas.

Sans quelques règle supplémentaires, l’Automapping pendant le dessin peut produire des résultats confus.

Pour cela, vos règles devront prendre en compte les tuiles qui auront été précédemment placées par l’Automapping.

Indication

Si vous utilisez Automapping Pendant le Dessin avec Terrains, il sera utile que vos Terrains prennent en compte les tuiles qui pourraient être crées dans ce même calque par l’Automapping. Dans cet exemple, cela signifierait étiqueter les tuiles de bord et de coin qui sont supposées être à côté de collines avec la même étiquette Terrain que leur version de base.

Cela aura pour effet conjoint de faire sortir ces tuiles aléatoirement par Terrains alors qu’elles ne sont pas requises, mais on peut remédier à cela en mettant la probabilité de ces tuiles à 0 dans l’éditeur de jeu de tuiles. Si vous utilisez toujours ces Terrains avec l’Automapping, vous pouvez aussi simplement laisser l’Automapping corriger les tuiles.

Il y a deux façons de faire pour que vos règles d’Automapping prennent en compte leur propre output :

  • Inclure ces tuiles en tant qu’inputs alternatifs dans toutes les règles, ou

  • Faire un autre jeu de règles pour remettre toutes les tuiles alternatives dans un état uniforme.

L’option appropriée dépendra de vos règles spécifiques. Dans cette situation, la seconde est la plus simple : tout ce que vous avez à faire est d’effacer toutes les tuiles falaises, et remplacer les variants censés être placés contre des falaises par leurs versions de bases. Pour cela, vous devriez créer une autre carte de règle, et la placer avant les autres règles dans votre rules.txt, de façon à ce qu’il prépare la carte pour ces autres règles. Les véritables règles sont juste de simples substitutions :

Calque de tuiles

Nom

Les différentes tuiles falaise en ligne au-dessus, et les variations de falaise des tuiles de côté et d'angle en ligne en-dessous.

input_Falaise

Tuiles Empty entourées en rouge dans la ligne au-dessus, et les variantes de base des tuiles de côté et d'angle dans la ligne au-dessous.

output_Falaise

Les tuiles d’output dans la ligne du haut sont les tuiles spéciales Empty, qui signifient que l’output effacera ces tuiles.

For Automap While Drawing to work correctly, you may also need to increase the AutomappingRadius property of your rules maps. This is because some of the rules may look only at tiles near the ones you change by drawing, such as the rules that erase cliff tiles. In this example, you will probably need to set the AutomappingRadius to 1 on the reset rules and on the rules that add cliffs.

Animation montrant l'effacement du Terrain en haut de la falaise. Cette fois, tout est mis à jour correctement.

À présent, Automap Pendant le Dessin produit des résultats corrects.

Détails pour un jeu à scrolling horizontal

Vous pouvez utiliser l’Automapping pout ajouter divers détails à vos cartes. Ce petit exemple montre l’ajout de détails au premier plan pour un jeu de plateformes latéral. Ce jeu de tuiles comporte un certain nombre de tuiles plateforme, dont certaines ont des dessus rocheux, et certaines des dessus herbeux. Ces deux règles ajouteront des herbes et fleurs décoratives à un calque différent, correspondant aux tuiles couvertes d’herbe, et effaceront toute décoration qui se trouverait sur des tuiles non-herbeuses. Il y a beaucoup de calques d’entrée, parce qu’il y a beaucoup de tuiles couvertes d’herbe à passer en revue.

Calque de tuiles

Nom

Deux tuiles de transition pierre-herbe.

input_Plateforme

Deux tuiles herbe.

input_Plateforme

Deux tuiles de transition herbe-pierre.

input_Plateforme

Deux tuiles d'angle gauche d'herbe.

input_Plateforme

Deux tuiles d'angle gauche d'herbe éparse.

input_Plateforme

Rien dans la première règle, tuile Negate dans la seconde règle.

input_Plateforme

Tuile de détails floraux dans la première règle, tuile Empty dans la seconde.

outputA_Premierplan

Tuile de détails d'herbe dans la première règle, tuile Empty dans la seconde.

outputB_Premierplan

Deux tuiles Empty.

outputC_Premierplan

The inputs for these rules are identical except for the last input layer, in which the second rule, which deletes the foreground detail tiles, has the Negate special tile. This makes all those input layers act like inputnot layers, but only in that specific location. This means the first rule matches whenever it encounters any of those grassy-topped tiles, while the second rule matches whenever it encounters anything other than those grassy-topped tiles. The second rule could’ve also been made with a bunch of inputnot layers instead, but using the Negate tile reduces how many layers this rule map needs, and it’s easier to see that the input tiles are negated when the layers are all viewed together:

Les deux règles avec tant les inputs que les outputs visibles, mais la seconde règle a le signe négation sur ses tuiles de plateforme.

Les trois outputs sélectionnent un détail de premier plan aléatoire pour la première règle, et sont tous Empty pour la seconde. Un des outputs pour la première règle est aussi Empty, juste pour un peu plus de variété.

Plateformes avec de l'herbe et des fleurs sur certaines des tuiles herbeuses.

Un résultat des deux règles au-dessus.

Mise à jour de Règles Héritées d’une version précédente

If you have some Automapping rules from before Tiled 1.9, they should still work much as they always did in most cases. When Tiled sees that a rule map contains regions layers, it will automatically bring back the old behavior - rules will be matched in order by default, cells within input regions that are empty in all the input layers for a given layer and index will be treated as « Other », and completely empty output indices will still be selected as valid outputs.

Avertissement

In Tiled 1.9.x, the presence of regions layers did not imply MatchInOrder. If you’re using 1.9.x rather than 1.10+ and want to use legacy rules, you’ll need to set the MatchInOrder map property to true.

Si vous voulez plutôt mettre vos règles à jour pour ne pas dépendre d’un ancien comportement, cela peut être aussi simple que d’effacer votre(vos) calque(s) regions, ou bien cela pourrait demander un peu plus de travail, selon comment vos règles sont configurées :

  • If your rules need to take the output of other rules in the same rules map into account, set the MatchInOrder map property to true.

  • Lors de la suppression de vos calques regions, assurez-vous que vous ne comptez pas sur elles pour connecter des régions de tuiles qui deviendraient déconnectées sans elles. Si c’est le cas, utilisez la tuile spéciale Ignore pour les connecter dans un des calques input, pour que Tiled sache qu’elles font partie de la même règle. Pour vous assurer que les règles se comportent exactement de la même façon, remplissez tout ce qui faisait partie de la région d’input.

  • If were using the StrictEmpty map property to look for empty input tiles, you should now use the Empty special tile instead in the cells you want to check for being empty. You can also continue use the StrictEmpty property (or its newer alias, AutoEmpty), as long as at least one other input layer is not empty at those locations.

  • Si vous vous reposiez sur le comportement qui est qu’une tuile laissée vide dans tous les calques d’input pour un index donné est traitée comme “toute tuile qui n’est pas dans cette règle”, vous devriez plutôt utiliser la tuile spéciale Other à ces emplacements, et aussi la tuile spéciale Empty sur un calque non input à ces mêmes emplacements. La tuile Empty est nécessaire parce que l’ancien Other ne détecte pas Empty, mais la tuile MatchType Other détecte bien Empty.

  • If you have rules that rely on some output indices being empty to randomly not make any changes, you will need to place Ignore special tiles in at least one layer of each empty output index so that those indices aren’t ignored. Alternatively, you can use rule_options to give those rules a chance to not run at all.

  • If you had rules with random output, but did not specify an index for one of the outputs, this part of the rule’s output is now excluded from the options and applied unconditionally instead. If all outputs should be random options, make sure they all have an index. You can automate updating your existing rule maps with the « Add Output Index » script.

Crédits

L’exemple de Scroller latéral utilise des ressource artistiques de A platformer in the forest par Buch.