Atlas de Bretonnie

Journal de l'atelier · · 12 min de lecture

Rendre jouable le Duc écarlate : du lore aux tables du jeu

Dans la mini-campagne de Warhammer I, seuls Orion et Durthu étaient jouables. Dans notre portage, le Duc écarlate l'est depuis le 23 septembre, et la refonte des vampires de la 9.0 nous a permis de lui donner des mécaniques à lui. Voici lesquelles, où elles en sont, et la technique : tables, Lua, textes, pack et essais.

La carte de campagne en jeu : les forêts d'Athel Loren, leurs routes et, au fond, des montagnes
Capture en jeu : la carte de la Saison dans Warhammer III.

Le point de départ : un duc sans son duché

Le Duc écarlate, the Red Duke en anglais, vient du lore de Games Workshop. Ancien duc d'Aquitanie devenu vampire, il fut vaincu à la première bataille du Pré de Ceren et emmuré dans une tour de marbre ; libéré, il revint pour la seconde, où le tombeau de son fils Galand le mit en fuite. Sources : le livre d'armée Vampire Counts (7e édition), le roman The Red Duke de C. L. Werner, Circle of Blood et Knights of the Grail.

D'après les données de départ de Warhammer I, il est déjà dans la Saison, chef de Mousillon, une faction de l'IA en guerre contre Bastogne ; on ne pouvait pas le jouer. Or, dans le lore, son pays est l'Aquitanie : Mousillon est le choix de CA, qui ne rend pas cette faction jouable.

Jouable le 23 septembre, repensé avec la 9.0

Le 23 septembre à 5 h 15, j'ai demandé quatre seigneurs de plus à l'écran de sélection, dont le Duc ; à 5 h 47, ils y étaient. Sa fiche de sélection est une copie de celle de Mannfred, colonnes remplacées, et sa scène est à lui, faite sur celle de Vlad (épée et bouclier, comme le Duc), avec le modèle du Duc à la place.

Jouable ne veut pas dire captivant. Le jour même, j'ai demandé qu'une session de Claude s'en charge après la 9.0, pour « que le Duc rouge s'intègre bien dans tout ça, avec ses propres mécaniques, ses propres quêtes, ses propres objectifs ». Méthode : le lore sourcé d'abord, les propositions ensuite, et je choisis.

Il part de Mousillon avec Château Rachard, Martel et Yremy, en guerre contre Bastogne et, depuis le 24 septembre, contre l'Aquitanie : Richemont d'Aquitanie a ordonné qu'on le traque dans toute la Bretonnie, un ordre toujours valable (The Red Duke ; Knights of the Grail). Avec Bastogne, la paix est bloquée quinze tours puis rouverte, comme entre Kemmler et Parravon, car l'IA signait la paix vers le tour 6 et ne se battait plus (codé mais pas encore vu en jeu).

Depuis la 9.0, il a la refonte des Comtes Vampires : repaires, lignées, cadavres et Décrets de sang. Son premier repaire est à Derrevin Libre, dans son ancien duché, au pied des ruines du Crac de Sang (lieu du roman, placé sur notre carte par le projet). Ses technologies sont celles des seigneurs vampires de CA, avec des seuils en cadavres divisés par deux, notre carte étant bien plus petite que les Empires Immortels. Et le Baiser d'Abhorash (The Red Duke) : sa faction commence avec un niveau de la lignée des Dragons de Sang.

Tout ce socle est en essai : codé et vu dans des essais automatiques courts (2 à 5 tours). Nouveau, codé mais pas encore vu en jeu : deux autres repaires, tirés au hasard, le Duc servi en premier.

Ses mécaniques, une par une

