MLO algorithm improved #110
Labels
api
Related to side-software for IoA or mod support
code improvement
Call for some improvement of code
high priority
Label for requests being highly prioritised
Currently, MLO works in simple way:
This makes packs structure alphabetically, and then ordered alphabetically again with each new added packs.
This, however, makes MLO a bit useless for structuring it correctly and all ordering correctness is set on user.
There was idea of making it set on modder by manually putting "dependency number", but this had number of issues to be honest.
What I'd suggest though, is different approach, again inspired by Morrowind: sorting by date of changes. This makes all dependent files naturally come after its dependency, unless older version is used. In most cases though, it'd do a better job than current (brainless) algorithm.
So, to sum it in points:
In short, MLO should not overwrite order everytime, because this would make horror out of manual changes done by user - it should try to keep all existing mods intact, and focus on the ones that are not existing, putting it either at the end of queue, or more logically, wherever it fits best.
But, if someone updates mods, they could try reshuffling themselves at one point - there is some reasoning behind it. There's however one argument against it, which is "what about hypothetical not-updated dependent mod". On example:
Some workaround if you'd like to keep both options is button that would "reshuffle" specific mod after its initial phase. So it'd keep its position after update, but you can force it to adjust if you really need to. There's a question however what are use cases for such autoshuffling in general.
Myself, I suggest sticking to "not shuffling" unless very important matter appears in favour of shuffling.
* shuffling in this case means reordering, I just find this word more interesting to use and less confusing in terms that reordering sounds like doing ordering of all packs, not one specific
The text was updated successfully, but these errors were encountered: