WeiDUorg / weidu

WeiDU is a program used to develop, distribute and install modifications for games based on the Infinity Engine.
http://www.weidu.org
GNU General Public License v2.0
87 stars 19 forks source link

[Feature request] Compatibility "layers" #225

Closed rubyFeedback closed 9 months ago

rubyFeedback commented 1 year ago

Hey there,

Weidu works very well for the most part. Unfortunately some mods tend to overwrite other mods, leading to amusing bugs, such as where dialogue interjections occur that lead to dialogues that make no sense, largely because they seem to be "pulled out" from other files, leading to some crazy babelfish dialogue. This is especially problematic in some quests, because the answer options given make no real sense. This is not the fault of weidu itself but of add-ons that are not fully compatible to one another. Some of these older mods are also dead so there is no way to update them easily anymore (unless some hero maintains them, which happened to the stronghold NPC mod, but even after the recent modification it still clashed with other mods for me).

Would it be possible for Weidu to keep "snapshots" aka a compatiblity layer of things?

My idea here is that we could arbitrarily re-shuffle content as-is to fix something. Ideally we could have guaranteed-to-work installation orders, but if this is too difficult then perhaps weidu could record modifications (and also display which mods modified what) and then allow us to more easily "zone" into the correct dialogue path.

I am not sure how easy it is, considering weidu itself probably has no advance knowledge of mods breaking other mods, so perhaps this feature suggestion could be modified a bit towards a "compatibility list" of mods to be installed. Some mods work very well, other mods (such as the stronghold mod) don't work that well. And it is not clear which mod causes problems - at the least not to me.

It would also be nice to be able to give "priorities" to mods to allow for ad-hoc testing of compatibility.

Say we have three mods:

A, B and C.

Installation order should be:

C, B, A.

Now say someone installs:

C, A, B

and this leads to problems. Then they could use weidu to ad-hoc change the installation order to C, B, A, without needing to re-install the game (which I usually have to do when I used the wrong installation order).

That could also give players means to quickly fix the whole installation order of mods; and we could maintain a compatibility listing of mods and "recommended order" of installation somewhere, be it here on github or elsewhere.

At any rate these are just ideas. Thank you for reading - please feel free to consider to close the issue request at any moment in time for any reason.

rubyFeedback commented 1 year ago

Implementation wise we could perhaps simply keep a backup of the old files, so that we could easily re-shuffle the installation order just by overwriting. (The cleaner approach would be to automatically patch things until they "just work" but I guess this is more complicated and may require some manual input by people to point out WHERE a problem exists with certain mods, which probably requires too much time by people to find out where a problem is. Also people have to understand modding and not everyone does, so this latter part is probably too complicated, hence why just keeping a track of files and backup of files would be simpler.)

FredrikLindgren commented 9 months ago

It sounds a lot like maybe your background with mods is not with WeiDU. The problems you describe first sound a lot like a broken installation, rather than mere incompatibilities. Strrefs pointing off to where ever is normally not a problem you can have if you use WeiDU alone (I mean, it is possible, but the modder would have to make some basic mistakes).

WeiDU already keeps backups of files changed and installations can be reversed, making your C, A, B example no big deal. Which WeiDU mod has changed which files is available with the --change-log option, which is admittedly not listed in the readme for some reason.

I'll close this, but feel free to open a new issue if think that's warranted.