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.
| Mot | Ce qu'il veut dire |
|---|---|
| Assembly Kit | l'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, BOB | les 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 |
| RPFM | Rusted PackFile Manager, l'outil communautaire qui ouvre et fabrique les packs : le guide RPFM |
| Pack | une 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…) |
| ESF | un format binaire de Creative Assembly (map_data.esf, startpos.esf) ; le sigle n'est pas documenté |
| Hex | une case de la grille, à sommet plat ; colonnes impaires décalées vers le haut ; ligne 0 en bas |
| Couche | un type de donnée, une valeur par hex (régions, sols, routes…) |
| Swatch | une valeur qu'on peint : un type de sol, une région, un climat… |
map.hex | le projet CAIME d'une carte : toutes ses couches |
.hex_layer | une seule couche, exportée ou à importer |
| Process, export | la transformation des couches en fichiers du jeu (menu Process) |
| Pathfinding | le calcul des déplacements : qui peut aller où, à quel coût |
| Lookup | une image où chaque région a sa couleur RVB ; le jeu y lit quelle région est sous un point |
| Logger | la 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 campagne | la ligne de la carte dans campaign_map_playable_areas : limites de la caméra, fichiers de la minicarte |
is_sea | la colonne de la table regions qui dit si une région est une mer |
| bridge-cliff | l'hex de terre qui touche un pont ; CAIME le calcule seul : ni couche ni type de sol, rien à peindre |
| Falaise | pour CAIME, tout hex de terre qui touche la mer sans être une plage ; il la calcule seul |
| Terrain à risque | l'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, attrition | un groupe de régions ; l'usure des armées sur un terrain |
| Masque d'arêtes | six bits par hex qui disent vers quels voisins part une route, une rivière, une frontière |
| Startpos | startpos.esf, l'état de départ d'une campagne, que le jeu génère ; hors de CAIME : les outils |
- 1Hexune case à sommet plat ; les colonnes impaires sont décalées vers le haut ; la case (0, 0) est en bas à gauche.
- 2Région de merla mer est une région comme une autre, avec is_sea = 1 dans la table regions.
- 3Région et frontièrechaque hex a sa région ; la couche Region Borders trace la frontière (Auto-generate).
- 4Falaiseun 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.
- 5Plagepeinte (Beaches), sur la terre côtière seulement : les débarquements.
- 6Pontpeint (Bridges) sur un hex de mer, d'une rive à l'autre ; la route s'arrête aux deux rives.
- 7bridge-cliffchaque hex de terre qui touche le pont (hachures) ; CAIME le calcule : rien à peindre.
- 8Emplacement (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.
- 10Masque 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).
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.
Et le détail de chaque étape, sous les numéros de la marche, avec ce qu'elle produit :
- 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… - II–III · CAIME, les couches
Les couches peintes ou importées, puis validées.
map.hex - 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 - 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… - VII · Le pack
RPFM rassemble dans le
.packdu mod les exports, le terrain, les tables et les scripts : la génération du startpos a besoin de ce pack.mon_mod.pack - 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 - X · En jeu
Démarrer une partie, lire les journaux, corriger, recommencer.
Avant de commencer : les droits et les règles de l'équipe§
- Le code de CAIME est sous une licence non commerciale : modification permise, aucun usage commercial, partage à l'identique avec le code source public si vous redistribuez, mention du droit d'auteur conservée.
- Les fichiers que CAIME produit : deux textes du dépôt se contredisent. Le README demande l'accord exprès d'un fondateur (MrJox, Maruka ou Marthenil) avant de donner des fichiers produits par CAIME, et interdit tout usage commercial, dons compris. L'EULA 1.1, que CAIME fait accepter au premier lancement, vous en laisse propriétaire et permet de les publier (Steam Workshop, Nexus Mods, ModDB) sans les monnayer ; elle déconseille les dons sans les interdire. Dans le doute, demandez à l'équipe sur son Discord avant de publier.
- L'EULA interdit aussi toute chaîne automatisée commerciale qui produirait du contenu pour des tiers.
- L'équipe demande de ne pas faire, sur un jeu Warhammer, la carte d'un autre univers : pour cela, partez de Troy ou de Pharaoh, même moteur (Discord de l'équipe de CAIME, 20.09.2026).
- Réutiliser dans un jeu Warhammer des modèles d'un autre jeu de CA n'est pas permis (restrictions de Games Workshop) : il faut ses propres assets (Discord de l'équipe de CAIME, 20.09.2026).
- En bref : « 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. »
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§
- Installez l'Assembly Kit du jeu depuis Steam (Bibliothèque → Outils).
- 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. - 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.
- 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 contientbinaries,raw_dataetworking_data. Un chemin par jeu. - Toujours dans les préférences : Auto-save écrit
map_autosave.hexà côté dumap.hextoutes les 5 minutes ; Auto-backup range toutes les 10 minutesmap_AAAA_MM_JJ_HH_mm_backup.hexdansbackups\(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 - 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. - Lisez la documentation : douze guides détaillés, de la prise en main aux exports.
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\, sous le dossier parent de celui de son exécutable ; avec l'installeur officiel, c'est %LOCALAPPDATA%\. 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 :
- 1Les menusFile, Edit, Process, Tools, Settings, Help. Tout est en anglais.
- 2Les 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.
- 3Les 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.
- 4Le canevasla carte en hex ; le cercle de la brosse. Molette : zoom ; clic du milieu : déplacer.
- 5La minicartele cadre rouge montre la vue ; un clic y déplace la vue.
- 6Les swatchesla valeur à peindre, dans une liste déroulante : les clés de la base pour la couche active (ici plains).
- 7Les actionscelles de la couche active : Create, Rename, Remove (après la base), Cleanup… ; Align, Plug Holes ou Auto-generate selon la couche ; Validate.
- 8Les couchesla case rend une couche visible ; le bouton rond la rend active. Ground Types est en bas, active à l'ouverture.
- 9La barre d'étatle dernier message (un clic ouvre le Logger), X = colonne et Y = ligne sous la souris.
La recette pour peindre§
- 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).
- Dans Swatches, choisissez la valeur : un type de sol, une région, un climat…
- Dans la barre d'outils, choisissez l'outil (tableau ci-dessous), réglez la taille de la brosse, et peignez.
- 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.
| Touche | Outil | Ce qu'il fait |
|---|---|---|
| M | Pan | déplacer la vue (le clic du milieu le fait aussi, quel que soit l'outil) |
| Z | Zoom | zoomer (la molette aussi) |
| B | Brush | peindre ; taille 1 = 1 hex, 2 = 7, 3 = 19, 4 = 37 |
| F | Flood Fill | remplir une zone ; la liste Source dit quelle couche sert de bordure (Ground Types, Climates, Attritions, Regions, Impassable, Roads, Trade Routes, Restrictions) |
| E | Eraser | effacer |
| I | Background Image | poser une image de fond (JPG, BMP, TIFF, PNG), étirée sur la carte : un calque de travail, jamais enregistré ni exporté |
| L | Line | un premier clic (en rouge), le trajet s'affiche en jaune, un clic final |
| P | Color Picker | prélever la valeur d'un hex ; Alt maintenu donne une pipette temporaire |
Les raccourcis à connaître§
| Raccourci | Action |
|---|---|
| Ctrl+N · Ctrl+O · Ctrl+S · Ctrl+Shift+S | nouvelle carte · ouvrir · enregistrer · enregistrer sous |
| Ctrl+X · Ctrl+Q | fermer le projet (ce n'est pas « couper ») · quitter |
| Ctrl+R | Reload : relit la base, et abandonne ce qui n'est pas enregistré |
| Ctrl+Z · Ctrl+Y | annuler · rétablir (sans limite) |
| Ctrl+Shift+R · Ctrl+Shift+N | redimensionner (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+P | Logger · 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§
- 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.
- 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.
- 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\; avec l'installeur officiel,<carte>\ %LOCALAPPDATA%\. 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).CampaignMapToolkit\ Projects\ <carte>\ - Le mettre à sa place : aussitôt, File → Save as… (Ctrl+Shift+S) vers
<Assembly Kit>\, puis rouvrez cette copie. Map Data et Dynamic Resources ne travaillent qu'à cet endroit (sinon : « Map Data Process denied »).raw_data\ EmpireDesignData\ campaign_maps\ <carte>\ map.hex
Remplir, valider, exporter§
- 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 pourtrees.png, 2,54 × 2,40 pourdynamic_resources.png.trees.pngsert aussi aux arbres de BOB. Contrôle : les quatre fichiers sont à côté dumap.hex, sous ces noms exacts. - 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é.
- 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_seade la région, et l'hex). - 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 --allles 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. - 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>\, datés du jour,working_data\ campaign_maps\ <carte>\ map_data.esf(CAIME tient pour raté un fichier de 10 Ko ou moins),pathfinding.ppd,display\etborders\ borders.pbd <campagne>_lookup.bmp. Détail : la section « Exporter ». - 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. - 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\).
| Table | Ce qu'elle dit | Colonnes qui tiennent la carte |
|---|---|---|
campaign_maps | la 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 |
campaigns | la 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_areas | la 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 |
regions | une 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_regions | lie chaque région à la carte | campaign_map = ma_carte ; region = une key de regions |
region_to_province_junctions | une ligne par région, vers sa province | region ; province ; is_capital |
provinces | la province, si elle est neuve | key |
campaign_map_roads | le coût des routes, par campagne | key ; campaign = ma_campagne ; threshold ; movement_cost |
campaign_map_areas_of_interest | Warhammer III et Three Kingdoms : filtrée par nom de carte, sinon couche vide | key ; campaign_map = ma_carte |
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.
- 1Ground Typesle type de sol : plaine, forêt, montagne, mer
- 2Climatesle climat : obligatoire sur chaque hex
- 3Regionsla région de chaque hex, et ses frontières
- 4Riversles rivières, avec leurs directions
- 5Town Sprawl · Town Slotsl'emplacement d'une ville (19 hex dans Warhammer III ; un port : 16 + 3) et son étendue
- 6Roads · 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
Les couches de Warhammer III, avec les noms que l'éditeur affiche, dans l'ordre du panneau (celle du haut se dessine par-dessus) :
| Couche | Ce qu'on y peint | Effet, outil ou action |
|---|---|---|
| Impassable | les hex interdits | action Plug Holes : bouche les trous d'un hex |
| Roads | les routes, avec leurs directions | coût réduit (campaign_map_roads) ; jamais d'anneau |
| Town Slots | les emplacements : Main Settlement, Port, Slot 2… | voir « Les villes » |
| Town Sprawl | l'étendue de chaque ville | action Align Town Sprawl/Slot |
| Bridges | les ponts, sur des hex de mer | voir « Les ponts » |
| Rivers | les rivières, avec leurs directions | sur la terre seulement |
| Beaches | les plages | seulement sur la terre côtière : les débarquements |
| Restrictions | des restrictions de mouvement graduées | levables par un script Lua |
| Region Borders | les frontières dessinées | action Auto-generate |
| Areas Of Interest | des zones d'intérêt | exige la table campaign_map_areas_of_interest |
| Regions | la région de chaque hex | swatches à créer (nom + Is sea?) |
| Attritions | l'usure des armées | swatches à créer |
| Climates | le climat : obligatoire sur chaque hex | swatches à créer |
| Ground Types | le 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.
Les régions§
- Chaque hex a une région, un type de sol et un climat. Une région vide menace le startpos.
- Une région de terre est d'un seul tenant : le validateur prévient qu'une région morcelée peut gêner la génération du startpos. Une région de terre sans ville se peint entièrement infranchissable.
- Une région de mer touche 5 régions de terre au plus (conseil, niveau Info) ; au-delà de 9, Warning : l'IA ralentit, surtout avec des hordes.
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.
- L'étendue est d'un seul bloc par région et ne se pose jamais sur l'infranchissable (Error). La documentation interdit aussi la rivière et la falaise, mais le code de la v1.0.1 ne le vérifie pas, et l'étendue d'une ville portuaire de CA couvre forcément des hex de côte.
- Un terrain à risque (l'infranchissable, les rivières et toute la côte) touche l'étendue ou reste à 3 hex au moins ; jamais à 2. Une seule zone à risque au contact. Ces deux règles sont des Error.
- L'étendue d'un port peut déborder sur la mer.
- La documentation donne trois règles différentes pour Warhammer III ; le code de CAIME applique 19 et 16 à Warhammer I, II et III. En portant une carte de Warhammer I (7 hex, 4 pour un port), agrandissez les emplacements de 7 à 19 hex (16 + 3 pour un port).
Les rivières et les ponts§
- Une rivière est sur la terre seulement : elle descend vers la côte mais s'arrête sur le dernier hex de terre ; aucune arête ne pointe vers la mer ni hors de la carte.
- Un pont enjambe de l'eau peinte en mer, d'une rive à l'autre : peignez Bridges sur ces hex de mer et menez la route jusqu'à la rive. CAIME marque seul les hex de rive qui touchent le pont (bridge-cliff). La base de Warhammer III a d'ailleurs un type de sol de mer pour les cours d'eau,
sea_river. - 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. Un tracé Rivers est sur la terre : il ne se ponte pas.
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.
Concevoir une carte qui se joue bien§
- Partez du jeu : cols, gués, détroits, voisinages de factions, axes d'invasion. Des couloirs et des bastions, pas une plaine uniforme.
- Des biomes par zones : massifs continus avec deux ou trois cols, forêts d'un seul bloc.
- Des rivières crédibles : source en montagne, confluences, delta.
- Des routes en arbre : les villes d'une province reliées, puis les provinces entre elles.
- Des régions compactes et de taille comparable ; des ports là où le commerce a du sens.
- Prototypez petit (200 × 150), validez, exportez le pathfinding, puis passez à la taille finale : le redimensionnement (Ctrl+Shift+R) ajoute du canevas vide, il n'agrandit pas le dessin.
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.
| Modification | Base ? | Exports à relancer |
|---|---|---|
| Repeindre les types de sol, les attritions, l'infranchissable, les restrictions | non | Pathfinding, Map Data |
| Repeindre les routes, rivières, plages, ponts, emplacements et étendues | non | Pathfinding, Map Data |
| Repeindre les climats | non | Map Data |
| Formes des régions (repeindre Regions) | non | Borders, Pathfinding, Map Data, Lookup |
| Créer, renommer ou supprimer un type de sol | oui (campaign_ground_types) | Pathfinding, Map Data |
| Créer, renommer ou supprimer un climat ou une attrition | oui (climates, campaign_map_attritions) | Map Data |
| Créer, renommer ou supprimer une zone d'intérêt | oui (campaign_map_areas_of_interest) | Map Data |
| Ajouter, renommer ou supprimer une région | oui (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§
- Enregistrez d'abord : Map Data et Dynamic Resources refusent de tourner sinon.
- Map Data passe par l'outil MapDataBuilder : le projet doit être à sa place dans
raw_data, et Tweak et Terry fermés (Terry est un mode de Tweak), pour Dynamic Resources aussi. Ne comptez pas sur l'alerte de CAIME : elle cherche un programme nomméTweak.AssemblyKit, alors que celui du kit de Warhammer III s'appelletweak.modder.x64.exe. Succès : « Finished creating map » ; unmap_data.esfde 10 Ko ou moins est tenu pour raté. - Borders ouvre une fenêtre de choix (Land, Sea, TI, MI ; selon la documentation, TI = theatre island, une île détachée, et MI = Mediterranean island, une petite île) : gardez les cases par défaut.
- Dynamic Resources a fait planter MapDataBuilder sur Warhammer III dans notre atelier ; ce n'est pas résolu. Si c'est votre cas, signalez-le à l'équipe.
- Trade Routes : la couche n'existe pas dans Warhammer III, mais les campagnes du jeu livrent un
trade_routes.ptd, et--allle produit. - Constat de notre atelier, sur un seul projet : le
map_data.esfque produit l'export Map Data (MapDataBuilder, qui s'appuie sur les programmes du kit) est en ESF0xABCB, alors que CA livre les siens en0xABCA; chez nous, la génération du startpos plantait tant qu'il n'était pas converti. Vérifiez avec l'équipe de CAIME si votre version le fait.
| Export | Fichier produit |
|---|---|
| Map Data | map_data.esf |
| Pathfinding | pathfinding.ppd (la page « Processing & Exporting » dit .bin par erreur) |
| Borders | display\ |
| Dynamic Resources | dynamic_resources.esf |
| Trade Routes | trade_routes.ptd (jeux qui ont cette couche ; pas Warhammer III) |
| Lookup | pour 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>\. 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--allenchaîne Map Data → Dynamic Resources → Pathfinding → Borders → Trade Routes → Lookup ; il ne se combine pas avec des drapeaux à l'unité.- Le chemin de l'Assembly Kit se règle d'abord dans l'éditeur (Ctrl+P).
validaten'en a pas besoin, mais sans lui, les contrôles qui comparent la carte à la base ne voient rien. validatesort en 2 dès qu'un contrôle échoue, un seul Warning suffit, et même les cartes de CA échouent : lisez le rapport plutôt que d'arrêter un script sur ce code.- La ligne de commande officielle ne fait que
process(les exports) etvalidate; une couche.hex_layers'écrit par script mais s'importe par la fenêtre (Tools → Import → Layer data). - Réserve sur
--all(v1.0.1, non réessayé) : il inclut Dynamic Resources, qui a fait planter MapDataBuilder sur Warhammer III chez nous, et Borders, dont les options ne sont posées que par sa fenêtre : en v1.0.0,process --borderssans la fenêtre a échoué chez nous, et le code de la v1.0.1 n'a pas changé sur ce point.--allpeut donc sortir en 2 : listez plutôt les tâches (--map-data --pathfinding --trade-routes --lookup) et faites Borders par le menu Process.
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é.
| Id | Couche | Valeur sur le disque |
|---|---|---|
| 0 | Impassable | 1 = franchissable, 0 = infranchissable (dans le fichier ; dans l'éditeur, peindre Impassable rend l'hex infranchissable) |
| 1, 2, 6 | Trade Routes, Roads, Rivers | le masque d'arêtes (six bits) |
| 3 | Town Slots | index + 1 : 0 = aucun, 1 = principal (Main Settlement), 2 = Port, 3 = Slot 2… jusqu'à 12 (index 0 à 11) |
| 4, 5, 7 | Town Sprawl, Bridges, Beaches | 1 = oui ; toute autre valeur vaut « non » |
| 8 | Region Borders | le masque d'arêtes (six bits) |
| 9 | Regions | deux octets : v × 8 en little-endian, avec v = index + 1 (premier octet = (v × 8) mod 256, second = v ÷ 32) |
| 10, 11, 12 | Attritions, Climates, Ground Types | index + 1 |
| 13, 14 | Restrictions, Areas Of Interest | aucun format : ni import ni export de .hex_layer |
- Masque d'arêtes : bit 0 = nord, 1 = nord-est, 2 = sud-est, 3 = sud, 4 = sud-ouest, 5 = nord-ouest. À l'import, seule la présence compte pour les routes et les rivières (valeur > 0) : CAIME recalcule leurs masques en reliant tout voisin peint, sauf l'arête qui fermerait un triangle. Les masques des routes commerciales sont gardés tels quels ; Region Borders se recalcule depuis Regions à l'enregistrement, quand les régions ont changé.
- Les index suivent l'ordre du projet : la terre d'abord, puis la mer (un type de mer d'index j vaut « nombre de types de terre + j »).
- Les index changent d'un jeu à l'autre (13 sols de terre et 24 climats dans Warhammer I, 15 et 40 dans Warhammer III) : recalez-les par leur nom, jamais par leur numéro.
- Ne réimportez que les couches que vous avez vraiment changées : réimporter Roads ou Rivers fait recalculer tous leurs masques, et les liaisons de la carte d'origine sont perdues, même si le nombre d'hex ne change pas.
- L'export PNG de CAIME retourne l'image pour ressembler au jeu : une image dessinée « haut en haut » doit être retournée avant d'être encodée.
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.
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 :
- Lire les couches de la carte d'origine (CAIME ouvre les cartes des mini-campagnes de Warhammer I depuis la v1.0.1) et les recaler par nom sur les listes du jeu d'arrivée.
- Apparier les clés de faction sur la culture et la fin de la clé, jamais sur le préfixe :
wh_dlc05_brt_mini_bastonnedans Warhammer I estwh_main_brt_bastonnedans Warhammer III. - Agrandir les emplacements de villes de 7 à 19 hex (16 + 3 pour un port), en disque autour de leur centre, et refaire les étendues.
- Reprendre les noms de fichiers de la ligne d'origine de
campaign_map_playable_areas(par exemple la colonneradar_file, la minicarte) : une colonne qui nomme un fichier se vérifie contre le contenu réel du pack. - Garder les fichiers de l'autre jeu hors de toute publication : ils appartiennent à CA.
Le récit complet : le tutoriel du portage et les neuf murs du portage.
Les pièges qui nous ont coûté le plus§
- Reload (Ctrl+R) jette ce qui n'est pas enregistré : Ctrl+S d'abord, toujours.
- Le jeu du projet est définitif : un projet créé pour le mauvais jeu se refait (voir la FAQ).
- Les fichiers d'appui absents : Map Data ou Dynamic Resources échouent. Les copier depuis le prologue.
- Un anneau sans extrémité de routes ou de rivières : l'export tourne sans fin (la documentation cite aussi le triangle).
- Impassable = 1 veut dire franchissable, dans un
.hex_layer: l'inverse de l'intuition. - La ligne 0 en bas : une carte dessinée « haut en haut » se retrouve à l'envers.
- Tweak ou Terry ouvert pendant Map Data ou Dynamic Resources : fermez les deux. L'alerte de CAIME (« Please close Tweak.AssemblyKit ») cherche un programme qui n'est pas celui du kit de Warhammer III (
tweak.modder.x64.exe) : ne comptez pas sur elle. - Ctrl+X ferme le projet : ce n'est pas « couper ». S'il reste des changements non enregistrés, une question vous rattrape : répondez No.
- Ctrl+Shift+N renomme la carte, mais la base (
campaign_map_regions,campaigns,campaign_map_areas_of_interest) et le dossier sousraw_datadoivent suivre le nouveau nom. - Aucune campagne ne cite la carte : l'export Lookup refuse.
- La ligne de la carte en dernière position de
campaign_map_playable_areas: Map Data plante. - Les index de couches changent quand la base ou le jeu change : les recaler par nom.
- Une mise à jour du jeu efface vos lignes du kit : Steam met l'Assembly Kit à jour après le jeu (chez nous, une heure plus tard, à la 9.0) et réécrit
raw_data\, que lit CAIME ; les lignes ajoutées pour votre carte disparaissent. Avant de rouvrir le projet ou d'exporter, cherchez la clé de votre campagne dansdb campaigns.xml, et restaurez vos lignes depuis vos copies. - Le redimensionnement ne met pas à l'échelle : il ajoute des hex vides à peindre.
- L'image de fond n'est jamais enregistrée : rechargez-la à chaque séance.
- La vue noire à l'ouverture : bougez ou zoomez.
- Le Map Data Editor refuse Warhammer III : il ne sert qu'aux jeux plus anciens.
- Les gabarits Warhammer III du dépôt (
wh3_main_combi_map_1,wh3_main_chaos_map_2) sont des versions anciennes, sans fichiers d'appui ; les cartes actuelles de l'Assembly Kit sont_map_5et_map_4. - La documentation se contredit sur quelques points :
.binou.ppdpour le pathfinding (le code écritpathfinding.ppd), le bridge-cliff (« ground type » dans la documentation, calculé dans le code), les règles de l'étendue (rivière et falaise interdites dans la documentation, seul l'infranchissable dans le code), les tailles des emplacements dans Warhammer III, les couleurs des niveaux de gravité, « plus de 9 voisines » en Warning ou en Error, le bouton ⚙, le contenu de Baseline Tilemap image (le code dessine mer, routes, rivières, plages et falaises), la configuration du Map Data Editor en.jsonou en.xml, le chemin d'exemple de l'Assembly Kit, et le fait de pouvoir peindre ou non sur une couche masquée. Croyez le validateur et le disque.
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.
- Demandez à l'humain avant de lancer le jeu, de piloter l'écran ou de publier ; ne supprimez rien : rangez, seul l'humain supprime.
- Ni rétro-ingénierie ni contournement d'un outil de CA : quand un outil bute, un témoin, puis la communauté (Discord de CAIME, tw-modding).
- Ordre de la chaîne : base → CAIME (peindre, valider, exporter) → Terry et BOB → pack → startpos (généré par le jeu, pack chargé) → pack reconstruit → essai en jeu.
- Projet :
<Assembly Kit>\, enregistré, avecraw_data\ EmpireDesignData\ campaign_maps\ <carte>\ map.hex trees.png,tree_database.xml,dynamic_resources.png,dynamic_resources_database.xmlà côté ; Tweak et Terry fermés (l'alerte de CAIME chercheTweak.AssemblyKit, le kit de Warhammer III lancetweak.modder.x64.exe) ; sorties dansworking_data\:campaign_maps\ <carte>\ map_data.esf,pathfinding.ppd,display\,borders\ borders.pbd <campagne>_lookup.bmp. - Sauvegardes :
map_autosave.hexà côté dumap.hex(5 min),backups\(10 min).map_AAAA_MM_JJ_HH_mm_backup.hex - Base : en mode Assembly Kit, CAIME lit
raw_data\sans y écrire ; en mode RPFM, il y place des tables le temps d'un projet et remet les originaux à la fermeture.db - Après une mise à jour du jeu, Steam met l'Assembly Kit à jour et réécrit
raw_data\, lignes ajoutées perdues : vérifiez la clé de la campagne dansdb campaigns.xmlavant de rouvrir ou d'exporter, et restaurez depuis les copies. - Ligne de commande officielle :
CAIME.exe process|validate --map <map.hex> (--all | drapeaux); codes 0, 1, 2 ; le code 2 devalidatene suffit pas à conclure (un seul Warning le déclenche) : lire le rapport.--allinclut Dynamic Resources (plantage de MapDataBuilder sur Warhammer III chez nous) ;process --borderssans la fenêtre a échoué en v1.0.0 et le code n'a pas changé en v1.0.1 : lister les tâches. Une couche.hex_layers'importe par la fenêtre (Tools → Import → Layer data). .hex_layer: 4 octets d'identifiant (little-endian, 0 à 12), puis un octet par hex depuis la ligne 0 en bas (régions : deux octets, v × 8 little-endian, v = index + 1) ; taille exacte 4 + L × H (4 + 2 × L × H pour les régions) ; masques d'arêtes : bits 0 à 5 = N, NE, SE, S, SO, NO ; Impassable : 1 = franchissable ; Town Slots : 0 = aucun, 1 = principal, 2 = Port, 3 = Slot 2… jusqu'à 12 ; Restrictions (13) et Areas Of Interest (14) : aucun format d'import ni d'export.- Import : Roads et Rivers ne gardent que la présence (valeur > 0) ; CAIME relie tout voisin peint, sauf l'arête qui fermerait un triangle ; les masques de Trade Routes sont gardés tels quels ; Region Borders se recalcule depuis Regions à l'enregistrement, quand les régions ont changé.
- Baseline Tilemap image : une image de 2 × L par 2 × H + 1 pixels (mer, routes, rivières, plages, falaises), la taille du
tile_map.pngdu projet Terry. - Contrôles, en conditions : chaque hex a région, sol et climat ;
is_seade la région = mer ou terre du sol ; région de terre d'un seul tenant ; emplacement principal = disque parfait de 19 hex, son centre = la position de la ville ; ville portuaire = 16 hex de terre en principal + 3 hex consécutifs du bord, côté mer, en Port (un en mer) ; étendue sur les 19 hex, jamais sur l'infranchissable ; terrain à risque (infranchissable, rivière, côte) au contact ou à 3 hex au moins, une seule zone au contact ; rivière sans arête vers la mer ni hors de la carte ; pont sur des hex de mer entre deux rives distinctes (CAIME calcule le bridge-cliff) ; aucun anneau sans extrémité dans Roads, Rivers, Trade Routes. - Sévérités (v1.0.1) : Error = désaccord base/carte, index invalide, pont mal posé, emplacement sur l'infranchissable, règles de l'étendue ; 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. Avant d'exporter : zéro Error de concordance, d'index et de pont ; une Error d'étendue sur une ville en col existe aussi sur la carte de CA (cinq villes) : la juger en jeu. Après chaque export : un nouveau startpos.
map_data.esf: chez nous, l'export sortait en ESF0xABCBalors que CA livre les siens en0xABCA, et la génération du startpos plantait tant qu'il n'était pas converti (un seul projet ; à vérifier avec l'équipe de CAIME).- Les index de sols, climats et attritions se recalent par nom, jamais par numéro.
- Droits : « 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. »
Sources et liens§
- Documentation de CAIME (douze guides, dont la ligne de commande), le dépôt (et son code source, branche
main, qui tranche quand la documentation se contredit) et ses versions. - Campaign Map Making for Warhammer III et Startpos (wiki tw-modding).
- Manuel de RPFM et RPFM For Dummies.
- Terry, introduction et Rules.bob (wiki de Creative Assembly).
- Nos autres guides : les outils, RPFM, Terry, BOB et modder avec une IA.
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\), 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%\).
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