Jump to content

Plugin Files And You (ESM/ESL/ESP)


Arthmoor

Recommended Posts

On 10/15/2017 at 4:48 AM, cdcooley said:

That's likely to cause problems for them long-term so they might be willing to change it now.

Not directed at you @cdcooley alone, but is there a POC for mod authors/tool makers and/or an official bug submission process?  

I'd tweet somebody to ask but I don't have a twitter account yet. I guess I could always make one. :P

Link to comment
Share on other sites

The latest version of Wrye Bash displayed the load order numbers according to how the save is seeing them, which it apparently wasn't doing before, so I've update the OP to reflect the findings associated with that. Hopefully this straightens things out but the loading of Blocks 4 and 5 will render ESL files somewhat less useful than was hoped.

Link to comment
Share on other sites

Something I found yesterday for FO4 1.10.26 and SSE 1.5.3 :

  any file whose extension is .esm or .esl will have its esm flag set inside the runtime.

  any file whose extension is esl will have its esl flag set inside the runtime.

(FO4 1.10.20 cleared the esm flag if the extension was different, which explains while "fake esm" were no longer working).

 

Also (I did not test it) it looks like any file whose extension is .esn or .eso would be loaded as an esp (if they contain the proper header :) ).

Link to comment
Share on other sites

5 hours ago, hlp said:

Something I found yesterday for FO4 1.10.26 and SSE 1.5.3 :

  any file whose extension is .esm or .esl will have its esm flag set inside the runtime.

  any file whose extension is esl will have its esl flag set inside the runtime.

(FO4 1.10.20 cleared the esm flag if the extension was different, which explains while "fake esm" were no longer working).

 

Also (I did not test it) it looks like any file whose extension is .esn or .eso would be loaded as an esp (if they contain the proper header :) ).

:cry: So in effect the master flag only matters for .esp files, since the others will always have it set at runtime? Time to update esplugin again....

Link to comment
Share on other sites

  • 2 weeks later...
22 hours ago, hlp said:

So we now have a reference file to check for CC content (Fallout4.ccc and Skyrim.ccc)

Oh thank goodness for that, a simple text file instead of hardcoded filenames.

Link to comment
Share on other sites

I can see this new esl format complicates modding at the very least, but what I don't understand is, what problems does this format solve? What obstacle(s) did Beth overcome by creating this? What is the point or benefit of using this esl format? If you could add that answer (if there is one) to the OP. 

Thanks

Link to comment
Share on other sites

It's supposed to deal with the clutter of having too many plugins. Since they intend for CC to be a long term thing they needed a way to overcome the limit of 249 load slots. So they sacrificed one of them (the FE slot) to handle loading ESL files into.

It works perfectly fine with official CC releases, but as usual, when the community attempts to take advantage of it, it turns out to have some problems with deployment and we end up not getting consistent results on exactly how these things are being accounted for in the save game or in your plugins.txt file.

Link to comment
Share on other sites

On ‎10‎/‎15‎/‎2017 at 10:18 AM, WrinklyNinja said:

Running DumpModInfoList with the game master, 254 normal plugins and two ESLs active causes Fallout 4 to lock up, I had to kill the game process in Task Manager.

 

Do you have your test set available online ? I want to recompile the plugin with SKSE64 2.0.5 and look at this issue but I'd rather not have to script the plugin creation :)

thanks

Link to comment
Share on other sites

1 hour ago, hlp said:

Do you have your test set available online ? I want to recompile the plugin with SKSE64 2.0.5 and look at this issue but I'd rather not have to script the plugin creation :)

thanks

No, I just copy/pasted a normal plugin a 253 times, and an ESL plugin twice.

Link to comment
Share on other sites

27 minutes ago, Beermotor said:

Real quick question from @Utumno and I for Bash 307:  regarding the new CCC files, do we know if the order in the files mutable or is it going to retain a strict order?

 

No idea, but I'm assuming the order won't change except possibly when game updates happen, i.e. I don't expect it to change during normal game usage, so just load it once when I initialise my application.

Link to comment
Share on other sites

3 hours ago, hlp said:

The game will load them in the order they are specified in the ccc file , which is, currently, lexicographical.

 

Fallout4.ccc:

ccBGSFO4001-PipBoy(Black).esl
ccBGSFO4002-PipBoy(Blue).esl
ccBGSFO4003-PipBoy(Camo01).esl
ccBGSFO4004-PipBoy(Camo02).esl
ccBGSFO4006-PipBoy(Chrome).esl
ccBGSFO4012-PipBoy(Red).esl
ccBGSFO4014-PipBoy(White).esl
ccBGSFO4016-Prey.esl
ccBGSFO4017-Mauler.esl
ccBGSFO4018-GaussRiflePrototype.esl
ccBGSFO4019-ChineseStealthArmor.esl
ccBGSFO4020-PowerArmorSkin(Black).esl
ccBGSFO4022-PowerArmorSkin(Camo01).esl
ccBGSFO4023-PowerArmorSkin(Camo02).esl
ccBGSFO4025-PowerArmorSkin(Chrome).esl
ccBGSFO4038-HorseArmor.esl
ccBGSFO4041-DoomMarineArmor.esl
ccBGSFO4042-BFG.esl
ccBGSFO4043-DoomChainsaw.esl
ccBGSFO4044-HellfirePowerArmor.esl
ccFSVFO4001-ModularMilitaryBackpack.esl
ccFSVFO4002-MidCenturyModern.esl
ccFRSFO4001-HandmadeShotgun.esl
ccEEJFO4001-DecorationPack.esl


