[WIP] BOSSv3 Development Thread

Post » Mon May 06, 2013 11:49 pm

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:

  1. Download and extract the tester from https://dl.dropboxusercontent.com/u/17043363/BOSSv3%20Sorting%20Test%202.7z.
  2. Run the .bat file you extracted, making sure that the .exe and .cfg files are in the same folder as it.
  3. 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.
  4. 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.
User avatar
Darren Chandler
 
Posts: 3361
Joined: Mon Jun 25, 2007 9:03 am

Post » Tue May 07, 2013 4:10 am

One thing I forgot to mention yesterday, the code to read in the configuration file for the plugins needs the file to have the line endings for the platform it's running on the way it's written. So, for Windows, you'll need to make sure you've converted the line endings before you packed it up. If not, it'll crash due to not being able to read in everything and such.

Just wanted to make sure that was made aware of. :)

User avatar
lolly13
 
Posts: 3349
Joined: Tue Jul 25, 2006 11:36 am

Post » Tue May 07, 2013 1:06 am

:blink:

Automating load orders? What a concept :D

Good luck with this! And welcome back.

Active Mod Files:

Spoiler

tester log:

Spoiler

User avatar
Mandy Muir
 
Posts: 3307
Joined: Wed Jan 24, 2007 4:38 pm

Post » Tue May 07, 2013 8:26 am

pure genius at work here :D

User avatar
Sammygirl
 
Posts: 3378
Joined: Fri Jun 16, 2006 6:15 pm

Post » Mon May 06, 2013 6:44 pm

From dAb's results things look a bit...iffy :P

I'll give it a run once I get back from my training tonight :)

Sounds great though and congrats on (presumably) figuring out the technical side of things! You've outdone yourself once again Wrinkly

User avatar
Ana
 
Posts: 3445
Joined: Sat Jul 01, 2006 4:29 am

Post » Mon May 06, 2013 8:03 pm

By a brief look at the log it's because no ESPs are treated as masters, therefore no precedence is given, even though in my LO all UPs and two other ESPs [YASH.esp and ASIS-Dependency.esp] are masters of something else.
User avatar
Tiffany Castillo
 
Posts: 3429
Joined: Mon Oct 22, 2007 7:09 am

Post » Mon May 06, 2013 8:25 pm

It took quite a while to run on my load order. :P

Active Mod Files:

Spoiler

Log.txt

Spoiler
User avatar
Robyn Howlett
 
Posts: 3332
Joined: Wed Aug 23, 2006 9:01 pm

Post » Tue May 07, 2013 5:29 am

Yeah, something isn't working, that's for sure.

Welp, that's what testing's for! ;)

User avatar
-__^
 
Posts: 3420
Joined: Mon Nov 20, 2006 4:48 pm

Post » Mon May 06, 2013 8:07 pm

Alright, so ESMs are being detected as masters properly. Can someone point me to a small ESP that should be detected as a master? I just want to check a minor thing with it. The tests I ran worked out ok when I wrote that code months ago, though.

User avatar
Samantha Mitchell
 
Posts: 3459
Joined: Mon Nov 13, 2006 8:33 pm

Post » Mon May 06, 2013 11:31 pm

Crashed it :tongue:

Active Mod Files:

Spoiler


Error report:

Problem signature:  Problem Event Name:    APPCRASH  Application Name:    tester.exe  Application Version:    0.0.0.0  Application Timestamp:    517e9d2d  Fault Module Name:    tester.exe  Fault Module Version:    0.0.0.0  Fault Module Timestamp:    517e9d2d  Exception Code:    40000015  Exception Offset:    000bb875  OS Version:    6.1.7601.2.1.0.768.3  Locale ID:    1033  Additional Information 1:    672d  Additional Information 2:    672de25fc936ecb7b63aff4e63e3e415  Additional Information 3:    d3d6  Additional Information 4:    d3d6592649e0398bde6dd589a9439097

Log only gave me this:

Spoiler

User avatar
ILy- Forver
 
Posts: 3459
Joined: Sun Feb 04, 2007 3:18 am

Post » Tue May 07, 2013 1:55 am

I've tested it with a big number of mods (STEP + some additions), and it took slightly over 3 minutes to sort, as comapred to the few seconds of v2.1.1.

Also, the load order is very different from 2.2.1 - http://pastebin.com/xgVeSsbT, and http://pastebin.com/1L8tng62.
User avatar
Laura Samson
 
Posts: 3337
Joined: Wed Aug 29, 2007 6:36 pm

Post » Tue May 07, 2013 7:33 am

Right, old load order given by BOSS + myself:

Active Mod Files:
Spoiler
Order given by BOSSv3:
Spoiler
I'll have to take a good look into it some other time but from a quick glance it seems mostly okay.

EDIT: I am noticing it places the USKP pretty far down, but I presume that isn't an issue for the purposes of this test?

User avatar
adam holden
 
Posts: 3339
Joined: Tue Jun 19, 2007 9:34 pm

Post » Mon May 06, 2013 11:30 pm

