Atlas de Bretonnie

Atelier des moddeurs · guide · 60 min de lecture

BOB, le guide : compiler le terrain et bâtir des packs avec l'Assembly Kit de Total War: Warhammer III

BOB est le bâtisseur de l'Assembly Kit : il transforme ce que vous avez préparé dans Terry et dans la base du kit en fichiers que Total War: Warhammer III sait lire. Ce guide explique sa fenêtre, ses recettes (les fichiers rules.bob), comment le lancer, où lire ce qu'il a fait, et les pièges qui nous ont coûté des heures en portant une carte de campagne de Warhammer I dans Warhammer III.

Relu le 25 septembre 2026, mise à jour 9.0. Vérifié sur l'Assembly Kit au patch 8.1, le wiki de CA et tw-modding. Les changements de la 9.0 qui touchent notre chantier sont ajoutés ; le reste n'a pas été revérifié. Corrigé le 5 octobre 2026 : faits prouvés depuis sur le jeu en 9.0.2, et versions parues depuis (CAIME 1.1.0, RPFM 5.1.1). Corrections communautaires du 26 septembre 2026. Dans le doute, vérifiez, et dites-le-nous.

Ce que fait BOB§

BOB est le bâtisseur de l'Assembly Kit, le kit officiel de Creative Assembly (Steam → Bibliothèque → Outils). Il ne sert pas à dessiner : il transforme. Il prend les sources rangées dans raw_data (les tables de la base, les projets de terrain de Terry) et en tire les fichiers du jeu, qu'il écrit dans working_data ; il sait aussi les réunir en packs. Le guide du débutant du wiki tw-modding développe son nom en Build-on One Button.

Pourquoi ce passage obligé ? Parce que le jeu ne lit pas les formats de travail. Un relief peint dans Terry est une image .tif ; le jeu veut des cartes compilées (.compressed_map, .dds, .bin). Une table éditée dans Dave, l'éditeur de la base du kit (CA l'écrit DaVE ; le lanceur Steam dit Database Editor: Dave), est un fichier XML ; le jeu veut ses tables dans son propre format. BOB fait la traduction.

Le schéma ci-dessous suit une carte de bataille de la source au jeu : le projet Terry (la tile map et la tuile) dans raw_data, BOB et ses rules.bob, les fichiers du jeu dans working_data, puis les deux chemins vers un pack : RPFM, la voie éprouvée, ou une règle de BOB, que nous n'avons pas éprouvée dans Warhammer III.

raw_data · votre projet TerryTerryterrain/battles/<carte>/ (tile map)terrain/tiles/battle/<jeu de tuiles>/<tuile>/ (tuile)la tile map (le cadre), puis la tuile (ce que vous peignez)Process with BOB (Ctrl+P)la tile map, puis la tuileBOBlit les rules.bobjournaux : binaries/bob*.logworking_datatile_map.bmd · tile_list.bin · blend0.dds …les fichiers du jeu, sous les mêmes chemins qu'en raw_data ;cadenas : Terry ouvert verrouille working_data, sauf pour le BOBqu'il lance lui-mêmerègle [Pack]?Règle [Pack]non éprouvéedans Warhammer IIIsans doute dans le kit :retail/data/recopie à la mainajout dudossierRPFMla voie éprouvéeworking_data/terrain/sans la carte d'exemplebattles_tablesvotre ligne, texte, imageLe jeudata/ → lanceur→ bataille personnalisée
Une carte de bataille, de la source au jeu : Terry fait passer BOB sur la tile map, puis sur la tuile ; BOB suit les rules.bob et écrit les fichiers du jeu sous les mêmes chemins, dans working_data. Le pack se fait avec RPFM, la voie éprouvée ; une règle [Pack] de BOB le poserait sans doute dans le dossier retail du kit, voie que nous n'avons pas éprouvée dans Warhammer III.

BOB est dans le dossier binaries du kit : bob.modder.x64.exe. Il s'ouvre par le lanceur Steam, par son exécutable ou depuis Terry : voir « Ouvrir BOB et lui donner du travail », plus bas. Il est fait de modules, un par métier ; le kit de Warhammer III livre entre autres bob_terrain, bob_tile, bob_vegetation, bob_texture, bob_campaign, bob_dbexport, bob_localisation, bob_lua, bob_pack et bob_files.

Ce que BOB ne fait pas : la moitié logique d'une carte de campagne (régions, routes, pathfinding). Celle-là, c'est le travail de CAIME (Campaign AI Map Editor), l'éditeur du Campaign Map Toolkit : voir le guide CAIME.

Le vocabulaire§

MotSens
raw_datales sources : ce que les outils du kit lisent (tables XML de la base, projets de Terry, images)
working_datace que BOB produit : les fichiers au format du jeu, rangés pour l'essentiel sous le même chemin que leur source (voir « Ce que BOB produit »)
Base du kitles tables XML de raw_data/db, qu'édite Dave
Base du jeucelle des packs de CA ; pour une carte de campagne, c'est elle qui compte (voir « BOB et une carte de campagne »)
Nœudun dossier ou un fichier dans l'un des arbres de la fenêtre de BOB
Actionun travail que BOB sait faire sur un nœud ; chaque nœud en propose plusieurs
Processeurla partie de BOB qui fait un type de travail ; bob.log le nomme devant chaque action
Passageune exécution de BOB, du lancement jusqu'au code de sortie
Règleune section d'un rules.bob, avec ses réglages Clé = valeur ; chaque section règle un processeur
rules.bobun fichier texte de règles, posé dans un dossier ; il vaut pour ce dossier et ceux du dessous, sauf règle plus proche
Packl'archive .pack que lit le jeu ; un mod en est un
<retail>un mot réservé des rules.bob, qui désigne un dossier de destination ; voir plus bas ce que nous en savons
Journalles fichiers .log de BOB, dans binaries, réécrits à chaque passage

Ouvrir BOB et lui donner du travail§

L'Assembly Kit s'installe par Steam (Bibliothèque → Outils). Sur une installation Steam, il est dans <Steam>/steamapps/common/Total War WARHAMMER III/assembly_kit/ ; BOB et ses journaux sont dans son dossier binaries. Le jeu, lui, lit les packs dans <Steam>/steamapps/common/Total War WARHAMMER III/data/.

BOB s'ouvre de trois façons : par le lanceur Steam de l'Assembly Kit (Exporter: BOB), par son exécutable bob.modder.x64.exe, ou depuis Terry (Process with BOB, Ctrl+P). Ouvert par Steam ou par son exécutable, BOB montre sa fenêtre et attend qu'on lui choisisse du travail (voir « La fenêtre de BOB », juste après). Ouvert par Terry, il travaille en arrière-plan, et ses messages s'affichent en bas à droite de Terry.

