Atlas de Bretonnie

Atelier des moddeurs · guide · 36 min de lecture

Les outils du moddeur de campagne : vue d'ensemble, startpos, plantages et essais

Par où commencer quand on veut modder une carte de campagne de Total War: Warhammer III ? Cette page est le sommaire : chaque outil, à quoi il sert et son guide ; les mots du métier ; puis ce qui ne dépend d'aucun outil en particulier : la position de départ, les plantages, les parties d'essai automatiques. Écrit après quatre jours à porter une carte complète de Warhammer I dans Warhammer III.

Relu le 25 septembre 2026, mise à jour 9.0. Écrit contre ses sources, CAIME 1.0.1, RPFM 5.0.6, l'Assembly Kit et le jeu 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.

La boîte à outils en un coup d'œil§

Une campagne passe par huit familles d'outils. Aucun ne fait tout, chacun a son domaine, et presque tous ont un piège. Les quatre premiers ont leur propre guide.

Les mots du métier§

MotCe qu'il veut dire
Packl'archive d'un mod (.pack), posée dans le dossier data du jeu ; pour jouer, on la coche dans le lanceur
Table, cléun tableau de la base du jeu ; chaque ligne a une clé unique, et un mod y ajoute des fragments (des morceaux de table)
.locles textes affichés : une clé pour chaque phrase
Startpos, ESFla sauvegarde du tour 0 d'une campagne (startpos.esf), au format binaire de Total War
Pack de générationun pack chargé le seul jour de la génération du startpos : il sert au jeu les tables start_pos_*
raw_data / working_datace que les outils de l'Assembly Kit lisent / ce qu'ils produisent
Zone jouable de campagnela ligne de campaign_map_playable_areas qui décrit la carte d'une campagne
Témoinun cas connu pour bon, rejoué à l'identique à côté du sien
Vidage (.mdmp)la photo de la mémoire du jeu à l'instant du plantage
Pointeur nulune lecture à l'adresse 0 (ou tout près) : souvent, pas toujours, le jeu a cherché une donnée et ne l'a pas trouvée
%APPDATA%le dossier des réglages de votre compte Windows (à taper dans l'Explorateur)

Les mots propres à la carte (hex, couche, swatch, lookup…) sont dans le guide CAIME.

Qui fait quoi, de la base au jeu§

Toute la chaîne d'une carte neuve, avec l'outil de chaque étape et les fichiers qu'elle produit :

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

L'Assembly Kit en bref§

L'Assembly Kit est le kit officiel de Creative Assembly (Steam → Bibliothèque → Outils). Trois dossiers : binaries (ses programmes), raw_data (ce que les outils lisent : tables en XML, terrain, cartes) et working_data (ce qu'ils produisent). Sauvegardez avant d'écrire dans raw_data\db : c'est la base que lisent CAIME et BOB.

