Mod Manager Features & Functionality

Not about OpenMW? Just about Morrowind in general? Have some random babble? Kindly direct it here.
User avatar
openmwfan27
Posts: 113
Joined: 23 Apr 2015, 22:11

Re: Mod Manager Features & Functionality

Post by openmwfan27 »

So, i've spent ~4 days on this over the past few weeks. As you can imagine it's far from being usable but the 'core' functionality seems to be working ok.

It can work with multiple versions of the OpenMW engine, theoretically including forks as long as they don't differ too drastically from OpenMW of course.

It also supports multiple games, at the moment i only have Morrowind and the OpenMW Template / Example Suite, it should work with games other then those too.

Mod's work, there's no gui for browsing to and selecting an archive file, but installing mods works, you can point the app at a zip file containing a mod and it will enumerate mods contained in the archive (including mods with no .esm, .esp, .owmaddon like texture mods or splash screen replacers) At the moment it only reads .zip files but the system should support at least .gzip, .tar, .tar.gz, .zip, .rar, .7z and .zip files and maybe a couple more.

You can enable / disable mods, change the graphics settings or anything in the tweaks tab and it will commit those changes to the settings.cfg next time you run the game or launcher.

When you finish playing the game the app will re-scan the settings.cfg file and look for changes between that and the version it previously wrote, then imports any new or changed settings back into the correct profile so they can be used next time you play the game. This means things like window positions in game are remembered between sessions, and are saved on a per-profile basis in the app. I also plan to do a similar thing with the Openmw.cfg too.

Enabled mods will be enumerated when you start the game, and a correct set of content files and data directories are worked out and put into a priority order which will ultimately be determined by the mod load order.

Mod files and the game's core data files are kept separately, and installed mods are kept in their own folders so they don't over-write eachothers files or the core games files. If OpenMW respects the order of data directories when choosing what file to use when two mods use the same file then the situation darkbasic describes should already be the case? at least partly anyway, i've not had enough time to really test OpenMW to see exactly how it's making those decisions.

Anyways, only a few days work there at the moment, and it's the first Python App, and first PyQT App i've written so there's still loads more to learn, many many bugs to fix, and loads of optimisation to do, if this ever goes anywhere and it becomes usable i'll release it for others to use if they want too, or if they want to improve on what i've done. So far i've really enjoyed using Python and QT, i should have gotten into this sooner :P

Screens:
https://imgur.com/a/c2btb
Last edited by openmwfan27 on 30 Apr 2016, 18:05, edited 1 time in total.
User avatar
Amenophis
Posts: 320
Joined: 30 Oct 2011, 04:34
Location: Fortaleza - Ceará - Brasil

Re: Mod Manager Features & Functionality

Post by Amenophis »

Thank you, sir. This is a great addition for the OpenMW users.
Just let me add some more feature requests: I've using Wrye Mash for years, so, one of the tabs let you see the saves. When you click on the save a list of mods are show and then you can: a)load all that were created with b)deselect one or more of them and clean the save c) select one of the mods and change it to another one (like when a mod is updated and it name is changed) and that way don't losing the references that could change when updating from one to another.

So, my feature request above the Wrye Mash is: when selecting a omwsave, the Mod Manager can activate all the required mods in the exactly order when the save was created.
User avatar
openmwfan27
Posts: 113
Joined: 23 Apr 2015, 22:11

Re: Mod Manager Features & Functionality

Post by openmwfan27 »

That is a great idea, i'll have to look into how OpenMW handles saves and how that fits in to the mod manager. My main goal at the moment is to get all the basics working and stable, then build in some integration for downloading mods from nexus and other sites. I'm working on a GUI at the moment for installing and configuring mods, so if the mod manager guesses what mod(s) are in the .zip archive and it's not correct or you want to customise it, you can re-configure everything to your liking before finally installing the mod.
darkbasic
Posts: 153
Joined: 18 Apr 2016, 15:45
Contact:

Re: Mod Manager Features & Functionality

Post by darkbasic »