Chez CA, aucun seigneur vampire n'a de mécanique à lui, sauf Neferata ; celles du Duc tiennent en scripts Lua, paquets d'effets, dilemmes, incidents et missions.

  • La chronique : cinq étapes, du Crac de Sang au Sang d'Aquitanie, puis « Éteindre le phare » (Turris Vigilans et Albéric) et le Palais scellé, jusqu'à la finale, la Croisade du Graal. Première étape en essai ; les suivantes, testées hors jeu.
  • Les victoires : la courte, reprendre la province d'Aquitanie, y bâtir le Tombeau du Duc écarlate, à Gien, et utiliser cinq fois les Décrets de sang ; la longue, 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 sa finale. Elles récompensent sans finir la partie : seule la domination (27 des 57 colonies) la termine. En essai.
  • L'ordre de Richemont : l'Aquitanie lui fait la guerre sans paix possible. S'il prend un domaine d'Aquitanie, des Chevaliers de la Quête arrivent trois tours plus tard, puis, dès le tour 8, tous les dix tours tant qu'il en tient un, de 10 à 18 unités selon le tour. Codé mais pas encore vu en jeu.
  • Le tombeau de Galand : chaque tour passé sur le Pré de Ceren, au pied de Gien (emplacement estimé, faute de source), ses unités perdent 15 % de leurs effectifs, et un incident illustré l'annonce. Codé mais pas encore vu en jeu.
  • Le duché perdu : un paquet d'effets selon les domaines d'Aquitanie qu'il tient (Château d'Épée, Derrevin Libre, Gien) : « Duc dépossédé » sans aucun, commandement et ordre public en berne ; « Le Duc restauré » avec les trois, commandement, revenus et reconstitution en hausse. Lore : il reprend son duché à ceux qu'il nomme usurpateurs (The Red Duke). Codé mais pas encore vu en jeu.
  • La faveur d'Abhorash : la Bénédiction de la Dame de CA, retournée. Quand le Duc gagne une bataille qu'il mène, surtout une victoire héroïque, son armée gagne attaque et commandement, en trois degrés ; la faveur se perd s'il recule, s'il est battu ou au Pré de Ceren, et s'use sans bataille. Lore : le code d'honneur des Dragons de Sang (Vampire Counts, 6e édition). Codé mais pas encore vu en jeu.
  • L'impôt du sang et les vassaux du sang : deux dilemmes. À chaque région bretonnienne prise, lever l'impôt (du Sang et des cadavres, mais la traque se hâte) ou épargner les vilains ; un seigneur bretonnien réduit à une seule terre peut devenir son vassal par le sang. Garde-fous, pour un Duc « pas overcheaté » : deux vassaux au plus (trois, duché restauré), jamais l'Aquitanie, des serments qui peuvent se briser, de l'ordre public en moins par vassal. L'impôt vient du lore ; les vassaux en sont inspirés. Codé mais pas encore vu en jeu.
  • Objets et héros : ses deux objets de CA de la 9.0, « Armures de sang » et « Le joyau de la non-vie », en montant de rang ; trois héros légendaires permis, Walach Harkon, Dragon de Sang comme lui, Krell et Dieter Helsnicht. Codé mais pas encore vu en jeu.

Les chiffres sont des choix de conception, à régler en jeu : aucune partie longue n'est jouée, l'équilibrage n'est pas mesuré.

Technique 1 : des lots Python aux tables du jeu

Tout ce que le jeu lit dans sa base passe chez nous par des « lots » : des fonctions Python rejouables qui écrivent dans les tables XML de l'Assembly Kit, le kit officiel de CA, en recopiant une ligne de CA sous nos clés ou en faisant une ligne neuve sur son modèle. Rien n'est réécrit, tout est sauvegardé avant écriture.