Actually, I think I know why ESP's aren't working out as masters. Not something on my side of things, but here's what'll have to be done on a basic level (I think, I haven't actually looked at any plugin yet): each plugin will need to have its list of masters stored and each time a file is hit, it will be checked against these lists. When it hits a match, it then increments the load order counter for the file depending on it. Not exactly efficient, but I think that'd work.

User avatar
Madison Poo
 
Posts: 3414
Joined: Wed Oct 24, 2007 9:09 pm

Post » Mon May 06, 2013 11:57 pm

OK, I can replicate your crash, Arthmoor, and I'm looking into why my sort function isn't working as I thought it would (which is why some plugins are being put before others they depend on).

I've also added links to the relevant code repositories in the OP, though they aren't up-to-date with my local code just yet.

User avatar
Janette Segura
 
Posts: 3512
Joined: Wed Aug 22, 2007 12:36 am

Post » Tue May 07, 2013 1:28 am

The libloadorder and libespm links link to this page :tongue:
User avatar
Shae Munro
 
Posts: 3443
Joined: Fri Feb 23, 2007 11:32 am

Post » Tue May 07, 2013 12:41 am

Stupid forum software. Fixed, thanks.

User avatar
Rach B
 
Posts: 3419
Joined: Thu Mar 08, 2007 11:30 am

Post » Tue May 07, 2013 4:10 am


Care to fix the Tester link as well? :tongue:
User avatar
marina
 
Posts: 3401
Joined: Tue Mar 13, 2007 10:02 pm

Post » Mon May 06, 2013 5:27 pm

I've updated the link in the OP to a new version of the tester. This should fix the issue with masters not always being positioned before the plugins dependent on them, and also otherwise improve the quality of the sorting.

I haven't yet fixed the bug which causes crashing when loading Skyrim.esm, "Tamriel Compendium.esp" or "Tamriel Compendium - Skill Books.esp", so those plugins are just skipped entirely.

Thanks for the feedback so far, it has been very helpful. I've made a note of any known sorting issues in the OP.

User avatar
Claire Jackson
 
Posts: 3422
Joined: Thu Jul 20, 2006 11:38 pm

Post » Mon May 06, 2013 11:13 pm

Ran it again with the skipped mod. My actual load order hasn't changed since last post.

Here's the result log:

http://pastebin.com/uNK0Nj52

Curious as to why it's flagging a couple of things as having unexpected index values.

User avatar
No Name
 
Posts: 3456
Joined: Mon Dec 03, 2007 2:30 am

Post » Tue May 07, 2013 7:13 am

Ran it again, my load order is the same as the last post:

Active Mod Files:

Spoiler

And here's the tester log:

Spoiler

User avatar
Teghan Harris
 
Posts: 3370
Joined: Mon Mar 05, 2007 1:31 pm

Post » Tue May 07, 2013 7:08 am

That's just because I don't actually know what modIndex (the xx part of a formID xxYYYYYY) is assigned to new records that are added to a plugin, so I assumed that it would be one greater than the index of its last master, but for some records it is higher than that. The message is printed in case there's some sort of reasoning behind it that I can figure out, but it's not important really.

User avatar
Cheville Thompson
 
Posts: 3404
Joined: Sun Mar 25, 2007 2:33 pm

Post » Tue May 07, 2013 2:03 am

took about 5 minutes to run, with memory usage peaks of about 1.5GB. also the output doesn't seem right:

http://pastebin.com/qKbkCxeV

there's also the modIndex error

and my actual load order:

http://pastebin.com/NPUDMrWH

User avatar
Syaza Ramali
 
Posts: 3466
Joined: Wed Jan 24, 2007 10:46 am

Post » Tue May 07, 2013 1:20 am

https://dl.dropboxusercontent.com/u/37323692/log.txt

Active Mod Files:

Spoiler

User avatar
Mike Plumley
 
Posts: 3392
Joined: Wed Sep 05, 2007 10:45 pm

Post » Tue May 07, 2013 1:03 am

I haven't had time to look over the last few logs submitted, I've been concentrating on getting the non-sorting parts of BOSS done. Hopefully I'll find time in the coming week.

I've:

  • Stopped BOSS crashing on certain plugins.
  • Cut down memory usage considerably, with < 100 MB now being taken up for ~ 90 plugins.
  • Implemented masterlist and userlist support including condition evaluation and integrated their metadata into the sorting algorithm.
  • Cut down execution time a bit, to 51 seconds (50s is used reading the plugins, and most of that on Skyrim.esm).
  • Implemented BOSS settings file parsing.
  • Implemented the backend for setting the load order (it isn't used yet, so that the tester doesn't mess around with your load orders).
  • Implemented checks for install validity (no missing requirements, no incompatibilities present).
  • Started on the UI - the launcher and settings windows are now done, and I have a preliminary design for the results customisation/metadata editor interface.
  • Implemented game detection (overridden for the tester so that it only works for Skyrim).

The crash fixes, memory and speed improvements are courtesy of a new plugin parser that just grabs the contents of the TES4 record and a list of all the FormIDs in the plugin. I'll be porting it back into libespm once I've done any work necessary to get it working in the other games BOSS will support.

User avatar
Johnny
 
Posts: 3390
Joined: Fri Jul 06, 2007 11:32 am

Post » Mon May 06, 2013 4:54 pm

If you would, mind opening up a pull request when you do for some of the core fixes and changes? Just makes it simpler for me to keep track of. :)

User avatar
christelle047
 
Posts: 3407
Joined: Mon Apr 09, 2007 12:50 pm

Next

Return to V - Skyrim