Trois portes vers BOBLanceur Steamde l'Assembly KitExporter: BOBqui passe-no_consoleSon exécutabledans l'Assembly Kitbinaries/bob.modder.x64.exeTerrydans son menu FileProcess with BOBou Ctrl+Plui passe le travailBOB : sa fenêtreBOB - Select Data Files To BuildUn nœudUne actionStartil attend qu'on lui choisisse du travailavant Start : Terry et le jeu fermésEn arrière-planMessages en bas àdroite de TerryUn nouveau BOB àchaque foisHors des commandes de ses lanceurs (-no_console ; celle deTerry) : -h, --help ou -help ouvrent « Illegal option format »,qui bloque BOB. Ne l'essayez pas non plus sur Terry ni sur Tweak.
BOB s'ouvre par le lanceur Steam de l'Assembly Kit (Exporter: BOB), par son exécutable ou depuis Terry. Les deux premières portes ouvrent sa fenêtre, où vous lui choisissez le travail ; Terry, lui, passe le travail à BOB, et chaque Process with BOB démarre un nouveau BOB.

Depuis Terry§

Comment vérifier que ça a marché. Suivez les messages jusqu'à la fin, puis lisez bob.log : voir « Les journaux de BOB », plus bas.

Depuis la fenêtre de BOB§

Cochez le nœud, choisissez l'action ou <All>, puis Start : le détail est dans « La fenêtre de BOB », juste après. Trois usages types :

TravailNœud et actionCe qu'il faut savoir
Exporter la basenœud database → <All>chez nous (20.09.2026, patch 8.1) : 3 788 actions en 109 secondes ; un dossier par table dans working_data/db/ (1 694), avec un fichier data chacun. Utile quand un outil veut la base au format du jeu : voir « Exporter la base du kit », plus bas
Les textesl'option Retail Packdécrite par la page Localisation du wiki tw-modding (écrite pour plusieurs jeux ; en 2019, elle signalait cette fonction désactivée dans le kit de Warhammer II) ; non vérifiée dans Warhammer III. Pour les textes d'un mod, la voie conseillée est RPFM (le guide RPFM)
Le startposnœud campaigns de la colonne Working Data → Campaign / Process start pos (<campagne>)cette action lance le jeu ; chez nous (20.09.2026, patch 8.1), elle a échoué (« Startpos file not found after running the game! ») ; à la même date, la génération échouait aussi pour une campagne de CA lancée par une autre voie. 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

Avant de lancer BOB depuis sa fenêtre, ou d'enregistrer un pack dans working_data, fermez Terry et le jeu : Terry ouvert verrouille working_data (les packs qu'on y pose, notamment). Process with BOB, lancé depuis Terry, n'est pas concerné. Cette règle vaut pour tout le guide.

Comment vérifier que ça a marché. Les actions sont vertes, bob.log finit par Exit code: 0, et les fichiers attendus sont apparus avec la date du passage.

La ligne de commande§

BOB n'a pas d'aide en ligne de commande ; on connaît deux commandes officielles, celles de ses lanceurs : -no_console (lanceur Steam) et celle que Terry lui passe. Le lanceur Steam du kit propose trois options :

Option du lanceur SteamProgramme lancé
Exporter: BOBbinaries/bob.modder.x64.exe -no_console
Battle Map Editor: Terrybinaries/tweak.modder.x64.exe /standalone TerrainMetadataEditor
Database Editor: Davedave/DaVE.retail.x64.exe, sans option

Terry, lui, lance BOB avec une commande plus longue (relevée le 21.09.2026, patch 8.1) :

BOB.modder.x64.exe /dont_stop_on_error /nosplashscreen /get_latest_rules -no_console /offline /configuration:_terry_auto /workspace: "/changelist:Terry (<chemin du projet>.terry)"

/configuration:_terry_auto désigne le fichier binaries/BOB/_terry_auto_configuration.xml, que Terry écrit : c'est lui qui dit à BOB quoi bâtir (processeurs, dossiers, sorties voulues). La ligne de commande ne sert donc pas qu'à ouvrir BOB : avec /configuration:, elle lui donne aussi son travail.

Pour un travail répétitif, préparez les rules.bob et les fichiers par script, puis lancez le passage d'un clic sur Start, ou depuis Terry.

La fenêtre de BOB§

Ouvert par le lanceur Steam (Exporter: BOB) ou par son exécutable, BOB affiche une fenêtre intitulée BOB - Select Data Files To Build. Elle montre Raw Data (les sources) et Working Data (ce qui est déjà bâti) ; un troisième arbre, Retail Data, montre le dossier retail du kit (on y voit assembly_kit et data).

Un clic droit sur un nœud ouvre un menu de trois entrées : View rules, View actions et Select files only. View actions ouvre une petite fenêtre « BOB » : les deux listes d'actions du nœud, décrites ci-dessous. Nous avons relevé cette fenêtre et ce menu à l'écran le 24.09.2026.

BOB - Select Data Files To BuildRaw DataWorking DataRetail Datadatabaseassembly_kitdataBOBProvider actionsMerge ActionsConsumer actionsMerge Actions<All>+ dépendancesCampaign / Build Queried Campaign TablesCampaign / Export XML (…)Campaign / Export XML (…)Startclic ailleurs sans action :décoché, sans aucun messageaprès Start, chaque actionpasse au vert, une fois faitepuis : bob.log123456789
  1. Le titreBOB - Select Data Files To Build : la fenêtre qu'affiche BOB ouvert par le lanceur Steam de l'Assembly Kit (Exporter: BOB) ou par son exécutable, bob.modder.x64.exe.
  2. Raw Datal'arbre des sources, celles de raw_data ; un nœud est un dossier ou un fichier.
  3. Working Datal'arbre de ce qui est déjà bâti, dans working_data.
  4. Retail Dataun troisième arbre, qui montre le dossier retail du kit (on y voit assembly_kit et data).
  5. La fenêtre des actionsune petite fenêtre « BOB », que l'on ouvre en cochant un nœud (ici database) ; un clic droit sur un nœud propose View rules, View actions et Select files only, et View actions l'ouvre aussi. Deux listes, Provider actions (vide pour database) et Consumer actions, chacune avec une case Merge Actions.
  6. <All>en tête de Consumer actions : toutes les actions ; BOB y ajoute de lui-même ce dont elles dépendent (le nœud Database Export). Une action seule peut ne rien produire : Build Queried Campaign Tables seule donne 0 fichier.
  7. Le piègecocher un nœud puis cliquer ailleurs sans choisir d'action : il se décoche, sans aucun message, et Start ne fera rien pour lui.
  8. Starten bas à droite ; chaque action passe au vert quand elle est faite. Export de la base, chez nous : 3 788 actions en 109 s.
  9. bob.logensuite, dans binaries : le nombre d'actions de la première ligne, une ligne STATUS par action (Finished quand elle est faite, Failed si elle a échoué), puis Exit code: 0.
Schéma : les arbres et la fenêtre des actions relevés à l'écran le 24.09.2026, disposition schématique. Pour exporter la base : cocher database, qui ouvre la fenêtre des actions (5), prendre <All> en tête de Consumer actions (6), Start (8), puis lire bob.log (9). Pour une carte de bataille, on n'ouvre pas cette fenêtre : Terry lance BOB lui-même (Process with BOB, Ctrl+P).
  1. Cochez un nœud. Ses actions s'affichent, en deux listes : Provider actions et Consumer actions, chacune avec une case Merge Actions. Pour le nœud database, la première est vide.
  2. Choisissez une action, ou <All>, en tête de Consumer actions, pour les prendre toutes. Avec <All>, BOB ajoute de lui-même ce dont elles dépendent (par exemple le nœud Database Export).
  3. Recommencez pour chaque nœud à traiter.
  4. Cliquez sur Start, en bas à droite. Chaque action passe au vert quand elle est faite.

Comment vérifier que ça a marché. Toutes les actions choisies sont vertes. Lisez ensuite bob.log : voir « Les journaux de BOB », plus bas.

Pourquoi tant de précautions ? Parce que BOB ne signale pas toujours ce qu'il n'a pas fait. Un passage peut se terminer sans erreur et sans avoir produit le fichier que vous attendiez. D'où la règle de ce guide : après chaque passage, on vérifie.

Ce que BOB produit§

Pour le terrain, une sortie de BOB reprend le chemin de sa source, sous working_data au lieu de raw_data. Une tile map de bataille rangée dans raw_data/terrain/battles/ma_carte/ sort donc dans working_data/terrain/battles/ma_carte/. C'est ce qui permet de retrouver ce qu'un passage a écrit.

Exemple : la carte de bataille d'exemple livrée avec le kit (assembly_kit_example_tile_map et sa tuile assembly_kit_example_tile) donne :

Où BOB écritPour le terrain : le même cheminraw_data/terrain/battles/ma_carte/un passage de BOBworking_data/terrain/battles/ma_carte/le même chemintile_map.bmdtile_list.binmap_info.xml…Trois exceptionsL'export de la baseun dossier par table, un fichier data dedansworking_data/db/<table>_tables/dataet aussi, dans raw_data, des tables start_pos_… et un .pack :raw_data/EmpireDesignData/campaigns/<campagne>/[Copy]→ <retail>/…chez nous :assembly_kit/retail/…[Pack]?→ <retail>/data/son pack ;non éprouvé dans Warhammer IIIBOB réécrit ses sorties à chaque passageUne retouche à la main dans working_data disparaît au passagesuivant : corrigez la source.Une sortie neuve porte la date du passage.
Pour le terrain, une sortie de BOB reprend le chemin de sa source, sous working_data au lieu de raw_data : c'est ainsi qu'on retrouve ce qu'un passage a écrit. Trois exceptions : l'export de la base, et les règles [Copy] et [Pack], qui écrivent sous <retail>.
Dossier de sortieFichiers
working_data/terrain/battles/<carte>/ : la tile maptile_map.bmd, tile_list.bin, lf_normal.dds, full_lf_logic_map.compressed_map, map_info.xml
working_data/terrain/tiles/battle/<jeu de tuiles>/<tuile>/ : la tuiletile_height_map.compressed_map, blend0.dds, bmd_data.bin, les listes d'herbe et d'arbres

Pour une campagne, les sorties de BOB vont dans working_data/terrain/campaigns/<carte>/ (relief, carte logique, tuiles, masques, global_map/). Le dossier working_data/campaign_maps/<carte>/ reçoit les fichiers de CAIME, camera_heightmap.png, que BOB ne sait pas faire (voir « BOB et une carte de campagne », plus bas), et la liste des arbres que BOB y écrit (action Campaign Trees : display/trees/trees.campaign_tree_list) : mettez-la dans votre pack, sinon la carte n'a pas d'arbres.

Trois exceptions à la règle du même chemin :

Deux conséquences pratiques :

Comment vérifier qu'une sortie est neuve. Regardez sa date de modification : ce doit être celle du passage. Un fichier plus ancien vient d'un passage précédent, et votre changement n'a pas été bâti.

Les journaux de BOB§

BOB écrit ses journaux dans le dossier binaries du kit, à côté de son exécutable. Ils ne gardent que le dernier passage : chaque passage efface le précédent. Pour comparer deux passages, copiez les journaux ailleurs avant le passage suivant.

JournalCe qu'on y lit
bob.logle journal principal. Sa première ligne annonce le nombre d'actions retenues (N action(s) were selected for execution.) ; viennent ensuite une ligne === Processeur / Action (…) (STATUS: …) === par action, les durées (All actions took … msecs), puis le code de sortie (Exit code: 0 sur nos passages réussis, Exit code: 1 quand une action a échoué ; les actions qui en dépendaient sont alors marquées DependencyFailed)
bob_warnings.logles avertissements, dont les « Failed to find tile » : à lire après chaque passage de terrain
bob_error.logles erreurs, dont le message d'une action qui a échoué (par exemple « prefab root … », voir « Les messages à connaître »)
bob_plugin_error.log« Couldn't create all processors… » à chaque passage lancé par Terry, sans effet sur le terrain
bob_startup_error.log, bob_db.logles autres journaux, que leur nom décrit

Lire un passage en trois minutes§

