Atlas de Bretonnie

Atelier des moddeurs · guide · 59 min de lecture

CAIME, le guide : créer et modifier une carte de campagne de Total War: Warhammer III

CAIME (Campaign AI Map Editor), l'éditeur du Campaign Map Toolkit, fabrique la moitié logique d'une carte de campagne Total War : régions, types de sol, climats, routes, rivières, emplacements (slots) de villes. Ce guide part de zéro : ce que fait l'outil, sa fenêtre, chaque couche et chaque règle, les exports, la ligne de commande, et les pièges qui nous ont coûté des heures en portant la carte de La Saison de la Révélation de Warhammer I dans Warhammer III.

Relu le 25 septembre 2026, mise à jour 9.0. Écrit contre ses sources, le code et la documentation de CAIME 1.0.1, l'Assembly Kit au patch 8.1 ; ce que la 9.0 a changé sur notre chantier y est ajouté, le reste n'a pas été revérifié point par point. Dans le doute, vérifiez, et dites-le-nous.

Ce que fait CAIME§

Une carte de campagne Total War est faite de deux moitiés qui décrivent la même terre. La moitié logique est posée sur une grille d'hexagones (des « hex ») : type de sol, région, climat, rivières, routes, plages, ponts, emplacements de villes, zones infranchissables. C'est ce que le jeu calcule : qui possède quoi, qui peut aller où, et à quel prix. La moitié visuelle, c'est le relief, les textures, la végétation, l'eau et l'éclairage : ce que le joueur voit.

La moitié logique

CAIME : types de sol, régions (frontières en rouge), route, rivière, emplacements de villes (schématiques : une ville de Warhammer III couvre 19 hex). C'est ce que le jeu calcule.

La moitié visuelle

Terry et BOB : relief, côte, forêts, eau, décors. C'est ce que le joueur voit. Les deux doivent décrire la même terre.

CAIME s'occupe de la moitié logique. C'est une sorte de « Photoshop de données » : on choisit une couche, une valeur (un swatch), un outil, et l'on peint des hex. Puis le menu Process « développe » les couches en fichiers que le jeu lit : map_data.esf, les données de déplacement (pathfinding), les frontières (borders.pbd), dynamic_resources.esf, les images de correspondance et la minicarte (menu Lookup and Minimap images ; pour Warhammer III, une seule image, <campagne>_lookup.bmp). À notre connaissance, aucun autre outil public ne produit map_data.esf, le pathfinding, borders.pbd ni dynamic_resources.esf ; les images, elles, peuvent se faire autrement (nous avons refait notre minicarte par script).

Jeux pris en charge, selon sa documentation : Rome II, Attila, Thrones of Britannia, Warhammer I à III, Three Kingdoms, Troy, Pharaoh et Pharaoh Dynasties. Les notes de la v1.0.0 disent toutefois Pharaoh (2023) « non pris en charge pour l'instant », et le README du dépôt ne le cite pas. Pas Shogun 2.

Les mots du métier§

Tout le guide emploie ces mots ; ils sont expliqués une fois pour toutes.

MotCe qu'il veut dire
Assembly Kitl'outillage gratuit de Creative Assembly, un par jeu (Steam → Bibliothèque → Outils). binaries = ses programmes ; raw_data = les sources (tables en XML, cartes de CA) ; working_data = ce que ses outils produisent
Dave, Tweak, Terry, BOBles outils de l'Assembly Kit : Dave édite les tables, Tweak est l'éditeur dont Terry (le terrain en 3D) est un mode, BOB transforme les sources en fichiers du jeu et les empaquette. Voir le guide Terry et le guide BOB
RPFMRusted PackFile Manager, l'outil communautaire qui ouvre et fabrique les packs : le guide RPFM
Packune archive .pack que le jeu lit ; un mod est un pack
Table, cléun tableau de la base du jeu ; chaque ligne a une clé unique (regions, campaigns…)
ESFun format binaire de Creative Assembly (map_data.esf, startpos.esf) ; le sigle n'est pas documenté
Hexune case de la grille, à sommet plat ; colonnes impaires décalées vers le haut ; ligne 0 en bas
Coucheun type de donnée, une valeur par hex (régions, sols, routes…)
Swatchune valeur qu'on peint : un type de sol, une région, un climat…
map.hexle projet CAIME d'une carte : toutes ses couches
.hex_layerune seule couche, exportée ou à importer
Process, exportla transformation des couches en fichiers du jeu (menu Process)
Pathfindingle calcul des déplacements : qui peut aller où, à quel coût
Lookupune image où chaque région a sa couleur RVB ; le jeu y lit quelle région est sous un point
Loggerla fenêtre des messages de CAIME (Ctrl+L)
Emplacement (slot), étendue (sprawl)l'emplacement d'une ville sur la grille ; la surface de la ville autour de lui
Zone jouable de campagnela ligne de la carte dans campaign_map_playable_areas : limites de la caméra, fichiers de la minicarte
is_seala colonne de la table regions qui dit si une région est une mer
bridge-cliffl'hex de terre qui touche un pont ; CAIME le calcule seul : ni couche ni type de sol, rien à peindre
Falaisepour CAIME, tout hex de terre qui touche la mer sans être une plage ; il la calcule seul
Terrain à risquel'infranchissable, les rivières et toute la côte (plage ou « falaise ») : ce que l'étendue d'une ville doit toucher ou tenir à 3 hex au moins
Province, attritionun groupe de régions ; l'usure des armées sur un terrain
Masque d'arêtessix bits par hex qui disent vers quels voisins part une route, une rivière, une frontière
Startposstartpos.esf, l'état de départ d'une campagne, que le jeu génère ; hors de CAIME : les outils
Les mots sur la carte12345678910Un hex de route,grossi012345bits 0 et 3 : 1les autres : 0
  1. Hexune case à sommet plat ; les colonnes impaires sont décalées vers le haut ; la case (0, 0) est en bas à gauche.
  2. Région de merla mer est une région comme une autre, avec is_sea = 1 dans la table regions.
  3. Région et frontièrechaque hex a sa région ; la couche Region Borders trace la frontière (Auto-generate).
  4. Falaiseun hex de terre qui touche la mer sans être une plage ; CAIME le calcule. La côte compte, avec les rivières et l'infranchissable, comme terrain à risque.
  5. Plagepeinte (Beaches), sur la terre côtière seulement : les débarquements.
  6. Pontpeint (Bridges) sur un hex de mer, d'une rive à l'autre ; la route s'arrête aux deux rives.
  7. bridge-cliffchaque hex de terre qui touche le pont (hachures) ; CAIME le calcule : rien à peindre.
  8. Emplacement (slot)la ville : un disque de 19 hex ; pour un port, 16 hex principaux (trait brun) et 3 hex de Port (trait bleu), dont un en mer.
  9. Étendue (sprawl)la surface de la ville, en ocre : les 19 hex.
  10. Masque d'arêtessix bits par hex de route, de rivière ou de frontière : les côtés vers ses voisins ; le hex cerclé d'or, grossi à droite, a les bits 0 (nord) et 3 (sud).
Un extrait de carte dessiné pour l'exemple, et les mots du guide posés dessus : la grille, les régions, la côte, un pont, une ville portuaire, une route.

De la base au jeu : la chaîne complète§

CAIME n'est qu'un maillon. Voici tout le chemin d'une carte neuve, d'un coup d'œil. Deux voies avancent en même temps : CAIME pour la moitié logique, Terry et BOB pour la moitié visuelle. Elles se rejoignent dans le pack du mod ; le jeu génère ensuite le tour 0 (le startpos) avec ce pack chargé (chez nous, avec un second pack, celui des tables de départ : le guide des outils), et l'on reconstruit le pack avec le startpos.

