Good Solution foundto my last problem :)
Dear Readers!
After many days of thinking and checking ideas/theories I come up with a solution that I consider "good solution" instead of an acceptable one, to my latest problem:
How to manage various original DLC stuff, and keep my mod compatible across all versions.
I dive a bit deeper on the whys to make it easier to understand why I chose the way I chose!
---------------
First the limitations and goals:
---------------
-My mod needs to depend only on Skyrim.esm
-It's expected a lot of new things are going to be added over time so, if I make new files like ESL flagged esps I need to consider the growth of files
-Use the minimum number of files
-Keep the mod workable in all versions of Skyrim and maintain maximum possible compatibility with everything
-The mod needs to be independent of other mods
---------------
The problem:
---------------
At first seemed the problem was to manage DLC items like Dragonborn armors added to my item lists so my mod detects them and is able to control what the player can wear/carry.
At closer inspection I realized the problem is a lot more complex... devil hides in details!
---------------
What I need to achieve here is this:
---------------
Make it possible for my mod to recognize items that exist outside of Skyrim.esm. Not only official DLC items but other mods’ made items too!
My first thought was I make a patch ESL flagged esp file that does the job: overwrite my formlists I store the item information in and job done.
This does not require any scripting, simple and reliable. Until more than 1 mod starts changing the same form list...
This leads to manual patching or using mergers...
If I make an interface and a very simple and reliable way or even better 2 ways to change SlaversOfSkyrim.esm item list forms I use... a very simple way that does not need any special knowledge...
Probably this is the way.
This makes it possible for other mods to interact with my mod without depending on each other mod being present in the load order. If I use scripts to manage the form list I don’t need to fear any overwrite issue like using simple xEdit patches.
Of course, this puts some pressure on the Papyrus system so I need to optimize the way that this overwriting is done once when the mod or patch is installed.
As you may see I’m not talking only about the items and item lists. The reason for this is I realized I need to aim more: I need a module in my mod that accepts external requests:
Other mods can send my mod requests to do things. The API section I made for my mod sends out requests to other mods, and receives answers.
But I have not yet made a module to receive from external mods requests. I am going to make a 100% separate interface for this purpose.
I don’t know yet how it’s going to look or exactly how it’s going to work or what exactly it’s going to do... these things over time as I advance are going to be seen.
What I know is this module is going to be named: External Module Input Interface (EMII).
I plan to make this module use very basic simple script (or scripts) to receive external commands and to be very easy to expand on my side.
This is going to make it possible to receive external data.
Other thing I came up with: I am going to use 2 esl files to store the original DLC information:
SLOS-DLC-1.ESL -- LE and SE version
SLOS-DLC-2.ESL -- AE version to handle the new Creation Club stuff that comes for free
For the time being these 2 files are going to be ESL flagged. This comes with a few big red warnings!
---------------
WARNINGS:
---------------
Warning 1: I don’t know how long these files are going to stay as they are. May be removed or replaced by an ESP version. I simply cannot predict.
I am going to aim to keep the record number in these files at a minimum and within the ESL file range! But using these files poses high risk for your save files!
It’s possible at any time in development these files are going to be dropped or changed!
Warning 2: I don’t know exactly what is okay and not okay to store in ESL flagged ESL files. Right now formlists and other simple things are going to be stored here that are known to be safe.
In future I might add other things like XMarkers, doors, navmesh edits.
Warning 3: To improve compatibility if this system works well I might add more ESL files, this only causes problems probably for LE users.
To help LE users:
I try to make the ESL files easy to merge even manually with SlaversOfSkyrim.esm (or maybe do it myself? before release?)
This way for LE users it’s probably easier to reduce the number of files needed to be loaded.
---------------
The good news:
---------------
I plan to make a template esl file. This file is very easy to edit in Creation Kit or xEdit. What does this file do?
If you rename it, it can be used to add new items to my item manager system, this way you don’t need to always manually add in-game items to the system. A user can make their own patches.
Other goodies:
Over time I’ll add new options to the EMII module, this way when the mod comes out of alpha and beta status other modders can add interaction to my mod if they choose to do so.
(Yes, I dream very big
)
2 Comments
Recommended Comments