Jump to content

ESPFE File Madness (I hail from Skyrim LE, so this is uncharted territory for me.)


Recommended Posts

I am finishing up a dialogue-focused mod that I hope to release fairly soon. I play Skyrim LE, and create my mods for it first and foremost, so when it comes to porting to SE and whatever new alphabet soup Bethesda has on the stove these days, I'm perfectly fine with testing and uploading the esp file once it receives a clean bill of health, then leaving it contentedly at that. However, past experience has taught me that I'll be pestered for ESL/ESPFE support. 🔥🤬🔥

Now I have read about both occasionally, but their differences and quirks don't exactly register with me--mainly because "if you don't use it, you lose it." I'm thinking that the mod may be ESPFE-able. All it consists of at present are hundreds of dialogue scenes between NPCs, so if someone with more insight could give an opinion on its ESPFE-feasibility, I'd be grateful.

The second item I am concerned about is (if the mod can indeed be safely made an ESPFE in the first place) can an ESPFE file have patches made for it?

This mod is being sliced from another dialogue mod and being rebuilt pretty much from the ground up. There are scenes and responses that tie in with its progenitor which make little sense in the new standalone. So my idea (for when the progenitor mod is ready to release) is to make a patch to reintroduce the cut conversations and properly condition the ones that they would then (story + personality-wise) freshly conflict with.

 

My frazzled brain thanks you for taking the time to read this and hopes to hear back from someone soon.

 

Link to comment
Share on other sites

In general terms, a 'Light'  plugin is one that has all of its internal FormIDs  in the 0x00000800 to 0x00000FFF range and an 'ESL' flag in its header.   The difference between ESL and ESPFE is literally in the filename extension.   (.esl vs .esp)   There is no internal difference.    The primary difference between them is how they load.   A  '.esl' is considered a 'light master', and it will load real high, right after the .esm masters, and before any of the regular .esp plugins.   Because of this, you can't really use .esl as a patch for other plugins, cause it will load before them.    But if you change its extension to .esp, it  becomes an 'ESP-FE'  plugin, and it can be loaded anywhere in the order, so it can be used as a patch for other  plugins.

