Atelier des moddeurs · guide · 83 min de lecture
RPFM, le guide : ajouter une unité, une faction et un seigneur dans Total War: Warhammer III
RPFM (Rusted PackFile Manager) ouvre et fabrique les packs de Total War. Ce guide montre pas à pas comment s'en servir, puis déroule trois procédures complètes pour Total War: Warhammer III : ajouter une unité, une faction, un seigneur légendaire ou jouable. Les pièges viennent de la communauté et de notre chantier.
Relu le 25 septembre 2026, mise à jour 9.0. Vérifié sur le code, le fichier de langue et le manuel de RPFM 5.0.6, les données du jeu et l'Assembly Kit au patch 8.1. 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). Dans le doute, vérifiez, et dites-le-nous.
Ce que fait RPFM, et ce qu'est un pack§
Un mod de Total War est un fichier .pack, une archive que le jeu lit dans son dossier data. RPFM (Rusted PackFile Manager, de Frodo45127, sous licence MIT) ouvre les packs du jeu en lecture et fabrique les vôtres. Un pack range des tables (db/), des textes (text/), des scripts Lua (script/), des images (ui/), des définitions de modèles (variantmeshes/) et, pour une campagne, sa position de départ (campaigns/).
Ce guide a été écrit sur RPFM 5.0.6 (sortie le 1er août 2026) et des tables relevées au patch 8.1. Depuis sont sorties la 5.1.0 (28 septembre 2026) et la 5.1.1 (4 octobre 2026), qui corrigent la fuite de mémoire des sessions MCP et l'ordre des clés écrites dans twad_key_deletes depuis la 9.0 du jeu : prenez la dernière ; le manuel en ligne décrit la 5.1 (155 outils MCP). Les schémas de RPFM pour la 9.0 sont sortis le jour de la mise à jour (24 septembre) ; les tables citées ici n'ont pas été relues une à une depuis : dans le doute, vérifiez. Toute modification suit ces six étapes :
- Trouver
La ligne du jeu la plus proche.
View → Toggle Global Search Window (Ctrl+Shift+F)
- Copier
Dans votre table (
db/), sous une clé à vous (la même pour modifier une ligne du jeu).<table>_tables/ <fichier> clic droit sur la racine du pack → Create… → Create DB, puis Paste as New Row
- Nommer
Les textes affichés au joueur, dans
text/.db/ <fichier>.loc clic droit sur la racine du pack → Create… → Create Loc
- Contrôler
Références, clés, champs vides.
panneau Diagnostics → Check PackFile
- Essayer
Le pack installé dans
<jeu>\, en jeu.data\ clic droit sur la racine du pack → Install
- Publier
La version optimisée.
clic droit sur la racine du pack → Save Pack For Release… (sur une copie)
Les mots du métier§
| Mot | Sens |
|---|---|
| Pack | l'archive d'un mod, posée dans le dossier data du jeu |
| Table | un tableau de la base du jeu, rangé dans db/ |
| Clé | ce qui identifie une ligne, unique dans sa table (parfois plusieurs colonnes) |
| Fragment | un fichier de table ; le jeu lit tous les fragments d'une table, les siens et ceux des mods |
| Datacore | un fragment nommé comme celui du jeu (data__), qui remplace la table entière |
.loc | un fichier de textes : une clé par phrase affichée |
| Schéma | la description des tables : colonnes, clés, liens (celle de RPFM, ou celle du kit : TWaD_*.xml) |
| Cache des dépendances | les données du jeu, préparées par RPFM pour chercher et contrôler |
| Assembly Kit | le kit officiel de Creative Assembly (Steam → Bibliothèque → Outils) |
| Sous-type | le type exact d'un personnage (agent_subtypes) |
| Art set | l'ensemble des apparences d'un personnage (campaign_character_art_sets) |
| Startpos | startpos.esf, la sauvegarde du tour 0 d'une campagne |
| Racine du pack | la première ligne de l'arbre du pack, à son nom ; son clic droit porte Create…, Install, Uninstall, Save Pack For Release… et Build Startpos |
| Palette | la recherche par nom de RPFM : Ctrl+Shift+P pour une action, Ctrl+P pour un fichier |
%APPDATA% | le dossier des réglages de votre compte Windows : tapez %APPDATA% dans la barre d'adresse de l'Explorateur |
| Groupe militaire | military_group, le groupe de recrutement d'une faction : une unité permise à un groupe l'est à toutes ses factions (chez CA, les factions de Bretonnie ont wh_main_group_bretonnia) |
twad_key_deletes | la table qui retire des lignes du jeu au lancement (Warhammer III, depuis le patch 6.3) : colonnes table_name et key |
| Mixer | MIXER – Mixu's Unlocker, un mod de Mixu : son startpos rend jouables toutes les factions des Empires Immortels et des Royaumes du Chaos ; selon le wiki, c'est le seul mod de startpos de la plupart des joueurs |
| Error / Warning / Info | les trois gravités des diagnostics : Error, un problème en jeu ; Warning, un problème probable ; Info, à savoir. Visez zéro Error |
Installer et configurer RPFM 5.0.6§
Dans ses versions publiées, prenez l'archive Windows (pour la 5.0.6, rpfm-v5.0.6-x86_64-pc-windows-msvc.zip ; prenez la dernière version), décompressez-la dans un dossier à vous, hors de Program Files, et lancez rpfm_ui.exe : c'est la fenêtre de RPFM (rpfm_server.exe, à côté, est son serveur, qu'elle lance elle-même). Puis, une fois pour toutes :
- PackFile → Settings. Game Paths : le Game Folder (le dossier de l'exécutable du jeu) et l'Assembly Kit Folder. Extra Paths : le MyMod's Folder, hors de Program Files, où Windows protège l'écriture. Default Game : Warhammer 3.
- About → Check Updates, puis, dans le gestionnaire de mises à jour, le bouton de la ligne Schema Updates : le schéma dit à RPFM comment lire chaque table du patch en cours (vous pouvez aussi cocher Check Schema Updates on Start dans les réglages).
- Game Selected → Generate Dependencies Cache, quelques minutes : RPFM prépare les données du jeu pour ses recherches et ses contrôles. Sans Assembly Kit configuré, il prévient que ses diagnostics donneront de faux positifs.
Les gestes de base§
La fenêtre de RPFM 5.0.6, zone par zone :
- 1Les menusPackFile, MyMod, View, Game Selected, Tools, About. Les réglages : PackFile → Settings (Ctrl+,) ; les schémas : About → Check Updates ; le cache : Game Selected → Generate Dependencies Cache.
- 2Les ongletsun par fichier ouvert.
- 3Pack Contentsl'arbre du pack ; sa première ligne, la racine, porte le nom du pack.
- 4Le clic droit sur la racineSave Pack As…, Save Pack For Release…, Install, Uninstall, Change PackFile Type, Optimize PackFile, Build Startpos (et d'autres actions) : ce qui touche au pack entier.
- 5Dependenciesles fichiers du jeu, des mods parents et de l'Assembly Kit, en lecture seule ; clic droit → Import en amène un dans votre pack.
- 6La table ouvertevotre ligne, surlignée ; en rouge, une référence invalide : aucune ligne de land_units ne porte encore cette clé. Le fichier atlas_main_units n'a pas de @ : il ajoute une clé neuve.
- 7DiagnosticsCheck PackFile relit le pack ; chaque ligne a sa gravité : Error, Warning ou Info. Visez zéro Error.
- 8Global Searchmasquée au départ : View → Toggle Global Search Window (Ctrl+Shift+F) ; sources Game Files ou Assembly Kit Tables.
- 9La barre d'étatles messages brefs de la dernière opération.
Créer son mod§
MyMod → New MyMod. Choisissez le jeu (Warhammer 3) et un nom avec des soulignés, sans espace ni .pack (auteur_description). RPFM crée le pack <MyMod>\ et, à côté, le dossier <MyMod>\ pour vos fichiers de travail (plus un dépôt Git ou un projet VSCode si vous les cochez), puis ouvre le pack. Le dossier MyMod doit être réglé avant, sinon RPFM refuse.
Trouver une donnée du jeu§
View → Toggle Global Search Window (Ctrl+Shift+F) : source Game Files (ou Assembly Kit Tables), type DB (Loc pour les textes), puis la clé, soulignés compris ; un clic ouvre la table à la bonne ligne, en lecture seule. Autres voies : PackFile → Load All CA Packs (lecture seule ; grisée quand le cache des dépendances est chargé), ou View → Toggle Dependencies Window, clic droit → Import, qui amène un fichier du jeu dans votre pack : renommez aussitôt une table amenée ainsi (F2), car sous le nom data__ elle remplacerait celle du jeu.
Créer une table§
Clic droit sur la racine du pack → Create… → Create DB ; choisissez la table (land_units_tables) et nommez le fichier avec votre préfixe : db/. Le nom compte : quand votre fichier et celui du jeu (data__) donnent la même clé, celui dont le nom trie en premier gagne. Pour ajouter des lignes (clés neuves), tout nom à vous convient ; pour modifier une ligne du jeu (même clé), commencez le nom par @ ou ! (le détail : « Les règles des packs »).
- Ne renommez ni ne déplacez jamais un dossier
_tables(« NEVER RENAME/MOVE THE TABLE FOLDERS », écrit RPFM) : c'est lui qui dit au jeu de quelle table il s'agit. - Ni chiffre final ni espace dans un nom de fichier de table : selon RPFM, un chiffre final fait planter le mod chez tout le monde sauf chez son auteur, et une espace empêche parfois la table d'être chargée.
Partir d'une ligne du jeu§
- Dans la table du jeu, sélectionnez la ligne modèle (cliquez son numéro) : Copy… → Copy.
- Dans votre table : Paste as New Row (Ctrl+Shift+V). Pour ajouter une ligne, changez la clé en premier : sinon votre ligne n'ajoute rien, elle entre en concurrence avec celle du jeu.
- Pour dupliquer une de vos lignes : Clone… → Clone and Append.
Suivre une clé§
Clic droit sur une cellule → Go To… → Go To Definition (la ligne citée), Go To Loc Entry (son texte) ou Find References (tout ce qui cite cette clé) ; Rename References renomme une clé partout (le manuel l'appelle Cascade Edition). C'est ainsi qu'on démonte une unité ou un seigneur, table après table.
Écrire les textes§
- Clic droit sur la racine du pack → Create… → Create Loc, par exemple
text/.db/ atlas.loc - Trois colonnes : key (la clé), text (le texte affiché) et tooltip, dont le rôle est inconnu selon le manuel de RPFM : faites comme les lignes de CA.
- La clé a la forme
<table>_<colonne>_<clé de la ligne>. Exemple : le nom de l'unitéatlas_chevaliers(colonneonscreen_namedeland_units) a pour cléland_units_onscreen_name_atlas_chevaliers. - Clic droit sur la racine du pack → Generate Loc Data produit deux fichiers.
zzz_…: les clés qui manquent à vos tables ; renommez-le ou recopiez ses lignes dans votre.loc, puis remplissez-les.aaa_…: les textes du jeu que vos tables citent ; n'en gardez que ce que vous changez. Ne publiez aucun des deux sous son nom d'origine : RPFM les réécrit à chaque génération, et l'optimiseur retireaaa_…(etzzz_…s'il est vide).
Votre premier mod, en dix minutes§
Un essai court, qui vérifie aussi votre installation : rendre une unité du jeu plus chère en bataille personnalisée. Les diagnostics et l'installation du pack sont détaillés juste après (« Vérifier, tester, publier ») ; pourquoi le @ fait gagner votre fichier, dans « Les règles des packs ».
- MyMod → New MyMod : jeu Warhammer 3, nom
moi_premier_mod. - View → Toggle Global Search Window (Ctrl+Shift+F) : source Game Files, type DB ; cherchez
wh_dlc07_brt_cav_knights_errant_0, puis cliquez le résultat demain_units_tables: la table du jeu s'ouvre à la bonne ligne, en lecture seule. - Cliquez le numéro de la ligne, puis clic droit → Copy… → Copy.
- Clic droit sur la racine de votre pack → Create… → Create DB : table
main_units_tables, nom@moi_main_units. Le@fait trier votre fichier avant celui du jeu (data__) : c'est donc le vôtre qui gagne. - Clic droit dans la table vide → Paste as New Row (Ctrl+Shift+V). Gardez la clé : ici, on modifie l'unité du jeu. Passez
multiplayer_cost(son prix en bataille personnalisée ; 700 chez CA) à 999. - View → Toggle Diagnostics Window → Check PackFile : aucune ligne Error.
- Ctrl+S, puis clic droit sur la racine du pack → Install ; cochez le mod dans le lanceur. En bataille personnalisée, les Chevaliers errants de Bretonnie coûtent 999.
Pour ajouter une unité au lieu de la modifier, on change la clé : c'est la procédure 1.
Vérifier, tester, publier§
Les diagnostics§
View → Toggle Diagnostics Window → Check PackFile, avant chaque essai : un défaut repéré ici épargne un lancement du jeu pour rien. Chaque ligne porte une gravité : Error (un problème en jeu), Warning (un problème probable), Info (à savoir) ; visez zéro Error. Un double-clic sur une ligne ouvre la cellule fautive ; un faux positif s'ignore au clic droit sur la ligne (Ignore… : dans un fichier, une colonne, un dossier ou tout le pack), et ce choix est enregistré dans le pack lui-même (manuel de RPFM, page Diagnostics). La figure suit un mod du diagnostic jusqu'au jeu.
RPFM contrôle :
- les tables : version périmée ; référence invalide, l'une des premières causes de plantage au lancement selon RPFM ; clé vide ou en double ; ligne vide ; champ obligatoire vide, qui peut faire planter le jeu (RPFM), souvent sans message d'erreur (Casualfield) ; nom de fichier finissant par un chiffre ou contenant une espace ; table qui écrase celle du jeu (« datacoring ») ; table interdite (Banned Table), que le jeu vérifie et qui le fait planter si elle est modifiée ;
- les fichiers : chemin cité mais introuvable, texte manquant ;
- les portraits : art sets et variantes non déclarés ;
- la configuration : cache des dépendances absent ou périmé.
Essayer en jeu§
- Ctrl+S (enregistre les packs ouverts), puis clic droit sur la racine du pack (la première ligne de l'arbre, à son nom) → Install : RPFM copie le pack dans
<jeu>\.data\ - Cochez le mod dans le lanceur de Creative Assembly, ou dans un gestionnaire tiers (Kaedrin's Mod Manager, Runcher).
- Même menu → Uninstall : retire la copie.
Publier§
Gardez votre pack de travail : copiez-le d'abord (ou Save Pack As… sous un autre nom), car Save Pack For Release… enregistre la version optimisée à la place du pack ouvert. Clic droit sur la racine du pack → Save Pack For Release… : l'optimiseur s'ouvre, puis le pack est enregistré ; Optimize PackFile, au même menu, fait le même travail sans enregistrer, pour relire avant. L'optimiseur ne fait que ce que vous cochez :
- retirer les fichiers et les lignes identiques au jeu, les doublons, les fichiers vides ;
- compresser le pack ;
- retirer les art sets et variantes inutilisés des portraits (décoché par défaut) ;
- pour Warhammer III, Import datacores into twad_key_deletes : il inscrit dans une table
twad_key_deletesles lignes qu'une table recopiée du jeu a supprimées. Vérifiez cette table, renommez-la (RPFM la réécrirait au prochain passage), puis supprimez vous-même la table recopiée.
Envoyer sur le Workshop par le lanceur de CA : le lanceur retente seul 4 fois chaque envoi, et il crée un objet vide à chaque tentative d'un objet neuf. « error code #25 » veut dire limite atteinte, côté compte ou côté Steam (refus avant tout envoi), pas une faute de votre pack ; le lanceur ne l'affiche pas. Un envoi à la fois, puis lisez son journal (%APPDATA%\, heures en UTC) ; après une erreur 25, ne renvoyez ni ne créez rien : retentez des heures plus tard, et vérifiez la page.
Après une mise à jour du jeu§
- About → Check Updates, bouton des schémas.
- Game Selected → Generate Dependencies Cache : sinon RPFM compare vos tables à un jeu périmé.
- Sur chaque table signalée Outdated table : clic droit → Update Table.
- Relisez les colonnes nouvelles : RPFM y met des valeurs par défaut, pas forcément les bonnes pour vos lignes.
À la 9.0, les schémas de RPFM sont sortis le jour même de la mise à jour. Si vous écrivez aussi dans l'Assembly Kit : Steam le met à jour après le jeu, séparément, et à chaque mise à jour du jeu ou du kit (9.0, puis 9.0.2) il réécrit raw_data\ ; les lignes que vous y aviez ajoutées disparaissent. Vérifiez-les et restaurez-les avant de régénérer le cache des dépendances et de reconstruire quoi que ce soit ; après la restauration, comptez chaque lot contre sa source.
Les règles des packs : qui passe devant qui§
Le jeu lit tous les fragments d'une table, les siens et ceux de chaque mod : tant que les clés diffèrent, les lignes s'additionnent. Quand deux fragments donnent la même clé, celui dont le nom trie en premier gagne ; et un fragment qui porte le chemin exact d'un fichier du jeu le remplace tout entier.
La figure ci-dessous montre qui gagne quand plusieurs fragments d'une même table donnent la même clé.
Exemple : la table des unités de bataille du jeu est le fichier db/. Dans l'ordre de tri du wiki (page Submodding), @mon_mod trie avant data__ et zmon_mod après ; le manuel de RPFM range pourtant ztable avant data__ (page Datacores). Pour modifier une ligne du jeu, le choix sûr est donc un nom qui commence par @ ou !. Un fragment nommé data__ remplace la table entière : c'est un « datacore », que les diagnostics signalent (« Leaving them named data__ will overwrite the base game files », prévient Casualfield).
Quatre règles qui évitent les pires surprises§
- Des noms et des clés à vous : vos lignes s'ajoutent sans rien remplacer, et les autres campagnes comme les autres mods restent intacts.
- Ne redéfinissez pas un texte du jeu. Le jeu charge les
.locd'un mod quelle que soit la langue du joueur : une clé du jeu reprise remplace le texte officiel dans toutes les langues. N'ajoutez que des clés neuves. Pour une seconde langue, un second pack : il ne contient qu'un.locqui reprend vos clés, sous un nom qui commence par!pour passer devant le vôtre (wiki, page Submodding). - Pour retirer une ligne du jeu, ne recopiez pas sa table (un datacore) : un fragment ne retire rien aux autres. Depuis le patch 6.3, Warhammer III lit une table
twad_key_deletes(colonnestable_nameetkey) qui retire les lignes nommées au lancement (la marche à suivre est plus bas). - Dans le dossier
data, un pack passe devant les fichiers en vrac (constaté chez nous) : un fichier régénéré (un startpos, par exemple) ne compte qu'une fois remis dans le pack.
Retirer une ligne du jeu§
- Créez une fois
twad_key_deletes_tablesdans votre pack (clic droit sur la racine → Create… → Create DB), sous un nom de fichier à votre préfixe. - Ouvrez la table du jeu et sélectionnez les lignes à retirer.
- Clic droit → Add Selection to Key Deletes → votre table : RPFM y écrit les clés, même quand la clé porte sur plusieurs colonnes. Exception : depuis la 9.0 du jeu, RPFM 5.0.6 écrit à l'envers la clé de
land_units_to_unit_abilites_junctions, et la ligne n'est pas retirée ; passez à la 5.1.0 ou plus, ou écrivez-la à la main (land_unitpuisability), et vérifiez en jeu.
Attention : retirer une ligne encore citée par une autre table fait planter le jeu, et les diagnostics ne le voient pas encore (manuel de RPFM, page Datacores). Deux tables seulement ont en plus une case mod_disabled (character_skill_node_set_items, faction_agent_permitted_subtypes), que le schéma de CA présente comme le moyen donné aux moddeurs, faute de pouvoir retirer une ligne.
Procédure 1 : ajouter une unité§
La voie sûre : copier une unité du jeu qui ressemble à la vôtre, puis changer ce qui doit changer. Exemple suivi : les Chevaliers errants de Bretonnie, wh_dlc07_brt_cav_knights_errant_0.
Avant de commencer : l'unité modèle§
- Une unité modèle de même squelette et de mêmes animations que la vôtre : sinon, le rendu est déformé en jeu.
- Un préfixe de clé à vous, pour ne jamais entrer en concurrence avec le jeu ou un autre mod.
La figure suivante montre les tables d'une unité et les colonnes qui les relient.
Les étapes de l'unité§
- Global Search sur la clé du modèle : elle figure dans 24 tables du kit ; le tableau ci-dessous donne celles qu'il faut.
- Pour chacune : Create DB (un fichier à votre préfixe), Paste as New Row, puis changez ce qui fait l'unité et gardez le reste (voir « Ce qui change, ce qui reste »). Comme CA, donnez la même clé à
main_units.unitet àland_units.key. - Réglez caractéristiques, coûts, apparence et carte, puis le recrutement, la bataille personnalisée et les textes.
- Contrôle : clic droit sur votre clé → Find References. Le manuel de RPFM conseille ce contrôle après l'ajout d'une unité : il montre si elle est reliée partout où il faut (coûts, recrutement, factions).
- Diagnostics, Install, essai en bataille personnalisée.
| Table | À mettre | Clé | Liens |
|---|---|---|---|
main_units | la copie ; coûts, caste, ui_unit_group_land | unit | land_unit → land_units.key |
land_units | la copie ; caractéristiques, armes | key | man_entity → battle_entities ; primary_melee_weapon → melee_weapons ; short_description_text → unit_description_short_texts ; historical_description_text → unit_description_historical_texts |
unit_variants | name = votre clé (comme CA), faction vide (= toutes les factions), variant, unit_card | faction + unit | unit → land_units.key ; variant → variants.variant_name ; la carte : ui/ |
variants | seulement pour un modèle neuf : variant_filename | variant_name | → variantmeshes/ |
units_to_groupings_military_permissions | l'unité et le groupe militaire | les deux colonnes | military_group = factions.military_group (par exemple wh_main_group_bretonnia) |
building_units_allowed | building, unit, key (un nombre unique), faction vide | key | building → building_levels.level_name ; unit → main_units |
units_custom_battle_permissions | la faction de bataille (chez CA : wh_main_brt_bretonnia), general_unit = 0 | unit + faction + general_unit | → main_units, factions |
unit_description_short_texts, unit_description_historical_texts | seulement pour un texte propre à l'unité | key | citées par land_units |
Ce qui change, ce qui reste§
- À changer : la nouvelle clé
atlas_chevalierspartout où figure celle de CA (main_units.unit,main_units.land_unit,land_units.key,unit_variants.unitetunit_variants.name, les colonnesunitdes permissions et des bâtiments), et un nombre neuf dansbuilding_units_allowed.key(clic droit → Generate Ids, à partir d'un nombre de départ à vous, sous 2³¹). La clé deunit_variantsporte sur deux colonnes (faction+unit) : c'estunitqui change ;namen'est pas dans la clé, mais CA y met la clé de l'unité etunit_variants_colourss'y réfère : changez-le aussi. - À garder pour un premier essai :
variantetunit_cardde CA (wh_dlc07_brt_knights_errant: même modèle, même carte), le groupe militaire (wh_main_group_bretonnia), la faction de bataille (wh_main_brt_bretonnia, avecgeneral_unit= 0) et les quatre écuries (wh_main_brt_stables_2àwh_main_brt_stables_5). - Une clé de CA oubliée dans une de vos lignes : cette ligne concurrence celle de CA au lieu de s'ajouter.
RPFM a aussi un Unit Editor, expérimental : il ne s'active (menu Tools) qu'une fois cochée la case Enable Unit Editor (EXPERIMENTAL) des réglages (PackFile → Settings). Ce guide suit la voie des tables.
Les tables facultatives de l'unité§
D'après le guide de Casualfield, selon ce que l'unité doit faire :
land_units_to_unit_abilites_junctions, pour ses capacités (la faute d'orthographe est de CA) ;unit_attributes_groupsetunit_attributes_to_groups_junctions;unit_set_to_unit_junctions;ui_unit_bullet_point_unit_overrides;allied_recruitment_unit_permissions;armed_citizenry_unit_groupsetbuilding_level_armed_citizenry_junctions, pour les garnisons ;cdir_military_generator_unit_qualities, pour l'IA ;units_to_exclusive_faction_permissions;faction_rebellion_units_junctions, pour les armées rebelles : le schéma de CA demande d'y reporter l'unité deunits_to_groupings_military_permissions, Casualfield la dit facultative.
Les textes de l'unité§
land_units_onscreen_name_<clé>: le nom (Casualfield donneunit_description_historical_texts_UNITKEY, mais le schéma du kit range le nom dansland_units.onscreen_name) ;unit_description_short_texts_text_<clé courte>etunit_description_historical_texts_text_<clé longue>, si l'unité a ses propres descriptions ;land_units_concealed_name_<clé>, facultatif.
Le minimum viable de l'unité§
- En bataille personnalisée :
main_units,land_units,unit_variants, la carte (PNG de 60 × 130 selon le Unit Card Guide du wiki ; non entrelacé comme celles de CA, relevé au patch 8.1),units_custom_battle_permissionset le nom en.loc. - En campagne, en plus :
units_to_groupings_military_permissionsetbuilding_units_allowed.
Les pièges de l'unité§
- Chaque niveau de bâtiment. CA liste l'unité à chaque niveau qui la permet, pas seulement à celui qui la débloque : ses Chevaliers errants figurent sur les écuries de niveau 2, 3, 4 et 5.
- La colonne
enableddebuilding_units_allowedn'interdit le recrutement qu'à trois conditions réunies : la paire bâtiment-unité existe ailleurs,factionest remplie, la case est décochée. units_custom_battle_permissionsagit aussi en campagne (wiki, page Units custom battle permissions tables) : la carte d'un héros dans le panneau des bâtiments en vient, et l'aperçu des unités touchées par un effet en tient compte.- Un champ obligatoire vide, un fichier nommé
data__: voir les diagnostics et les règles des packs.
Ce que l'unité demande au startpos§
Rien, sauf pour exister dès le tour 0 (start_pos_land_units, start_pos_settlement_garrisons, réserves de mercenaires) ; même alors, un script dispense du startpos : cm:create_force_with_general pose une armée, cm:add_unit_to_faction_mercenary_pool garnit une réserve.
Vérifier que l'unité marche§
- Diagnostics : ni référence invalide ni texte manquant.
- Bataille personnalisée avec la faction de bataille choisie : l'unité est dans la liste, avec sa carte et son nom ; en bataille, le modèle est entier.
- Campagne neuve : l'unité se recrute à chaque niveau de bâtiment listé.
Procédure 2 : ajouter une faction§
Une faction tient en quelques tables, mais elle n'existe sur la carte que par le startpos.
Avant de commencer : ce qu'il faut réunir§
Une campagne cible, une culture et une sous-culture existantes, les drapeaux, et le temps de générer un startpos.
La figure montre les tables d'une faction, et le chemin des tables de départ jusqu'au startpos.
Les étapes de la faction§
factions: copiez une faction voisine (wh_main_brt_bordeleaux) sous une clé neuve ; réglezsubculture,name_group,military_group,flags_path=ui\et les couleurs (ou Tools → Faction Painter). Ne reprenez jamais les lignes d'une tableflags\ <clé> *_ownership_content_pack_junctions(par exemplefaction_ownership_content_pack_junctions) pour une faction à vous : CA y verrouille ses DLC, et le jeu se ferme au lancement sans message ; un verrou de DLC se fait par script.- Les drapeaux : un dossier
ui/comme ceux de CA :flags/ <clé>/ mon_24.png,mon_64.png,mon_256.png(24, 64 et 256 pixels),mon_64_glow.png,mon_icon.png,mon_rotated.png,mon_banner.dds(noms de fichiers de CA, « mon » compris, relevés au patch 8.1). Lesquels sont indispensables n'est pas confirmé : fournissez tout le jeu. faction_agent_permitted_subtypes: les lignes du modèle, qui disent quels seigneurs et héros la faction peut avoir (Bordeleaux en a 12 : general, colonel, minister, champion, wizard).- Les textes, puis les tables de départ du tableau, dans le kit (Dave) ou dans le pack (RPFM), plus
start_pos_character_to_settlementspour un chef en garnison etstart_pos_diplomacy. - Le startpos régénéré (voir « Ce qui exige un nouveau startpos »), rangé dans
campaigns/du pack ; puis Diagnostics, Install (sauf pour un pack ouvert depuis le dossier<campagne>/ startpos.esf data, qu'Install refuse), campagne neuve.
| Table | À mettre | Clé | Liens |
|---|---|---|---|
factions | la faction | key | subculture → cultures_subcultures ; name_group → names_groups ; military_group → groupings_military |
faction_agent_permitted_subtypes | les seigneurs et héros permis | faction + agent + subtype | → agent_subtypes |
start_pos_factions | ID (un entier neuf), faction, campaign, playable, is_major, cai_personality_group | ID | → factions, campaigns |
start_pos_regions | owning_faction = cet ID, faction_capital | region + campaign | → start_pos_factions.ID |
start_pos_characters | le chef : Type = general, subtype, ministerial_position = faction_leader, portrait_id, startx et starty, Name et Surname | ID | faction → start_pos_factions.ID ; Name → names.id ; portrait_id → campaign_character_art_sets |
start_pos_land_units | l'armée : unit_type, general, soldiers | id | → main_units ; → start_pos_characters.ID |
Les textes de la faction§
factions_screen_name_<clé>, factions_screen_adjective_<clé>, factions_screen_name_when_rebels_<clé>, factions_attack_desc_<clé> et factions_defend_desc_<clé> ; le nom du chef vient de names_name_<id>.
Le minimum viable de la faction§
factions, les drapeaux, faction_agent_permitted_subtypes, les textes, start_pos_factions, une région ou un chef avec son armée, et le startpos régénéré.
Les pièges de la faction§
- Le groupe d'IA. Chaque faction doit avoir un groupe d'IA (
cai_personality_group) qui contient une personnalité, sinon le jeu plante. Chez nous : le groupe qu'a la faction dans les Empires Immortels, à défaut celui des factions mineures de sa culture. - Les identifiants des tables de départ : des entiers uniques, sous 2³¹ (la limite d'un entier signé de 32 bits), qu'aucune ligne de CA n'emploie déjà (les siens sont dispersés jusqu'à près de 2³¹, patch 8.1).
- Les clés changent d'un jeu à l'autre (
wh_dlc05_brt_mini_bastonnedans Warhammer I,wh_main_brt_bastonnedans Warhammer III) : en portant des données, appariez-les sur la culture et la fin de la clé (le tutoriel du portage). - Les jonctions de propriété de DLC. Aucune table
*_ownership_content_pack_junctions(faction, zone jouable, bataille…) dans votre pack pour une clé à vous : le jeu se ferme en 9 à 13 s, sans rapport nimp_log, etbad_mods_report.txtne voit pas la faute (9.0.2). Un verrou de DLC se fait par script. - Les colonies de la faction. Le modèle d'emplacement (
primarydestart_pos_region_slot_templates), leprimary_buildinget leport_buildingd'une colonie existent tels quels chez CA pour la sous-culture du maître ; jamais un modèle*_portsur une région sans port. Une faction que CA fait partir en horde, sans région, ne reçoit pas de colonie au départ. Sinon le startpos se génère, et le chargement de la partie plante (9.0.2).
Ce que la faction demande au startpos§
Tout ce qui la fait exister : le wiki range parmi ce qui demande un startpos les factions jouables, comme celles qui apparaissent en cours de partie. Une fois la faction dans le startpos, le script prend le relais : cm:transfer_region_to_faction(region, faction), cm:create_force_with_general(...), ou le système Campaign Custom Starts de CA (régions, armées, diplomatie, effets).
Vérifier que la faction marche§
- Diagnostics propres ;
campaigns/est bien dans le pack, daté de la génération.<campagne>/ startpos.esf - Tables de départ passées par un pack de mod :
%APPDATA%\nomme l'enregistrement fautif, un à la fois. Il ne voit pas tout : une jonction de propriété de DLC ou unThe Creative Assembly\ Warhammer3\ crash_report\ bad_mods_report.txt campaigns.masknon vide font fermer ou planter le jeu sans rapport ; retirez alors une table à la fois, sur une copie du pack. - Campagne neuve : la faction est sur la carte, dans sa région, avec son drapeau et son nom ; son chef mène son armée.
- Jouable, elle se choisit à l'écran de sélection, une fois la procédure 3 faite pour son chef.
Procédure 3 : ajouter un seigneur légendaire ou jouable§
Trois paliers : A, le seigneur existe dans la base de données ; B, un script le fait apparaître dans une faction existante ; C, il se choisit à l'écran « Nouvelle campagne », et ce palier seul demande un startpos. Prérequis : son unité de bataille (procédure 1), son modèle, son portrait. Un exemple complet suit les trois procédures : le Duc écarlate, plus bas.
Palier A : le seigneur dans la base de données§
agent_subtypes: copiez un seigneur voisin (wh_dlc07_brt_alberic) ;auto_generatedécoché pour un personnage unique,associated_unit_override= son unité,recruitment_category=legendary_lords,recruitable= 1 etcap=-1(comme Alberic). Laissezmagic_lorevide : rempli, aveclegendary_lords, il peut masquer les autres seigneurs légendaires de la réserve de recrutement (wiki, page Agent subtypes tables).- L'apparence :
campaign_character_art_sets→campaign_character_arts(unidunique) →agent_uniforms→variants. - Le portrait : Warhammer III le lit dans
ui/, rangé par art set (pour Alberic,portraits/ portholes/ portrait_settings*.bin portrait_settings__3.bin, vignette de 300 × 164 : relevés sur les fichiers de CA, patch 8.1). Dans RPFM : Create… → Create Portrait Settings, puis son éditeur. Chez CA,campaign_character_arts.portraitreste vide. - Les compétences :
character_skill_node_sets(colonneagent_subtype_key),character_skill_node_set_items(set,item),character_skill_nodes(tier= colonne de l'arbre,indent= ligne),character_skillspuischaracter_skill_level_to_effects_junctions,character_skill_node_linkspour les flèches. faction_agent_permitted_subtypes(la faction,general, le sous-type) etnames(de nouveauxidpour le prénom et le nom). Pour la bataille personnalisée :units_custom_battle_permissionsavecgeneral_unit= 1,general_portraitetgeneral_uniform.
| Table | À mettre | Clé | Liens |
|---|---|---|---|
agent_subtypes | le sous-type | key | associated_unit_override → main_units |
campaign_character_art_sets | l'art set | art_set_id | agent_subtype → agent_subtypes |
campaign_character_arts | l'apparence, par niveau | id | uniform → agent_uniforms |
agent_uniforms | les modèles de la carte et de la bataille | uniform_name | filename, battle_filename → variants |
character_skill_node_sets | l'arbre de compétences | key | agent_subtype_key → agent_subtypes |
character_skill_node_set_items | les nœuds de l'arbre | set + item | → character_skill_nodes |
character_skill_nodes | la place d'une compétence | key | character_skill_key → character_skills |
frontend_faction_leaders | la fiche de l'écran de sélection | key (libre) | agent_subtype_record, faction |
start_pos_starting_general_options | le lien du personnage à sa fiche | id | general → start_pos_characters.ID |
Les textes du seigneur§
agent_subtypes_onscreen_name_override_<sous-type>: le libellé du type (« Legendary Lord » pour Alberic) ; le nom propre vient denames_name_<id>;agent_subtypes_description_text_override_<sous-type>;character_skills_localised_name_<clé>,character_skills_localised_description_<clé>etcharacter_skill_node_sets_enc_title_<clé>;frontend_faction_leaders_frontend_description_<fiche>etfrontend_faction_leaders_localised_description_<fiche>; selon CA,localised_action_pointsetloading_screen_textne servent plus.
Le minimum viable du seigneur§
agent_subtypes, l'unité de bataille, l'art set, les arts, l'uniforme et la variante, faction_agent_permitted_subtypes, names, les textes, et un appel de script.
Palier B : le faire apparaître par script§
Sans startpos, un script peut ajouter le seigneur à une faction qui existe déjà. Ce squelette suit les signatures des scripts de CA, à tester :
-- squelette à tester : un seigneur dans la réserve d'une faction existante
cm:add_first_tick_callback(function()
if cm:is_new_game() then
cm:spawn_character_to_pool("wh_main_brt_bordeleaux", "names_name_<id>", "names_name_<id>",
"", "", 30, true, "general", "<sous-type>", true, "<art set>")
end
end)- Ordre des paramètres de
cm:spawn_character_to_pool: faction, prénom, nom, clan, autre nom, âge, masculin, type, sous-type, immortel, art set. Les noms s'écriventnames_name_<id>. cm:is_new_game(): l'appel n'a lieu qu'au début d'une partie neuve, pas à chaque chargement. Selon la documentation de CA, une partie est « neuve » si elle n'a été sauvegardée qu'une fois, pendant la génération du startpos : si un script a échoué pendant cette génération, une partie neuve peut passer pour une sauvegarde.- Avec une armée :
cm:create_force_with_general(faction, unités, région, x, y, "general", sous-type, prénom, clan, nom, autre nom, chef_de_faction, rappel), dont les unités sont, selon la documentation de CA, des clés deland_units(les mêmes que celles demain_unitschez CA). - Le script va dans
script/, que le jeu charge tout seul (tw-modding, Lua/First Script), sous un nom de fichier unique et préfixé : deux fichiers au même chemin dans deux packs ne se chargent pas tous les deux.campaign/ mod/
Palier C : le choisir à l'écran « Nouvelle campagne »§
start_pos_characters: le personnage (voir la procédure 2).start_pos_starting_general_options:general(le personnage) →frontend_faction_leader(sa fiche), plusprecedenceetexclude_other_options, obligatoires aussi. Sans cette table, aucun seigneur n'est choisissable.- Une fiche
frontend_faction_leaders, à la clé libre :character_image(portrait de 85 × 115, relevé sur ceux de CA au patch 8.1),uniform(scène.csc),video,loading_screen_image,agent_subtype_record,faction. Le schéma du kit (relu à la 9.0) en exige d'autres :voiceover,difficulty,show_full_intro_option,localised_description,frontend_description,startpos_map,override_force_location_xet_y: recopiez une fiche de CA et changez ce qui est à vous. start_pos_factions.playable= 1, puis le startpos régénéré.
Les pièges du seigneur§
- Les tutoriels de Warhammer II. « Custom Lords & Heroes », sur tw-modding, vise Warhammer II : vérifiez chaque table dans le schéma de Warhammer III, où le lien entre un nœud et son arbre passe par
character_skill_node_set_items. - La colonne
tierreste sous 48 (wiki, page descharacter_skill_nodes). startpos_map: CA y met le plus souventdefaultou la clé de la fiche elle-même ; pour une fiche neuve, laissezdefault. Chez nous, une clé neuve dans ce champ a fait planter le chargement.- Un seigneur en garnison : sans réglage, son pointeur reste dans le coin de l'onglet Carte de l'écran de sélection ; renseignez
override_force_location_xetoverride_force_location_yde sa fiche (wiki, page Startpos). Ce sont des fractions : la position du personnage en hex, divisée par la largeur de la carte pour x et par sa hauteur pour y : c'est ce que le jeu grave pour les seigneurs qui ne sont pas en garnison (mesuré chez nous sur trois seigneurs) ; la description du schéma de CA inverse largeur et hauteur.-1laisse la position par défaut (chez CA, Eltharion : 0,398 et 0,420).
Vérifier que le seigneur marche§
- Diagnostics : ni art set ni variante non déclarés, aucune référence invalide.
- Palier A : en bataille personnalisée, il se choisit comme général de sa faction, avec son portrait et son uniforme.
- Palier B : dans une partie neuve de la faction, il figure parmi les seigneurs à recruter, ou à la tête de son armée. Sinon, lisez le journal des scripts : un fichier
script/non vide dans un pack chargé fait écrire au jeu desenable_console_logging script_log_*.txt. - Palier C : à l'écran « Nouvelle campagne », sa fiche paraît avec son portrait et sa description, son pointeur est à sa place sur l'onglet Carte, et la partie commence avec lui.
Exemple complet : le Duc écarlate, de sa faction à sa victoire§
Les trois procédures, appliquées à un vrai seigneur : le Duc écarlate, rendu jouable sur notre carte de la Saison de la Révélation le 23 septembre 2026, puis doté de mécaniques à lui avec la mise à jour 9.0. Le lore, le récit et le statut de chaque mécanique sont dans l'article du Duc ; ici, la technique, brique par brique : tables et colonnes, startpos, gestes dans RPFM, vérifications et pièges. Tout ce qui suit existe dans notre pack ; les chiffres sont des choix de conception, à régler en jeu.
Sept briques, dans l'ordre où on les pose : la faction, le seigneur et sa fiche, ses unités, sa chronique, ses évènements, ses mécaniques, sa victoire. Pour chacune : ses tables et les colonnes qui comptent, ce qu'elle demande au startpos, le geste dans RPFM, la vérification, les pièges.
1. La faction : Mousillon, rendue jouable§
Le Duc mène Mousillon (wh_main_vmp_mousillon), une faction de CA, mineure aux Empires Immortels : la table factions a déjà sa ligne, rien à créer. Tout se joue dans les tables de départ (pour une faction neuve, c'est la procédure 2).
| Table | Ce qui compte | Startpos |
|---|---|---|
start_pos_factions | playable = 1, is_major = 1 ; faction_potential (ce que l'IA reçoit en aide) et cai_personality_group (chez nous, partis des valeurs des Empires) | oui |
start_pos_diplomacy | les guerres et traités de départ | oui |
- Dans RPFM : ouvrez
start_pos_factionsdans le pack des tables de départ (elles ne partent pas dans le mod publié), tapez la clé de la faction dans le filtre en tête de la table, changez les cases, Ctrl+S ; puis régénérez le startpos. - Vérifier : Mousillon se choisit à l'écran « Nouvelle campagne », une fois la fiche du Duc faite (brique 2).
- Piège, les systèmes de CA qui listent leurs factions : plusieurs scripts de CA gardent dans des tables Lua, par nom de campagne, les factions qu'ils servent ; une faction mineure aux Empires n'y est pas. Nous avons ajouté Mousillon à la répartition des repaires vampires (premier repaire à Derrevin Libre) et aux revenus de fond de l'IA, dans leurs tables, après le chargement des fichiers de CA et avant leur démarrage.
- Piège, la technologie qui se retourne : la technologie de CA qui confédère le Duc écarlate, recherchée par le Duc joué, absorberait sa propre faction ; le script la verrouille pour lui (
cm:lock_one_technology_node).
2. Le seigneur légendaire et sa fiche§
Le Duc existe déjà dans la base de CA : son sous-type (wh_dlc05_vmp_red_duke), son unité, ses apparences et, à la 9.0, son trait inné et deux compétences uniques. Le palier A de la procédure 3 est donc fait ; restent ses liens avec la campagne et le palier C.
| Table | Ce qui compte | Startpos |
|---|---|---|
campaign_to_agent_subtypes | campaign_type = votre campagne, agent_subtype = son sous-type : CA déclare ainsi chaque seigneur légendaire des Empires (son schéma cite, par exemple, les formes du Changelin) | non |
start_pos_characters | le Duc : Type = general, subtype, ministerial_position = faction_leader, Name et Surname ; en garnison à Mousillon | oui |
start_pos_starting_general_options | general → le personnage, frontend_faction_leader → sa fiche, plus precedence et exclude_other_options | oui |
frontend_faction_leaders | sa fiche : CA n'en a pas pour le Duc, qui n'est pas jouable aux Empires ; copie de celle de Mannfred, avec son portrait (character_image), sa vidéo (video), son doublage (voiceover), agent_subtype_record, faction, et une scène à nous (uniform, faite sur celle de Vlad) ; prelude_battle et loading_screen_intro_video vidés | régénéré chez nous |
faction_agent_permitted_subtypes | ses trois héros de la 9.0 (Walach Harkon, Krell, Dieter Helsnicht) : les lignes de CA de wh_main_vmp_vampire_counts, recopiées sous Mousillon | non |

- Dans RPFM : dans la table
frontend_faction_leadersdu jeu, sélectionnez la fiche modèle, Copy… → Copy, puis, dans votre fichier, Paste as New Row ; changez la clé (libre) et les colonnes du tableau. Pour les héros : même geste surfaction_agent_permitted_subtypes, en changeantfaction. - Vérifier : à l'écran « Nouvelle campagne », sa fiche paraît avec portrait, vidéo et description, son pointeur est sur Mousillon, et la partie commence avec lui.
- Piège, les héros permis : sans les lignes de
faction_agent_permitted_subtypes, les technologies de la 9.0 qui donnent Walach Harkon, Krell et Dieter Helsnicht ne donnaient rien au Duc joué. - Piège, le chef en garnison : sans
override_force_location_x/sur sa fiche, son pointeur reste dans le coin de l'onglet Carte (procédure 3, « Les pièges du seigneur »).y - Ses objets : ses deux objets de la 9.0 (l'Armure de sang, le Joyau de la non-vie) lui viennent au rang, par le système de quêtes de CA (
set_up_rank_up_listener), branché pour notre carte par un script.
3. Ses unités, en bref§
Rien de neuf : ses troupes sont celles des Comtes Vampires de CA. Trois choses seulement le concernent : start_pos_land_units (ses armées de départ, startpos), faction_to_mercenary_set_junctions (ses régiments de renom ; le schéma du kit la marque pour le startpos) et les récompenses de sa chronique, qui donnent des unités par le script. Pour une unité à vous : la procédure 1.
4. Sa chronique : des missions à lui§
Cinq étapes : « Le Crac de Sang », « Le Sang d'Aquitanie », « Éteindre le phare », « Le Palais scellé », « La Croisade du Graal ». La première : tenir Derrevin Libre en 25 tours, pour 1 000 pièces d'or, une unité et un objet. La finale pose une armée bretonnienne à un lieu du lore, qui attend le Duc. Statut : première étape en essai ; les suivantes, testées hors jeu.
| Table | Ce qui compte | Startpos |
|---|---|---|
missions | une ligne par étape : key, mission_type (le type de l'objectif principal, par exemple CONTROL_N_REGIONS_INCLUDING), ui_image, event_category = Military, sticky_by_default = 1, can_be_manually_cancelled = 0, generate = 0 ; copiée d'une mission narrative de CA | non |
text/ | missions_localised_title_<clé>, missions_localised_description_<clé> ; pour un objectif scripté, mission_text_text_<clé> | non |
Les objectifs et les récompenses ne sont pas dans la table : le script les pose, avec le mission_manager de CA. La première étape, en abrégé :
-- première étape de la chronique (abrégée)
local mm = mission_manager:new("wh_main_vmp_mousillon", "saison_chronique_duc_1");
mm:set_mission_issuer("CLAN_ELDERS");
mm:add_new_objective("CONTROL_N_REGIONS_INCLUDING");
mm:add_condition("total 1");
mm:add_condition("region wh_dlc05_aquitaine_derrevin_libre");
mm:add_payload("money 1000");
mm:set_turn_limit(25);
mm:trigger();
- Dans RPFM : ouvrez
missionsdu jeu, prenez une mission narrative de CA (la nôtre part dewh3_dlc27_mission_sla_narrative_05), Copy… → Copy, Paste as New Row dans votre table, clé neuve. L'image :ui_image=<dossier>/, pour le fichier<nom> ui/du pack (les nôtres font 800 × 450).eventpics/ <dossier>/ <nom>.png - Vérifier : au tour 2, où la chronique commence, la mission paraît avec son titre, son image, ses objectifs et son délai.
- Piège, les objectifs scriptés : Warhammer III n'a pas de table
mission_textdans ses packs (schéma de RPFM, 9.0) ;override_text mission_text_text_<clé>lit la seule clé de texte, à mettre dans votre.loc. La tablemission_textdu kit ne sert qu'aux textes. - Le modèle de CA : ses missions narratives (
wh3_dlc27_dechala_narrative.lua, lu au patch 8.1) : objectifs posés parmission_manager, étapes enchaînées surMissionSucceeded; chez nous, une étape échouée (MissionFailed) passe aussi à la suivante.
5. Ses évènements : incidents et dilemmes§
Neuf incidents annoncent au joueur ce qui arrive au Duc (le tombeau de Galand, un domaine d'Aquitanie repris ou perdu, la faveur gagnée ou perdue, le décret de Richemont, un serment brisé…) ; deux dilemmes le font choisir : « L'impôt du sang » (lever l'impôt ou épargner les vilains) et « Le serment du sang » (lier un seigneur bretonnien par le sang, ou l'anéantir).
| Table | Ce qui compte | Startpos |
|---|---|---|
incidents | key, localised_title, localised_description, ui_image, override_icon, generate = 0 ; copiée d'un incident de CA sans cible | non |
cdir_events_incident_option_junctions | deux lignes : GEN_TARGET_NONE, et VAR_CHANCE = 100 | non |
dilemmas | les mêmes colonnes qu'incidents ; copiée d'un dilemme de CA | non |
cdir_events_dilemma_choice_details | une ligne par choix : dilemma_key, choice_key (FIRST, SECOND), localised_choice_label, localised_choice_title | non |
cdir_events_dilemma_option_junctions | GEN_TARGET_MODEL, et VAR_CHANCE = 0 : le jeu ne le tire jamais seul, le script le lance | non |



- Dans RPFM : sur la clé d'un incident ou d'un dilemme de CA, clic droit → Find References montre ses lignes dans les tables de jonction ; copiez-les, collez-les sous votre clé, et donnez des nombres neufs à la colonne
iddes jonctions (clic droit → Generate Ids). - Les textes :
incidents_localised_title_<clé>,dilemmas_localised_title_<clé>; pour un choix, la clé de la ligne est le dilemme suivi du choix, sans séparateur :cdir_events_dilemma_choice_details_localised_choice_label_<dilemme>FIRST. - Vérifier : l'incident ou le dilemme paraît avec son image et ses textes ; chaque choix a la suite prévue.
- Piège, les messages de script : avant ses incidents, le Duc parlait par des messages de script à index d'image de CA, qui montraient des images sans rapport (les Hommes-bêtes, la Dame du Lac) ; un incident à votre clé choisit son image et ses textes.
- Piège, l'image d'un incident : CA y met un nom seul (
generic) ; nous y mettons<dossier>/, comme pour une mission : le rendu reste à confirmer en jeu.<nom>
6. Ses mécaniques : paquets d'effets, ressources, scripts§
Les mécaniques du Duc tiennent en trois choses : des paquets d'effets à ses clés, les ressources des vampires de CA, et des scripts Lua. La règle qui en découle : la table donne ce qui s'affiche (nom, icône, cible, image, texte), le script décide quand et combien.
| Mécanique | Déclencheur | Ce qu'elle fait |
|---|---|---|
| Le Baiser d'Abhorash | le premier chargement | le rituel de lignée des Dragons de sang de CA, accompli une fois (cm:perform_ritual) |
| Le duché perdu | RegionFactionChangeEvent sur ses trois domaines d'Aquitanie | un paquet selon les domaines tenus : « Duc dépossédé » (aucun : commandement −4, ordre public −2), reconquête (un : commandement −2), rien (deux), « Le Duc restauré » (les trois : commandement +6, revenus +10 %, reconstitution +10 %) |
| La faveur d'Abhorash | BattleCompleted, CharacterWithdrewFromBattle | un paquet sur l'armée du Duc, en trois degrés (attaque et commandement +6, +8, +10) ; perdu s'il recule ou s'il perd, usé après 5 tours sans bataille |
| L'impôt du sang | RegionFactionChangeEvent (une région bretonnienne prise) | un dilemme : du Sang (+300) et des cadavres, ou de l'ordre public ; la traque avance ou recule |
| Le serment du sang | FactionBeginTurnPhaseNormal | un dilemme : un seigneur bretonnien réduit à une seule terre devient son vassal (deux au plus, trois duché restauré) |
| La traque de Richemont | FactionBeginTurnPhaseNormal | dès le tour 8, tous les 10 tours tant qu'il tient un domaine d'Aquitanie : une armée de Chevaliers de la Quête, de 10 à 18 unités selon le tour |
| Le tombeau de Galand | FactionBeginTurnPhaseNormal | une armée du Duc qui commence son tour au Pré de Ceren perd 15 % de ses effectifs |
| Le défi (codé, pas encore vu en jeu) | FactionBeginTurnPhaseNormal, puis MissionSucceeded et MissionFailed | dès le tour 6, un seigneur bretonnien en guerre et proche de lui le défie : une mission de 8 tours, sa chute (ELIMINATE_CHARACTER_IN_BATTLE) et une victoire du Duc en personne (objectif SCRIPTED) ; relevé : 1 500 or et du Sang (+150) ; dérobé : la faveur d'Abhorash brisée, chaque vassal peut rompre son serment (25 %) |
Le défi est prévu et codé, mais pas encore vu en jeu : la priorité va d'abord à une version jouable. Il ne restera que s'il se montre utile en partie ; ses chiffres (délai, distance, récompenses) sont des choix de conception, à régler en jeu.


- Les paquets d'effets : une ligne de
effect_bundlespar paquet (key,localised_title,localised_description,ui_icon,bundle_target: faction, force ou region) ; les effets, ceux de CA, sont posés parcm:create_new_custom_effect_bundle,add_effectetcm:apply_custom_effect_bundle_to_faction(ou_to_force), comme le fait CA. - Les ressources : celles des vampires de CA, sans table neuve : le Sang (
wh3_dlc29_vmp_power), parcm:faction_add_pooled_resourceou une charge de dilemme ; les cadavres (wh3_dlc29_vmp_corpses), comptés par province, parcm:pooled_resource_factor_transaction. - Les scripts : dans le dossier de notre campagne, chargés par son script de démarrage (pour un mod des Empires,
script/) ; l'état se garde parcampaign/ mod/ cm:set_saved_valueetcm:get_saved_value, sous un préfixe à vous. Dans RPFM, un script s'ajoute comme un fichier : clic droit sur la racine → Create… → Create Text, ou Add File/s. - Piège, l'évènement qui n'arrive pas : à la 9.0, sur notre carte,
FactionTurnStartn'atteignait aucun écouteur de mod : trois conditions d'écouteurs de CA lisaient des systèmes absents de notre carte, et leur erreur annulait l'évènement pour tous. Nos débuts de tour passent donc parFactionBeginTurnPhaseNormal, et chaque écouteur est protégé (pcall), pour qu'une erreur soit nommée au journal au lieu de tout couper. - Piège, la mécanique muette : un paquet dont la ligne de
effect_bundlesmanque au pack, un texte absent des.loc: rien ne plante, rien ne paraît. Cherchez vos clés dans le pack (Global Search, source Packfile). - Piège, une ressource partagée : une ressource ou un rituel de CA liés aux Empires, repris tels quels sur une autre carte, ont fait planter une infobulle chez nous ; donnez-leur vos clés.
7. Sa victoire§
CA ne donne pas de liste de victoire au Duc écarlate. La sienne suit le format de la 9.0 : une victoire courte et une longue, récompensées sans finir la partie ; seule la domination (27 de nos 57 colonies, la proportion des Empires) la termine. Statut : en essai.
- Courte : tenir la province d'Aquitanie, y bâtir le Tombeau du Duc écarlate (à Gien, un monument de notre carte), utiliser cinq fois les Décrets de sang.
- Longue : la courte, dix Décrets de sang, deux seigneurs de lignée éveillés dans des repaires, l'Aquitanie et Quenelles détruites, le palais scellé de Mousillon rouvert, et la finale de sa chronique.
Aucune table neuve, aucun startpos : le moteur de victoire de CA (victory_objectives_config.lua) est chargé depuis son dossier, jamais recopié, et sa liste des Empires remplacée par la nôtre, écrite avec ses propres générateurs d'objectifs. La courte :
-- la victoire courte du Duc écarlate
short = {
objectives = {
generate_CONTROL_N_PROVINCES_INCLUDING_objective({"wh_dlc05_aquitaine"}, 1),
generate_SCRIPTED_MISSION_objective("saison_victoire_duc_tombeau",
"mission_text_text_saison_victoire_duc_tombeau"),
generate_PERFORM_RITUAL_BY_CATEGORY_objective("VAMPIRE_PROVINCE", 5,
"mission_text_text_wh3_dlc29_vmp_use_shyish_actions")
},
payloads = {effect_bundle = "wh3_dlc29_bundle_ie_victory_objective_vmp_lair_builder"}
}- Les objectifs scriptés : cochés par
cm:complete_scripted_mission_objective(le tombeau bâti), ou comptés parcm:increase_scripted_mission_count(un repaire éveillé, sur l'évènement de CAScriptEventVampireLairAwakened) ; leur texte,mission_text_text_<clé>, dans vos.loc. - Piège, la liste des Empires : le moteur de CA construit la sienne au chargement, avec des régions absentes de notre carte ; son écouteur (
InitializeVictoryObjectivesIEConfig) est retiré avant, et son rappel de premier tour, qui n'est pas protégé, est enveloppé d'unpcall. - Vérifier : dans le panneau des objectifs de victoire, les deux listes du Duc ; en jeu, chaque objectif qui se coche.
Récapitulatif : startpos ou pas§
Dans RPFM, les deux familles ne vont pas au même endroit : les tables start_pos_* dans le pack qui sert à générer le startpos (retirées du mod publié), le reste dans le mod lui-même. Tables neuves dans un pack joué : un essai de démarrage avant toute annonce. La génération : section suivante, et le guide des outils.
Ce qui exige un nouveau startpos§
Le startpos est la sauvegarde du tour 0 : ce qu'il enregistre ne change que si on le régénère. Le schéma de l'Assembly Kit marque d'un indicateur, requires_startpos_reprocess, les colonnes qui y entrent : lisez-le dans TWaD_<table>.xml. Au patch 8.1, 42 tables en portent un :
- 25 des 29 tables
start_pos_*: factions, personnages, traits, objets, unités, régions, colonies, garnisons, diplomatie, options de seigneur, technologies, conditions de victoire… ; campaigns,campaign_maps,campaign_map_playable_areas,campaign_map_regions,campaign_map_attritions,campaign_map_masks_to_excluded_regions,regions,region_to_province_junctions,climatesetcampaign_ground_types(campaign_mapsexiste côté kit, pas dans les packs de Warhammer III, où une carte se déclare parcampaigns.map_nameetcampaign_map_playable_areas) ;- sept tables de mercenaires :
mercenary_pools,mercenary_unit_groups,mercenary_pool_modifiers,mercenary_pool_to_groups_junctions,mercenary_pool_type_enums,faction_to_mercenary_set_junctionsetprovince_to_mercenary_set_junctions.
Unités, sous-types, apparences, compétences, textes et table factions se modifient en base de données seule. Trois voies produisent un 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é : notre génération lit deux packs, et Build Startpos n'en charge qu'un (le guide des outils). La consigne de RPFM 5.0.6 range pourtant Warhammer 3 parmi les jeux où Build Startpos marche : pour un mod d'un seul pack, essayez-le d'abord.
Build Startpos, dans RPFM§
Clic droit sur la racine du pack → Build Startpos fait générer le startpos par le jeu lui-même (dans la palette, Ctrl+Shift+P : « Build Startpos »).
- Mettez dans le pack les tables
start_pos_*etcampaigns: créez-les, ou importez-les de l'Assembly Kit par le panneau Dependencies. La consigne affichée par RPFM réclame aussidb/, mais pas pour Warhammer III (code de RPFM ; journal des changements, version 4.3.11).victory_objectives.txt - Le pack ouvert doit être enregistré dans le dossier
datadu jeu (Save Pack As…, ou PackFile → Open From Data) : sinon RPFM refuse. - Clic droit sur la racine du pack → Build Startpos ; choisissez la campagne (la liste vient de votre table
campaigns: une campagne dont la lignecampaignsn'est que dans le kit n'y figure pas). Ne cochez Process HLP and SPD data (les données de carte de l'IA,hlp_data.esfetspd_data.esf) que pour une carte neuve ; RPFM crée lui-même le dossier<jeu>\où le jeu les écrit (à la main, créez-le avant la génération, sinon ni hlp ni spd). Durée très variable : de 16 à 22 s chez nous (400 × 440 et 560 × 905 hex, génération par undata\ campaign_maps\ <carte>\ user.script.txtécrit à la main, qui lance le même traitement) ; le tutoriel de carte de campagne de tw-modding compte moins d'une minute pourspd, environ cinq minutes pourhlpsur une carte moyenne et bien plus d'une heure sur une grande ; RPFM compte de 10 à 30 minutes. - Cliquez Build Startpos : RPFM écrit dans
user.script.txtla lignemoddu pack ouvert etprocess_campaign_startpos <campagne> <sous-départ>;(ce second argument reste vide pour Warhammer III), puis le jeu se lance par Steam (cliquez Play dans le lanceur si besoin), génère et se referme tout seul. Ne fermez pas RPFM entre-temps. - Une fois le jeu refermé, cliquez Hit this when the game is closed : RPFM range
campaigns/(et, si l'option était cochée, les fichiers hlp et spd) dans le pack, et remet votre<campagne>/ startpos.esf user.script.txtcomme avant ; il laisse à côté une copie,user.script.txt.bak. - Enregistrez le pack (Ctrl+S), puis lancez une campagne neuve.
Une précision : on écrit les tables start_pos_* dans le kit (Dave) ou dans RPFM, mais le jeu ne lit pas les XML du kit ; pour la génération, elles doivent donc être dans un pack chargé (pour Build Startpos, le pack même qu'il génère). Une fois le startpos produit, retirez-les du pack publié : elles ne servent plus. Chez nous, le jeu valide à chaque lancement les tables start_pos_* d'un pack de mod, et %APPDATA%\ nomme alors l'enregistrement fautif.
RPFM pour une IA : le serveur MCP§
Depuis sa version 5, RPFM a un serveur, rpfm_server.exe. Il parle MCP (Model Context Protocol), la prise standard des assistants IA : une IA branchée dessus ouvre les packs, lit et écrit les tables, cherche partout et lance les diagnostics, dans sa propre session, séparée de la fenêtre de RPFM.
- Si la fenêtre de RPFM est ouverte, son serveur tourne déjà : elle le lance elle-même. Sinon, lancez
rpfm_server.exesans argument (il n'a pas d'option--help: il démarre aussitôt). Il écoute sur127.0.0.1:45127et s'arrête quand la dernière session est fermée (une connexion WebSocket coupée garde sa session cinq minutes ; depuis la 5.1.0, une session MCP inactive cinq minutes est fermée). - Branchez votre assistant sur
http://(Streamable HTTP). Avec Claude Code :127.0.0.1:45127/ mcp claude mcp add --transport http rpfm http://. Tout client MCP compatible Streamable HTTP convient.127.0.0.1:45127/ mcp - Demandez-lui de lire d'abord la ressource « Initialization guide » du serveur : elle décrit l'ordre des appels (choisir le jeu, vérifier le schéma, ouvrir le pack).
set_game_selected (warhammer_3, rebuild_dependencies: true)
→ is_schema_loaded (sinon update_schemas)
→ open_packfiles (rend le pack_key)
→ open_pack_info (l'arbre du pack)
→ decode_packed_file (ex. db/land_units_tables/<fichier>)
→ fields_processed (la forme des lignes)
→ save_packed_file_from_view
→ diagnostics_check
→ save_packfile- Une session = un état (jeu choisi, packs ouverts) : tout faire dans la même session,
set_game_selecteden tête. Chaque connexion a sa session : l'IA ne voit pas les packs ouverts dans votre fenêtre. Par prudence, n'éditez pas le même pack des deux côtés. - Les lignes s'écrivent au format « traité » : appelez
fields_processedsur la définition avant de construire une ligne. Exemple : les colonnesr,g,bd'une région y deviennent une seule valeurColourRGB, en fin de ligne ; sinon l'enregistrement refuse (« expected a row with 6 fields, but we got a row with 8 »). - Les arguments complexes (
Definition,GlobalSearch,NewFile) se passent en chaîne JSON. Une table neuve :new_packed_fileavec{"DB": ["<fichier>", "land_units_tables", <version>]}. - Retirer une ligne du jeu :
add_keys_to_key_deletesinscrit ses clés dans une tabletwad_key_deletesdu pack (voir « Les règles des packs »). build_starpos(c'est l'orthographe de l'outil ; argumentspack_key,campaign_id,process_hlp_spd) répond « Success » en zéro seconde : cela veut dire « jeu lancé », pas « startpos construit ». Attendez que le jeu se referme, puis appelezbuild_starpos_postavec les mêmes arguments : il rangecampaigns/(et les fichiers hlp et spd) dans le pack et remet votre<campagne>/ startpos.esf user.script.txt; enfinsave_packfile. Pour abandonner :build_starpos_cleanup. Sans l'un des deux,user.script.txtgardequit_after_campaign_processing;et le jeu se refermera à chaque lancement. Avec RPFM 5.1 ou plus, la session est fermée après cinq minutes d'inactivité, alors qu'une génération avec hlp et spd peut durer de 10 à 30 minutes selon RPFM : envoyez une commande légère toutes les 2 à 3 minutes (list_open_packs) ou rouvrez le pack avantbuild_starpos_post(déduit du code, pas encore essayé).- Avant
build_starpos: le pack doit être ouvert par son chemin dans<jeu>\, écrit avec des barres obliques (data\ /), sinon « The Pack needs to be in /data » ;build_starpos_get_campaign_idsne liste une campagne que si le pack contient sa lignecampaigns_tables;build_starpos_check_victory_conditionscherchedb/, inutile pour Warhammer III.victory_objectives.txt - La mémoire de
rpfm_server: en 5.0.6, chaque connexion MCP crée une session jamais libérée (de 2 à 10 Go) ; chez nous, après une nuit de packs construits par MCP, il tenait près de 70 Go. La 5.1.0 corrige cette fuite. Mesurez sa mémoire privée ((Get-Process rpfm_server).PrivateMemorySize64, ou « Mémoire validée »), pas la mémoire de travail (chez nous, 91 Mo de mémoire de travail pour 9,4 Go de mémoire privée) ; au-delà de 8 Go, relancez-le. Cette fuite n'était pas la cause de notre plantage de rendu intermittent : il est revenu sur un PC redémarré, serveur éteint (le guide des outils). - Autres outils utiles :
list_open_packsrend lespack_keyouverts ;call_commandappelle une commande du serveur qui n'a pas encore d'outil à son nom (manuel, page MCP). Chez nous,extract_packed_filesa exigéexport_as_tsv, que son schéma dit facultatif (sans lui, une réponse vide et rien d'écrit), etopen_packfilesavec plusieurs chemins n'a rendu qu'une seule clé (à confirmer) : ouvrez un pack à la fois. - Au 20 septembre 2026, le serveur de RPFM 5.0.6 exposait environ 150 outils, 11 invites et 11 ressources : packs, fichiers, tables, dépendances et schémas, recherche, diagnostics, optimiseur, traductions, startpos ; le manuel en ligne de la 5.1 en décrit 155.
- Si CAIME (Campaign AI Map Editor), l'éditeur du Campaign Map Toolkit, lit sa base par RPFM, il lui faut
rpfm_cli.exe, celui d'une version 4 de RPFM (nous avions la 4.2.7) : ni la 5.0 ni la 5.1 ne le livrent (le guide CAIME).
Pour une IA qui lit cette page§
Pour une IA qui aide à modder Total War: Warhammer III avec RPFM, l'essentiel en faits vérifiables, relevés sur RPFM 5.0.6 et le patch 8.1 du jeu (septembre 2026), relus pour la mise à jour 9.0, puis corrigés le 5 octobre 2026 (RPFM 5.1.0 et 5.1.1, jeu en 9.0.2) : à revérifier après une mise à jour (schémas, cache des dépendances ; et, si l'Assembly Kit sert aussi, les lignes ajoutées à raw_data\, que Steam réécrit).
- RPFM 5.0.6 : menus PackFile, MyMod, View, Game Selected, Tools, About (plus de Special Stuff). PackFile → Settings ; About → Check Updates (bouton des schémas) ; Game Selected → Generate Dependencies Cache ; MyMod → New MyMod (crée
<MyMod>\) ; Ctrl+Shift+F recherche globale ; panneau Diagnostics → Check PackFile. Clic droit sur la racine du pack : Install, Uninstall, Save Pack For Release…, Optimize PackFile, Build Startpos. Palette : Ctrl+Shift+P (actions), Ctrl+P (fichiers).warhammer_3\ <nom>.pack - Fichier de table :
db/, jamais<table>_tables/ <préfixe>_<nom> data__, ni chiffre final ni espace. Ajouter : clé neuve. Modifier une ligne du jeu : même clé, fichier dont le nom trie avantdata__(@,!). Retirer une ligne du jeu :twad_key_deletes(Warhammer III ≥ 6.3 ; outil MCPadd_keys_to_key_deletes), jamais une table recopiée ;mod_disabledn'existe que dans deux tables. - Clé de texte :
<table>_<colonne>_<clé>; les.locd'un mod valent pour toutes les langues ; jamais une clé du jeu. - Unité : même clé dans
main_units.unitetland_units.key;building_units_allowedà chaque niveau de bâtiment,key= entier unique (Generate Ids). - Faction :
start_pos_factions.IDunique sous 2³¹,cai_personality_grouprequis ; un seul startpos par campagne ; Empires Immortels et Royaumes du Chaos : Mixer. Jamais de table*_ownership_content_pack_junctionspour une clé à vous (le jeu se ferme sans rapport) ; modèles d'emplacement et bâtiments de colonie pris tels quels chez CA pour la sous-culture du maître ; pas de colonie au départ pour une faction que CA fait partir en horde. - Seigneur choisissable :
start_pos_starting_general_options+frontend_faction_leaders(startpos_map=default) +playable= 1 + startpos ; par script (à tester) :cm:spawn_character_to_pool, nomsnames_name_<id>. - Seigneur jouable, exemple complet (le Duc écarlate) :
start_pos_factions(playable,is_major),start_pos_characters,start_pos_starting_general_options+frontend_faction_leaders,campaign_to_agent_subtypes,faction_agent_permitted_subtypes;missions,incidents,dilemmas,effect_bundlesà vos clés, dont les objectifs, charges et effets sont posés en Lua ; débuts de tour surFactionBeginTurnPhaseNormal, écouteurs protégés. - Startpos à régénérer : tables dont un champ porte
requires_startpos_reprocess(lireTWaD_<table>.xml) ; le reste, en base seule. - MCP :
http://(Streamable HTTP), une session par connexion, séparée de la fenêtre ; ressource « Initialization guide » d'abord ;127.0.0.1:45127/ mcp set_game_selected(warhammer_3,rebuild_dependencies: true),is_schema_loaded(sinonupdate_schemas) ; lignes selonfields_processed; arguments complexes en chaîne JSON ;build_starpos(pack ouvert depuis<jeu>/; « Success » = jeu lancé) → fermeture du jeu →data/ build_starpos_post→save_packfile; pour abandonner,build_starpos_cleanup; en 5.1+, session fermée après 5 min d'inactivité (commande légère toutes les 2-3 min pendant une génération longue, à vérifier) ; relancerrpfm_serverquand sa mémoire PRIVÉE dépasse 8 Go (fuite des sessions en 5.0.6, corrigée en 5.1.0 ; elle n'était pas la cause de notre plantage de rendu). twad_key_deletes: depuis la 9.0, RPFM 5.0.6 écrit à l'envers la clé deland_units_to_unit_abilites_junctions; 5.1.0 ou plus, ou la clé à la main (land_unitpuisability), puis vérifier en jeu.- Demandez à l'humain avant de lancer le jeu, de piloter l'écran ou de publier ; ne supprimez rien : rangez, seul l'humain supprime.
- Lire et documenter un format de fichier, comme le font RPFM et CAIME : oui. Modifier les programmes de CA ou contourner leurs limites : non, avec une exception assumée de l'atelier, dite franchement dans le guide BOB : BOB lancé sous débogueur pour le terrain d'une carte neuve. Quand un outil bute, un témoin, puis la communauté (Discord de CAIME, tw-modding).
Sources et liens§
- Manuel de RPFM, en particulier Datacores, Optimising a mod et MCP ; code de RPFM à l'étiquette v5.0.6 (emplacement des menus, Build Startpos, serveur) ; versions publiées ; RPFM 5.0.6 lui-même (libellés, journal des changements).
- Wiki tw-modding : RPFM For Dummies (écrit pour RPFM 2.3.2, menus anciens), RPFM Post-Setup for Beginners, Localisation, Submodding, Startpos, Lua/First Script, Example Scripts.
- Startpos des Empires Immortels et des Royaumes du Chaos : MIXER – Mixu's Unlocker, de Mixu.
- Unités : Creating Custom Units for WH3, de Casualfield (lien donné par tw-modding), Unit Card Guide, Building units allowed tables, Units custom battle permissions tables.
- Seigneurs : Custom Lords & Heroes (Warhammer II, par Nanu), Agent subtypes tables, Character skill nodes tables.
- Scripts, par Vandy : Campaign Custom Starts, campaign_manager (
cm:create_force_with_general,cm:is_new_game) et episodic_scripting (cm:spawn_character_to_pool,cm:transfer_region_to_faction,cm:add_unit_to_faction_mercenary_pool). - Données du jeu relues sur le patch 8.1 : schéma de l'Assembly Kit (
TWaD_*.xml,TExc_LocalisableFields.xml), lignes de CA prises pour modèles (Chevaliers errants, Alberic, Bordeleaux),lib_campaign_manager.lua. - L'exemple du Duc écarlate : Rendre jouable le Duc écarlate (lore, récit, statut de chaque mécanique) ;
victory_objectives_config.luaetwh3_dlc27_dechala_narrative.luade CA, lus dans les fichiers du jeu (le premier à la 9.0, le second au patch 8.1). - Nos autres guides : les outils du moddeur, CAIME, Terry, BOB, modder avec une IA ; et l'atelier des moddeurs.
Questions fréquentes
Quelle version de RPFM utiliser pour Warhammer III ?
La dernière. Ce guide a été écrit sur la 5.0.6 (sortie le 1er août 2026), dont il suit les menus ; depuis sont sorties la 5.1.0 (28 septembre) et la 5.1.1 (4 octobre), qui corrigent la fuite de mémoire des sessions MCP et l'ordre des clés de twad_key_deletes depuis la 9.0. Le manuel en ligne décrit la 5.1, parfois avec d'autres libellés que la fenêtre : la palette (Ctrl+Shift+P) retrouve l'action par son nom.
Mon mod fait planter le jeu au lancement : que vérifier ?
Les diagnostics de RPFM (Check PackFile). Une référence invalide est l'une des premières causes de plantage au lancement, et un champ obligatoire vide peut faire planter le jeu, souvent sans message d'erreur.
Faut-il un nouveau startpos pour ajouter une unité ?
Non. Seules les armées et garnisons de départ et les réserves de mercenaires l'exigent, et un script peut s'en charger (cm:create_force_with_general, cm:add_unit_to_faction_mercenary_pool).
Peut-on ajouter une faction sans toucher au startpos ?
Non : tout ce qui la fait exister passe par le startpos, dont chaque campagne n'a qu'un exemplaire, qu'un mod remplace en entier. Votre mod sera donc incompatible avec tout autre mod de startpos de cette campagne. Pour les Empires Immortels et les Royaumes du Chaos, demandez plutôt l'ajout de votre faction à Mixer, le mod de startpos de la plupart des joueurs, puis faites le reste par script.
Pourquoi mon unité n'apparaît-elle pas en bataille personnalisée ?
Il lui faut main_units, land_units, unit_variants, sa carte (PNG de 60 × 130), son nom en .loc et une ligne units_custom_battle_permissions pour la faction de bataille, avec general_unit à 0.
Comment rendre jouable un seigneur légendaire de CA qui ne l'est pas ?
Comme le Duc écarlate : sa faction jouable et majeure (start_pos_factions), le personnage dans start_pos_characters, une fiche frontend_faction_leaders (copie d'une fiche voisine) reliée par start_pos_starting_general_options, son sous-type déclaré pour la campagne (campaign_to_agent_subtypes), ses héros permis (faction_agent_permitted_subtypes), puis un startpos régénéré. Ses mécaniques viennent ensuite : missions, incidents, dilemmes et paquets d'effets à vos clés, menés par des scripts Lua.
Comment rendre un seigneur choisissable à l'écran de nouvelle campagne ?
Le personnage dans start_pos_characters, une ligne start_pos_starting_general_options qui le relie à une fiche frontend_faction_leaders (startpos_map à default), start_pos_factions.playable à 1, puis un startpos régénéré.
Mes textes remplacent ceux du jeu dans toutes les langues : pourquoi ?
Le jeu charge les .loc d'un mod quelle que soit la langue du joueur. N'ajoutez que des clés neuves, et faites un pack par langue.
Comment brancher une IA sur RPFM ?
Si la fenêtre de RPFM est ouverte, son serveur tourne déjà ; sinon, lancez rpfm_server.exe (RPFM 5). Ajoutez ensuite le serveur MCP http:// à votre assistant ; avec Claude Code : claude mcp add --transport http rpfm http://.
Mon mod n'apparaît pas dans le lanceur : pourquoi ?
Vérifiez qu'il est installé dans le dossier data du jeu et qu'il est de type Mod : clic droit sur la racine du pack, Change PackFile Type, Mod. Dans le même sous-menu, la case Index Includes Timestamp doit être décochée : selon RPFM, un pack qui l'a cochée n'apparaît pas dans le lanceur officiel.
Ma modification d'une unité du jeu ne change rien : pourquoi ?
Votre fichier de table ne passe sans doute pas devant celui du jeu (data__). Le choix sûr : commencez le nom de votre fichier par @ ou !, gardez la clé de la ligne du jeu, puis réinstallez le pack.
Des tables sont signalées Outdated après une mise à jour du jeu : que faire ?
Mettez à jour les schémas (About, Check Updates), puis le cache (Game Selected, Generate Dependencies Cache). Ensuite, clic droit sur chaque table signalée, Update Table, et relisez les colonnes neuves : RPFM y met des valeurs par défaut.
Comment retirer une ligne du jeu ?
Avec la table twad_key_deletes (Warhammer III, depuis le patch 6.3), jamais en recopiant la table du jeu : créez une fois twad_key_deletes_tables dans votre pack, sélectionnez les lignes dans la table du jeu, puis clic droit, Add Selection to Key Deletes. Ne retirez pas une ligne encore citée par une autre table : le jeu planterait. Depuis la 9.0, RPFM 5.0.6 écrit à l'envers la clé de land_units_to_unit_abilites_junctions : prenez la 5.1.0 ou plus, ou écrivez-la à la main, et vérifiez en jeu.
Le jeu se ferme dès son lancement : pourquoi ?
Une ligne quit_after_campaign_processing; est restée dans user.script.txt (%APPDATA%\) : une génération de startpos a été interrompue avant sa fin. Retirez la ligne ou remettez le fichier d'avant. Avec Build Startpos, cliquez toujours Hit this when the game is closed, qui le remet. S'il se ferme en quelques secondes sans rapport ni mp_log : une table *_ownership_content_pack_junctions pour une clé à vous ? Retirez-la ; sinon, retirez une table à la fois sur une copie du pack.
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.