Où vit chaque fichierLe jeu<jeu>\Warhammer3.exelancé directement pour le startposdata\les packs : ceux du jeu, les vôtresmon_mod.packvotre modcampaigns\<campagne>\startpos.esfen vraccampaign_maps\<carte>\hlp_data.esf, spd_data.esf, en vrac (chez nous)le pack passe devant ces copies en vrac, startpos.esfcompris : remises dans le pack, puis retiréesscript_log_JJMMAA_HHMM.txtle journal des scripts, s'il est activéL'Assembly Kit<Assembly Kit>\chez Steam : <jeu>\assembly_kit\binaries\ses programmesbob.modder.x64.exeBOBtweak.modder.x64.exeTweak, et Terry, l'un de ses modesbob*.logles journaux de BOBdave\DaVE.retail.x64.exeDaveraw_data\ce que les outils lisentsauvegardez avant d'écrire dans db\EmpireDesignData\campaign_maps\<carte>\map.hex : votre projet, la seule place où Map Data travailleworking_data\ce qu'ils produisentverrouillé tant que Terry est ouvertcampaign_maps\<carte>\ce que Process écrit : map_data.esf, pathfinding.ppd…Les réglages et journaux du jeu%APPDATA%\The Creative Assembly\Warhammer3\scripts\user.script.txtlu au lancementaprès une génération, remettez-le comme avantcrash_report\bad_mods_report.txtles données refusées*.mdmples vidages de plantagelogs\mp_log.txtoù en était le chargementCAIMEses réglages, et l'installation officielle%APPDATA%\CampaignMapToolkit\Caime\preferences.jsonses réglages%LOCALAPPDATA%\CampaignMapToolkit\Projects\le brouillon d'un projet neuf (Ctrl+N)Map Data : refusé ici ; enregistrez le projet sousraw_data (plus haut)Tools\Release\MapDataBuilder.x64.exel'outil de Map Data : absent de l'installeur v1.0.0 ; selonla version, à vérifier
Quatre tiroirs : le dossier du jeu, l'Assembly Kit, les réglages et journaux du jeu, et CAIME. En or, votre mod ; en rouge, le piège de l'endroit.

RPFM et les packs en bref§

Un mod de Total War est un fichier .pack : une archive de tables, de textes (.loc), de scripts Lua, d'images et de modèles. RPFM ouvre ceux du jeu en lecture et fabrique les vôtres ; depuis la version 5, son serveur MCP permet à une IA de le piloter. Tout est dans le guide RPFM, avec trois procédures complètes : ajouter une unité, une faction, un seigneur légendaire.