I missed the git repo url, where can I find it?
User avatar
Amenophis
Posts: 320
Joined: 30 Oct 2011, 04:34
Location: Fortaleza - Ceará - Brasil

Re: Mod Manager Features & Functionality

Post by Amenophis »

Thanx.
User avatar
openmwfan27
Posts: 113
Joined: 23 Apr 2015, 22:11

Re: Mod Manager Features & Functionality

Post by openmwfan27 »

I'll be sure to upload it to github when it's in a fully usable state (although it'll probably have a few bugs :o ).

I've made some progress with the GUI for installing mods, some screens can be seen here:

https://imgur.com/a/8wVFS

They show the various steps, as well as the 'automatic' mod enumeration, along with the 'nice' names it generates for mods based off the filename and folder path.

You can of course change any of the names, along with the mods that will be installed, so if the app guesses wrong or you want thing's configured differently, that's totally an option too.

From the archive you can add add-on files such as .esm, .esp and .omwaddon files as mods, or you can add directories as mods (in the case that your mod is a texture mod, splash screen replacer, sound overhaul etc..)

The mods are enumerated by looking for all add-on files in the archive, and for scanning the archive looking for folders which contain at least one of the 'data' folders, e.g 'Textures'.
vorenon
Posts: 15
Joined: 25 Feb 2013, 11:07

Re: Mod Manager Features & Functionality

Post by vorenon »

openmwfan27 wrote:If someone were building a mod manager for OpenMW what features and functionality would you like to see (aside from the obvious things like, install a mod, remove a mod etc..)
Support for multiple data folders & data folder load ordering. (Kind of like BAIN in Wrye Bash)
Integrated merge objects/leveled lists function (Does OpenMW handle that in-engine already?)
Support for the mlox masterlist
Support for Nexus Mods, so we know when a mod needs updating

Also for us Linux users:
Case insensitive installing of mods. Problem is that texture and Texture can exist in the same data folder.
User avatar
openmwfan27
Posts: 113
Joined: 23 Apr 2015, 22:11

Re: Mod Manager Features & Functionality

Post by openmwfan27 »

vorenon wrote:Support for multiple data folders & data folder load ordering. (Kind of like BAIN in Wrye Bash)
I am not familiar with BAIN in Wrye Bash, at the moment the mod manager will generate a list of data files and data directories based off of your enabled mods, the main game data file and data directory are always at the top of the list.

When you launch your game it will build the list of data files and data directories in the same order as your enabled mods and write it to your openmw.cfg file.

I'm not sure if this is what you meant? When installing mods in the mod manager each mod archive is extracted to a folder on your PC, and then mods are mapped to paths within that folder. As a result all of the files in all your mods are kept seperate, i don't know if the OpenMW engine takes the order of data directories into account, not had a chance to test that properly yet.
vorenon wrote:Integrated merge objects/leveled lists function (Does OpenMW handle that in-engine already?)
I'm not sure, is this to do with the save games?
vorenon wrote:Support for the mlox masterlist
Is this what you are refering to? https://sourceforge.net/p/mlox/wiki/Tes3cmd/ It looks like a mod cleaner tool, although it would be nice to have i think this is something that would come later down the line. At the moment one of the challenges i've run into is extracting data from .esm, .esp and .omwaddon files about things like dependancies etc..
vorenon wrote:Support for Nexus Mods, so we know when a mod needs updating
You should be able to download mods from the Nexus site, as well as any other website too via a built-in webkit browser. I also plan to implement some method of updating mods manually too. I don't know if the API for the Nexus Mod Manager is public, or whether they allow 3rd party clients to integrate with their API's so automatic updating of mods from Nexus Mod Manager is probably not something that will happen anytime soon, unless their API's and policies allow this, then maybe it will happen sooner, does anyone else know more about the Nexus Mod Manager API and their policies?
vorenon wrote:Also for us Linux users:
Case insensitive installing of mods. Problem is that texture and Texture can exist in the same data folder.
The case of folder names should be handled by the OpenMW engine, we are only passing the paths which contain the Textures folder, from here OpenMW should be able to handle that. On the mod manager side of thing's i have taken case into account in some of the logic, i've already tried multiple mods which contains a 'Textures' or a 'textures' folder and run the game with them enabled, everything seems to work fine so far.
vorenon
Posts: 15
Joined: 25 Feb 2013, 11:07

Re: Mod Manager Features & Functionality

Post by vorenon »

I am not familiar with BAIN in Wrye Bash, at the moment the mod manager will generate a list of data files and data directories based off of your enabled mods, the main game data file and data directory are always at the top of the list.

When you launch your game it will build the list of data files and data directories in the same order as your enabled mods and write it to your openmw.cfg file.

I'm not sure if this is what you meant? When installing mods in the mod manager each mod archive is extracted to a folder on your PC, and then mods are mapped to paths within that folder. As a result all of the files in all your mods are kept seperate, i don't know if the OpenMW engine takes the order of data directories into account, not had a chance to test that properly yet.
BAIN looks like this: http://tesfans.org/guides/wrye%20bash/b ... lers-8.png
It provides installation from archives with the ability to manage load order of not just .esp/.esm files, but the load order of every installed mod. It can also show you file conflicts in case you want to see which mods provide the same file.

If you want to test that with vanilla Morrowind, you can try Wrye Mash. It's the "Installers" tab in that program.

I'm not sure, is this to do with the save games?
This is a pretty complicated matter. I don't know how OpenMW handles this, but "Merge objects" is like this:

You take a Chitin Dagger:

One mod adjusts the damage from 3-3/3-3/4-4 to 1/1/1
The second mod adjusts the value to 2 gold instead of 6.

Now if you load both, the second mod will overwrite the record of the chitin dagger, making the first mod not have any effect at all.

This is how Morrowind and any later Bethesda game handled that, so I don't know if OpenMW merges records internally.

Leveled lists have basically the same issue.

There are tools to to merge objects, like TesTool's Merge Objects function. Sadly, it doesn't work with multiple data folders and tend to crash if you load too many mods at once. Also Windows only.
Is this what you are refering to? https://sourceforge.net/p/mlox/wiki/Tes3cmd/ It looks like a mod cleaner tool, although it would be nice to have i think this is something that would come later down the line. At the moment one of the challenges i've run into is extracting data from .esm, .esp and .omwaddon files about things like dependancies etc..
mlox is a tool to automatically set the load order of your mods based on a masterlist. It's written in Python, so maybe you can take a look at the code and take most of it without any modifications.

http://www.nexusmods.com/morrowind/mods/43001/?
The case of folder names should be handled by the OpenMW engine, we are only passing the paths which contain the Textures folder, from here OpenMW should be able to handle that. On the mod manager side of thing's i have taken case into account in some of the logic, i've already tried multiple mods which contains a 'Textures' or a 'textures' folder and run the game with them enabled, everything seems to work fine so far.
Problem is about this case:

Example Mod 1.0:
Textures/exampletexture.dds
Example Mod 1.1 (requires 1.0)
textures/ExampleTexture.dds

How does OpenMW handle this when both files are in the same data folder?
User avatar
DestinedToDie
Posts: 1181
Joined: 29 Jun 2015, 09:08

Re: Mod Manager Features & Functionality

Post by DestinedToDie »

vorenon wrote:This is a pretty complicated matter. I don't know how OpenMW handles this, but "Merge objects" is like this:

You take a Chitin Dagger:

One mod adjusts the damage from 3-3/3-3/4-4 to 1/1/1
The second mod adjusts the value to 2 gold instead of 6.

Now if you load both, the second mod will overwrite the record of the chitin dagger, making the first mod not have any effect at all.

How does OpenMW handle this when both files are in the same data folder?
From my understanding it works exactly the same as vanilla engine.
vorenon wrote:
Example Mod 1.0:
Textures/exampletexture.dds
Example Mod 1.1 (requires 1.0)
textures/ExampleTexture.dds

How does OpenMW handle this when both files are in the same data folder?
OpenMW.cfg has a load order for these folders. Whichever folder with ExampleTexture.dds is the last is the one that gets used.
Post Reply