Scripts Python

Note

Since Tiled 1.3, Tiled can be extended using JavaScript. The JavaScript API provides a lot more opportunity for extending Tiled’s functionality than just adding custom map formats. It is fully documented and works out of the box on all platforms. It recommended over the Python plugin whenever possible.

Tiled ships with a plugin that enables you to use Python 3 to add support for custom map and tileset formats.

Pour que les scripts soient chargés, ils doivent être placé dans ~/.tiled. Tiled vérifie si ce répertoire change, donc il n’y a pas besoin de relancer Tiled après avoir ajouté ou changé des scripts (cependant le répertoire doit exister avant de lancer Tiled).

Il y a plusieurs scripts d’exemple disponibles dans le dépôt.

Note

Pour créer le dossier ~/.tiled sur Windows, ouvrez l’invite de commande (cmd.exe), qui doit commencer dans votre dossier personnel par défaut, puis entrez mkdir .tiled pour créer le dossier.

Sur Linux, les dossiers commençant avec un point sont cachés par défaut. Dans la plupart des explorateurs de fichiers vous pouvez activer la visibilité des fichiers cachés en utilisant Ctrl+H.

Note

Depuis Tiled 1.2.4, les greffons en Python sont désactivés par défaut, car le chargement de ce greffon peut causer un plantage dépendant de la version de Python installée sur le système (#2091). Pour utiliser le greffon en Python, veuillez tout d’abord l’activer dans les Préférences.

Avertissement

For the Tiled Python plugin to work you’ll need to install a compatible version of Python.

On Windows, get Python from https://www.python.org/. As of Tiled 1.11, the Windows 10+ build requires Python 3.12 whereas the Windows 7-8 build requires Python 3.8. You will also need to check the box « Add python.exe to PATH » in the installer:

../../_images/python-windows.png

On Linux you will need to install the appropriate package. However, currently Linux AppImage builds are done on Ubuntu 22.04 against Python 3.10, and you’d need to install the same version (on Ubuntu likely libpython3.10 and on Fedora python3.10-libs).

The Python plugin is not available for macOS releases, nor in the Ubuntu snap.

Exemple de Greffon d’Exportation

Supposez que vous voulez une carte exportée dans le format suivant :

29,29,29,29,29,29,32,-1,34,29,29,29,29,29,29,
29,29,29,29,29,29,32,-1,34,29,29,29,29,29,29,
29,29,29,29,29,29,32,-1,34,29,29,29,29,29,29,
29,29,29,29,29,29,32,-1,34,29,29,29,29,29,29,
25,25,25,25,25,25,44,-1,34,29,29,29,29,29,29,
-1,-1,-1,-1,-1,-1,-1,-1,34,29,29,29,29,29,29,
41,41,41,41,41,41,41,41,42,29,29,24,25,25,25,
29,29,29,29,29,29,29,29,29,29,29,32,-1,-1,-1,
29,29,29,29,29,29,39,29,29,29,29,32,-1,35,41,
29,29,29,29,29,29,29,29,29,29,29,32,-1,34,29,
29,29,29,29,29,29,29,29,37,29,29,32,-1,34,29;

Vous pouvez réalisez ceci en sauvegardant le script example.py suivant dans le dossier de scripts :

from tiled import *

class Example(Plugin):
    @classmethod
    def nameFilter(cls):
        return "Example files (*.example)"

    @classmethod
    def shortName(cls):
        return "example"

    @classmethod
    def write(cls, tileMap, fileName):
        with open(fileName, 'w') as fileHandle:
            for i in range(tileMap.layerCount()):
                if isTileLayerAt(tileMap, i):
                    tileLayer = tileLayerAt(tileMap, i)
                    for y in range(tileLayer.height()):
                        tiles = []
                        for x in range(tileLayer.width()):
                            if tileLayer.cellAt(x, y).tile() != None:
                                tiles.append(str(tileLayer.cellAt(x, y).tile().id()))
                            else:
                                tiles.append(str(-1))
                        line = ','.join(tiles)
                        if y == tileLayer.height() - 1:
                            line += ';'
                        else:
                            line += ','
                        print(line, file=fileHandle)


        return True

Ensuite vous pourrez voir une entrée « Example files » dans la liste de types dans Fichier > Exporter, qui vous permet d’exporter la carte en utilisant le script ci-dessus.

Note

Cet exemple ne supporte pas l’utilisation de calques de groupes.

New in Tiled 1.11

Tileset Plugins

To write tileset plugins, extend your class from tiled.TilesetPlugin instead of tiled.Plugin.

Déboguer Votre Script

Toute erreur rencontrée lors de l’analyse ou du lancer du script sont affichées dans la Console, qui peut être activée dans Vue > Vues et Barres d’Outils > Console.

Référence de l’API

Ce serait bien d’avoir une référence complète de l’API documentée ici, mais pour le moment veuillez voir le fichier source pour les classes et méthodes disponibles.

Note

Toute aide pour maintenir le plugin en Python est vivement appréciée. Voir tickets ouverts liés au support Python