Journal de l'atelier · · 10 min de lecture
Créer une expansion de carte, de zéro à 100 : le chantier Saison Expanded, en direct
Le 25 septembre, j'ai lancé la suite logique de la Saison : agrandir sa carte à toute la Bretonnie, sans toucher à la bêta. Ce chantier se construit en public, et cet article le suit phase par phase, avec nos vrais outils, nos vrais fichiers et nos ratés. De quoi comprendre comment naît une expansion de carte, vous en inspirer, ou venir nous aider.

Un article vivant
Saison Expanded, c'est la carte de la Saison agrandie à toute la Bretonnie. Au centre, la carte de Warhammer I, identique à 100 %. Autour, la terre de l'extension, dessinée d'après l'Atlas de ce site.
La méthode sur le papier est racontée dans La Bretonnie entière. Ici, c'est la construction : quatre phases, chacune avec son contrôle.
Pour chaque phase : son but, ses étapes, ses outils et ses fichiers, ses pièges, son état. Tout se montre, captures et chiffres compris. Seul le pack reste privé, comme celui de la bêta : il contient des fichiers de Warhammer I.
Avant les phases : une copie et deux inventaires
Le 25 septembre à 15 h 25, j'ai écrit à la session « Construction » de Claude : « fais une copie du pack, tu la nommes Expanded, et tu commences à dessiner toute l'extension ». Dix minutes plus tard, j'ai précisé : « je ne veux pas une map plate : les reliefs, les plaines, les forêts ».
Quatre règles encadrent tout le chantier :
- La bêta reste intacte. Expanded est une copie, avec son nom de carte, ses fichiers et son pack. Rien ne s'écrit dans les dossiers de la bêta.
- Au centre, Warhammer I à 100 %. Autour, l'Atlas, source unique : le site et le jeu montrent la même carte.
- D'abord la terre en décor : hors jeu, infranchissable, sous le brouillard, comme les bords des Empires Immortels. Les régions jouables viendront ensuite, une à une.
- Les clés :
saison_pour ce que nous créons,wh_dlc05_seulement pour ce qui vient de Warhammer I.
Deux agents de recherche ont d'abord tout lu, sans rien écrire : l'Atlas d'un côté, notre chaîne de fabrication du terrain de l'autre. Bonne nouvelle : l'Atlas est déjà dans notre repère hex, un cadre de 560 × 575 hex où la carte de Warhammer I est en x + 120. Ses 32 régions neuves et ses 11 mers s'y posent directement.