Lire un passage en trois minutesbob.logdans binaries/ : le dernier passage seulementN action(s) were selected for execution.1=== Terrain / Terry file (…) (STATUS: Finished) ===2Duration: … msec(s)=== Terrain / Tilemap (…) (STATUS: Finished) ===…All actions took … msecsExit code: 011La première ligne annonce N actions ; Exit code: 0 doitclore le journal (Exit code: 1 : une action a échoué).2Une ligne STATUS par action, Finished si elle est faite(FinishedWithWarnings ou Failed disent un souci) : il enfaut N.3bob_warnings.log : les Failed to find tile, à compter.4Au moindre doute : les autres journaux du dossier, dontbob_error.log.bob_warnings.log3Failed to find tile for 'points …', …Failed to find tile for 'points …', …Failed to find valid quadtree node …chaque Failed to find tile est un trou dans le terrain : visez 0quadtree : un objet écarté, son pivot est hors de la cartebob_plugin_error.log4Couldn't create all processors,check that BOB has been built.connu : il paraît à chaque passage lancé par Terry, sans effet sur leterrainExit code: 0 + N lignes STATUS: Finished+ 0 Failed to find tile = réussiCarte de campagne : Exit code: 0, mais 6 actions(le fichier Terry et 5 masques) au lieu d'unedouzaine : la limite du kit ; faites un témoin
Extraits schématiques. Après chaque passage, dans binaries : bob.log (N actions annoncées, une ligne STATUS: Finished par action faite, Exit code: 0), puis bob_warnings.log. Les journaux ne gardent que le dernier passage.
  1. Ouvrez bob.log. La première ligne dit combien d'actions ont été retenues ; la dernière doit dire Exit code: 0.
  2. Comptez les lignes STATUS: : il en faut une par action annoncée. Finished : faite. FinishedWithWarnings : faite, mais lisez bob_warnings.log. Failed : ratée ; le passage finit alors par Exit code: 1, et bob_error.log dit pourquoi. DependencyFailed : pas faite, parce qu'une action dont elle dépend a échoué ; cherchez la première Failed. Comparez aussi au nombre que vous attendiez : un passage incomplet se voit là, même sans erreur.
  3. Ouvrez bob_warnings.log et comptez les « Failed to find tile » : chacun est un trou dans le terrain (sauf sur la dernière rangée du terrain de bataille d'une campagne, hors de la grille et sans effet : 1 chez nous pour la Saison, 3 pour Expanded).
  4. Au moindre doute, ouvrez les autres journaux du même dossier.

Un Exit code: 0 ne suffit donc pas : comptez aussi les actions. Nous avons relevé les trois premiers statuts le 22.09.2026, au patch 8.1, et DependencyFailed le 03.10.2026, au patch 9.0.2.

Les messages à connaître§

Cinq messages reviennent souvent. La colonne « Où » dit dans quel journal les chercher :

MessageOùCe qu'il veut direQue faire
Failed to find tilebob_warnings.logAucune tuile de la base de tuiles ne correspond au motif de tile_map.png à cet endroit : une ancienne route trop fine, une pointe de côte d'un seul hex… Résultat : un trou dans le terrain.En campagne, corriger les couches dans CAIME, réexporter tile_map.png, refaire le passage et recompter (le guide Terry). Pour une carte de bataille, revoir sa tile map. Le but est zéro, sauf sur la dernière rangée du terrain de bataille d'une campagne, hors de la grille et sans effet.
Wrong size, expecting W×Hbob_error.log (et bob.log)Un raster .tif du projet n'a pas la taille déclarée dans le .terry : son action finit en Failed, les suivantes en DependencyFailed, et le passage en Exit code: 1 (03.10.2026, patch 9.0.2).Refaire le raster à la taille du tableau des rasters du guide Terry, ou corriger la déclaration, puis refaire le passage.
Failed to find valid quadtree nodebob_warnings.logUne entité (un objet posé, un plan d'eau…) a son pivot hors de la carte. BOB l'écarte : elle manque dans les fichiers compilés.Ramener le pivot dans la carte, dans Terry, puis faire un nouveau passage.
Couldn't create all processors, check that BOB has been built.bob_plugin_error.logUn processeur demandé manque au kit.Rien, si le reste du passage va au bout : nous le voyons à chaque passage lancé par Terry, sans effet sur le terrain.
prefab root … does not have a valid TargetPathbob_error.log (et bob.log)L'action Generate Tile Map BMD finit en Failed, sans tile_map.bmd : le dossier raw_data/art/prefabs/battle/, dont la règle [Prefab] porte la clé TargetPath, ne faisait pas partie du passage.Faire entrer ce dossier dans le passage. Chez nous (22.09.2026, patch 8.1), il manquait à la liste des dossiers (balise <directories>) d'un fichier de configuration de BOB écrit par nos soins ; l'y ajouter a suffi.

Pour une carte de campagne, un « Failed to find tile » signale un motif de l'export CAIME que BOB ne peut pas associer à une tuile. Corrigez les couches dans CAIME, puis réexportez ; ne retouchez pas tile_map.png à la main (seule exception : jusqu'à CAIME 1.0.1, l'image sort à l'envers et se retourne verticalement ; depuis la 1.1.0, elle sort nord en haut). Motifs connus sans tuile : une côte sur la rangée 0, la dernière rangée ou la dernière colonne de la grille ; un isthme d'un hex où deux falaises se croisent ; et les bouts de falaise (cliff_gen_ends) que CAIME pose autour de chaque plage : liés à la plage, ils laissent un trou côté falaise (la carte des Empires de CA n'en a que 36 pour 412 plages ; sur notre carte Saison Expanded, nous les repeignons en cliff_gen, un écart assumé). Le schéma vient du guide Terry.

Export CAIME : mer, côte, routestile_map.png : 1 hex = 2 × 2 pixelsLa mersea · 83, 141, 213en jaune : la côte(voir dessous)0plan d'eau à 0, pivot dans la carte ;fond sous 0 là où il y a de la merLa côte exportée par CAIMEsortie CAIME : côte par hexentierspointe de mer :« Failed to find tile »,un trousea_coast · 255, 255, 0cliff_gen · 253, 3, 1transition falaise-plage : cliff_gen_ends (84, 230, 84).Si BOB trouve un trou, corriger les couches dans CAIMELes routessortie CAIME : bloc 2 × 2par hexancienne retouche : des trousAprès chaque passage de BOB, comptez les « Failed to findtile » de bob_warnings.log : objectif 0.Exporter depuis CAIME, sans peinture ni retouche manuelle.
Pour une carte de campagne, exporter tile_map.png depuis CAIME, sans peinture ni retouche manuelle. La mer est déclarée par sa couleur, les côtes et routes par hex entiers ; le fond reste sous 0 là où il y a de la mer. Si BOB ne trouve pas de tuile, corriger les couches dans CAIME, puis réexporter.

Et l'absence de message en est un aussi : pour une carte de campagne que la base du jeu ne connaît pas, BOB ne lance que 6 actions au lieu d'une douzaine, sans rien dire. Voir « BOB et une carte de campagne », plus bas.

Pas à pas : trois travaux types§

Trois travaux typesCompiler une carte de batailledans Terry, sans ouvrir la fenêtre de BOBla tile mapPassage 1 : Ctrl+P,puis rechargez-labob.logÀ lire avant lepassage suivantla tuileMap Properties : végétationlegacy décochée ; passage 2 : Ctrl+Pbob.logÀ lire aussitôtVérifier après chaque passage : Exit code: 0, autant delignes STATUS: Finished que la première ligne annonced'actions ; 0 « Failed to find tile » dansbob_warnings.log.Exporter la base du kitd'abord : Terry et le jeu fermésdatabase → <All>Dans la fenêtrede BOBStartTout passeau vertworking_data/db/Un dossierpar tableVérifier : Exit code: 0 ; un dossier par table, avec sonfichier data, à la date du passage (1 694 chez nous).Bâtir un packdeux voiesRPFMLa voie éprouvéeourègle [Pack]?Non éprouvéedans Warhammer IIIVérifier : ouvrez-le dans RPFM ; terrain/battles/<carte>/et la tuile, rien d'autre (ni la carte d'exemple, niun .pack).
Trois travaux types, et pour chacun la façon de vérifier : une carte de bataille (Terry lance BOB), l'export de la base (dans la fenêtre de BOB) et le pack (RPFM, la voie éprouvée ; la règle [Pack] de BOB n'est pas éprouvée dans Warhammer III).

Compiler une carte de bataille§