Règle d'or : des clés à nous, jamais une table de CA remplacée, pour que les campagnes coexistent, mod actif ; le 23 septembre, deux tables de CA remplacées ont fait planter une infobulle. Tout ce qui est au Duc commence par saison_duc_. Ses lots :

  • 13 : faction_to_mercenary_set_junctions, ses régiments de renom.
  • 17 : armées de départ, trésor, second seigneur (tables start_pos_*).
  • 31 : les deux factions de soutien des vampires de la 9.0 et les héros uniques de notre campagne (campaign_to_agent_subtypes).
  • 33 : faction_agent_permitted_subtypes, qui permet Walach Harkon, Krell et Dieter Helsnicht à Mousillon ; sans ces lignes, les technologies qui les donnent ne donnaient rien au Duc joué.
  • 34 : effect_bundles, sept paquets d'effets à nos clés ; leurs effets, ceux de CA, sont posés par le script.
  • 35 : dilemmas et ses tables de choix et d'options.
  • 32 et 37 : incidents, les neuf annonces du Duc, sans cible ni charge : les effets restent au script.

Un second fichier dit au pack quelles lignes prendre (table du kit, table du jeu, colonne, préfixe) :

TABLES_LOT34 = [
    ('effect_bundles', 'effect_bundles_tables', 'key', 'saison_duc_'),
]

Ces tables sont neuves dans un pack joué : la règle veut un essai de démarrage avant toute annonce, car une seule table de trop a déjà fermé le jeu sans message.

Technique 2 : RPFM et le pack

RPFM, le Rusted PackFile Manager de Frodo45127, est l'outil communautaire des packs ; depuis sa version 5, son serveur sans fenêtre, rpfm_server, expose ses fonctions à une IA. Notre build_pack.py le pilote : il lit nos lignes dans le kit et les recopie dans l'ordre du schéma du jeu, qui fait foi (colonne absente : valeur vide ; colonne en trop : abandonnée). Piège : RPFM veut les lignes au format « traité », une couleur en une seule valeur.

Il vérifie aussi la syntaxe de chaque script Lua, car une erreur fait échouer tout le chargement de la campagne, et refuse tout fichier qui prendrait la place d'un fichier de Warhammer III.

Technique 3 : les tables de départ et le startpos

Un seigneur devient jouable surtout dans le startpos, la position de départ : pour le Duc, start_pos_factions (faction jouable et majeure), start_pos_characters, start_pos_starting_general_options (le lien avec sa fiche) et start_pos_land_units. Ces tables ne partent jamais dans le mod : un pack à part sert à la génération, et c'est le jeu qui fabrique le startpos. La recette :

  1. Le lot écrit dans le kit ; les tables de départ passent dans le pack de génération.
  2. Validation : aucune cellule à corriger ; pack reconstruit.
  3. Le jeu génère le startpos.
  4. Contrôles : compteur de sauvegarde à 1 (sinon chaque partie neuve se prend pour une sauvegarde), structure comparée à la précédente.
  5. Le startpos entre dans le pack ; puis l'essai.

Détails et pièges : le guide des outils.

Technique 4 : les scripts Lua

Le Duc a son fichier, saison_duc.lua, chargé par required.lua. À chaque chargement, saison_start.lua démarre les systèmes vampires de la 9.0 dans l'ordre de CA, puis celui du Duc, dont le Baiser d'Abhorash emprunte le rituel des lignées. Le reste, ce sont des écouteurs d'évènements :

  • RegionFactionChangeEvent : un domaine d'Aquitanie change de main, ou une région bretonnienne tombe au Duc joué.
  • DilemmaChoiceMadeEvent : le choix d'un dilemme.
  • BattleCompleted et CharacterWithdrewFromBattle : la faveur, gagnée ou brisée.
  • FactionBeginTurnPhaseNormal : le tombeau, les vassaux, l'usure de la faveur, la traque.
  • ScriptEventVampireLairAwakened, évènement de CA : les éveils de la victoire longue.

L'écouteur du tour, en version courte :

core:add_listener(
    "saison_duc_tour",
    "FactionBeginTurnPhaseNormal",
    function(context) return context:faction():name() == "wh_main_vmp_mousillon" end,
    function(context)
        local faction = context:faction();
        saison_sur("tombeau de Galand", tombeau_de_galand, faction);
        if faction:is_human() then
            saison_sur("vassaux du sang", tour_des_vassaux, faction);
            saison_sur("usure de la faveur", user_la_faveur, faction);
        end;
    end,
    true
);