1 · la moitié logiqueILa basedéclarer carte, régions, campagneregionscampaignsIICAIMEpeindre les couchesmap.hextile_map.pngIIICAIMEvalider (11 contrôles)enregistréTweak et Terry fermésprojet dans raw_dataIVCAIMEexporter (Process)map_data.esfpathfinding.ppdborders.pbd<campagne>_lookup.bmp2 · la moitié visuelleVTerryrelief, textures, arbres, eau<carte>.terrytile_map.png ← CAIMEVIBOBun passage : le terrainfull_height_map.ddstile_list.bincarte neuve : BOB ne lance que 6 actions sur 153 · ensembleVIIRPFMassembler le pack :exports, terrain, tablesmon_mod.packVIIILe jeugénérer le tour 0 (deux packs)startpos.esfhlp_data.esfspd_data.esfIXRPFMremettre le tour 0 dans le packmon_mod.packXEn jeutester, lire les journauxon corrige, on recommence : on réexporte, puis un nouveau startpos1 · la moitié logiqueILa basedéclarer carte, régions, campagneregionscampaignsIICAIMEpeindre les couchesmap.hexIIICAIMEvalider (11 contrôles)IVCAIMEexporter (Process)map_data.esfpathfinding.ppdborders.pbd<campagne>_lookup.bmpenregistréTweak et Terry fermésprojet dans raw_data2 · la moitié visuelleen même temps : part de la base (I),reçoit tile_map.png de CAIMEVTerryrelief, textures, arbres, eau<carte>.terrytile_map.png ← CAIMEVIBOBun passage : le terrainfull_height_map.ddstile_list.bincarte neuve : BOB ne lance que 6 actions sur 153 · ensembleVIIRPFMassembler le pack :exports, terrain, tablesmon_mod.packVIIILe jeugénérer le tour 0 (deux packs)startpos.esfhlp_data.esfspd_data.esfIXRPFMremettre le tour 0 dans le packmon_mod.packXEn jeutester, lire les journauxon corrige, on recommence :on réexporte (IV), puis un nouveau startpos (VIII)
La marche à suivre. En haut, CAIME fait la moitié logique : peindre, valider, puis exporter, une fois le projet enregistré, Tweak et Terry fermés et le projet dans raw_data. En bas, en même temps, Terry et BOB font la moitié visuelle, à partir de la base et de la carte des tuiles exportée par CAIME ; pour une carte neuve, BOB ne lance que 6 actions sur 15. RPFM assemble le pack du mod ; le jeu génère le tour 0 avec ce pack et celui des tables de départ, puis RPFM y remet le tour 0. Sous chaque étape, les fichiers qu'elle produit. Chaque retouche demande de réexporter, puis un nouveau startpos.

Et le détail de chaque étape, sous les numéros de la marche, avec ce qu'elle produit :

  1. I · La base de données

    Dans l'Assembly Kit (Dave, ou les XML par script) : la carte, ses régions, ses provinces, la campagne qui l'utilise.

    regions, campaigns, campaign_map_playable_areas…

  2. II–III · CAIME, les couches

    Les couches peintes ou importées, puis validées.

    map.hex

  3. IV · CAIME, les exports

    Process : ce que le jeu lit pour se déplacer, tracer les frontières, colorier la carte. Et, par Tools → Export → Baseline Tilemap image, la carte des tuiles pour Terry.

    map_data.esf, pathfinding.ppd, display\borders\borders.pbd, <campagne>_lookup.bmp, tile_map.png

  4. V–VI · Terry et BOB, en même temps

    Relief, textures, arbres, côtes et eau : le terrain que lit le jeu.

    full_height_map.dds, tile_list.bin, global_props.bin…

  5. VII · Le pack

    RPFM rassemble dans le .pack du mod les exports, le terrain, les tables et les scripts : la génération du startpos a besoin de ce pack.

    mon_mod.pack

  6. VIII–IX · Le startpos, puis le pack reconstruit

    Le jeu génère le tour 0, pack du mod chargé (chez nous, avec le pack des tables de départ) ; pour une carte neuve, les données de l'IA en plus. On reconstruit ensuite le pack avec ces fichiers : dans data, le pack passe devant les fichiers en vrac. À refaire après chaque export et chaque changement de minicarte.

    startpos.esf, hlp_data.esf, spd_data.esf

  7. X · En jeu

    Démarrer une partie, lire les journaux, corriger, recommencer.

Avant de commencer : les droits et les règles de l'équipe§

Ce que CAIME permet, ce qu'il faut demanderPermismodifier le code de CAIMElicence non commerciale :partage à l'identique,copyright conservéfaire vos cartesles fichiers produitssont à vous (EULA 1.1)publier les fichiersproduits, sans lesmonnayerSteam Workshop, Nexus Modsou ModDB (EULA 1.1)Demandez d'abord,ou renoncezdonner les fichiersproduitsREADME : l'accord d'unfondateur (MrJox, Marukaou Marthenil)tout usage commercialdons compris, selon le READMEsur un jeu Warhammer, lacarte d'un autre universpartez de Troy ou de Pharaohdes modèles d'un autrejeu de CAil faut vos propres assetsLes deux dernières : règles del'équipe, dites le 20.09.2026 surson DiscordLe README et l'EULA 1.1 se contredisent.Dans le doute, demandez à l'équipe sur son Discord,avant de publier.
Le code de CAIME est sous licence non commerciale. Pour les fichiers qu'il produit, le README (l'accord d'un fondateur avant de les donner) et l'EULA 1.1 (publication permise, sans les monnayer) se contredisent : dans le doute, demandez à l'équipe. Les deux dernières règles, l'équipe les a dites sur son Discord le 20.09.2026.

Sources : le dépôt de CAIME (README, LICENSE, EULA) et, pour les deux règles de l'équipe, son Discord (Campaign Map Modding Team), lu le 20 septembre 2026.

Installer et configurer§

  1. Installez l'Assembly Kit du jeu depuis Steam (Bibliothèque → Outils).
  2. Téléchargez CAIME sur la page des versions : l'installeur s'appelle CampaignMapToolkit-win-Setup.exe. La v1.0.1 du 23 septembre 2026 contient deux correctifs de notre atelier : la lecture de la base sur tout Windows dont le séparateur décimal est la virgule, et la lecture des cartes des mini-campagnes de Warhammer I. Les mises à jour peuvent être automatiques.
  3. Au premier lancement, acceptez l'EULA ; après une mise à jour, une fenêtre Changelog s'ouvre. Si la vue est noire à l'ouverture d'une carte (bogue connu), bougez ou zoomez.
  4. Settings → Preferences (Ctrl+P dans CAIME) : choisissez d'abord le jeu (Base game), puis Browse pour l'Assembly Kit de ce jeu. Le bon dossier est assembly_kit : il contient binaries, raw_data et working_data. Un chemin par jeu.
  5. Toujours dans les préférences : Auto-save écrit map_autosave.hex à côté du map.hex toutes les 5 minutes ; Auto-backup range toutes les 10 minutes map_AAAA_MM_JJ_HH_mm_backup.hex dans backups\ (to keep = 0 garde tout : sur une grande carte, plusieurs Mo par copie ; mettez 10 ou 20). Le chemin de l'Assembly Kit et la source de la base valent à la prochaine ouverture d'un projet ; l'auto-sauvegarde s'active ou s'arrête aussitôt. Les réglages vivent dans %APPDATA%\CampaignMapToolkit\Caime\preferences.json.
  6. La base peut venir de l'Assembly Kit (par défaut) ou de RPFM (Database source). En mode RPFM, CAIME demande rpfm_cli.exe, celui d'une version 4 de RPFM (chez nous, la 4.2.7) : la version 5 ne le livre plus. Il lui faut aussi un Vanilla pack par jeu (pour Warhammer III : db.pack) ; les packs de votre mod s'ajoutent par Settings → RPFM Workflow.
  7. Lisez la documentation : douze guides détaillés, de la prise en main aux exports.
