ModOrganizer2 / modorganizer

Mod manager for various PC games. Discord Server: https://discord.gg/ewUVAqyrQX if you would like to be more involved
http://www.nexusmods.com/skyrimspecialedition/mods/6194
GNU General Public License v3.0
2.09k stars 158 forks source link

[Feature Request] Allow usvfs to hide plugins (and other files) from the VFS without hiding them in MO #322

Open DarianLStephens opened 6 years ago

DarianLStephens commented 6 years ago

The problem

I'm not certain this is specifically related to the GECK, but when launching with NVSE or Geck Powerup, no Mod Organizer managed mods are available, just what's placed in the data folder. Launching the vanilla Geck will show the managed plugins. However, if I have 'Hide Inactive Plugins' enabled, then launching the vanilla Geck will show all plugins, seemingly ignoring the 'Hide Inactive Plugins' option. As an extension, using the 'Hide Inactive Plugins' option will alter the load order when running a program through MO, shifting all hidden plugins below the active ones, which is really just irritating. (I just had a thought, is that intentional? Are you now only hiding it for the game, rather than from everything?)

Environment

Details

I think I already went in to detail above. Although, it also seems like the Geck's configuration files are being ignored now, since it refuses to load multiple masters despite the option being selected in its INI. Scratch that, somehow the INI got reset. At a completely uneducated guess, it looks like the program is panicking when the GECK isn't what it expects, and is aborting everything. It used to be that I could just point an arbitrary program to the virtual folder and everything would work as expected, is this no longer the case? (Issue was previously named 'Error with Geck File System')

Link to Mod Organizer logs

USVFS

Log from GECK Powerup, MO2 was shut down and restarted, only launching GECK Powerup: https://gist.github.com/DarianLStephens/232f6b22d818d1bf933efa53bd5af5ea Log from Vanilla Geck, clean boot again: https://gist.github.com/DarianLStephens/3dd6fdb0a501cc26fdfa8f02a871d48d

MO Interface

Geck Powerup log: https://gist.github.com/DarianLStephens/66e446232d913db899bdf39aae4d14c8 Vanilla Geck log: https://gist.github.com/DarianLStephens/0218eefc4448409cfe6bcf44f59167ca Quick note, I did redo the vanilla MO Interface log, since I forgot about it before going to Powerup, but the exact same thing happened, so I doubt it affects anything.

Silarn commented 6 years ago

I assume you have it configured like this?

image

DarianLStephens commented 6 years ago

My NVSE Geck is set up exactly like that (Minus the icon thing), but it wouldn't show the actual data. Geck powerup is the same, just pointing to its .exe and without any arguments.

I have fixed the problem after reading through a few pages of issues, which involved moving MO2 out of my game's folder. I like to keep it organized that way, but I've come up with a new system. Still, I wonder why MO1 worked for this while MO2 fails.

Also, the load order shuffling with 'Hide Inactive Plugins' checked is still a pretty big issue. It even moves .esps above masters!

Silarn commented 6 years ago

The VFS is totally different and it has issues sometimes with this setup. It's an easy workaround so it hasn't been our priority to fix just yet.

As far as hide inactive plugins, that feature isn't working with the new VFS either and we were going to disable it in the next update. I would just leave it unchecked.

DarianLStephens commented 6 years ago

Unless you've fixed the issue where unselected plugins in the data folder still count towards the game's plugin limit, causing the regular issues that come with breaching the plugin limit much earlier, I'd say that's a bad thing, and completely not an option. Especially so for New Vegas, which has about half the plugin limit as other games (Around 135 or so).

If this is a whole new system, maybe you are doing something like that anyway. If not, I wonder what your solution to that would be. For an avid modder like myself, I have dozens of unchecked plugins in overwrite and other mods, and simply hiding them or moving them to another folder won't work, because they won't be in the plugin list when I need them, and will be placed at the bottom when I move them back out. It would be a big hassle, and mess up the layout of my plugin window.

Silarn commented 6 years ago

Are you saying that plugins are loaded even when they aren't specified in plugins.txt?

Silarn commented 6 years ago

Okay, yes. We'll have to come up with a solution to this. I'm not sure what that will be yet as USVFS doesn't exclude specific files right now.

Al12rs commented 6 years ago

We could take a look at how Wrye Bash allows users to "ghosts" plugins. The ghosted plugins are supposedly supported by loot and xedit.

DarianLStephens commented 6 years ago

I'd say the simplest way would be to allow the user to choose which executables have unchecked plugins hidden. Just a new checkbox in the executable editing menu or something. That way, you support all Bethesda games without the need for a specific list, and the user has even greater control over the file system.

Al12rs commented 6 years ago

Simplest way from the user prospective, not so much from the implementation point of view. The main problem is that Mo2 does not have any way, short of renaming files, to hide them from the programs. The VFS does not have a built in way to do this

DarianLStephens commented 6 years ago

So, I'm making some assumptions here, but I'm assuming you have a list of all files to be added to the VFS, right? Whether that's static or compiled on-the-fly, I don't know. If so, you could check the plugin list for whatever isn't ticked, and either skip adding them to the list, or add them to another list that you check against whenever creating the VFS.

Al12rs commented 6 years ago

I have not really delved into the mapping system but currently usvfs does not allow to simply exclude files from the mods. All files are loaded following the hierarchy of the priority so that higher priority files are mapped over the lower priority ones. That is the really easy version. It would be nice to have a file hiding system but that would require some bigger work and time that we currently don't have. So for now that is simply a long term plan. For the time being we can look at other ways such as the way WB handles it, which I'm pretty sure is by the use of adding a suffix to the plugin. We would really need some more help, currently we are just 3-4 Devs that do what they can in their very limited free time.

Silarn commented 6 years ago

We're currently mapping the entire directory, not each individual file. Regardless of how we handle it, it would involve creating a completely new system. This could come down to sending usvfs a list of files to hide, but then we need to modify potentially a number of system calls to skip over these files, particularly the search functions.

DarianLStephens commented 6 years ago

I guess you can't remove files from the system after the fact, or something. Alright, it seems like my load order is getting shuffled regardless of my 'Hide Inactive Plugins' setting. My plugin merger is also reporting that the Mod Organizer directory isn't set up right or whatever. This may sound rude, but is going back to MO1 as simple as it was to upgrade?