Les données du Duc entrent dans les tables Lua de CA au chargement (saison_donnees_ca.lua). Pour les victoires, le moteur de CA est chargé depuis son dossier, jamais recopié, et sa liste des Empires remplacée par nos dix listes, écrites avec ses propres générateurs d'objectifs ; CA ne donne aucune liste au Duc.

Ce que la 9.0 a changé :

  • L'ancien système des baisers de sang a disparu, et notre réglage avec lui.
  • FactionTurnStart n'arrivait à aucun écouteur de mod sur notre carte ; les nôtres sont passés sur FactionBeginTurnPhaseNormal. Cause trouvée et corrigée dans les essais automatiques, à confirmer en partie jouée : trois conditions d'écouteurs de CA, pour Mère Ostankya et Yuan Bo, lisaient des systèmes absents de notre carte, et leur erreur coupait l'évènement.
  • En jeu publié, une erreur dans un écouteur arrête l'évènement pour tous, ceux de CA compris : les nôtres sont protégés (saison_ecouteur, saison_sur) et l'erreur va au journal.
  • La technologie de CA qui confédère le Duc écarlate absorberait, recherchée par le Duc joué, sa propre faction : elle est verrouillée pour lui.

Technique 5 : les textes, en français et en anglais

Nos textes vivent dans textes_gameplay.json, avec pour chaque clé son français et son anglais. Une clé de texte du jeu, c'est <table>_<colonne>_<clé de la ligne> : dilemmas_localised_title_saison_duc_impot_du_sang donne « L'impôt du sang » et « The Blood Tax ».

Un contrôle cherche d'abord les défauts. Le français va dans le pack principal, l'anglais dans un petit pack qui passe devant, sous le même chemin. Règle d'or : ne jamais écraser un texte du jeu, que Warhammer III chargerait quelle que soit la langue du joueur ; une clé qu'il connaît est retirée, il la fournit lui-même, à jour.

Les noms suivent les textes du jeu : dans la 9.0, le français de CA dit « Duc écarlate » dans 21 textes, dont son nom propre, contre 3 « Duc Rouge » ; nous avons corrigé 22 textes. Faute de réplique doublée pour lui, j'ai choisi pour son prologue un survol muet avec ses textes (codé mais pas encore vu en jeu).

Les essais : ce qu'ils voient, ce qu'ils ne voient pas

Tout pack qui ajoute une table passe un essai de démarrage. Puis viennent les parties automatiques : un pack d'essai à part lance la partie par l'interface, comme un joueur, et enchaîne les tours.

Leur limite : quand l'IA joue tout, la faction du joueur ne joue pas. Le duché perdu et le tombeau valent aussi pour le Duc de l'IA, mais la traque, la faveur et les dilemmes ne visent que le Duc joué. Pour l'essentiel, le Duc ne se voit donc qu'en jouant.

Un essai du Duc, le 23 septembre, a montré qu'au tour 1 personne n'avait d'ennemi, d'où les guerres de départ ; une partie de 29 tours avec Drycha a vu Grom et le Duc de l'IA rayer Bordeleaux avant le tour 20, d'où, entre factions de l'IA, pas de guerre contre Bordeleaux avant le tour 15 (codé mais pas encore vu en jeu).

Pour la chronique, un banc d'essai fait tourner nos scripts dans un interpréteur Lua, avec une imitation de l'interface de CA : c'est le « testé hors jeu ». La vraie épreuve sera ma partie, avec dix points à observer.

Ensuite

Régler en jeu les délais et les forces de ces mécaniques. D'autres mécaniques sont en préparation.

La fiche du Duc et les mécaniques sont sur l'accueil ; la méthode du portage, dans le tutoriel.

Proposer une idéeVoir la carte