La peinture, les zones et la création de la tile map sont dans le guide Terry. Voici la part de BOB.

  1. Enregistrez, puis ouvrez la tile map (le projet de raw_data/terrain/battles/<carte>/) et lancez File → Process with BOB. Rechargez-la ensuite pour vérifier.
  2. Rouvrez la tuile. Dans Map Properties, décochez la génération de végétation legacy, puis Process with BOB.
  3. Retenez l'ordre : la tile map passe toujours avant la tuile. Ensuite, quand vous retouchez la tuile, seule la tuile se réexporte.
  4. Mettez en pack avec RPFM, la voie éprouvée : working_data/terrain (sans la carte d'exemple du kit), une ligne dans battles_tables dont la specification vaut terrain/battles/<carte>/ (barre finale comprise), un texte et une image : voir le guide Terry.
  5. Posez le pack dans data/ du jeu avec une vignette carrée du même nom, activez-le dans le lanceur, et testez par Bataille personnalisée.

Comment vérifier que ça a marché. Après chaque passage, puisque les journaux ne gardent que le dernier :

Exporter la base du kit§

Pourquoi : vos tables éditées dans Dave sont des XML de raw_data/db ; l'export les écrit au format du jeu, un dossier par table dans working_data/db/. Cela sert quand un outil veut la base au format du jeu (chez nous, pour le startpos). Pour un mod, ce n'est pas ce qu'on empaquette : voir l'encadré ci-dessous.

  1. Fermez Terry et le jeu.
  2. Ouvrez BOB par le lanceur Steam (Exporter: BOB) ou par son exécutable (bob.modder.x64.exe, dans binaries).
  3. Cochez le nœud database et choisissez <All> : BOB ajoute de lui-même les dépendances, comme le nœud Database Export.
  4. Cliquez sur Start, et attendez que tout soit vert. Chez nous (20.09.2026, patch 8.1) : 3 788 actions en 109 secondes.

Comment vérifier que ça a marché. bob.log finit par Exit code: 0, et working_data/db/ contient un dossier par table, avec son fichier data, à la date du passage (1 694 chez nous, le 20.09.2026, patch 8.1). L'export écrit aussi, pour chaque campagne, des tables de départ (start_pos_…) et un .pack dans raw_data/EmpireDesignData/campaigns/<campagne>/ : ne soyez pas surpris de les y trouver.

Bâtir un pack§

Deux voies mènent au pack, et le schéma du début de ce guide les montre côte à côte :

Comment vérifier que ça a marché. Ouvrez le pack dans RPFM, qui montre ce qu'il contient. Il doit contenir vos fichiers sous le chemin que le jeu attend (pour une carte de bataille, terrain/battles/<carte>/, celui que cite battles_tables), et rien d'autre : ni la carte d'exemple du kit, ni un autre .pack. Vérifiez enfin qu'il est dans data/ du jeu.

Les fichiers rules.bob : les recettes de BOB§

BOB ne décide pas seul de ce qu'il fait d'un fichier. Il suit des règles, écrites dans des fichiers texte nommés rules.bob, posés dans les dossiers de raw_data et de working_data. Une règle dit, par exemple, où chercher les prefabs d'un terrain, ou dans quel pack ranger un dossier.

Pour une carte de bataille faite dans Terry, vous n'avez pas à en écrire : le tutoriel de tw-modding n'en fait écrire aucun, ceux du kit suffisent. Cette section sert à comprendre ce que fait BOB, et à écrire vos propres règles.

La syntaxe§

Comment BOB trouve la règle d'un fichier§

  1. BOB cherche un rules.bob dans le dossier du fichier qu'il traite, et regarde si une de ses règles vise ce fichier, filtres compris.
  2. Sinon, il remonte d'un dossier, et recommence.
  3. La première règle qui s'applique gagne. Arrivé en haut sans en trouver, il prend ses valeurs par défaut.

Une règle locale peut remplacer celle du dessus, ou seulement la compléter. Tout tient dans un signe :

ÉcritureEffet
[Nom]remplace entièrement la règle héritée : une clé que vous ne recopiez pas n'y est plus
[+Nom]garde la règle héritée et ne change que les clés citées

Le schéma ci-dessous suit trois fichiers de working_data : chacun remonte l'arborescence jusqu'au premier rules.bob qui s'applique, et c'est cette règle qui décide du pack où il part.

Chaque fichier remonte au premier rules.bobworking_data/rules.bob[Pack] <Files> = -*.packPackFile = <retail>/data/mod.packdb/land_units_tables/datamod.pack(le défaut de CA ; une table exportée ne se publie pas telle quelle)terrain/battles/ma_carte/rules.bob[Pack] PackFile = <retail>/data/ma_carte.packBasePath = /tile_map.bmdma_carte.packtiles/battle/<jeu de tuiles>/<tuile>/rules.bobla même règle, vers ma_carte.packblend0.ddsma_carte.pack[Pack] remplace la règle héritée ; [+Pack] ne changeque les clés qu'il cite.-*.pack exclut ; * vaut tout caractère sauf /, et netraverse donc pas les dossiers ; ... les traverse.
BOB cherche un rules.bob dans le dossier du fichier, puis remonte de dossier en dossier : la première règle qui s'applique gagne. Ici, une table part dans mod.pack ; la tile map et la tuile, qui portent la même règle, partent ensemble dans leur propre pack, comme la carte d'exemple du kit.

Comment vérifier qu'une règle s'applique. Après le passage, vérifiez que l'effet annoncé a eu lieu (par exemple, le pack où les fichiers sont partis). Sinon, une règle plus proche du fichier l'a peut-être emporté : cherchez-la en remontant ses dossiers.

Les rules.bob du kit, ligne à ligne§

Rien ne vaut des règles réelles. Les quatre premiers fichiers sont livrés par CA dans le kit ; le dernier est un modèle, calqué sur la carte d'exemple, pour la voie [Pack], non éprouvée dans Warhammer III. Chaque bloc se recopie tel quel ; les notes numérotées dessous l'expliquent ligne à ligne.

Premier fichier : working_data/rules.bob§

[Pack]
    <Files> = -*.pack
    PackFile = <retail>/data/mod.pack
    PackType = mod
  1. <Files> = -*.pack : tous les fichiers, sauf les packs ; le signe - exclut.
  2. PackFile : le pack à bâtir. Pour le mot <retail>, voir plus bas.
  3. PackType = mod : la seule valeur que montre la documentation de CA.
  4. Placée au sommet de working_data, cette règle vaut pour tout fichier qui ne trouve pas de [Pack] plus près de lui. CA la résume ainsi : tout, sauf les packs, part dans mod.pack.

Deuxième fichier : raw_data/terrain/battles/rules.bob§

[Terrain]
    PrefabRoot = art/prefabs/battle
    save_meta_data_map = false
    save_final_tile_map = true
  1. C'est une règle de traitement, pas de pack : elle dit où chercher les prefabs de bataille (PrefabRoot), et quelles cartes écrire (les deux clés save_…).
  2. PrefabRoot = art/prefabs/battle vaut pour une bataille. Pour un terrain de campagne, le projet de ChaosRobie écrit art\prefabs\campaign : c'est la valeur de ce projet ; suivez celui que vous reprenez.
  3. save_meta_data_map et save_final_tile_map : gardez-les tels que CA les donne.

Troisième fichier : raw_data/terrain/tiles/battle/rules.bob§

[Tile]
    <Files> = ...*.terry, ..._settings.xml
    TileDatabaseType = battle
    PrefabRoot = art/prefabs/battle
  1. <Files> : les projets .terry et les fichiers _settings.xml de tous les sous-dossiers, grâce aux trois points.
  2. TileDatabaseType = battle : le type de la base de tuiles, ici celle des batailles.
  3. PrefabRoot : le même dossier de prefabs que la règle [Terrain] du deuxième fichier.

Quatrième fichier : raw_data/art/prefabs/battle/rules.bob§

[Prefab]
    <Files> = ...*.terry
    TargetPath = prefabs
    RootFolder = true
  1. <Files> = ...*.terry : les prefabs sont des projets .terry, dans tous les sous-dossiers.
  2. TargetPath : c'est la clé que réclame le message « prefab root … does not have a valid TargetPath » (voir « Les messages à connaître »), quand ce dossier manque au passage.
  3. RootFolder = true : gardez-le tel que CA le donne.
  4. Pour des prefabs de campagne, le tutoriel Custom Campaign Settlement Skins fait poser la même règle dans raw_data/art/prefabs/campaign/rules.bob, avec TargetPath = prefabs/campaign.

Un modèle : un pack à part pour une carte de bataille§

À poser dans le dossier de la tile map, working_data/terrain/battles/ma_carte/, et dans celui de la tuile (voir l'encadré) :

[Pack]
    BasePath = /
    PackFile = <retail>/data/ma_carte.pack
    PackType = mod
  1. BasePath = / : selon la page Rules.bob de CA, on l'ajoute quand la règle est posée dans un sous-dossier, pour envoyer son contenu vers un autre pack. La carte d'exemple l'écrit ainsi.
  2. PackFile : le pack de la carte. Ce [Pack] est plus proche des fichiers de la tile map que celui du sommet : ils partent dans ma_carte.pack, et plus dans mod.pack.
  3. PackType = mod : comme dans le premier fichier.
  4. La compression (non essayée) : la documentation du kit (documentation/pack/pack/compression.txt) décrit deux clés à ajouter à un [Pack], Compressed = true et CompressionType = LZ4 (ou ZSTD). Elle la déconseille pour les sons et les vidéos, et invite à la prudence pour les modèles (LZ4 si elle est vraiment nécessaire). Nous ne l'avons pas essayée.

Ce dernier rules.bob, celui de _tile_database/TILES/, vise assembly_kit_example.pack : si votre tuile a aussi une entrée dans ce dossier, vérifiez dans RPFM le pack où elle est partie.

Une carte, deux dossiers, un packSans règle dans le dossier de la tuileLa tile mapterrain/battles/ma_carte/rules.bobLa tuileterrain/tiles/battle/<jeu de tuiles>/<tuile>/aucun rules.bobma_carte.packla tile map seulemod.packla tuile, parworking_data/rules.bobla carte est coupée en deuxLa même règle dans les deux dossiersLa tile mapterrain/battles/ma_carte/rules.bobLa tuileterrain/tiles/battle/<jeu de tuiles>/<tuile>/rules.bobma_carte.packla tile map et la tuiletoute la carte dans un seul packLa carte d'exemple du kit : 3 rules.bob, 1 packtile maptuile_tile_database/TILES/→assembly_kit_example.packDans _tile_database/TILES/, la tuile d'exemple a son entrée(test_tiles_assembly_kit_example_tile.bin et .xml), et la règlede ce dossier l'envoie dans assembly_kit_example.pack : si BOB yécrit l'entrée de votre tuile, vérifiez dans RPFM où elle estpartie.
La même règle [Pack] dans les deux dossiers de la carte, sinon la tuile part dans mod.pack.

Le mot <retail> : ce que nous savons, et ce que nous ne savons pas§

Les règles de pack écrivent PackFile = <retail>/data/…. On le lit volontiers comme « le dossier du jeu ». Ce n'est pas ce que nous avons observé :

Un pack bâti par BOB arriverait donc dans assembly_kit/retail/data/, et non dans le dossier data du jeu. Nous ne l'avons pas vérifié dans Warhammer III pour un pack : c'est une déduction, et la voie [Pack] elle-même n'y est pas éprouvée. Après un passage, cherchez le pack aux deux endroits (sa date de modification le trahit), et recopiez-le à la main dans data/ du jeu s'il n'y est pas.

Où est passé mon pack ??Voie non éprouvée dans Warhammer IIIdéduit d'une règle [Copy] et du guide de Rome II1Cherchez-le aux deux endroitssa date de modification le trahit?<Assembly Kit>/retail/data/sans doute ici : cheznous, <retail> a menédans le kit ; Rome II yrange son pack<jeu>/data/là où le jeu lit lespacks2Recopiez-le à la main, s'il est resté dans le kitOuvrez-le dans RPFMRPFM montre ce que le pack contient.terrain/battles/<carte>/ et la tuile, rien d'autre :ni la carte d'exemple, ni un .pack3Activez-le au lanceurpuis testez en jeu.4La voie éprouvée : faire le pack avec RPFM
Si vous essayez la règle [Pack] : trouver le pack, le recopier dans le dossier data du jeu, le vérifier dans RPFM.

BOB et une carte de campagne§

La documentation de CA prévient que le kit public ne prend en charge que la création de tuiles de bataille, et le kit de Warhammer III ne livre aucune donnée brute de terrain de campagne. La communauté a pourtant reconstitué un projet Terry de type campagne (ChaosRobie, pour Immortal Empires Expanded), et BOB a un module pour la campagne, bob_campaign. Le projet est décrit dans le guide Terry, la moitié logique de la carte dans le guide CAIME.

L'ordre des passages§

Le tutoriel de carte de campagne du wiki tw-modding donne cet ordre, pour une carte que la base du jeu connaît (pour une carte neuve, voir « La limite », plus bas). BOB cherche le résultat des premières étapes dans votre pack, et il faut le fermer et le rouvrir pour qu'il le voie : d'où les allers-retours. Le tutoriel ne dit pas où poser ce pack ; chez nous, BOB monte tous les packs de <jeu>\data (mods compris) et ceux de assembly_kit\working_data. Un BOB en cours tient ouverts les packs de <jeu>\data : les remplacer échoue (WinError 32) tant qu'il n'a pas fini. Attention : ce pack lui donne des fichiers ; pour savoir si la carte existe, BOB ne consulte que la base des packs de CA (voir « La limite »).

  1. Le relief d'abord : les étapes suivantes en dépendent et le lisent dans votre pack. Mettez-le dans votre pack, puis fermez et rouvrez BOB.
  2. La tile map : de nouveau dans le pack, puis fermez et rouvrez BOB.
  3. La global tile map (routes et falaises), que BOB tire de la tile map de votre pack.
  4. global_props.bin, les objets posés : à refaire chaque fois qu'une région est ajoutée ou retirée (BOB lit alors le map.hex de CAIME, qui doit être à jour avec la base) ; jusqu'à dix minutes, selon le tutoriel. Le projet de ChaosRobie range d'ailleurs ses objets par région, dans un calque .layer chacune.

« Fermer et rouvrir BOB » vaut pour sa fenêtre. Depuis Terry, rien à faire : chaque Process with BOB démarre un nouveau BOB.

Campagne : l'ordre des passagespour une carte que la base du jeu connaîtCarte inconnue de la base du jeu (celle des packs de CA) : BOB nelance que 6 actions au lieu d'une douzaine, sans message. Untémoin, puis la communauté.Le reliefles étapes suivantes le lisent dans votre packfull_height_map.ddsfull_logic_map.compressed_map1Le relief dans votre pack, puis fermer et rouvrir BOBLa tile maptile_list.bintile_mask.ddspatch_mask.dds2La tile map dans votre pack, puis fermer et rouvrir BOBLa global tile maproutes et falaises, tirées de la tile map de votre packglobal_map/tile_list.bin3Les objets posésBOB lit le map.hex de CAIME, à jour avec la base ; àrefaire à chaque région ajoutée ou retirée ; jusqu'àdix minutes, selon le tutorielglobal_props.bin4Generate Camera Height Map : chez nous, cette action faitplanter BOB (le tutoriel dit que Terry plante en laproduisant) ; camera_heightmap.png se fabrique à part (letutoriel : une approximation tirée du relief, mise àl'échelle, avec le bloc tEXt du PNG réglé).
L'ordre du tutoriel de carte de campagne de tw-modding. BOB cherche dans votre pack le résultat des premières étapes : après le relief, puis après la tile map, on les met dans le pack, puis l'on ferme et rouvre la fenêtre de BOB ; depuis Terry, chaque Process with BOB démarre un nouveau BOB.

Comment vérifier que ça a marché. Dans bob.log, comparez le nombre d'actions de la première ligne aux lignes STATUS:. Chez nous, un passage complet de campagne qui aboutit compte 12 actions : Terry file, Color Overlay, Color Overlay (Sea), Snow Mask, Campaign Shroud Heights, Patch Visibility Mask, Tilemap, Campaign Global Blendmap, Corruption Mask, Global Tilemap, Campaign Heightmap et Campaign Trees (bob.log du 25.09.2026, patch 9.0 ; même compte le 04.10.2026, patch 9.0.2, code 0). Le premier essai, le 21.09.2026, en retenait 15, dont Initialise warscape et Generate Camera Height Map, qui fait planter BOB (voir ci-dessous). Pour une carte que la base du jeu ne connaît pas, BOB n'en lance que 6 (voir « La limite »). Puis comptez les « Failed to find tile » de bob_warnings.log, comme pour une bataille.

Ce que les actions lourdes (Tilemap, Global Tilemap, Campaign Global Blendmap, Campaign Shroud Heights, Campaign Heightmap) ont écrit dans working_data/terrain/campaigns/<carte>/ lors de notre premier passage complet (21.09.2026, patch 8.1) : full_height_map.dds (le relief compilé), full_logic_map.compressed_map (la carte logique), tile_map.tiles, tile_list.bin, tile_mask.dds, patch_mask.dds, shroud_heights.dds, et dans global_map/ : global_blend.dds, texture_arrays.xml et tile_list.bin ; en plus des cinq masques. Campaign Trees écrit la liste des arbres dans working_data/campaign_maps/<carte>/display/trees/. Un fichier absent ou plus ancien que le passage : l'action qui l'écrit n'a pas tourné.

Trois choses à savoir avant de compiler§

Une campagne, deux terrainsLa zone jouable de campagnecampaign_map_playable_areasterrain_folder = <dossier>Le terrain de campagneterrain/campaigns/<carte>/le relief, les tuiles et lesobjets de la carteLe terrain de batailleterrain/battles/<dossier>/une tile map de bataille ; cellede CA porte aussi des lieux debataille et des cartes decaptageSans ce terrain de bataille : plantage à la première batailleterrestre, même entre deux IA, donc souvent dès la première finde tour.
Une carte de campagne a deux terrains : le sien, et un terrain de bataille, que nomme la colonne terrain_folder de sa zone jouable de campagne.

Ce que BOB ne fait pas, ou réécrit, pour une campagne§

La limite : une carte que la base du jeu ne connaît pas§

Le 21.09.2026 (patch 8.1), notre premier passage complet de campagne a duré environ 25 minutes, surtout pour compresser le relief, avant de planter sur Generate Camera Height Map ; le soir même, un passage complet, relief compris, prenait moins d'une minute. Nos passages suivants ont duré de 15 secondes à 2 minutes (All actions took de bob.log), 42 secondes le 25.09.2026 au patch 9.0, pour 12 actions. Pour une carte que la base du jeu (celle des packs de CA) ne connaît pas, BOB n'en lance que 6, sans message ; l'ajouter à la base du kit ou à un pack de mod n'y change rien. Nous ne connaissons pas de voie officielle pour lever cette limite : faites un témoin, puis demandez à la communauté.

Les 6 actions sont Terry file, qui écrit les objets posés (global_props.bin, global_props_sound.bin), et cinq masques : ni relief, ni tuiles, ni textures, ni carte logique, ni brouillard (chez nous, les objets seuls prennent de 11 à 24 secondes, pas dix minutes). Et aucun message ne le signale : ni erreur, ni avertissement.

Six actions seulement ?Combien d'actionsannonce bob.log ?plus de 6Pas la limite12 chez nous pour unpassage complet ; puiscomptez lesFailed to find tile debob_warnings.log6Faites un témoinun projet connu pourbon, copié sous unautre nom, puis passédans BOBEt le témoin ?plus de 6Votre projetest en cause :cherchez dans vosfichiers6 aussiLimite du kitvotre projet n'est pasen cause : demandez àla communauténe forcez pas l'outilLes 6 actions d'une carte inconnuele fichier Terry et cinq masques ; ni relief, nitextures, ni carte logique, ni brouillard ; et aucunmessage.
Six actions au lieu d'une douzaine, sans message : un témoin dit si c'est votre projet ou la limite du kit.

Le témoin, avant de chercher dans vos fichiers : prenez un projet connu pour bon, copiez-le sous un autre nom, et faites-en un passage. S'il n'obtient lui aussi que 6 actions, votre projet n'est pas en cause.

Si vous butez sur cette limite, parlez-en à la communauté (le Discord de l'équipe CAIME, le wiki tw-modding).

Les pièges de BOB§

Les pièges, au fil d'un passageEn préparant[Terrain] local sans PrefabRootrecopiez-le, ou [+Terrain]Le joker * s'arrête aux dossierscommencez le filtre par ...La tuile sans la règle [Pack]la même règle dans les deux dossiersUne table exportée, entièrevos lignes seules, avec RPFMUne retouche à la main dans working_datacorrigez la sourceUne mise à jour du jeurestaurez raw_data/db, puis un passage témoin1En lançant BOB-h, --help, -help : « Illegal option format »aucune option devinéemod <pack>; dans bob_project.script.txtretirez la ligne avant de lancer BOBTerry ou le jeu ouvertsfermez-les avant StartUn nœud coché, puis un clic ailleurschoisissez une actionUne action seuleprenez <All>Sa fenêtre gardée ouverte (campagne)fermez et rouvrez BOBUne fenêtre introuvableAlt+Tab, puis Windows + flèche du haut2En vérifiantDes journaux écraséslisez-les après chaque passageExit code: 0 seulcomptez les STATUS : Failed, FinishedWithWarnings6 actions seulement, sans messagecarte inconnue : un témoin<retail> n'est pas forcément le jeucherchez aussi dans le kitUn pack bâti par BOBouvrez-le dans RPFM3
Dix-huit pièges, rangés selon le moment où ils mordent : en préparant, en lançant BOB, en vérifiant. Pour chacun, le piège, puis sa parade.

Pour une IA qui lit cette page§

Si vous êtes une IA qui aide quelqu'un à se servir de BOB, voici l'essentiel, en faits vérifiés. Ils ont été relevés sur le patch 8.1 du jeu (septembre 2026), puis relus pour la mise à jour 9.0, qui a remplacé BOB (son exécutable et tous ses modules) et réécrit raw_data\db ; la 9.0.2 les a de nouveau remplacés, et un passage de terrain y a été revérifié le 04.10.2026 (12 actions, code 0) : revérifiez-les après une mise à jour.

Sources et liens§

Questions fréquentes

Qu'est-ce que BOB, dans l'Assembly Kit de Total War: Warhammer III ?

Le bâtisseur du kit : il transforme les sources de raw_data (tables de la base, projets de terrain de Terry) en fichiers du jeu dans working_data, et sait les réunir en packs. Il s'ouvre par le lanceur Steam de l'Assembly Kit (Exporter: BOB), par son exécutable bob.modder.x64.exe, ou depuis Terry (File → Process with BOB, Ctrl+P), qui lui passe le travail.

Faut-il ouvrir BOB pour une carte de bataille ?

Non. Terry lance BOB lui-même (File → Process with BOB, Ctrl+P), sur la tile map puis sur la tuile, et RPFM fait le pack. La fenêtre de BOB sert surtout à exporter la base du kit.

Où sont les journaux de BOB ?

Dans le dossier binaries de l'Assembly Kit : bob.log, bob_warnings.log, bob_error.log, bob_plugin_error.log, bob_startup_error.log et bob_db.log. Ils ne gardent que le dernier passage.

Comment savoir si un passage de BOB a réussi ?

La première ligne de bob.log annonce le nombre d'actions retenues ; il doit y avoir autant de lignes STATUS: Finished, et le journal doit finir par Exit code: 0. Une ligne STATUS: Failed et un Exit code: 1 disent qu'une action a échoué (bob_error.log dit pourquoi), et les actions qui en dépendaient sont alors en DependencyFailed ; FinishedWithWarnings renvoie à bob_warnings.log. Ce dernier ne doit compter aucun Failed to find tile (hors de la dernière rangée du terrain de bataille d'une campagne), et les fichiers de sortie doivent porter la date du passage. Un pack se vérifie dans RPFM.

J'ai coché un dossier et BOB n'a rien fait : pourquoi ?

Un nœud ne reste coché que si une de ses actions l'est : cocher puis cliquer ailleurs annule la sélection sans message. Et une action seule peut ne rien produire ; choisissez <All>, qui ajoute les dépendances.

BOB s'est lancé mais je ne vois rien : que faire ?

Lancé depuis Terry, BOB travaille en arrière-plan : ses messages s'affichent en bas à droite de Terry, et bob.log dit ce qu'il a fait. Ouvert par Steam ou par son exécutable, sa fenêtre s'est déjà ouverte minuscule, en bas de l'écran : sélectionnez-la par Alt+Tab, puis agrandissez-la avec Windows + flèche du haut. Si un script l'a lancé avec une option devinée, une boîte « Illegal option format » le bloque peut-être.

Quelles options de ligne de commande BOB accepte-t-il ?

BOB n'a pas d'aide en ligne de commande ; on connaît deux commandes officielles, celles de ses lanceurs : -no_console (lanceur Steam, Exporter: BOB) et celle que Terry lui passe, /dont_stop_on_error /nosplashscreen /get_latest_rules -no_console /offline /configuration:_terry_auto /workspace: "/changelist:Terry (<projet>.terry)", où /configuration: désigne le fichier binaries/BOB/_terry_auto_configuration.xml qui dit quoi bâtir. -h, --help et -help ouvrent une boîte « Illegal option format » qui le bloque. N'essayez pas d'options devinées, ni sur BOB, ni sur Terry, ni sur Tweak.

Où BOB dépose-t-il le pack qu'il bâtit ?

La règle [Pack] l'écrit dans <retail>/data/. Chez nous, <retail> a désigné un dossier retail à l'intérieur du kit (assembly_kit/retail/), comme dans le guide du kit de Rome II ; ce n'est pas confirmé pour un pack dans Warhammer III, où cette voie n'est pas éprouvée. Cherchez-le là, puis recopiez-le dans data/ du jeu. La voie éprouvée reste RPFM.

Mon pack ne contient que la tile map : pourquoi ?

Une carte de bataille occupe deux dossiers de working_data : la tile map et la tuile (terrain/tiles/battle/<jeu de tuiles>/<tuile>/). Si seule la tile map porte votre règle [Pack], la tuile remonte jusqu'au rules.bob du sommet et part dans mod.pack. Posez la même règle dans le dossier de la tuile, ou faites le pack avec RPFM.

Que veut dire « Failed to find tile » ?

Qu'aucune tuile de la base de tuiles ne correspond au motif de tile_map.png à cet endroit. Chaque occurrence de bob_warnings.log est un trou dans le terrain. En campagne, corrigez les couches CAIME et réexportez tile_map.png, sans retouche manuelle ; puis faites un nouveau passage, jusqu'à zéro.

Pourquoi BOB ne compile-t-il pas tout le terrain de ma carte de campagne neuve ?

Pour une carte que la base du jeu (celle des packs de CA) ne connaît pas, BOB ne lance que 6 actions au lieu d'une douzaine, sans message ; l'ajouter à la base du kit ou à un pack de mod n'y change rien. Nous ne connaissons pas de voie officielle pour lever cette limite : faites un témoin (un projet connu pour bon, copié sous un autre nom), puis demandez à la communauté. Nos cartes neuves ont eu leurs 12 actions par BOB lancé sous débogueur, une méthode à nous, hors des voies officielles, décrite dans « La limite ».

Faut-il fermer Terry avant de lancer BOB ?

Avant de lancer BOB depuis sa fenêtre, ou d'enregistrer un pack dans working_data, fermez Terry et le jeu : Terry ouvert verrouille working_data. Process with BOB, lancé depuis Terry, n'est pas concerné.

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.

↑ Sommaire