Le format de fichier de carte

Chaque carte que vous créez est enregistrée dans un seul fichier texte .json. Le format est petit, lisible et entièrement à vous : vous pouvez l'ouvrir dans n'importe quel éditeur de texte, le placer sous gestion de versions, le sauvegarder, le générer depuis un script ou le déplacer entre instances. Cette page décrit exactement ce qu'il contient.

Vous n'avez besoin de rien de tout cela pour utiliser l'application. Map Blueprint lit et écrit ces fichiers pour vous. Cette référence s'adresse uniquement à ceux qui veulent modifier à la main une carte, en générer une avec un outil, ou comprendre exactement ce qui est exporté. Si vous voulez seulement dessiner des cartes, vous pouvez l'ignorer sans souci.

La structure de premier niveau

Un fichier de carte est un unique objet JSON avec trois clés : zones (votre palette de couleurs), layers (les cartes elles-mêmes, le monde et les éventuels intérieurs) et layerOrder (l'ordre dans lequel les calques sont listés). Dans sa forme la plus simple, il ressemble à ceci :

{
  "zones": {
    "forest": { "name": "Forest", "color": "#3f8f4f" },
    "water":  { "name": "Water", "color": "#3a6ea5" }
  },
  "layers": {
    "world": {
      "name": "Overworld",
      "tiles":   { "10_8": { "z": "forest" }, "11_8": { "z": "water" } },
      "labels":  { "L1": { "x": 10, "y": 8, "text": "Greenwood" } },
      "markers": { "M1": { "x": 11, "y": 8, "icon": "🏰", "scale": 1.5 } }
    }
  },
  "layerOrder": ["world"]
}

Zones, la palette

zones est un objet qui associe une courte clé de zone (un identifiant en minuscules de votre choix, p. ex. forest) à sa définition. Les cases référencent les zones par cette clé, donc renommer le nom affiché d'une zone ne casse jamais la carte.

Calques, les cartes

layers associe un identifiant de calque à un calque. La carte principale utilise toujours l'identifiant world ; les calques supplémentaires (donjons, intérieurs de bâtiments, continents séparés) ont leur propre identifiant. Chaque calque est autonome :

Cases, les cellules peintes

tiles associe une coordonnée de cellule à la zone qui y est peinte. La clé est la position sur la grille écrite "x_y" (colonne puis ligne, reliées par un tiret bas). Seules les cases peintes sont enregistrées, l'espace vide ne prend aucune place, donc une grande carte presque vide reste un petit fichier. Chaque cellule contient un seul champ, z, la clé de zone de la palette ci-dessus.

"tiles": {
  "45_44": { "z": "plains" },
  "46_44": { "z": "plains" },
  "46_45": { "z": "water" }
}

Étiquettes, noms de lieux

labels associe un identifiant (une chaîne unique quelconque) à une étiquette de texte posée sur la carte. Chaque étiquette a une position sur la grille et son texte :

Marqueurs, icônes et entrées

markers associe un identifiant à une icône posée sur la carte. Un marqueur peut aussi servir d'entrée vers un autre calque, c'est ainsi que vous reliez le monde à un donjon.

Ordre des calques

layerOrder est une liste d'identifiants de calque qui fixe l'ordre d'apparition des calques. Elle inclut toujours "world". Tout calque qui existe mais manque dans la liste est simplement ajouté à la fin au chargement du fichier, donc rien de grave si vous en oubliez un.


Exporter et importer

Depuis votre tableau de bord Cartes, vous pouvez Exporter n'importe quelle carte pour la télécharger en fichier .json, et Importer un fichier .json pour ajouter une carte. C'est le moyen le plus simple de déplacer une carte d'un ordinateur à l'autre, de la partager avec un coéquipier ou de garder une sauvegarde hors site.

Un exemple complet

Voici une petite carte complète avec deux calques, un monde dont le marqueur de grotte renvoie vers un calque de donjon :

{
  "zones": {
    "water":   { "name": "Ocean", "color": "#2f5e94" },
    "plains":  { "name": "Plains", "color": "#9fc46a" },
    "forest":  { "name": "Forest", "color": "#3f8f4f" },
    "mountain":{ "name": "Mountain", "color": "#8a7560" },
    "dungeon": { "name": "Dungeon", "color": "#7a52b0" }
  },
  "layers": {
    "world": {
      "name": "Overworld",
      "tiles": {
        "20_14": { "z": "plains" },
        "21_14": { "z": "forest" },
        "22_14": { "z": "mountain" },
        "22_15": { "z": "water" }
      },
      "labels": {
        "L1": { "x": 20, "y": 14, "text": "Eldermoor" }
      },
      "markers": {
        "M1": { "x": 20, "y": 14, "icon": "🏯", "scale": 2.0 },
        "M2": { "x": 22, "y": 14, "icon": "🕳️", "scale": 1.4, "link": "lair" }
      }
    },
    "lair": {
      "name": "Drake's Lair",
      "tiles": {
        "10_10": { "z": "dungeon" },
        "11_10": { "z": "dungeon" },
        "11_11": { "z": "dungeon" }
      },
      "labels": {
        "D1": { "x": 10, "y": 10, "text": "Entrance Hall" }
      },
      "markers": {
        "D1": { "x": 11, "y": 11, "icon": "🐲", "scale": 2.2 }
      }
    }
  },
  "layerOrder": ["world", "lair"]
}

Si vous modifiez un fichier à la main, gardez-le en JSON valide (une virgule mal placée l'empêchera de se charger) et faites-en une copie d'abord. En cas de doute, exportez une vraie carte et servez-vous-en comme modèle de départ.