Les 9 murs d'un portage de carte vers Warhammer III
Porter une carte de Warhammer I dans Warhammer III, c'est surtout se cogner à des murs. En quatre jours, j'en ai compté neuf gros. Pour chacun : ce qu'on voyait, ce qui se passait vraiment, comment le franchir, et ce que j'en retiens.
Une côte de notre carte le 24 septembre, en marches d'escalier, bordée d'une bande d'eau pâle : l'eau et les côtes ont été l'un de ces murs.
Comment lire ces fiches
Chaque mur suit le schéma de notre journal des erreurs : le symptôme, la cause, la solution, puis la leçon, dans un encadré. Les causes ont été trouvées par Claude, l'assistant IA d'Anthropic, souvent en lisant un rapport de plantage. Les symptômes, je les ai le plus souvent vus en jeu, une capture de Warhammer I à côté.
↔ faites glisser le schéma
Les neuf murs, rangés selon le moment où ils frappent, du terrain à l'image en jeu. En rouge, ceux qui font planter le jeu ; en brun, ceux qui ne disent rien.
Les termes techniques sont expliqués au passage. Pour la méthode complète, dans l'ordre, voyez le tutoriel.
Mur 1 : le startpos impossible
Le startpos est le fichier qui fige l'état de départ d'une campagne : factions, personnages, villes, diplomatie. Sans lui, pas de partie. C'est le jeu lui-même qui le fabrique, à partir des données qu'on lui donne.
Symptôme : le 21 septembre au matin, la génération du startpos plante à chaque essai.
Cause : deux défauts de nos données, l'un derrière l'autre. Trois de nos ports n'avaient pas la forme de ceux de CA. Et la minicarte déclarée n'existait pas : on l'avait corrigée dans le pack, que chaque construction effaçait.
Solution : exporter une carte de CA et regarder ses villes portuaires : un disque de 19 hex, 16 sur la terre et 3 côté mer, en port. Puis corriger la source, les tables du kit, et faire vérifier par la construction du pack que chaque fichier déclaré existe. Le premier startpos est sorti le 21 à 12 h 08.
Le modèle de CA, lu sur ses cartes : un disque parfait de 19 hex, dont le centre devient la position de la ville ; 16 hex de terre en emplacement principal, et 3 hex consécutifs du bord, côté mer, en port (trait bleu). Trois de nos ports ne suivaient pas ce modèle.
Mur 2 : BOB qui ne fait rien, sans le dire
BOB est le compilateur de l'Assembly Kit : il transforme le projet de terrain en fichiers que le jeu lit.
Symptôme : BOB ne lance que 6 actions au lieu d'une douzaine. Ni relief, ni textures, et aucune erreur. On a perdu une heure à essayer des fichiers au hasard.
Cause : une limite de l'outil. Pour une carte que la base du jeu (celle des packs de CA) ne connaît pas, BOB ne lance que ces 6 actions, sans message ; l'ajouter à la base du kit ou à un pack de mod n'y change rien.
La bonne voie : d'abord un témoin, pour mettre nos fichiers hors de cause : le projet de ChaosRobie, copié sous un autre nom, échouait pareil. Ensuite la communauté : le Discord de CAIME, tw-modding. Nous ne connaissons pas de voie officielle pour lever cette limite, et nos guides excluent de décortiquer un outil de CA ou de le contourner.
↔ faites glisser le schéma
Six actions au lieu d'une douzaine, sans message : un témoin dit si c'est votre projet ou la limite du kit.
Mur 3 : Athel Loren sans emplacements de ville
Symptôme : le terrain est prêt, et mes deux essais du 21, en fin de journée, plantent dès le chargement de la campagne.
Cause : la veille, les 36 lignes qui donnent leurs emplacements aux 18 villes d'Athel Loren avaient été écartées, sur une vérification fausse : « Warhammer III n'en déclare aucun pour ses régions elfes ». Or le jeu cherche l'emplacement principal de chaque ville. Notre première correction visait autre chose, et le plantage est revenu à l'identique.
Solution : les lignes rétablies à partir des modèles des Empires Immortels, et un contrôle neuf qui compare notre startpos à celui d'une campagne qui charge. Ce contrôle retrouve seul ce défaut.
Mur 4 : l'IA sans carte, et le pack qui passe devant
Symptôme : plantage au moment où le jeu règle le joueur humain. Pire, deux essais tournaient sur un ancien startpos, et on a cru la correction inefficace.
Cause : trois causes, l'une derrière l'autre. Le startpos était généré sans les données de carte de l'IA, les deux fichiers qui lui servent à trouver son chemin (hlp_data.esf et spd_data.esf). Une faction avait un groupe d'IA vide. Et le startpos rangé dans le pack passait devant la copie posée à côté.
Solution : générer avec l'option qui produit les données de l'IA, et les embarquer ; donner à chaque faction le groupe d'IA que CA lui donne dans les Empires Immortels, sinon celui de sa culture.
↔ faites glisser le schéma
Le moment où ça casse dit où chercher : chaque symptôme vécu sur notre chantier, et la ligne ou le fichier qui manquait.
Ce mur franchi, la campagne s'est enfin chargée.
ça fonctionne !!!! […] la carte ressemble à rien mais au moins ça charge
Mur 5 : le plantage de fin de tour que personne n'a vu
Symptôme : ma partie du 21 au soir s'arrête à la fin du premier tour. Je ne l'ai pas signalé ; Claude l'a trouvé le lendemain, un peu par hasard, dans les rapports de plantage.
Cause : une campagne a deux terrains. Le second, un terrain de bataille, sert dès la première bataille, même entre deux IA. Le nôtre n'avait jamais été livré.
Solution : fabriquer ce terrain de bataille à la manière de CA, le compiler avec BOB, et faire vérifier par la construction du pack que chaque fichier déclaré existe.
↔ faites glisser le schéma
Une carte de campagne a deux terrains : le sien, et un terrain de bataille, que nomme la colonne terrain_folder de sa zone jouable de campagne.
Mur 6 : « je ne reconnais pas la map »
Symptôme : le 21 à 22 h 50, en jeu : « c'est un peu n'importe quoi », puis « je ne reconnais pas la map ».
Cause : des modèles de Warhammer III à la place de ceux de Warhammer I ; 5 277 décors du Chaos rendus visibles de tous par une règle fausse ; la neige de la clairière d'hiver effacée, prise pour un défaut. Tout avait été contrôlé par des chiffres, rien à l'image.
Solution : les fichiers de Warhammer I eux-mêmes, d'où le DLC Realm of The Wood Elves obligatoire pour jouer ; seul le décor naturel visible de tous ; la neige refaite à la manière de Warhammer III.
Warhammer I
Warhammer III
La référence, et le résultat : Tal Eth Ayr et le Chêne des Âges dans Warhammer I (à gauche), puis notre carte dans Warhammer III le 25 septembre, avec la Clairière Royale et l'armée d'Orion. C'est à cette comparaison que passe désormais chaque visuel.
Mur 7 : des trucs qui volent partout
Symptôme : le 22 à 22 h 40, des objets flottent un peu partout. Les audits de Claude n'en trouvaient que 45.
Cause : un repère. Dans Warhammer III, les objets vivent dans l'espace des hex, alors que le relief est rangé en pixels carrés, sur une profondeur plus courte d'un facteur √3/2. Nos objets avaient été convertis à tort : tassés de 13 % vers le sud, ils flottaient ou s'enfonçaient. Les audits, faits dans le même repère faux, ne voyaient rien.
Solution : ne jamais convertir les positions des objets, et lire le relief à la ligne z × √3/2. Vérifié dans Terry à 23 h 23 : les pierres de lien étaient de retour dans le sol.
↔ faites glisser le schéma
Schéma. Les objets vivent en espace des hex, le relief en pixels carrés, sur une profondeur plus courte d'un facteur √3/2. On ne convertit jamais la position d'un objet : on lit le relief au bon endroit.
Mur 8 : la mer sans eau
Symptôme : le 23 à 3 h 40 : « sur le côté de la mer il n'y a pas d'eau, que le fond de sable ». Ni mer, ni rivières, ni lacs.
Cause : pour adoucir la côte, la même surface avait été écrite dans les deux cartes de hauteur du terrain : height, le relief, et sea_height, le fond marin. Plus aucune profondeur : le jeu ne dessinait pas d'eau. Terry, lui, la montrait.
Solution : rendre à chaque carte son sens ; l'eau était de retour à 4 h 06. Le même jour, un fond relevé près des côtes a refait le coup. D'où la règle, codée depuis : comme sur les cartes de CA, sea_height reste sous 0 partout, même sous la terre.
↔ faites glisser le schéma
Schéma, en coupe. Le jeu dessine l'eau au niveau 0, au-dessus du fond marin (sea_height). Écrire la même surface dans les deux cartes ne laisse aucune profondeur ; sur les cartes de CA, le fond reste sous 0 partout, même sous la terre.
Mur 9 : la nouvelle partie qui se croyait une sauvegarde
Symptôme : pas de cinématique, pas de « Comment jouer », pas de mission de victoire, et une caméra bizarre.
Cause : le startpos datait d'avant les scripts de campagne. Or son compteur de sauvegarde (__save_counter) ne passe à 1 que si les scripts tournent pendant la génération. Resté à 0, il faisait passer chaque nouvelle partie pour une sauvegarde. C'est la session de Claude chargée des scripts qui l'a trouvé.
Solution : régénérer le startpos après tout changement de scripts, et un contrôle automatique qui vérifie que le compteur vaut 1.
↔ faites glisser le schéma
Le startpos fige le tour 0 au moment où on le génère : tout ce qu'il doit connaître au premier tour, scripts compris, doit exister avant.
Ce que les neuf murs ont en commun
Relus ensemble, ces murs racontent quatre règles simples.
Comparer à ce qui marche (murs 1, 2, 3). Un témoin connu pour bon tranche plus vite que dix hypothèses.
Lire ce que le code cherchait (murs 3, 5). Un rapport de plantage dit quelle donnée manquait ; une différence entre deux fichiers n'est qu'une piste.
Juger à l'image, et en jeu (murs 6, 7, 8). Les chiffres étaient bons quand la carte était méconnaissable.
Respecter l'ordre des choses (murs 4, 9). Le startpos est une photo, le pack passe devant les copies, et chaque changement se teste seul.