The 800-FFF range means it can has a maximum total of 2048 it own forms.  (forms overriding records in its masters don't count)   If your mod is dialogue-heavy, chances are it might have more that 2048 own forms, making it unsuitable to be light.    But if you do decide to make the mod light....    here's the major problem.    

First, maybe this is just a feature I missed, maybe it IS there,  but in CK, it seems impossible to specify that you want any new FormIDs generated to fall within the "light" range.    Even if you are editing a mod already flagged as 'ESL'  the new added FormIDs are going to be all over the place.   Which means you are adding new FormIDs with whatever values, and then you need to run the FormID compacting.   However, the names of voice files are NOT stored in the TopicInfo form - unless explicitly indicated.   Voice file names are generated on the fly, in the form of:
For regular dialogue:    <quest editor ID - up to 10 chars>_<dialogue topic editor ID - up to 15 chars>_<topicInfo FormID without mod index>_<number of response within topic>.fuz,  i.e.   "freeformsh_ffss02sylgjabra_000e49a8_1.fuz"
For scene dialogue:   <quest editor ID>_<topicInfo FormID without mod index>_<number of response within topic>.fuz,  i.e. "dialoguesolitude_000b2dba_1.fuz"

In other words, if you change FormID of a TopicInfo , you also have to rename the corresponding voice file(s)   One option would then be to construct all the dialogue structure - branches, scenes, etc - then do FormID compacting,  and only then do the actual voice file generation.

  • Thanks 2
Link to comment
Share on other sites

7 hours ago, scorrp10 said:

In general terms, a 'Light'  plugin is one that has all of its internal FormIDs  in the 0x00000800 to 0x00000FFF range and an 'ESL' flag in its header.   The difference between ESL and ESPFE is literally in the filename extension.   (.esl vs .esp)   There is no internal difference.    The primary difference between them is how they load.   A  '.esl' is considered a 'light master', and it will load real high, right after the .esm masters, and before any of the regular .esp plugins.   Because of this, you can't really use .esl as a patch for other plugins, cause it will load before them.    But if you change its extension to .esp, it  becomes an 'ESP-FE'  plugin, and it can be loaded anywhere in the order, so it can be used as a patch for other  plugins.

The 800-FFF range means it can has a maximum total of 2048 it own forms.  (forms overriding records in its masters don't count)   If your mod is dialogue-heavy, chances are it might have more that 2048 own forms, making it unsuitable to be light.    But if you do decide to make the mod light....    here's the major problem.    

First, maybe this is just a feature I missed, maybe it IS there,  but in CK, it seems impossible to specify that you want any new FormIDs generated to fall within the "light" range.    Even if you are editing a mod already flagged as 'ESL'  the new added FormIDs are going to be all over the place.   Which means you are adding new FormIDs with whatever values, and then you need to run the FormID compacting.   However, the names of voice files are NOT stored in the TopicInfo form - unless explicitly indicated.   Voice file names are generated on the fly, in the form of:
For regular dialogue:    <quest editor ID - up to 10 chars>_<dialogue topic editor ID - up to 15 chars>_<topicInfo FormID without mod index>_<number of response within topic>.fuz,  i.e.   "freeformsh_ffss02sylgjabra_000e49a8_1.fuz"
For scene dialogue:   <quest editor ID>_<topicInfo FormID without mod index>_<number of response within topic>.fuz,  i.e. "dialoguesolitude_000b2dba_1.fuz"

In other words, if you change FormID of a TopicInfo , you also have to rename the corresponding voice file(s)   One option would then be to construct all the dialogue structure - branches, scenes, etc - then do FormID compacting,  and only then do the actual voice file generation.

 

Holy moly. Especially for that last part.

Well, I'd say that its feasibility just went out the window. The mod is far from finished (meaning, I'm only covering five the vanilla spouse voice types for starters), so I will keep adding on to the mod as life and motivation allows.

Maybe if I played SE, I'd feel differently about the FormID dance, but I can barely run it to begin with. There is no way in the world anyone could persuade me to attempt to do all that for a mod that will be receiving updates for a version of the game I do not even play--especially as I could not guarantee everything was in working order. SE/AE mod authors who feel similarly about supporting LE should readily understand this rationale.

There's already over 200 hundred conversation scenes as it stands. The possibility of breakage would increase each time I added to it.

🎶 Hello Burnout my old friend. I've come to talk to you again... 🎶

Esp it is!

Thank you very much, Scorrp10. You have brought clarity rushing back to my brain, and I have a suspicion that this was one of the reasons I backed away from updating another mod some years ago. Well, if folks don't think it's worth an esp slot, so be it. If they give me flak this time around, I'll just threaten to add unnecessary cell edits. 😙 Ooh, that ought to smooth things over right quick. 😜

Thanks again. I really do appreciate you taking the time to respond back and break things down in detail.

  • Like 1
Link to comment
Share on other sites

If you got over 200 conversation scenes,  it is practically a given that you are over 2048 forms, or at least real close to it, which makes it already ineligible to be a light mod.    So you really need not worry about this.   

  • Thanks 1
Link to comment
Share on other sites

once ages ago after a chat with @Arthmoor and before xEdit was updated to SE, I wrote a batch script for the creation64  to make a ESL File with this plugin, then bragged about it to him, I think I was first to make a working  one, hehehehehe, it's not that hard. Plus now that xEdit supports it,  it is easy peasy.. but it will change the ID so not  very suitable for dialogue, so even if a hard headed guy where to try it. It would not work, even if the mod was small...

Close this pointless thread

  • Like 2
Link to comment
Share on other sites

Good to know this about dialogues and FormIDs!  I made a few mods in LE years ago.  And one of them (unreleased) is a follower with a small quest to gain his favor, which has a few unvoiced dialogues. 

I haven't bothered with esl-flagging any mods I've authored yet -- in part because I'm still nowhere near the conventional plugin limit in SE yet.  Plus, it's kind of uncharted territory for me too.

(I'm still building a mod setup for SE since I finally got MO2 working on Linux back in January.  And I've still been playing LE since then too, making up for lost time with my existing characters since my last Windows PC died.)

  • Like 1
Link to comment
Share on other sites

As mentioned, the process is generally simple - compact FormIDs, set ESL header flag.     Oh, and you want to do that in SSEEdit.   Compacting forms in CK used to work, but last time I tried, it did it real weirdly.    I think it has to do with that change for light mods in 1130+

Things to do when compacting forms:
If your mod has any actor heads under FacegenData, the head .nif filenames must be changed.   Same goes for voice files.

Goes without saying, any save game made with your mod included becomes invalid once you compact the forms.   So if you are converting an existing mod that people might be using, be sure to warn about this

 

 

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...