Anatomie d'un packatlas_chevaliers.packvotre mod : une archive, posée dans le dossier data du jeudb/land_units_tables/ne jamais le renommer ni le déplacer (RPFM)atlas_land_unitsle vôtre, à votre préfixe ; @ ou ! devant : seulement pourmodifier une ligne du jeudata__le nom de la table du jeu : jamais dans votre packtext/db/atlas.locune clé par phrase ; vaut pour toutes les languesscript/campaign/mod/atlas_script.luachargé tout seul par le jeuui/units/icons/<carte>.pngla carte d'unité : 60 × 130ui/flags/<faction>/les drapeauxui/portraits/portholes/portrait_settings*.binles réglages des portraits, par art setvariantmeshes/variantmeshdefinitions/*.variantmeshdefinitionun modèle neufcampaigns/<campagne>/startpos.esfproduit par le jeu ; un par campagnecampaign_maps/<carte>/hlp_data.esf · spd_data.esfproduits par le jeu, pour une carte neuvesettings.rpfm_reserved · notes.rpfm_reservedles réglages et notes de RPFM, ignorés par le jeuTables et .loc : fusionnés par clé.Autres fichiers : même chemin, un seul gagne.
Un pack range chaque fichier à son chemin. Les fragments d'une même table (un dossier _tables), comme les .loc, se fusionnent par clé ; pour tout autre fichier, deux fichiers au même chemin ne se chargent pas tous les deux : un seul gagne. En or, ce que le jeu produit ; en gris, ce que seul RPFM lit.

Le terrain d'une carte de campagne en bref§

Ni le kit de Warhammer III ni celui de Warhammer I ne livrent de données brutes de terrain de campagne. Terry sait pourtant ouvrir un projet de type campagne : ChaosRobie l'a prouvé. Pour Immortal Empires Expanded, un mod qu'il a fait avec l'équipe de CAIME, il a reconstitué la carte des Empires Immortels en projet Terry, et il a partagé ce projet avec la communauté. Le dossier du projet, la taille de ses rasters, ses conventions et ses limites sont dans le guide Terry ; l'ordre des passages de BOB dans le guide 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 sur 15, sans message. Un témoin, puis lacommunauté.Le reliefles étapes suivantes le lisent dans votre packfull_height_map.ddsfull_logic_map.compressed_map1Le relief dans votre pack, le pack dans le dossier data du jeu,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 : cette action fait planter BOB ;camera_heightmap.png se fabrique à part (le tutoriel : uneapproximation tirée du relief, mise à l'échelle).
L'ordre du tutoriel de carte de campagne de tw-modding. BOB lit les packs du dossier data du jeu : après le relief, puis après la tile map, le pack y va, puis l'on ferme et rouvre BOB ; depuis Terry, chaque Process with BOB démarre un nouveau BOB.

Un passage complet sur un terrain de campagne compte 15 actions (chez nous, environ une minute une fois le relief compressé, 25 minutes la première fois). 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é. Le témoin : un projet connu pour bon, copié sous un autre nom ; s'il s'arrête aussi à 6 actions, vos fichiers ne sont pas en cause.

La position de départ (startpos)§

Le startpos (startpos.esf) est la sauvegarde du tour 0 : factions, régions, personnages, armées, diplomatie. Chaque campagne n'a qu'un fichier de départ, et un mod ne peut pas le compléter : il le remplace en entier (« there can be only one startpos », dit le wiki du modding). Deux mods qui touchent au startpos d'une même campagne ne se combinent donc pas.

On écrit les tables start_pos_* dans l'Assembly Kit (Dave), mais le jeu ne lit pas ses XML. Pour la génération, on les lui sert dans un pack à part, chargé ce jour-là seulement ; elles n'entrent jamais dans le pack que l'on joue. Seuls les fichiers générés y vont.

C'est le jeu lui-même qui fabrique le startpos, dans un mode spécial piloté par le fichier %APPDATA%\The Creative Assembly\Warhammer3\scripts\user.script.txt. Trois voies y mènent : 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é. RPFM (clic droit sur la racine du pack → Build Startpos) écrit lui-même le user.script.txt de la génération, mais n'y met qu'une ligne mod : celle du pack ouvert. Notre génération lit deux packs (le mod et celui des tables de départ) : nous écrivons donc le script à la main. Une ligne add_working_directory, que nous avions essayée, faisait sortir le jeu en neuf secondes sans rien produire.

Le générer§

  1. Les tables de départ

    Les tables start_pos_*, au format du jeu, dans un pack de génération ; à côté, le pack du mod, à jour.

    piège : le jeu ne lit pas les XML du kit

  2. Le script du jeu

    user.script.txt charge les packs et demande la génération, puis la fermeture du jeu.

    piège : à remettre comme avant, ensuite

  3. Le jeu, en mode spécial

    Il crée le monde de la campagne, l'enregistre, puis se referme. Steam doit tourner.

    piège : refermé ne veut pas dire réussi : vérifiez la date du fichier

  4. Le tour 0

    Le startpos, et, pour une carte neuve, les données de cheminement de l'IA, écrits en vrac dans data.

    startpos.esf, hlp_data.esf, spd_data.esf

  5. Dans le pack

    Les trois fichiers rejoignent le pack du mod, qu'on reconstruit.

    piège : le pack passe devant les fichiers en vrac

L'ordre compte : le pack du mod d'abord, puis la génération, puis le pack reconstruit. Pas à pas, comme nous le faisons :

  1. Le pack du mod, construit et posé dans le dossier data du jeu, à jour (scripts compris) : la génération lit ses tables (campaigns, la carte…) et fait tourner ses scripts.
  2. Le pack de génération, posé lui aussi dans data : il contient les tables start_pos_* (voir « Le pack de génération », plus bas).
  3. Le script : gardez une copie de user.script.txt s'il existe, puis écrivez-y les lignes ci-dessous : une ligne mod par pack, la génération, la fermeture.
  4. La génération : Steam ouvert et le jeu fermé, lancez directement l'exécutable du jeu (Warhammer3.exe ; chez nous, un fichier steam_appid.txt était posé à côté, comme le fait RPFM), puis attendez qu'il se referme seul, sans toucher à sa fenêtre.
  5. Les fichiers produits : le jeu écrit <jeu>\data\campaigns\<campagne>\startpos.esf ; avec process_campaign_ai_map_data, chez nous, hlp_data.esf et spd_data.esf dans <jeu>\data\campaign_maps\<carte>\. Vérifiez leur date et leur heure.
  6. Le pack reconstruit : copiez ces fichiers dans les sources du mod, reconstruisez le pack, puis retirez les copies en vrac de data : le pack passe devant elles.
  7. Le ménage : remettez user.script.txt comme avant ; laissé tel quel, quit_after_campaign_processing; referme le jeu à chaque lancement.
mod mon_mod.pack;
mod mes_tables_de_depart.pack;
process_campaign_startpos ma_campagne;
process_campaign_ai_map_data;
quit_after_campaign_processing;
Le startpos : trois endroits,un aller-retourLe script%APPDATA%\The Creative Assembly\Warhammer3\scripts\user.script.txt1écrit à la main : une ligne mod par pack, puis les trois commandes(le code ci-dessus)gardez-en une copie avant ; remettez-le comme avant après,sinon le jeu se referme à chaque lancementlu au lancementLe jeu<jeu>\Warhammer3.exe2lancé directement, Steam ouvert : il charge les deux packs,génère le tour 0, puis se referme seuldata\mon_mod.pack4le mod : campaigns, la carte, les scripts ; au retour,les trois fichiers copiés dans ses sources, puis lepack reconstruitmes_tables_de_depart.packles tables start_pos_* seules ; jamais dans le packjouécampaigns\<campagne>\startpos.esf3campaign_maps\<carte>\chez nous, le jeu les a écrits icihlp_data.esf · spd_data.esfAvec process_campaign_ai_map_data (carte neuve). Duréetrès variable : 16 s chez nous (400 × 440 hex) ; letutoriel de carte de campagne de tw-modding comptemoins d'une minute pour spd, environ cinq minutes pourhlp sur une carte moyenne et bien plus d'une heure surune grande ; RPFM annonce 10 à 30 minutes.écrits en vrac : une fois remis dans le pack,retirez-les de data, le pack passe devant euxContrôlerdate et heure des trois fichiers : celles de lagénération.bad_mods_report.txt sans reproche, dans :%APPDATA%\The Creative Assembly\Warhammer3\crash_report\campagne scriptée : une partie neuve a son introductionet ses missions (compteur de sauvegarde à 1)
Trois endroits : le script dans %APPDATA%, le jeu et ses deux packs dans <jeu>\, les fichiers produits en vrac dans data. Ils retournent dans le pack du mod, qu'on reconstruit ; puis les copies en vrac s'en vont.

Le pack de génération§

C'est un pack de mod ordinaire, créé avec RPFM, qui ne sert qu'à la génération. Il contient les tables start_pos_* au format du jeu : des tables de pack, pas les XML du kit. Chez nous, la ligne campaigns de la campagne et les autres tables que lit la génération restent dans le pack du mod, chargé en même temps ; avec Build Startpos de RPFM, qui ne charge qu'un pack, tout doit être dans celui-là.

Ce qu'un startpos exige : les plantages que nous avons vécus§

Quand ça casse,qu'est-ce qui manque ?Pendant la générationLe script_log s'arrête juste après « Loading Mods », sansvidage.→ start_pos_regions : rebel_faction_name etlong_description vides, pas de « PLACEHOLDER ».La génération plante.→ Un map_data.esf en variante 0xABCA (pas0xABCB), comme ceux de CA.Au chargement de la campagnePlantage dès le début du chargement.→ Un emplacement primary par colonie(start_pos_region_slot_templates).Plantage au chargement.→ Pour chaque faction, un groupe d'IA qui contient unepersonnalité.Plantage au réglage du joueur (carte neuve).→ hlp_data.esf et spd_data.esf dans le pack.À l'écran de sélectionAucun seigneur à choisir.→ Les lignes destart_pos_starting_general_options.Au premier tourUn personnage dans le coin de la carte, en case (1, 1).→ Son lien dansstart_pos_character_to_settlements(personnage placé en (0, 0)).Ni introduction ni missions.→ Un startpos généré APRÈS les scripts (compteur desauvegarde à 1).D'abord : bad_mods_report.txt nomme la ligne refusée, uneà la fois, dans :%APPDATA%\The Creative Assembly\Warhammer3\crash_report\
Le moment où ça casse dit où chercher : chaque symptôme vécu sur notre chantier, et la ligne ou le fichier qui manquait.

Quand le jeu plante : lire les indices§

Cinq questions, dans l'ordre ; chaque « oui » dit quel fichier ouvrir :

Quand le jeu plante1Le jeu se ferme-t-il en moins de 10 s ?oui →Steam est-il lancé ? user.script.txt est-il remiscomme avant ?non2Un bad_mods_report.txt récent ?oui →la table et la ligne refusées, une à la fois.%APPDATA%\The Creative Assembly\Warhammer3\crash_report\bad_mods_report.txtnon3mp_log.txt s'arrête-t-il avant la campagne ?oui →sa dernière ligne dit l'étape atteinte : base lue,somme de contrôle, environnement de campagne.%APPDATA%\The Creative Assembly\Warhammer3\logs\mp_log.txtnon4Une erreur dans le script_log, ou un arrêt ?oui →le script fautif et sa ligne. Génération arrêtéejuste après « Loading Mods » : un texte dans vostables de départ (PLACEHOLDER).<jeu>\script_log_JJMMAA_HHMM.txts'il est activé : un fichier script/enable_console_logging nonvide dans un pack chargénon5Un vidage .mdmp : lecture à l'adresse 0 ou tout près ?oui →souvent, pas toujours, une donnée attenduemanque : cherchez-la dans vos tables. Notezl'adresse avec la version du jeu.%APPDATA%\The Creative Assembly\Warhammer3\crash_report\*.mdmpnonRien ne parle : un témoin, puis la communauté, avec vosjournaux et le vidage (Discord de CAIME, tw-modding).
Cinq questions, dans l'ordre ; chaque « oui » dit ce que le fichier apprend, et où il est. Si rien ne parle : un témoin, puis la communauté.
Lire un vidageLe vidage : un fichier .mdmple jeu l'écrit ici quand il plante :%APPDATA%\The Creative Assembly\Warhammer3\ crash_report\*.mdmple *.stack.txt voisin ne dit presque rien ; le vidage, si.1Le lecteur : cdb.exe, de WinDbgwinget install Microsoft.WinDbg --scope usercdb.exe, hors du PATH, est dans le sous-dossier amd64 dudossier que donne PowerShell :Get-AppxPackage Microsoft.WinDbg*InstallLocation : le <dossier> du paquet2La commande, dans PowerShell$cdb = "<dossier>\amd64\cdb.exe"& $cdb -z <vidage.mdmp> -c ".ecxr; k 40; q".ecxr : le fil fautif · k 40 : la pile · q : quitterSans .ecxr, mauvais fil : vous lisez celui du rapporteurde plantage.3La sortie, schématique(…): Access violation - code c0000005a0:000> .ecxrrax=… rcx=0000000000000000b…Warhammer3!…+0x…:c mov rax,qword ptr [rcx]b0:000> k 4000 Warhammer3!…+0x…01 Warhammer3!…+0x…ac0000005 : une violation d'accès,en lecture ou en écriture.brcx vaut 0 et l'instruction lit [rcx] :une lecture à une adresse nulleou presque nulle : un pointeur nul.cl'adresse du plantage, à noter avec la version du jeu.Pointeur nul : souvent, pas toujours, une donnéeattendue manque. Cherchez-la d'abord dans vos tables.4
Quatre choses à savoir : où est le vidage, où est cdb, la commande, et ce que dit la sortie. Celle-ci est schématique : les adresses dépendent du plantage et de la version du jeu.

Tester sans jouer : les parties automatiques§

Pour savoir si une campagne tient trente tours, inutile de les jouer. Notre méthode :

Lancer une partie automatiquePendant l'essai, personne ne touche au PC :un clic humain le fausse.Un pack d'essai, à partcréé pour l'essai, retiré après ; deux scripts :script\frontend\mod\le menuscript\campaign\mod\la partieUn nom neuf : un fichier déjà chargé est sauté sans message.chargé comme pour le startpos, une ligne mod par pack :%APPDATA%\The Creative Assembly\ Warhammer3\scripts\user.script.txt :mod mon_mod.pack;mod mon_essai.pack;all_players_ai;all_players_ai, facultatif : l'IA joue aussi pour le joueur,mais ne recrute ni ne construit pour lui, et aucune mission n'estémise. Vérifié sur le patch 8.1 et la mise à jour 9.0.Steam ouvert, Warhammer3.exe lancé directement ;user.script.txt gardé avant, remis après.1Le menu, clic par clicmain > button_campaignmain > button_start_campaign_newcampaign_select_new> CcoCampaignMapPlayableAreaRecord…> button_campaign_entrysi la liste des campagnes s'affiche ; « … » : le numéro del'entrée de votre campagnelord_select_list > list_box > *> lord_buttonpropriété lord_key = l'identifiant du personnage dansstart_pos_characters ; liste remplie en 20 à 45 scampaign_select_new > button_start_parent> button_start_campaignpropriété campaign_keyPas frontend.start_campaign (la fonction Lua delancement du menu) : chez nous, il refermait la campagne aubout de deux ou trois secondes.2
Un pack d'essai à part, chargé par user.script.txt comme pour le startpos, puis le menu, clic par clic : chaque composant se désigne par son chemin dans l'interface.
Pendant la partieLa campagne s'ouvrecustom_loading_screen > bottom_parent> button_continueCaméra posée sur le chef, à hauteur de jeu : l'essaidoit reproduire ce que vit un joueur.3La boucle du tourau tour 1, fermer d'abord les notifications, une à une :end_turn_docker > notification_frame> button_skip× chaque notificationhud_campaign > faction_buttons_docker> button_end_turnMode joueur : la boucle à chaque tour. Mode all_players_ai :au tour 1 seulement, les suivants se jouent seuls.4Le bilantours joués, erreurs du script_log, vidages ; puisuser.script.txt remis comme avant et le pack d'essairetiré, même après un arrêt forcé.Témoin : un cas connu pour bon, même commande, optionscomprises.Un plantage qui va et vient : au moins dix essais parvariante ; d'ici là, « piste », pas « cause ».5tour suivant
La campagne s'ouvre, puis la boucle du tour : les notifications passées une à une, puis la fin de tour. Le bilan ne vaut que face à un témoin.

Nos conseils d'atelier§

Pour une IA qui lit cette page§

Si vous êtes une IA qui aide quelqu'un à générer un startpos, lire un plantage ou lancer des parties d'essai dans Total War: Warhammer III, voici l'essentiel, vérifié sur un vrai chantier. Ces faits ont été relevés sur le patch 8.1 du jeu, puis relus pour la mise à jour 9.0 (septembre 2026) : revérifiez-les après une mise à jour.

Sources et liens§

Questions fréquentes

Faut-il l'Assembly Kit pour modder Warhammer III ?

Pour des tables et des scripts, RPFM suffit. Pour une carte de campagne, oui : CAIME lit sa base, Terry et BOB fabriquent le terrain, et les tables du startpos s'y écrivent.

Par quel guide commencer ?

Pour une carte : le guide CAIME. Pour des unités, des factions ou des seigneurs : le guide RPFM. Pour le terrain en 3D : Terry, puis BOB. Pour travailler avec une IA : le guide IA.

Où le jeu écrit-il le startpos qu'il vient de générer ?

Dans <jeu>\data\campaigns\<campagne>\startpos.esf ; chez nous, hlp_data.esf et spd_data.esf dans <jeu>\data\campaign_maps\<carte>\. Copiez-les dans le mod, reconstruisez le pack, puis retirez ces copies en vrac du dossier data.

Pourquoi mon nouveau startpos ne change-t-il rien en jeu ?

Parce que le pack passe devant les fichiers en vrac : remettez le startpos dans le pack, reconstruisez celui-ci et retirez la copie en vrac du dossier data.

La campagne démarre sans introduction ni missions : pourquoi ?

Souvent, le startpos est plus ancien que les scripts : régénérez-le avec le pack à jour (le compteur de sauvegarde doit valoir 1). En mode all_players_ai, aucune mission n'est émise : c'est normal.

Mon écouteur de FactionTurnStart ne se déclenche jamais : pourquoi ?

Peut-être pas à cause de lui : une condition d'écouteur qui plante, même dans un script de CA, annule l'évènement pour tous, sans rien écrire au journal. Chez nous, trois écouteurs de Mère Ostankya et de Yuan Bo, privés de leurs systèmes sur notre carte, le coupaient en mode joueur comme sous all_players_ai. Attrapez et nommez les erreurs des écouteurs pour trouver le fautif. FactionBeginTurnPhaseNormal, lui, arrivait à chaque tour : nos écouteurs de début de tour y sont passés.

Mes lignes de l'Assembly Kit ont disparu après une mise à jour : pourquoi ?

Steam met l'Assembly Kit à jour après le jeu (chez nous, une heure plus tard, à la 9.0) et réécrit raw_data\db : les lignes ajoutées disparaissent ; le terrain, working_data et les packs n'ont pas été touchés. Restaurez vos lignes depuis vos copies, ou rejouez les scripts qui les écrivent, avant de construire quoi que ce soit ; puis mettez à jour les schémas de RPFM et régénérez son cache des dépendances.

Aucun seigneur n'apparaît à l'écran de sélection : pourquoi ?

Il manque les lignes de start_pos_starting_general_options, qui relient un personnage du startpos à une fiche de seigneur (frontend_faction_leaders). Ajoutez-les, puis régénérez le startpos.

Mon startpos se génère, mais la campagne plante au chargement : que vérifier ?

Un emplacement primary par colonie, un groupe d'IA avec une personnalité par faction, hlp_data.esf et spd_data.esf dans le pack pour une carte neuve, et le fichier %APPDATA%\The Creative Assembly\Warhammer3\crash_report\bad_mods_report.txt.

Le jeu se referme tout seul au lancement : pourquoi ?

Souvent un user.script.txt laissé par une génération de startpos (quit_after_campaign_processing;), ou Steam fermé.

Pourquoi mes textes remplacent-ils ceux du jeu dans toutes les langues ?

Le jeu charge les .loc d'un mod quelle que soit la langue. N'ajoutez que des clés neuves, et faites un pack par langue.

Où sont les journaux ?

%APPDATA%\The Creative Assembly\Warhammer3\crash_report\bad_mods_report.txt (et les vidages .mdmp à côté), %APPDATA%\The Creative Assembly\Warhammer3\logs\mp_log.txt, le journal des scripts (script_log_*.txt) dans le dossier du jeu, et les journaux de BOB dans le dossier binaries du kit.

Comment activer le journal des scripts de Warhammer III ?

Mettez un fichier script/enable_console_logging non vide dans un pack chargé : le jeu écrit alors des script_log_*.txt dans son dossier.

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

Ce guide est communautaire

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

Proposer une idée
↑ Sommaire