BOSSv3 Development Thread
BOSSv3 is in development, and it's almost a completely new program. Lots of things will be different, and so lots of things will require testing. As development progresses, I'll use this thread to announce new test releases and to gather feedback. The BOSSv3 code can be found https://github.com/WrinklyNinja/BOSSv3, and I'm also using https://github.com/WrinklyNinja/libloadorder and a modified version of https://github.com/WrinklyNinja/libespm along with a bunch of other libraries such as several Boost libraries, yaml-cpp and wxWidgets (once the UI work starts).
Test - Sorting Agorithm
One of the main aims of BOSSv3 is to drastically cut down on the amount of work required of its maintainers, by sorting as many mods as it can without needing masterlist entries for them, instead reading the plugins and using the data they contain to figure out where they should go. There are probably a fair number of factors that go into where a plugin should go, but I've started off with the simplest criteria that provide a correct load order for my test mod install (which consists of the 60 top rated Steam Workshop mods plus a few others I already had installed).
That install is not indicative of mods in general though, so I'm providing a tester application that will generate a log file containing (among other things) the order that it thinks your installed Skyrim mods should go in. If people run this and anolyse its output for me (which isn't terribly difficult to do), then I can use that data to further refine the sorting criteria used.
To use the tester:
- Download and extract the tester from https://dl.dropboxusercontent.com/u/17043363/BOSSv3%20Sorting%20Test%202.7z.
- Run the .bat file you extracted, making sure that the .exe and .cfg files are in the same folder as it.
- Open the log file, and compare the order of the plugins given in it (below the "Time taken to sort plugins: ..." lines) to your current load order (I assume that your current load order is correct to the best of your knowledge). Investigate any differences using TES5Edit to see if the changes still produce a valid load order or not.
- Post your current load order and the contents of the tester log file in spoiler tags, along with the results of your investigation in TES5Edit. If your load order or log file are too long for the forum, upload them somewhere (eg. pastebin) and link to them in your post.
Please don't post anything without checking yourself in TES5Edit for issues with what the tester gives you as a load order, unless any issues are blindingly obvious. If you just post the tester log and your current load order, that doesn't tell me a whole lot about whether the tester's given load order is any good or not, which is the whole point of this testing.
When examining the plugins in TES5Edit, I'd recommend applying a filter to hide any records that aren't conflicting. I.e. check both "by conflict status..." boxes and make sure all boxes from "Benign Conflict" and below are checked in both lists.
Obviously, for this testing to be useful to me, you need to know how to use TES5Edit to look at conflicting records, and decide in which order those records' plugins should be loading, ie. you need to be able to manually set a correct load order.
The tester application is pretty much a quick hack, so it might well crash or otherwise not work for you. If it doesn't work right, post saying so with the contents of your log. Also, it will take significantly longer than BOSS does, because it has to read the plugins you have installed. It should take a few minutes or less though, so if after 5 minutes it hasn't finished, check the log and post saying it's taking ages.
Here's the current sorting criteria:
- Master files go before plugin files.
- All a plugin's masters go before that plugin.
- If two plugins edit the same record (or one edits a record added by the other), then the plugin with the larger number of total records will load earlier.
- Otherwise, they load in alphabetical order.
Simplistic, yes, but it gives a good order for my test install.
Issues identified thus far (and not fixed):
- Plugins such as the Unofficial Patches and the Bashed Patch tend to be positioned wrongly, as author intent really decides where they go, not what is inside them, and the tester can't read minds. Eg. the unofficial patches are intended to be loaded early then overridden as required, while the Bashed Patch is intended to override pretty much everything else. This will probably be solved using a metadata override flag of some sort, but I haven't come up with anything I'm happy with yet.
- Patch plugins that do not have the plugins they patch as masters will probably be positioned wrongly. This will be solved by supplying BOSS with metadata that tells it about these plugins.
- The tester doesn't care about the order in which a plugin's masters load. To the best of my knowledge, this isn't terribly important anyway, but it should be noted that the tester won't necessarily sort a plugin's masters in the same order that they are listed in the plugin.