ESLisation

De La Confrérie des Traducteurs

Dans Skyrim Special Edition et Fallout 4, l'ordre de chargement (load order) n'autorise que 256 entrées pour les plugins des ESP et ESM, ce qui peut très vite être atteint suivant vos ambitions de modding.

L'ordre de chargement des ESL/ESPFE, lui, permet d'atteindre les 4096 plugins. La plupart des moddeurs fournissent leurs mods directement en ESL/ESPFE, mais il peut arriver que ce ne soit pas le cas et que vous deviez le faire vous-même : ce tutoriel vous apprend comment vous y prendre.

Qu'est-ce qu'un ESL ?

Les ESL sont des plugins utilisant l'index (deux premiers caractères) FE de l'ordre de chargement et disposant d'un flag ESL dans leur header (d'où leur nom parfois de plugins flaggés ESL).

  • Les ESL ont pour extension ESL (logique) et sont chargés après les ESM. Ils ne peuvent pas être placés après un ESP.
  • Les ESPFE ont pour extension ESP et se placent exactement comme les ESP normaux.
  • Les ESM peuvent également être flaggés ESL et gardent leur place en tête.

L'objectif sera donc de convertir des ESP en ESPFE, sans changer leur extension, ce qui ne changera rien à leur placement.

Que convertir ?

Tout d'abord, notez que tous les plugins ne sont pas ELSisables : il y a une limitation de 4096 FormIDs (records) par mod depuis la version 1.6.1130 du jeu (le double d'avant). Les plus gros mods (quêtes, mondes) ne pourront donc pas être ESLisés.

