Content of the article: "STRESS TESTING SKYRIM: Why the Limit for ESL Files is Much Lower Than You Think, and How Devs Can Optimize Their Mods to Minimize Footprint on Load-Order."
- 1 This is a detailed analysis of the limitations of Skyrim modding, and how to maximize your modding capabilities without rendering the game unplayable in situations where there aren't technically any mod conflicts. More importantly, i have some insight for developers on how to help make your mods easier to use alongside others in crowded load orders.
- 2 —– PART 1: BACKGROUND —–
- 3 —– PART 2: PUSHING THE LIMIT —–
- 4 —– PART 3: WHAT I LEARNED —–
- 5 —– PART 4: THE POINT —–
- 6 —– CLOSING REMARKS —–
Several years ago, a college professor once said to me, "Less is More, But More is Definitely Also More." that's a line that always stuck with me, mostly because i have a zippy little ADHD brain that is easily amused.
This is a detailed analysis of the limitations of Skyrim modding, and how to maximize your modding capabilities without rendering the game unplayable in situations where there aren't technically any mod conflicts. More importantly, i have some insight for developers on how to help make your mods easier to use alongside others in crowded load orders.
Notice: If it wasn't already clear, this is all only relevant to Skyrim Special Edition for the PC, and only possible with the use of SSE Engine Fixes, and therefore SKSE64. Without these utilities, your experience will be under far more cumbersome limitations. Also, this is going to be a very long read full of information that many of you probably already know. If that's you, feel free to skimp to PART 4 at the bottom.
—– PART 1: BACKGROUND —–
I've been modding Skyrim pretty much nonstop since early 2017, so more than three years now. I was present when the "Light Master File" or ESL was introduced. It was a real Godsend because it allowed us the freedom to mod beyond the hard limit of 255 active plugins. So now patches "don't count" in your load order. Of course it was always known that this was an exaggeration, and the limit to how many ESL Plugins you can have in your load order was estimated to be around 4096. So it was assumed that as long as you remain below that number of plugins, the only limitation should be the capabilities of your computer to process it all.
after making some significant upgrades to my computer back in February of this year, i found that those upgrades, combined with the wealth of experience I've had in modding Skyrim, allowed me to really dig into the Creation Kit and make my own patches for various mods to work together that had not previously been compatible. What that meant was that i could use more mods than ever before, because so long as there were fewer than 255 ESP/M files in total, and all of my patches were compacted and flagged ESL, there would be little issue with patching together all the mods i wanted to use to personalize my experience with Skyrim (and in doing so, pretty much soil my ability to enjoy many other games that i can't personalize. C'est la vie).
Where I am now, I have succeeded in this. But i learned a lot along the way and i feel i should share this information, because it directly defies previous information that was presumed true to many of the folks I've interacted with during my time in the Skyrim modding community, and i hope to help everybody maximize their experience with Skyrim, a game that owns significant stock in my very soul.
Side Note – I've been asked multiple times on this sub, "why do you need so many mods???" and the answer is simply that I don't. I mostly just like to mess with stuff. Presently I have roughly 250 mods that require a lot of ESL patches (many of which i created myself) in order to work together, and then i have added additional, simple, smaller mods to add new things such as new weapons and armor to the game, under the assumption that so long as they were functional as ESL files, there would be no issue. And I was correct, albeit there were more limitations i learned about along the way. If you feel the need to further question my reasoning, please direct all mouth-breathing to
—– PART 2: PUSHING THE LIMIT —–
The Myth – "ESL files do not count against your load order, so long as you have fewer than ~4000 plugins total.
The Truth – they absolutely do, and the limit is much lower than the commonly supposed 4096 estimate. Based on my experiments, I estimate that the limit is roughly half of that, 2048, though I predict that it is lower still. maybe even ~1024. and that's not just ESL files, that's total plugins.
Recap on what mods can be flagged as ESL:
- Must contain no more than 2048 new record forms
- Must not contain any new CELL records
That's literally it, from a developer's POV. The limit to how many overriding forms can be present in one ESL file, overriding a separate Master File, is only limited (at least as far as my experiments have shown) to the number of masters one plugin can have, which is 255.
So with this knowledge, if you're creating a mod for SSE, and it is ESL capable as defined by those two conditions, then there's no excuse to not release it as a ready-made ESL. (Further detail below)
So long as the aforementioned prerequisites are met, any mod can technically be converted to the ESL format by opening it in SSEedit, right clicking on it, and selecting "Compact FormIDs for ESL", and then going to the plugin's header and marking the ESL flag.
HOWEVER: If the mod contains any of the following*, there will be issues that must be addressed and additional work to be done.
- new lines of voiced dialogue
- New NPCs with chargen files
If the mod contains any of them, then the facegen, facetint, and voice files will need to reflect the changes to match their respective records' new FormIDs. if they are just overwriting existing files from other mods or the base game, then this is not necessary.
- Note to Developers: This can be easily avoided by Compacting the FormIDs in your new mod BEFORE finalizing your mod in the CK and exporting any of said file assets. there is an option to do so under the "File" tab of the toolbar. This saves you and any prospective users from additional work later.
*There is also one more limitation, involving scripts: if any of the Script files reference specific FormIDs in the plugin, then the scripts will also need to be rewritten and recompiled to reflect said changes. Very few mods do this anyway, because most mod authors know easy ways around it. you can avoid the issue altogether by having the script reference the record's EditorID instead of it's FormID. I will expand on this in PART 4. read on to learn more.
—– PART 3: WHAT I LEARNED —–
okay, so now i get to talk about what i actually learned, why it's important, and hopefully maybe influence mod authors to consider some small changes in the technical methodology of their creative process.
– forgive me for simplifying a lot of my explanations here, i'm not overly familiar with how the SKSE functions work, but i know enough to identify a problem and workout a way around it.
It's known that SSE Engine Fixes has a workaround for a bug known as the "false save corruption bug."
this fix does as follows:
"Sets the maximum number of open file handles to 2048 (default 512), preventing the game from running out with large plugin counts (fixes false save corruption)"
In my research into what exactly the hell that means, I eventually learned that "open file handles" means, in simple terms, how many files the game engine can handle at once without, uh, breaking. basically if you exceed this limit, elements of the game will slowly cease to function. the first thing I always notice is that all text fails to register and just shows up as boxes, and dialogue with NPCs becomes completely impossible. if you go to reload a previous save, you will notice that literally all of your saves are showing up as corrupted. even ones that had previously been completely fine. This is the "False Save Corruption Bug". If you close the entire game, and relaunch it, you will be able to load your saves without any issue, but it's only a matter of time before the bug appears again, be it an hour or twenty minutes, as was usually the case for me. This is what inevitably happens when you exceed the "Open File Handle Limit".
so what counts towards The Open File Handle Limit?
I learned that these files, specifically, contribute to the limit:
- All plugin files, regardless if they are ESP, ESM, or ESL
- All SKSE plugins.
- some other files, but the sources i found did not specify what they were. I reached out to the account that hosts the page for SSE Fixes on the Nexus for more information, as well as to see if this limit could be further increased, but i never heard back. I Suspect that BSA and sequence files are among those that count, but i was not able to confirm this.
So from this it was made entirely clear that you can't even have as many as 2048 plugins total, even if they're ESL plugins.
—– PART 4: THE POINT —–
my solution to this (which i can confirm has worked beautifully) is simple: Merge your Patches.
Z-Edit has an extremely handy and easy-to-use function called Z-Merge, that does exactly as the name implies, and also handles the assets that need to be changed to reflect any changes in FormIDs.
This is a touchy subject for some mod authors who, understandably, refuse to provide support for merging their plugins, because it is not the way they intended for their mod to be used. but they shouldn't need to provide any support, as merges can be rebuilt when patches get updated, and the author needs only to fix or avoid these specific issues to make their plugins completely merge-friendly:
- the first issue is: if any particular mod involves a script that references specific records by their FormID instead of their EditorID. that's a self-explanatory fix, just give the record a unique EditorID and have the script reference that. Many mod authors already do this by default.
- the second issue is: if a particular mod requires a lot of patches, such as if a mod has lots of optional add-ons, and a script has to detect all of those plugins by file name, then those patches cannot be merged.
There's an extremely easy way to avoid the second issue: instead of having your script detect plugins by name, just create a GLOB (global) record in the master plugin; one individual global for each additional patch, set to "0" by default. Then have the additional patches override that global to "1", and instead of having the script check for each individual file by name, just have it check that each individual patch's corresponding global value is equal to "1". that way all the patches can be merged together flawlessly
In my experience, I went from just over 1500 plugins giving me the corruption bug, to just over 800 running smooth as butter, just by merging several hundred plugins together into eighteen separate merges, grouping them together by what kind of changes they made or what content they added. the amount of content is the same, but the number of plugins is fewer: Less is More. But More is Also More, and there are other mods I'd like to merge, but can't, because they have the second script-related issue, and i hope to reach out to their authors and request that they resolve the issue as I outlined above. Otherwise i'll just do it for myself.
—– CLOSING REMARKS —–
Your experience may vary. i'm trying to find all of the sources for the information i gathered but i've misplaced some links and it's all deep in various forums anyway. feel free to call me a hack fraud and such if you have contrary evidence, or if you think i explained things poorly, or you already knew all this, or if you are insulted by my audacity to offer suggestions to modders about how to make their own mods better, or if you just plain don't like me! (or if you REALLY like me, and that's just your way of letting me know <3 )
Really though, if you have anything at all to add to my notes, lay it out. In the end I only hope to help enhance the modding experience and capabilities for everybody!
and if you actually made it this far, thanks for reading!
© Post "STRESS TESTING SKYRIM: Why the Limit for ESL Files is Much Lower Than You Think, and How Devs Can Optimize Their Mods to Minimize Footprint on Load-Order." for game The Elder Scrolls.
Top 7 NEW Games of June 2020
Quite a few exciting games are releasing for PC, PS4, Xbox One, and Nintendo in June. Here's what to keep an eye on.
Top 10 NEW Open World Games of 2020
Video games with open worlds continue to roll out in 2020 on PC, PS4, Xbox One, Nintendo Switch, and beyond. Here are some to look forward to!
Top 10 Best New Upcoming Games 2020-2021
The best selection of games which will be released in 2020 and 2021 for PS4, PS5, Xbox One, Xbox Series X, Google Stadia and PC - and you can watch in amazing UHD 4K and 60FPS with latest updates about all of the games in this list!