Note that the last one should be before the ccF... ones in lexicographic order - so we go with the .ccc ordering or the lexicographic one ? I would go for the former

Link to comment
Share on other sites

Just signed up to add a little to the discussion here. During my tests, I noticed that ESP files that are ESL flagged, get merged into FE on run-time and can have other ESP files as master while also not jumbling up the load order (pushing ESPs to ESM/ESL area).

I tested this by ESL flagging my own custom ESP (NMM Load order 4D) which has Armorsmith Extended as a master. The items in the ESP show up under FE, while Armorsmith Extended remained at its current position (18, there are other ESPs above it as well) in the load order. Can anyone verify if this is how it actually works or am I missing something obvious?

Link to comment
Share on other sites

Since ESL were introduced there is no guarantee than the plugin id and the actual load order of that plugin are equal.

When a plugin, whether esm/esp or esl is elected to be loaded, any dependent plugin, whether esm/esp/esl not yet elected to be loaded will be inserted in the load order before the plugin currently being processed.

 

 

Link to comment
Share on other sites

Here's some additional info.

I tried the latest dev version of Wrye Bash, as suggested by Arthmoor in one of the above post, to check the effect this has on save files. Seems like it performing exactly as I hoped, the ESL tagged ESP files are located at the bottom of the load order, while their corresponding ESP master is also exactly where it is supposed to be (in this case, Load Order (18) for Armorsmith Extended.esp)

I also tried to do the same using pure ESL files, the results were quite different. The save shows the ESL files at the bottom, but their corresponding ESP master, Armorsmith Extended.esp, moves to Load Order (11) (just below the ESM files)!

Link to comment
Share on other sites

On 11/12/2017 at 7:29 PM, WrinklyNinja said:

No idea, but I'm assuming the order won't change except possibly when game updates happen, i.e. I don't expect it to change during normal game usage, so just load it once when I initialise my application.

I'm doing the same - I could check for changes on this file on refresh but it's an overkill

On 11/17/2017 at 8:20 PM, SQr said:

Here's some additional info.

I tried the latest dev version of Wrye Bash, as suggested by Arthmoor in one of the above post, to check the effect this has on save files. Seems like it performing exactly as I hoped, the ESL tagged ESP files are located at the bottom of the load order, while their corresponding ESP master is also exactly where it is supposed to be (in this case, Load Order (18) for Armorsmith Extended.esp)

I also tried to do the same using pure ESL files, the results were quite different. The save shows the ESL files at the bottom, but their corresponding ESP master, Armorsmith Extended.esp, moves to Load Order (11) (just below the ESM files)!

The save game keeps all espm masters first, then all esl masters - two consecutive arrays. So Bash displays them as it finds them in the save. I am not sure how to handle this - I am inclined to add a menu item for displaying the esl save's masters ordered with the esms. In latest nightly (several bugs fixed on esl load order handling) I load esls with esms - could you try that ?

Link to comment
Share on other sites

On 11/17/2017 at 1:50 PM, hlp said:

Since ESL were introduced there is no guarantee than the plugin id and the actual load order of that plugin are equal.

When a plugin, whether esm/esp or esl is elected to be loaded, any dependent plugin, whether esm/esp/esl not yet elected to be loaded will be inserted in the load order before the plugin currently being processed.

 

 

Which combined with the rule that esls load with esms (based on extension not on the esl flag) would lead to esps loading with esms

Bash only looks at extension to load order (assign a load order in its UI and its internal processing) esl files - that would explain @SQr why your esl "tagged" esp stays at the "bottom" of the load order - it still had the esp extension ?

Link to comment
Share on other sites

2 hours ago, Utumno said:

The save game keeps all espm masters first, then all esl masters - two consecutive arrays. So Bash displays them as it finds them in the save. I am not sure how to handle this - I am inclined to add a menu item for displaying the esl save's masters ordered with the esms. In latest nightly (several bugs fixed on esl load order handling) I load esls with esms - could you try that ?

Is version 307.201711041935 the latest nightly? That's the version I used to do my tests.

 

2 hours ago, Utumno said:

Bash only looks at extension to load order (assign a load order in its UI and its internal processing) esl files - that would explain @SQr why your esl "tagged" esp stays at the "bottom" of the load order - it still had the esp extension ?

Yes, it still has esp extension. Renaming the same file(s) to esl, messes with the save's load order.

Link to comment
Share on other sites

Off the back of what hlp and SQr have said, I've now updated my stuff to treat all .esm and .esl files as having the master flag set, even if it isn't, and I also check for the light master flag as well as the .esl extension (so a .esp with the light master flag set is treated as a light master). Hopefully I haven't misunderstood anything and that's the correct behaviour.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...