D'où une surprise : une partie des régions neuves, comme Château Artois, Grung Zint, Helmgart ou Karak Norn, est déjà dans le cadre de Warhammer I, sur sa bordure de décor non jouable. On y revient à la phase 2.
La chaîne, elle, n'était écrite que pour une carte. Une même constante, CARTE, y désignait la source (le terrain de Warhammer I) et la cible (les fichiers du kit). La taille, 400 × 440 hex, était écrite en dur dans une trentaine de modules. De ce constat est né le plan en quatre phases.
Phase 1 : une chaîne qui connaît plusieurs cartes
- But : que la même chaîne fabrique la bêta, à l'octet près, et la carte Expanded.
- État : en cours, commencée le 25.09 à 16 h 45.
- Outils : Python ;
carte_config.py,releve_constantes.py.
Avant de toucher au moindre module, on a relevé les valeurs de 952 constantes dans 30 modules : c'est la référence. Puis un module unique, carte_config.py, a repris tout ce qui dépend de la carte : sa clé, sa campagne, sa taille, la place de Warhammer I, le dossier de travail, le pack.
Une variable d'environnement, SAISON_CARTE, choisit le profil. Sans elle, c'est la bêta.
Onze modules y sont branchés : le générateur, la caméra, les textures du sol, l'éclairage, les arbres, les rivières, les entités, les montagnes… Le contrôle compare les constantes avant et après :
python releve_constantes.py --sortie avant.json
python releve_constantes.py --sortie apres.json --comparer avant.jsonRésultat : 0 différence sur 955 pour la bêta. Pour Expanded, 28, toutes des cibles (clé de carte, dossiers du kit et de l'atelier), aucune source de Warhammer I.
Reste à brancher : les masques d'eau, la construction du pack, les tables et le startpos, les noms des matériaux d'eau et de neige. Puis vient l'étape de placement, qui posera tout Warhammer I dans le monde agrandi. Le contrôle final sera plus dur : la chaîne de la bêta devra produire le même terrain compilé, octet par octet.
Phase 2 : la grille agrandie dans CAIME
- But : le
map.hexde la nouvelle carte. La Saison au centre, l'extension autour, hors jeu et infranchissable ; seule la Saison se joue. - État : en cours ; grille posée à 17 h 30, carte et campagne déclarées dans le kit à 18 h 08.
- Outils : CAIME et des commandes en ligne ajoutées à notre copie ;
grille_expanded.py,rendu_grille.py.
Une grille plus grande que prévu
La grille devait reprendre le cadre de l'Atlas : 560 × 575 hex, la Saison en x + 120. À 16 h 15, j'ai tranché une question : le Bois Rêveur, notre reflet d'Athel Loren, ira au sud, en miroir de la forêt, derrière un voile infranchissable d'environ 26 rangées.
Ce reflet est un ajout à nous. D'après le livre d'armée Wood Elves (8e édition), cité par le wiki Warhammer Fantasy, il longe la forêt tout entière : d'où sa place, réservée dès la grille. La grille du jeu fait donc 560 × 825 hex : l'Atlas, plus 250 rangées au sud pour le Bois Rêveur. La Saison y est en (x + 120, y + 250).
Remplir la grille, hex par hex
En ligne de commande, CAIME ne connaît que process et validate. Pour tout enchaîner par script, j'ai utilisé des commandes en ligne ajoutées à notre copie de CAIME, pas encore proposées à ses auteurs : config, create, info, sync-names, import-layer et export-layer. Si vous travaillez avec une IA, c'est ce qui lui permet de fabriquer une carte de bout en bout, sans un clic.
- Créer la carte vide à la bonne taille :
create --name saison_expanded_map --width 560 --height 825, puissync-names, qui y inscrit les noms de la base : 15 sols de terre, 6 de mer, 42 climats, 12 attritions. - Recopier la Saison : 8 couches de la bêta (sols, climats, attritions, franchissable, rivières, routes, plages, ponts), renumérotées par nom vers les listes de la nouvelle carte, posées en (x + 120, y + 250).
- Poser l'Atlas partout hors de la partie jouable de la Saison : ses types de sol et ses rivières.
- Tout fermer hors de la Saison : infranchissable. La bande du sud reste vide.
- Importer et vérifier :
import-layer, puisexport-layer --format png, et un rendu aux couleurs naturelles.
Les commandes réelles de la grille, à 17 h 07 (le script en passe les 8 couches d'un coup) :
CAIME.exe create --name saison_expanded_map --width 560 --height 825
CAIME.exe sync-names --map saison_expanded_map\map.hex
CAIME.exe import-layer --map saison_expanded_map\map.hex
--layer GroundTypes --file layer_groundtypes.hex_layer
--layer Rivers --file layer_rivers.hex_layer …
CAIME.exe export-layer --map saison_expanded_map\map.hex --out export-png
--layer GroundTypes --layer Impassable --layer Rivers --format pngPourquoi l'Atlas l'emporte-t-il jusque dans le cadre de Warhammer I ? On a mesuré. Sur la partie jouable de la Saison, l'Atlas reprend nos couches à 98,5 %. Sur la bordure de décor, à 61 % seulement : il y dessine 25 680 hex de régions neuves, celles de la surprise de 16 h. D'où la règle : Warhammer I tel quel là où l'on joue, l'Atlas partout ailleurs.

La carte entre dans le kit
À 18 h 08, Expanded a une existence dans la base du kit. Un script écrit sa spécification (spec_expanded.py → map_spec_expanded.json), puis declare_map.py l'inscrit, après une sauvegarde : la carte saison_expanded_map (560 × 825), la campagne saison_expanded (« The Season of Revelation: Expanded »), sa zone jouable (celle de la Saison, décalée), ses routes, et les 61 régions de Warhammer I reliées à la carte.
Ces régions gardent leurs clés wh_dlc05_ : les scripts de la Saison restent valables sur la nouvelle carte. Chaque clé neuve a été vérifiée libre avant l'écriture.
Restent, en phase 2 bis : les régions et les mers neuves (saison_<clé>, saison_sea_<clé>), puis les emplacements de colonie et les routes commerciales (les tables à déclarer). Captures de CAIME à venir.
Phase 3 : le terrain de l'extension
- But : une terre qui ne soit pas plate. Relief, sols, forêts, rivières, côtes et montagnes depuis l'Atlas, et le Bois Rêveur.
- État : en cours depuis 17 h 45, dans le bac à sable du chantier (rien dans le kit ni dans le jeu).
- Outils :
relief_monde.py(aperçus),projet_expanded.py(le projet de terrain), Terry.
Un premier prototype, à 16 h 05, partait de la pseudo-altitude de l'Atlas. Il plafonnait bien trop bas : 3 unités de hauteur, quand Warhammer I monte jusqu'à 13,8. La session qui dessine l'Atlas nous a donné la leçon : sa valeur alt n'est pas une hauteur, mais une classe de dessin, à convertir par une table calée sur Warhammer I.
À 17 h 35, un premier assemblage du monde, en données : au centre, la hauteur réelle du projet Terry de la Saison ; autour, l'Atlas recalé (prairie vers 1,6, collines de 2,4 à 6,9, montagnes de 3,2 à 10,5). Le Bois Rêveur y entre à 17 h 45.
Le projet de terrain
À 17 h 45 commence le vrai terrain. projet_expanded.py fabrique le projet Terry d'Expanded à partir de celui de la Saison, lu et jamais écrit : 10 rasters agrandis (relief, fond de mer, couleurs, corruption, neige, arbres…), la carte des tuiles, 51 523 positions d'objets décalées. Tout le cadre 400 × 440 reste celui de Warhammer I : ses montagnes sont drapées sur son relief.
À 18 h, j'ai demandé que la carte de Warhammer I « déboule naturellement, sans bordure ». Son relief est prolongé hors du cadre par un remplissage lisse, puis fondu dans celui de l'Atlas sur 12 hex. Les côtes de l'extension sont lissées, et le relief de l'Atlas est érodé de fines ravines, comme celui de Warhammer I.
Les données, 17 h 45
Le projet de terrain, 18 h 40Le Bois Rêveur
De 18 h 30 à 18 h 40, le Bois Rêveur entre dans le projet de terrain : Athel Loren reflétée depuis Warhammer I, relief, eau, sols, arbres et neige d'hiver compris. Une teinte lilas, une lisière magenta et corrompue, un voile de brume ; autour, une mer d'éther violet sombre où le reflet flotte comme une île. Les teintes de Slaanesh sont un choix artistique du projet.

Phase 4 : la campagne Expanded
- But : une campagne jouable sur la nouvelle carte, à côté de celle de la bêta.
- État : à venir.
- Outils : RPFM, la génération du startpos.
La clé de carte, la clé de campagne et la zone jouable sont déjà déclarées (phase 2, 18 h 08). Une campagne ne connaît qu'une carte, par la colonne map_name de la table campaigns : celle d'Expanded pointe sur la sienne.
Suivre, et mettre la main à la carte
L'Atlas du site est la source unique : ce qui change sur la carte changera dans le jeu. Un nom qui sonne faux, une frontière mal placée, une ruine du lore oubliée ? Proposez-les sur la carte, à l'endroit exact.
Plus tard, sans urgence : un morceau du Reikland à la frontière, avec Helmgart face à Montfort et la Trouée de Gisoreux ; Marienbourg, quand je l'aurai vue en jeu.
Cet article grandit avec le chantier : à chaque phase, ses captures, ses chiffres et ses pièges. Les outils ont leurs guides : CAIME, Terry, RPFM et les autres outils.