Régler CAIMESettings → Preferences (Ctrl+P) · schémaPreferencesBase gameWarhammer 3Assembly kit path<jeu>\assembly_kitBrowseAuto-saveEnabledDisabledAuto-backupEnabledDisabledAuto-backups to keep10Database sourceAssembly Kit1234Le jeu avant Browse : un chemin par jeu.1assembly_kit\Browse : ce dossierbinaries\raw_data\working_data\2Auto-save →map_autosave.hextoutes les 5 minAuto-backup →backups\toutes les 10 minAuto-backups to keep : 0 garde tout ; mettez 10 ou 203Assembly Kit : par défautRPFM : le rpfm_cli.exe d'une version 4et un Vanilla pack : db.packla version 5 ne le livre plus4
Dans Settings → Preferences (Ctrl+P) : le jeu d'abord, puis le chemin de son Assembly Kit, les sauvegardes automatiques et la source de la base. Le chemin et la source valent à la prochaine ouverture d'un projet, l'auto-sauvegarde aussitôt. Schéma, pas une capture : seuls les réglages dont parle ce guide.

Constaté en v1.0.0 (20 septembre 2026), non vérifié en v1.0.1 : l'installeur ne livrait ni le dossier des gabarits (Templates) ni l'outil MapDataBuilder. Contrôle : CAIME cherche cet outil dans Tools\Release\MapDataBuilder.x64.exe, sous le dossier parent de celui de son exécutable ; avec l'installeur officiel, c'est %LOCALAPPDATA%\CampaignMapToolkit\Tools\Release\MapDataBuilder.x64.exe. S'il manque, demandez d'abord à l'équipe : compiler le dépôt demande Visual Studio, avec le C# et le C++ (la solution contient les deux).