Pour détecter les plugins qui peuvent être ESLisés, vous pouvez (ce n'est pas du tout une obligation) utiliser un script fourni dans xEdit : lancez-le via MO2, chargez tous vos plugins, faites un clic droit dans la colonne de gauche et choisissez Apply Script. Dans le menu déroulant, choisissez Find plugins which can be converted to ESL puis cliquez sur OK. Le programme va alors scanner tous les plugins chargés et sortir dans l'onglet Messages une liste des plugins pouvant être convertis.

Vous aurez alors trois types de message possible sous le nom des plugins correspondant à trois cas de figure.

Cas n° 1 : ESLisation sans compactage

  • Avec le script : Can be turned into ESL by adding ESL flag in TES4 header.
  • Clic droit > Compact FormdIDs for ESL : Nothing to do.

Ces mods peuvent être ESLisés en priorité : ils ne nécessitent pas de compactage des FormIDs et il n'y a rien d'autre à faire qu'ajouter le flag ESL (voir partie suivante). Il peut s'agir des plugins vides (signalant au jeu de charger les archives BSA ou les scripts associés) indiqués par une icône d'œil barré dans LOOT et dans MO2 où les plugins eux-mêmes sont barrés, ou de plugins ne contenant que des FormIDs vanilla (essentiellement des ajustements et des patches).

L'ESLisation est 100 % sûre avec ces plugins !

Cas n° 2 : ESLisation avec compactage

  • Avec le script : Can be turned into ESL by compacting FormIDs first, then adding ESL flag in TES4 header.
  • Clic droit > Compact FormdIDs for ESL : This operation will modify the FormID of x record(s). Record(s) with the following signature(s) are affected: (...) WARNING: This will break existing save games that contain these FormID(s) and any module which uses "X" as master and references them. Are you sure you wish to continue?

Il faut garder en tête qu'un objet ajouté par un mod a un identifiant unique, la FormID, qui permet au jeu de l'identifier. Si d'autres mods, comme des patches ou des addons, doivent se référer à cet objet, ils le font via sa FormID. Or, le compactage change la FormID. Il ne faut donc pas compacter un plugin utilisé sur une sauvegarde en cours, ni compacter un plugin sans penser aux éventuels autres plugins qui s'y réfèrent. Si vous souhaitez compacter un plugin, chargez en même temps tous les autres plugins qui en dépendent (qui l'ont comme master) : le changement des FormIDs se propagera alors à tous les plugins concernés.

Au cas où vous installeriez plus tard un autre plugin qui dépend de ce plugin, il faudra le compacter en rechargeant la version non compactée du master !

Avec fichiers dépendant des FormIDs

Certains mods comprennent des fichiers extérieurs au plugin qui s'appuient sur les FormIDs : si vous les changer en compactant le plugin, ces fichiers ne seront plus reconnus ! Il s'agit essentiellement :

  • Les Facegen (meshes et textures) des PNJs ajoutés par le mod et ne reposant pas sur un template, ce qui causera des dark faces. Leur nom est la FormID du PNJ.
  • Les fichiers audio (FUZ/WAV/XWM) associés à un topic. Leur nom est formé de l'EDID et de la FormID du dialogue.
  • Les fichiers SEQ, servant à déclencher les dialogues et contenant des références aux FormID.
  • Certains scripts qui utilisent la fonction GetFormFromFile, qui fait appel à une FormID (ex. AddItemMenu).

Ces fichiers peuvent être renommés et/ou regénérés avec quelques connaissances de modding (non recommandé aux débutants).

Il existe des solutions assez simple :

  1. Utiliser un script xEdit qui ESPFE Follower - Eslify facegen and voices pour compacter, qui se chargera de renommer les fichiers Facegen et les fichiers audio ! Malgré son nom, ce n'est pas réservé aux compagnons :)
  2. Regénérer le fichier SEQ en faisant un clic droit sur le plugin > Other > Create SEQ File.

Pour les scripts, c'est plus compliqué car il faut les recompiler (si la source n'est pas fournie, c'est compromis).

ESLisation déconseillée

Can be turned into ESL by compacting FormIDs first, then adding ESL flag in TES4 header

Warning: Plugin has new CELL(s) which won't work when turned into ESL and overridden by other mods due to the game bug

Comment convertir ?

Ne convertissez pas vos plugins en cours de partie. Regénérez votre Bashed Patch une fois que le travail est terminé.
  • Ouvrez xEdit.
  • Chargez le plugin que vous souhaitez convertir.
  • Une fois que le chargement est terminé, faites un clic droit sur le plugin et sélectionnez Compact FormIDs for ESL.
    • Si vous avez le message Nothing to do, c'est le cas n° 1.
    • Si vous avez un message indiquant le nombre de records à compacter, c'est le cas n° 2.
  • Sélectionnez le plugin, puis clic droit dans la partie Record Flags > Edit > ESL.
  • Cliquez sur OK, enregistrez et quittez.

Conversion avec compactage

Si vous avez l'avertissement avec le nombre de records à compacter, vous pouvez cliquer sur Yes et appliquer le flag ESL de la même façon une fois le compactage terminé (procédure très rapide). Toutefois, cette procédure nécessite de la prudence. Il faut :

  • s'assurer que le mod n'a pas de dialogues audio ni de nouveaux PNJs avec FaceGens, car ceux-ci sont nommés d'après les FormID ;
  • charger tous les patches dépendant en même temps lors de la conversion afin qu'xEdit y fasse suivre les changements de FormID ;
  • idéalement, tester chaque mod après conversion (xEdit fait une sauvegarde par défaut).

Sur le site de la Confrérie, le tag ESLisable est apposé sur les mods dont le plugin principal a été testé après conversion, mais qui n'est pas officiellement ESLisé (mises à jour, patches dispersés...).

Recherche d'un bug (très) rare issu de l'ESLisation

Un (très rare) bug peut se produire lorsqu'un plugin ESLisé écrase les records de CELL qui ont été ajoutés par un autre plugin ESLisé.

Dans ce cas, les références temporaires dans cette CELL n'apparaîtront pas dans le jeu. Avec un script xEdit, vous pouvez scanner votre ordre de chargement pour vérifier si vous avez ce bug et, si c'est le cas, supprimer le plugin affecté.

Téléchargez ce script et placez le dossier contenu dans l'archive dans le dossier Edit Scripts de xEdit.

  • Lancez xEdit et chargez TOUS vos plugins.
  • Faites CTRL+A pour sélectionner tous vos plugins dans la fenêtre de gauche, cliquez n'importe où dans la fenêtre et choisissez Apply Script.
  • Sélectionnez Check for ESL CELL Bug et laissez-le bosser.
  • Si vous n'avez aucun avertissement en fin de procédure, c'est que vous n'avez pas le bug. Sinon, supprimez le(s) plugin(s) qui sont touchés par le bug.