En mode Assembly Kit, CAIME lit la base (à l'ouverture et à chaque Reload) et n'y écrit rien. En mode RPFM, il y place temporairement des tables et remet les originaux à la fermeture du projet : n'éditez pas les tables de ce kit pendant ce temps, la remise en place écrase ce qui s'y trouve.

La fenêtre et les outils§

Sans projet ouvert, presque tout est grisé. Une fois une carte ouverte, la fenêtre compte neuf zones :

Campaign AI Map EditorFile Edit Process Tools Settings HelpBrush size: 3Image opacity:✕MZBFEILP⚙MinimapSwatchesplainsActionsCreateRenameRemoveValidate…Layers…RegionsAttritionsClimatesGround TypesFinished creating mapX 212 Y 87 · 60 FPS · v1.0.1123456789
  1. Les menusFile, Edit, Process, Tools, Settings, Help. Tout est en anglais.
  2. Les réglages rapidesavec Brush, la taille de la brosse (Brush size, 1 à 10) ; l'opacité de l'image de fond (Image opacity) et ✕ pour l'enlever ; avec Flood Fill, la liste Flood Fill source.
  3. Les outilsM Pan · Z Zoom · B Brush · F Flood Fill · E Eraser · I Background Image · L Line · P Color Picker ; ⚙ Properties, grisé dans la v1.0.1.
  4. Le canevasla carte en hex ; le cercle de la brosse. Molette : zoom ; clic du milieu : déplacer.
  5. La minicartele cadre rouge montre la vue ; un clic y déplace la vue.
  6. Les swatchesla valeur à peindre, dans une liste déroulante : les clés de la base pour la couche active (ici plains).
  7. Les actionscelles de la couche active : Create, Rename, Remove (après la base), Cleanup… ; Align, Plug Holes ou Auto-generate selon la couche ; Validate.
  8. Les couchesla case rend une couche visible ; le bouton rond la rend active. Ground Types est en bas, active à l'ouverture.
  9. La barre d'étatle dernier message (un clic ouvre le Logger), X = colonne et Y = ligne sous la souris.
Schéma, disposition courante. Pour peindre : choisir la couche (8), puis la valeur (6), puis l'outil (3), et peindre sur le canevas (4). Le Logger (Ctrl+L) donne les hex fautifs en Hex(colonne, ligne) : amenez la souris jusqu'à lire ces X et Y dans la barre d'état (9).

La recette pour peindre§

  1. Dans Layers, cochez la case de la couche (elle devient visible) et cliquez son bouton rond (elle devient active : c'est elle que vous peignez).
  2. Dans Swatches, choisissez la valeur : un type de sol, une région, un climat…
  3. Dans la barre d'outils, choisissez l'outil (tableau ci-dessous), réglez la taille de la brosse, et peignez.
  4. Pour vérifier : la barre d'état donne X (colonne) et Y (ligne) sous la souris ; Ctrl+Z annule, sans limite, un geste de souris à la fois.
ToucheOutilCe qu'il fait
MPandéplacer la vue (le clic du milieu le fait aussi, quel que soit l'outil)
ZZoomzoomer (la molette aussi)
BBrushpeindre ; taille 1 = 1 hex, 2 = 7, 3 = 19, 4 = 37
FFlood Fillremplir une zone ; la liste Source dit quelle couche sert de bordure (Ground Types, Climates, Attritions, Regions, Impassable, Roads, Trade Routes, Restrictions)
EErasereffacer
IBackground Imageposer une image de fond (JPG, BMP, TIFF, PNG), étirée sur la carte : un calque de travail, jamais enregistré ni exporté
LLineun premier clic (en rouge), le trajet s'affiche en jaune, un clic final
PColor Pickerprélever la valeur d'un hex ; Alt maintenu donne une pipette temporaire
La brosse : 1, 7, 19, 37 hexTaille 11 hexrayon 0 : le hex cliquéTaille 27 hexrayon 1Taille 319 hexrayon 2Une ville de Warhammer IIITaille 437 hexrayon 3Un clic peint tous les hex à taille − 1 pas au plus du hexcliqué. Le curseur Brush size va de 1 à 10 : 271 hex auplus.
La taille de la brosse est un rayon : la taille 1 peint le hex cliqué, chaque taille de plus ajoute un anneau. La taille 3 pose d'un clic le disque de 19 hex d'une ville de Warhammer III.

Les raccourcis à connaître§

RaccourciAction
Ctrl+N · Ctrl+O · Ctrl+S · Ctrl+Shift+Snouvelle carte · ouvrir · enregistrer · enregistrer sous
Ctrl+X · Ctrl+Qfermer le projet (ce n'est pas « couper ») · quitter
Ctrl+RReload : relit la base, et abandonne ce qui n'est pas enregistré
Ctrl+Z · Ctrl+Yannuler · rétablir (sans limite)
Ctrl+Shift+R · Ctrl+Shift+Nredimensionner (marges à droite, à gauche, en haut, en bas) · renommer la carte (la base et le dossier sous raw_data doivent suivre)
Ctrl+L · Ctrl+B · Ctrl+M · Ctrl+PLogger · Border Editor · Map Data Editor · Preferences

Le Logger donne les hex fautifs sous la forme Hex(colonne, ligne) : amenez la souris jusqu'à lire ces X et Y dans la barre d'état, et vous êtes dessus.

Créer une carte neuve, pas à pas§

Préparer le projet§

  1. Concevoir. Croquis, liste des régions et des provinces, villes, ports, passages obligés (voir plus bas). Largeur paire : une exigence de la grille hexagonale, dit la documentation, qui propose 1016 × 720 et avertit au-delà de 731 520 hex (lenteur, pas interdiction). L'équipe de CAIME cite sur son Discord (20.09.2026) un plafond de 2 048 hex par dimension, au-delà duquel les données de cheminement de l'IA (hlp, spd) ne se génèrent plus ; nous ne l'avons pas trouvé dans le code de la v1.0.1. La grande carte de Warhammer III fait 1440 × 970. Nom de carte : lettres, chiffres et soulignés (CAIME retire le reste sans prévenir), et la casse compte.
  2. Déclarer la carte dans la base, avec ce nom exact (Dave, XML par script, ou RPFM) : voir la section suivante et sa fiche des colonnes.
  3. Créer le projet : File → Create new map (Ctrl+N) ; nom exact, Template = None, Game = Warhammer3 (définitif : le jeu est enregistré dans le projet et ne se change plus), largeur paire. CAIME range le projet dans son dossier Projects\<carte>\ ; avec l'installeur officiel, %LOCALAPPDATA%\CampaignMapToolkit\Projects\<carte>\. Contrôle : à l'ouverture, la liste Swatches de la couche Regions montre vos régions ; vide, la base ne connaît pas la carte (voir la FAQ).
  4. Le mettre à sa place : aussitôt, File → Save as… (Ctrl+Shift+S) vers <Assembly Kit>\raw_data\EmpireDesignData\campaign_maps\<carte>\map.hex, puis rouvrez cette copie. Map Data et Dynamic Resources ne travaillent qu'à cet endroit (sinon : « Map Data Process denied »).
Deux copies de votre projetLe brouillonCtrl+N le crée iciMap Data : refusé ici%LOCALAPPDATA%\CampaignMapToolkit\Projects\<carte>\map.hexFile → Save as…Ctrl+Shift+Srouvrez cette copieLa vraie placela seule où Map Data travaille<Assembly Kit>\raw_data\EmpireDesignData\campaign_maps\<carte>\map.hexle projetFichiers d'appuitrees.png≈ 7,04 × 7,37 px par hextree_database.xmlcopié du prologuedynamic_resources.png≈ 2,54 × 2,40 px par hexdynamic_resources_database.xmlcopié du prologueSauvegardes automatiquesmap_autosave.hextoutes les 5 minbackups\toutes les 10 minmap_AAAA_MM_JJ_HH_mm_backup.hexAvant ProcessEnregistréTweak et TerryfermésProjet dansraw_dataProcessCe que Process écritun fichier par export<Assembly Kit>\working_data\campaign_maps\<carte>\map_data.esfpathfinding.ppddisplay\borders\borders.pbddynamic_resources.esf<campagne>_lookup.bmp
CAIME crée le projet dans son propre dossier Projects : c'est un brouillon. Map Data et Dynamic Resources n'acceptent que la copie enregistrée (Save as) dans raw_data, avec ses fichiers d'appui : rouvrez-la et travaillez dans celle-là ; Process écrit ensuite dans working_data.

Remplir, valider, exporter§

  1. Poser les quatre fichiers d'appui à côté du map.hex : trees.png, tree_database.xml, dynamic_resources.png, dynamic_resources_database.xml. Sans eux, Map Data ou Dynamic Resources échouent. Sur Warhammer III, copiez les XML depuis le dossier du prologue (wh3_main_prologue_map) et donnez aux images la taille de votre carte : environ 7,04 × 7,37 pixels par hex pour trees.png, 2,54 × 2,40 pour dynamic_resources.png. trees.png sert aussi aux arbres de BOB. Contrôle : les quatre fichiers sont à côté du map.hex, sous ces noms exacts.
  2. Enregistrer (Ctrl+S), puis File → Reload (Ctrl+R) après chaque changement de la base : CAIME y relit les régions, sols, climats et attritions déclarés pour cette carte. Reload abandonne tout ce qui n'est pas enregistré.
  3. Peindre les couches : chaque hex a besoin d'une région, d'un type de sol et d'un climat. Terre et mer doivent concorder (le type de sol, le is_sea de la région, et l'hex).
  4. Valider, couche par couche : Tools → Validate → <couche> (onze entrées, une à une), ou le bouton Validate du panneau Actions pour la couche active ; en ligne de commande, validate --all les enchaîne. Les contrôles ne modifient rien. Contrôle : la fenêtre qui suit dit « No issues have been found » ; sinon, le Logger (Ctrl+L) liste les Error, Warning et Info. Corrigez les Error (nuances dans « Les règles d'une carte qui fonctionne »), lisez les Warning, enregistrez.
  5. Exporter (Process) : Map Data, Dynamic Resources, Pathfinding, Borders, Lookup. Enregistrez avant ; Tweak et Terry fermés. Succès de Map Data : « Finished creating map ». Contrôle : dans <Assembly Kit>\working_data\campaign_maps\<carte>\, datés du jour, map_data.esf (CAIME tient pour raté un fichier de 10 Ko ou moins), pathfinding.ppd, display\borders\borders.pbd et <campagne>_lookup.bmp. Détail : la section « Exporter ».
  6. En même temps, la moitié visuelle : exportez la carte des tuiles (Tools → Export → Baseline Tilemap image, tile_map.png) pour le projet Terry, puis Terry et BOB.
  7. Construire le pack, puis générer le startpos une fois les deux moitiés prêtes. Les trois voies du startpos : Build Startpos de RPFM, l'action Process start pos de BOB, ou un user.script.txt écrit à la main. Chez nous, seule l'écriture à la main a marché : le guide des outils. Reconstruisez ensuite le pack avec le startpos (RPFM), puis faites l'essai en jeu. Chaque retouche de la carte demande un nouvel export, puis un nouveau startpos.

Les tables de la base à déclarer§

Le nom de la carte (ici ma_carte) est le même partout, casse comprise ; celui de la campagne (ici ma_campagne) relie campaigns, campaign_map_playable_areas et campaign_map_roads. Les noms de colonnes viennent des schémas du kit de Warhammer III (raw_data\db\TWaD_<table>.xml).

TableCe qu'elle ditColonnes qui tiennent la carte
campaign_mapsla carte, dans le kit (dans les packs du jeu, Warhammer III n'a plus cette table : la carte s'y déclare par campaigns.map_name et campaign_map_playable_areas)mapname = ma_carte ; minx, miny, maxx, maxy
campaignsla campagne dont map_name est la carte ; sinon l'export Lookup refuse (« no campaign uses the map »)campaign_name = ma_campagne ; map_name = ma_carte
campaign_map_playable_areasla zone jouable de campagne : limites de la caméra et fichiers de la minicarte (à mettre à jour avant Map Data si la taille change)mapname = ma_carte ; campaign_key = ma_campagne ; minx, maxx, miny, maxy ; radar_file (la minicarte) ; index, un numéro automatique
regionsune ligne par région, terre ou mer, avec une couleur RVB unique (elle sert aux images de correspondance)key ; is_sea (0 ou 1) ; r, g, b
campaign_map_regionslie chaque région à la cartecampaign_map = ma_carte ; region = une key de regions
region_to_province_junctionsune ligne par région, vers sa provinceregion ; province ; is_capital
provincesla province, si elle est neuvekey
campaign_map_roadsle coût des routes, par campagnekey ; campaign = ma_campagne ; threshold ; movement_cost
campaign_map_areas_of_interestWarhammer III et Three Kingdoms : filtrée par nom de carte, sinon couche videkey ; campaign_map = ma_carte
Déclarer une cartema_carte : le même nom partout, casse comprisecampaign_mapsdans le kit seulementmapnamema_carteminx · miny · maxx · maxycampaignscampaign_namema_campagnemap_namema_cartesans elle : l'export Lookup refusecampaign_map_roadscampaignma_campagnekey · threshold · movement_costcampaign_map_playable_areasmapnamema_cartecampaign_keyma_campagneminx · maxx · miny · maxyradar_file · index<mapname>wh3_main_chaos_map_4</mapname><mapname>ma_carte</mapname>pas la dernière<mapname>wh3_main_combi_map_5</mapname>jamais la dernière ligne : Map Data plantecampaign_map_regionscampaign_mapma_carteregionma_regioncasse différente : swatches videsregionskeyma_regionis_sea · r · g · bcouleur r g b unique : elle sert au lookupregion_to_province_junctionsregionma_regionprovincema_provinceis_capitalprovincessi elle est neuvekeyma_provincecampaign_map_areas_of_interestkeycampaign_mapma_carteTables globales, déjà rempliescampaign_ground_types · climates · campaign_map_attritionsContrôle : les régions apparaissent dans Swatches
Chaque fiche est une table du kit de Warhammer III ; le pointillé part de la fiche mère et arrive sur la colonne qui les relie, et une même étiquette porte une même valeur. Le nom de la carte revient dans cinq tables, écrit exactement pareil, majuscules comprises.

Ces tables ont d'autres colonnes, dont beaucoup sont marquées comme requises dans le kit : remplissez-les sur le modèle d'une ligne de CA, celle du prologue (wh3_main_prologue_map) par exemple. Les tables globales (campaign_ground_types, climates, campaign_map_attritions) sont déjà remplies. L'ordre des régions compte : les exports les lisent terre d'abord, puis mer, dans l'ordre de regions.xml. Contrôle : à l'ouverture du projet (ou après File → Reload, Ctrl+R), la liste Swatches de la couche Regions montre vos régions.

Créer, renommer ou supprimer une région, un type de sol, un climat, une attrition ou une zone d'intérêt demande deux gestes : changer la base, puis, dans le panneau Actions, le bouton correspondant (Create, Rename, Remove), avec le même nom. Remove ne vide pas les hex déjà peints.

Les couches§

Une couche, c'est une information par hex. On les peint une à une, comme des calques posés sur la même grille ; une aiguille plantée dans un hex traverse toutes les feuilles et lit une valeur sur chacune.

654321
  1. Ground Typesle type de sol : plaine, forêt, montagne, mer
  2. Climatesle climat : obligatoire sur chaque hex
  3. Regionsla région de chaque hex, et ses frontières
  4. Riversles rivières, avec leurs directions
  5. Town Sprawl · Town Slotsl'emplacement d'une ville (19 hex dans Warhammer III ; un port : 16 + 3) et son étendue
  6. Roads · Impassableles routes, avec leurs directions ; ce qui ne se franchit pas

L'aiguille traverse un même hex : sa fiche

Ground Types
plains
Climates
emp_lowlands, par exemple
Regions
ma_region
Rivers
non
Town Slots
non
Roads
oui, deux côtés
Impassable
non
Chaque couche est un calque posé sur la même grille : pour un hex donné, une valeur par couche. Les feuilles suivent l'ordre du panneau de CAIME, où la couche du haut se dessine par-dessus. Schématique : les couches de Warhammer III sont quatorze, et une ville y couvre 19 hex.

Les couches de Warhammer III, avec les noms que l'éditeur affiche, dans l'ordre du panneau (celle du haut se dessine par-dessus) :

CoucheCe qu'on y peintEffet, outil ou action
Impassableles hex interditsaction Plug Holes : bouche les trous d'un hex
Roadsles routes, avec leurs directionscoût réduit (campaign_map_roads) ; jamais d'anneau
Town Slotsles emplacements : Main Settlement, Port, Slot 2…voir « Les villes »
Town Sprawll'étendue de chaque villeaction Align Town Sprawl/Slot
Bridgesles ponts, sur des hex de mervoir « Les ponts »
Riversles rivières, avec leurs directionssur la terre seulement
Beachesles plagesseulement sur la terre côtière : les débarquements
Restrictionsdes restrictions de mouvement graduéeslevables par un script Lua
Region Bordersles frontières dessinéesaction Auto-generate
Areas Of Interestdes zones d'intérêtexige la table campaign_map_areas_of_interest
Regionsla région de chaque hexswatches à créer (nom + Is sea?)
Attritionsl'usure des arméesswatches à créer
Climatesle climat : obligatoire sur chaque hexswatches à créer
Ground Typesle type de sol : plaine, forêt, montagne, mer…fixe le coût de mouvement ; action Align Ground/Region Type : déduit terre ou mer des régions

Une quinzième couche, Trade Routes (routes commerciales), n'apparaît pas dans le panneau de Warhammer III : elle ne sert qu'à Rome II, Attila, Thrones of Britannia et Three Kingdoms. Les autres couches sont à deux états (présent ou non), sauf celles qui ont des swatches.

Les règles d'une carte qui fonctionne§

Les onze contrôles de validation donnent trois niveaux ; voici ceux que leur donne le code de la v1.0.1. Error : désaccord base/carte (régions, sols, climats, attritions), index invalide, pont mal posé, emplacement sur l'infranchissable, et les règles de l'étendue d'une ville. Warning : hex sans région, sol ou climat, désaccord terre/mer, région morcelée ou vide, rivières, routes, plages, taille d'emplacement… Info : remarques. Corrigez toute Error de concordance, d'index et de pont avant d'exporter ; une Error d'étendue sur une ville en col existe aussi sur la carte de CA (cinq villes) : jugez-la en jeu. CAIME n'empêche pas d'exporter avec des Error (la documentation dit : « Fix all errors before processing ») : lisez le Logger (Ctrl+L). Repère : la carte de Warhammer III de CA remonte des centaines d'avertissements, et s'exporte.

Error, Warning, Infod'après le code de CAIME v1.0.1Errorle plus graveÀ corriger avant d'exporterBase ≠ carte : régions, sols, climats, attritionsIndex invalidePont sur la terre, infranchissable ou sans deux rivesLes villesEmplacement infranchissable (contrôle Impassable)Étendue sur l'infranchissable ou hors de sa régionÉtendue en plusieurs blocsTerrain à risque à 2 hexDeux zones à risque au contactWarningà lireHex sans région, sol ou climatTerre et mer en désaccordRégion morcelée ou videRégion franchissable sans emplacementMer : plus de 9 régions de terre voisinesRivière vers la mer ; route ou plage mal poséeEmplacement principal ≠ 19 ou 16 hex ; port sans merÉtendue sans emplacementInfoune remarqueHex isolé : route, rivière, plage, région…Mer : plus de 5 régions de terre voisinesTrois hex de route voisins deux à deux (carrefour serré)Région sans ville, toute infranchissableEmplacement infranchissable (contrôle Town Slots)La carte de CA elle-même a 5 Error d'étendue :jugez en jeu.validate sort en 2 dès un Warning : lisez le rapport.
Les onze contrôles de la v1.0.1 classent chaque message en Error, Warning ou Info, et CAIME exporte quand même : corrigez les Error de concordance, d'index et de pont, lisez les Warning, et jugez en jeu une ville en col.

Les régions§

Les villes : emplacement et étendue§

Chaque région franchissable a au moins un emplacement de ville ; sinon, Warning. L'emplacement principal (Main Settlement) est un disque parfait de 19 hex autour du centre de la ville (un clic de brosse de taille 3) ; son centre devient la position de la ville. Une ville portuaire garde le même disque, partagé : 16 hex de terre en Main Settlement et 3 hex consécutifs du bord, côté mer, en Port (chez CA : deux sur la terre, un sur la mer). L'étendue couvre les 19 hex. Le validateur compte (19 ou 16) ; MapDataBuilder, lui, veut le disque : sans lui, la ville n'a pas de position et l'IA de campagne plante. L'action Align Town Sprawl/Slot pose l'étendue sous chaque emplacement.

Ville de l'intérieur : 19 hex11Infranchissable au contact : bon22Rivière à 2 hex : Error33Infranchissable à 3 hex : bonVille portuaire : 16 + 3 hex11Port : 3 hex du bord, dont 1 en mer22Principal : 16 hex de terre33L'étendue couvre les 19 hex
Le modèle de CA : un disque parfait de 19 hex (un clic de brosse de taille 3), dont le centre devient la position de la ville. Ville de l'intérieur : tout le disque en emplacement principal (trait brun) ; un terrain à risque (infranchissable, rivière, côte) touche l'étendue ou reste à 3 hex au moins, jamais à 2. Ville portuaire : le même disque, partagé entre 16 hex de terre en emplacement principal et 3 hex consécutifs du bord, côté mer, en Port (trait bleu) ; l'étendue (ocre) couvre les 19 hex.

Les rivières et les ponts§

Un pont, vu de dessusRouteRive : calculée par CAIMEMer, peinte BridgesMer, peinte BridgesRive : calculée par CAIMERouteRivière traversée : unepénalité de passagePont sur un tracé Rivers :Error
Un pont enjambe de l'eau peinte en mer, d'une rive à l'autre : on peint Bridges sur ces hex de mer et l'on mène la route jusqu'à la rive ; CAIME marque seul les hex de rive qui touchent le pont (bridge-cliff, hachures) : rien à peindre. Un tracé de la couche Rivers, lui, est sur la terre et ne se ponte pas : un pont posé sur la terre est une Error. La base de Warhammer III a d'ailleurs un sol de mer pour les cours d'eau, sea_river.

Les réseaux : des arbres, jamais des anneaux§

Routes, rivières et routes commerciales forment des arbres, avec des impasses. Un anneau (un circuit sans aucune extrémité, par exemple une route qui fait le tour d'une province) fait tourner l'export sans fin : c'est le vrai danger, car rien ne le coupe à votre place. Gommer un seul hex suffit à le couper. La documentation interdit aussi le triangle de trois hex voisins deux à deux ; pour les routes et les rivières, CAIME retire déjà une arête de chaque triangle quand il calcule leurs masques, mais évitez-le quand même.

Un arbreun carrefour, des impassesUn anneaul'export tourne sans finL'anneau coupéun hex gommé : deux impassesUn triangletrois hex voisins deux à deux
Routes, rivières et routes commerciales : un arbre, avec des impasses. L'anneau (un circuit sans extrémité) est le vrai danger : l'export tourne sans fin, et CAIME ne le coupe jamais ; gommer un seul hex suffit. La documentation interdit aussi le triangle de trois hex voisins deux à deux ; pour les routes et les rivières, CAIME en retire déjà une arête quand il recalcule les liaisons. Un carrefour serré (trois hex de route voisins deux à deux) forme ce triangle : CAIME le signale en Info.

Concevoir une carte qui se joue bien§

Modifier une carte existante§

Repeindre avec des valeurs existantes ne touche pas la base. Créer, renommer ou supprimer un type, une région ou une zone d'intérêt demande la base et le bouton du panneau Actions. Ordre de travail : valider → enregistrer → réexporter → reconstruire le pack → régénérer le startpos → reconstruire le pack.

Après une retouche, que refaire ?d'abord valider et enregistrer ; puis réexporter :Repeindrela base ne change pasToujoursSols, attritions,infranchissable, restrictionsMap DataPathfindingRoutes, rivières, plages, ponts,emplacements et étenduesMap DataPathfindingClimatsMap DataFormes des régions (la couche Regions)Map DataBordersPathfindingLookupCréer, renommer, supprimerd'abord la base, puis le bouton ActionsUn type de solMap DataPathfindingUn climat, une attrition, une zone d'intérêtMap DataUne régiontous les exportsRedimensionner (Ctrl+Shift+R)d'abord la zone jouable, dans la baseLes hex neufs sont videstous les exportsPuis, toujoursReconstruirele packRégénérerle startposLe reconstruireavec le startposDans le doute, relancez tout : seuls Borders et Lookup,purement visuels, peuvent se refaire à part.
Chaque retouche fait relancer les exports de ce qu'elle touche, et toujours Map Data (la colonne d'or) ; créer, renommer ou supprimer passe d'abord par la base. Viennent ensuite, toujours, le pack, un startpos neuf et le pack reconstruit.
ModificationBase ?Exports à relancer
Repeindre les types de sol, les attritions, l'infranchissable, les restrictionsnonPathfinding, Map Data
Repeindre les routes, rivières, plages, ponts, emplacements et étenduesnonPathfinding, Map Data
Repeindre les climatsnonMap Data
Formes des régions (repeindre Regions)nonBorders, Pathfinding, Map Data, Lookup
Créer, renommer ou supprimer un type de soloui (campaign_ground_types)Pathfinding, Map Data
Créer, renommer ou supprimer un climat ou une attritionoui (climates, campaign_map_attritions)Map Data
Créer, renommer ou supprimer une zone d'intérêtoui (campaign_map_areas_of_interest)Map Data
Ajouter, renommer ou supprimer une régionoui (regions, campaign_map_regions, region_to_province_junctions)tous
Redimensionner (Ctrl+Shift+R, avec ses marges)zone jouable de campagne (campaign_map_playable_areas)tous ; les hex neufs sont vides

C'est ce que demande la documentation : les exports des couches changées, et toujours Map Data. Dans le doute, relancez tout : sur son Discord (20.09.2026), l'équipe de CAIME explique qu'un seul hex changé demande de presque tout retraiter ; seuls borders.pbd et les images de correspondance, purement visuels, peuvent se refaire seuls. Pourquoi : le wiki tw-modding tient pathfinding.ppd et spd_data.esf pour critiques dès qu'on touche aux données de carte ; et chez nous, des exports de Map Data seuls ont laissé en place un pathfinding.ppd de la veille. Puis régénérez le startpos.

Exporter : ce que produit chaque export§

Process : chaque export et ses fichiersEnregistréd'abordTweak et TerryfermésProjet dansraw_datapour Map Dataet Dynamic resourcesProcessMap DataPathfinding dataBorders dataDynamic resourcesTrade RoutesLookup andMinimap images<Assembly Kit>\working_data\campaign_maps\<carte>\map_data.esfsuccès : le message« Finished creating map »10 Ko ou moins : ratépathfinding.ppdla doc dit .bin par erreurborders.pbddans display\borders\sa fenêtre : cases par défautdynamic_resources.esfplantage chez noussur Warhammer IIItrade_routes.ptdla couche n'existe pasdans Warhammer III<campagne>_lookup.bmpune seule image, sans minicarte ;le jeu, lui, lit.tga, .dds, .png
Chaque entrée du menu Process écrit son fichier, et tous arrivent dans le même dossier de working_data. Map Data et Dynamic resources veulent un projet enregistré, à sa place dans raw_data, avec Tweak et Terry fermés (les cadenas).
ExportFichier produit
Map Datamap_data.esf
Pathfindingpathfinding.ppd (la page « Processing & Exporting » dit .bin par erreur)
Bordersdisplay\borders\borders.pbd
Dynamic Resourcesdynamic_resources.esf
Trade Routestrade_routes.ptd (jeux qui ont cette couche ; pas Warhammer III)
Lookuppour Warhammer III, une seule image <campagne>_lookup.bmp (lu dans le code de la v1.0.1 ; la documentation cite aussi une minicarte) ; BMP pour Warhammer I à III, Troy et Three Kingdoms, TGA ailleurs

Tout sort dans <Assembly Kit>\working_data\campaign_maps\<carte>\. L'image de correspondance, <campagne>_lookup.bmp, sort en BMP ; le jeu, lui, lit les fichiers que nomme la ligne de la carte dans campaign_map_playable_areas (sur le prologue : overlay_file et minimap_lookup_file en .tga, campaign_overlay_lookup en .dds, radar_file en .png pour la minicarte). Le wiki tw-modding fait passer ce BMP par BOB pour obtenir le .dds et les .tga ; une correspondance périmée ne fait pas planter le jeu, mais les calques de la carte ont l'air un peu étranges.

Le menu Tools → Export donne aussi les frontières en SVG, la carte des tuiles pour Terry (Baseline Tilemap image, tile_map.png) et chaque couche en PNG ou en binaire ; Tools → Import → Layer data relit un .hex_layer de même taille. Le Map Data Editor ne sert qu'à Rome II, Attila et Thrones : il refuse Warhammer III.

En ligne de commande§

CAIME lancé sans argument ouvre l'éditeur ; avec des arguments, il travaille en console. La documentation officielle décrit deux commandes, plus --help :

CAIME.exe process  --map <map.hex> (--all | --map-data --dynamic-resources --pathfinding
                                   --borders --trade-routes --lookup)
CAIME.exe validate --map <map.hex> (--all | --rivers --town-slots --roads --bridges --beaches
                                   --regions --attritions --climates --ground-types
                                   --impassable --town-sprawl)
--map s'abrège en -m · codes de sortie : 0 succès · 1 arguments invalides · 2 échec
Une commande, pièce par pièceCAIME.exe process -m <map.hex>--map-data --pathfindingCAIME.exeLe programme ;sans argument, il ouvrel'éditeurprocessLe verbe :process exporte,validate contrôle-m <map.hex>La carte : --mapou son abrégé -m--map-data --pathfindingLes tâches : un drapeaupar export, ou --all seulCodes de sortie0succès1argumentsinvalides2échecvalidate sort en 2 dès un Warning, même sur les cartes de CA :lisez le rapport.--all inclut Dynamic Resources (plantage chez noussur Warhammer III) : listez les tâches--map-data --pathfinding --trade-routes--lookupet Borders par le menu Process
Une ligne de commande se lit par pièces : le programme, le verbe, la carte, puis les tâches. Le code de sortie dit si tout a marché ; lisez quand même le rapport.

Produire les couches par script§

Pour une grande carte, peindre à la main ne suffit pas. Un .hex_layer est un fichier simple : 4 octets (un entier little-endian : l'identifiant de la couche), puis un octet par hex, ligne par ligne, depuis la ligne 0, en bas de la carte (deux octets par hex pour les régions). Le fichier fait exactement 4 + L × H octets (4 + 2 × L × H pour les régions), sinon l'import est refusé.

06121817131928142039152141016225111723Ligne 0Ligne 1Ligne 2Ligne 3012345Colonneindex = ligne × largeur + colonneLe fichier .hex_layerun octet par hex (deux pour les régions)id (4 octets)0123456…23012345Masqued'arêtesBit 0 = nord
La grille de CAIME : ligne 0 en bas, colonnes impaires décalées vers le haut, hex lus ligne par ligne depuis le coin bas gauche ; le fichier .hex_layer commence par 4 octets d'identifiant, puis un octet par hex. Les six bits d'un masque d'arêtes (routes, rivières, frontières) suivent les côtés, 0 au nord.
IdCoucheValeur sur le disque
0Impassable1 = franchissable, 0 = infranchissable (dans le fichier ; dans l'éditeur, peindre Impassable rend l'hex infranchissable)
1, 2, 6Trade Routes, Roads, Riversle masque d'arêtes (six bits)
3Town Slotsindex + 1 : 0 = aucun, 1 = principal (Main Settlement), 2 = Port, 3 = Slot 2… jusqu'à 12 (index 0 à 11)
4, 5, 7Town Sprawl, Bridges, Beaches1 = oui ; toute autre valeur vaut « non »
8Region Bordersle masque d'arêtes (six bits)
9Regionsdeux octets : v × 8 en little-endian, avec v = index + 1 (premier octet = (v × 8) mod 256, second = v ÷ 32)
10, 11, 12Attritions, Climates, Ground Typesindex + 1
13, 14Restrictions, Areas Of Interestaucun format : ni import ni export de .hex_layer

Notre méthode : une image peinte (une couleur = une valeur) et une légende → un .hex_layer par couche → import dans CAIME (dans la version officielle, par la fenêtre : Tools → Import → Layer data) → export PNG pour contrôler → validation → on corrige l'image, et on recommence. L'image et la légende restent la source de vérité ; le map.hex en est le produit.

De l'image au .hex_layerUne image, nord en hautun pixel par hex, une couleur par valeurNPartir du bas : la ligne 0le fichier commence par la lignedu bas de l'imageligne 0Une couleur, une valeurla légende de la couche ; ici, Roadsroute → 1rien → 0Écrire les octetsEn-têteUn octet par hex02000000010100000000…2 = Roadsligne 0 d'abordtaille exacte : 4 + L × H octets, sinon refusRegions : 2 octets par hex, soit 4 + 2 × L × HTools → Import → Layer dataRoads : seule la présence compte ;CAIME refait les directionsContrôler, puis validerTools → Export → Layer data :le PNG sort nord en haut ;comparez-le au dessin,puis lancez Validate=dessinPNG123456Les encodages qui piègentImpassable (0)1 = franchissable, 0 = infranchissableRegions (9)deux octets : v × 8, avec v = index + 1v = 5 →2800v = 40 →4001Town Slots (3)0 = aucun · 1 = principal · 2 = PortRestrictions (13), Areas Of Interest (14)aucun fichier .hex_layer
Une couche par script : l'image peinte, lue depuis la ligne du bas, traduite par sa légende, écrite octet par octet derrière un en-tête de 4 octets ; puis l'import, l'export PNG pour la comparer au dessin, et la validation.

Porter une carte d'un autre jeu Total War§

C'est ce que nous avons fait avec la carte de La Saison de la Révélation (Warhammer I → Warhammer III, 400 × 440 hex, 61 régions). Les étapes propres au portage :

De Warhammer I à Warhammer IIICAIME 1.0.1 ouvre les cartes des mini-campagnes de Warhammer IWarhammer IWarhammer IIILes villes7 hexport : 419 hexport : 16 + 3Agrandir chaque emplacement en disque autour de son centre, puis refaireles étenduesTypes de sol et climats13 sols de terre24 climats15 sols de terre40 climatsRecaler les index par nom, jamais par numéroLes clés de factionwh_dlc05_brt_mini_bastonnewh_main_brt_bastonneMême culture (brt), même fin de clé (bastonne) : jamais le préfixeLa minicarteradar_filede la ligne d'origineLe même nom,vérifié dans le packUne colonne qui nomme un fichier se vérifie contre le contenu du packFichiers de Warhammer I : jamais publiés, ils appartiennent à CA.
Porter une carte, c'est surtout recaler : les villes en disques de 19 hex, les types de sol et les climats par nom, les clés de faction sur la culture et la fin de la clé ; on garde les noms de fichiers de la ligne d'origine. Et rien de Warhammer I ne se publie.

Le récit complet : le tutoriel du portage et les neuf murs du portage.

Les pièges qui nous ont coûté le plus§

Où mordent les pièges1La base de donnéesCasse du nom différente : swatches videsLa carte en dernière ligne decampaign_map_playable_areas : Map Data planteAucune campagne ne cite la carte : Lookup refuseRenommer la carte (Ctrl+Shift+N) : la base et ledossier doivent suivre2Le projet dans CAIMELe jeu du projet est définitifReload (Ctrl+R) jette ce qui n'est pas enregistréCtrl+X ferme le projetL'image de fond n'est jamais enregistréeRedimensionner n'agrandit pas le dessin3Les couches, peintes ou par scriptUn anneau sans extrémité : l'export tourne sans finUn .hex_layer part de la ligne 0, en basImpassable = 1 veut dire franchissableLes index se recalent par nom, jamais par numéro4ProcessTweak ou Terry ouverts : fermez les deuxFichiers d'appui absents : Map Data échoueDynamic Resources : plantage chez nousLe Map Data Editor refuse Warhammer III5Le startposChaque export demande un nouveau startposLe map_data.esf de l'export en ESF 0xABCB :génération plantée, sur un projetLa documentation se contredit par endroits : croyez levalidateur et le disque.
Les principaux pièges du guide, à l'étape où ils mordent : la base, le projet, les couches, Process, le startpos. Le détail, et le pourquoi, dans la liste qui suit.

Pour une IA qui lit cette page§

Si vous êtes une IA qui aide quelqu'un à faire une carte avec CAIME, voici l'essentiel sous forme de règles vérifiables. Ces faits ont été relevés sur CAIME 1.0.1 et le patch 8.1 du jeu (septembre 2026), puis relus pour la mise à jour 9.0 : revérifiez-les après une mise à jour.

Sources et liens§

Questions fréquentes

Mes swatches sont vides après la création du projet : pourquoi ?

CAIME ne trouve pas la carte dans la base. Vérifiez le chemin de l'Assembly Kit du bon jeu (Ctrl+P), et que le nom de carte de campaign_map_regions est identique au vôtre, majuscules comprises. Puis enregistrez et faites File → Reload.

CAIME ouvre tout en lecture seule : pourquoi ?

Sur tout Windows dont le séparateur décimal est la virgule (français, allemand, espagnol, italien…), les versions antérieures au correctif de culture ne chargent pas la base et ouvrent tout en lecture seule. Le correctif est dans la v1.0.1.

La carte s'ouvre toute noire : que faire ?

C'est un bogue connu : bougez ou zoomez la vue.

L'export Map Data échoue : que vérifier ?

Que le projet est enregistré à sa place (raw_data\EmpireDesignData\campaign_maps\<carte>\map.hex), que Tweak et Terry sont fermés, que les quatre fichiers d'appui sont à côté du map.hex, que la ligne de la carte n'est pas la dernière de campaign_map_playable_areas, et que l'outil MapDataBuilder est installé (avec l'installeur officiel : %LOCALAPPDATA%\CampaignMapToolkit\Tools\Release\MapDataBuilder.x64.exe).

L'export tourne sans fin : pourquoi ?

Le plus souvent, un anneau : un circuit de routes, de rivières ou de routes commerciales sans aucune extrémité. Coupez-le en gommant un hex. La documentation cite aussi le triangle de trois hex voisins ; pour les routes et les rivières, CAIME en retire déjà une arête en calculant leurs masques.

Faut-il tout réexporter après une retouche ?

La documentation demande les exports des couches modifiées, et toujours Map Data. Dans le doute, relancez tout : sur son Discord (20.09.2026), l'équipe de CAIME explique qu'un seul hex changé demande de presque tout retraiter. Puis régénérez le startpos.

Je me suis trompé de jeu en créant le projet : que faire ?

Le jeu est enregistré dans le map.hex et ne se change plus. Créez un projet neuf de même taille, exportez chaque couche en binaire (Tools → Export → Layer data), puis importez-les dans le nouveau projet (Tools → Import → Layer data).

Où sont mes sauvegardes automatiques ?

map_autosave.hex (toutes les 5 minutes) est à côté du map.hex ; le dossier backups reçoit toutes les 10 minutes une copie nommée map_AAAA_MM_JJ_HH_mm_backup.hex. Ouvrez-les par File → Open, puis Save as. Pendant la séance, Ctrl+Z remonte sans limite.

Pourquoi mon pont est-il refusé ?

Un pont se peint sur des hex de mer, d'une rive à l'autre. Le validateur (v1.0.1) lève trois Error : un hex Bridges sur la terre, un hex Bridges infranchissable, un pont qui ne relie pas deux rives distinctes. Les hex de rive, CAIME les calcule. Un tracé Rivers est sur la terre : il ne se ponte pas.

Quelle forme donner à l'emplacement d'une ville, et à celui d'un port ?

Un disque parfait de 19 hex autour du centre de la ville (un clic de brosse de taille 3) : son centre devient la position de la ville. Une ville portuaire garde le même disque, partagé : 16 hex de terre en Main Settlement et 3 hex consécutifs du bord, côté mer, en Port (chez CA, deux sur la terre et un sur la mer). L'étendue couvre les 19 hex. Le validateur ne fait que compter 19 ou 16 ; sans le disque, la ville n'a pas de position et l'IA de campagne plante.

Je peins et rien n'apparaît : pourquoi ?

Vérifiez la couche active (le bouton rond), la couche visible (la case), le swatch choisi, et que la barre d'outils n'est pas grisée (aucun projet ouvert).

Des centaines d'avertissements sur une carte de CA : est-ce grave ?

Non : la carte de Warhammer III de CA en produit des centaines et s'exporte quand même ; elle a même cinq Error d'étendue, sur des villes en col. Corrigez toute Error de concordance base/carte, d'index et de pont, lisez les Warning ; les Info sont des remarques.

Quelle taille maximale pour une carte ?

Largeur paire ; la documentation avertit au-delà de 731 520 hex (lenteur), et l'équipe de CAIME cite sur son Discord (20.09.2026) un plafond de 2 048 hex par dimension, que nous n'avons pas trouvé dans le code. La grande carte de Warhammer III fait 1440 × 970.

Peut-on porter une carte de Warhammer I dans Warhammer III ?

Oui : c'est ce que nous avons fait avec La Saison de la Révélation. Depuis la v1.0.1, CAIME ouvre les cartes des mini-campagnes de Warhammer I ; notre journal raconte la méthode pas à pas.

Peut-on partager les fichiers produits par CAIME ?

CAIME : code sous licence non commerciale. Fichiers qu'il produit : le README demande l'accord d'un fondateur avant de les donner, l'EULA 1.1 permet de les publier sans les monnayer ; dans le doute, demandez à l'équipe avant de publier ; rien de commercial.

Ce guide en texte brut (Markdown), pour les IA et la lecture hors ligne

Ce guide est communautaire

Une erreur, un piège vécu, une astuce ou un outil plus récent : dites-le, et chaque correction sera vérifiée, puis ajoutée avec sa source.

Proposer une idée
↑ Sommaire