So, my programming course is going nicely, and I may eventually be competent to implement some of my ideas. Until then, you can read about them!
Fricy linked
mod manager discussion. TLDR is that everyone likes the idea of building up something like a starter pack for mods, where new people can get their toes wet in a GUI that can stack mods. That sounds pretty similar to the init patching that this has for graphics
The plot is basically to extend this launcher and then
take over the world start including optional and easy mods in everything.
The current state-of-the-art in mod merging is
the Manilla Launcher, which is generally great for long-time players. Core concept is an Elder Scrolls-style list; you drag desired mods into order and get told if there'll be clashes. Obviously using patches will make life easier. The other excellent feature is live previews for tilesets and color schemes, though sadly these don't stack (non colored tiles, colored vanilla tiles). I've asked about releasing the source, which IIRC is Java swing (
shared privately at request). A somewhat older but possibly useful tool was the
DF Mod Manager, which was in python though a different GUI module. The core logic *might* be salvagable, or might not. I don't currently have the time to check.
Regarding format, I think we need to nail this down soon. The longer we leave it, the more likely it becomes that the community ends up with multiple patch formats... So my proposal is:
- A folder for mods is "/LNP/Mods/".
- Each distinct mod gets it's own folder, named whatever the mod is called.
- In that folder, include the raw folder structure with any files changed from the vanilla raws; plus at the top level other stuff (eg readme, random files and folders) that can be ignored without error.
- Possibly also a manifest file if this takes off and needs extending to more arcane cases.
- One of the mod folders is the full vanilla raws; that folder is named identically to the version it came as (eg "df_40_08_win").
- A *real* patch is derived when needed by running a diff between the vanilla folder and the mod
- Diffs are then applied to a copy of the vanilla raws in the specified order
- Conflicts can either be banned (load nothing and display error), apply latest diff (risking both diff errors and broken raws), or resolved manually (possibly in popup box). I favor the first option until the system works; it's easy and newbie friendly which are both essential - extend once the basics are nailed down.
- Mods with modules are tricky and probably involve subfolders and a manifest file (xml?). Think Masterwork stuff with dependencies, mod-specific graphics, etc. Like good conflict management, this can be done *after* the basic concept works. suggestions welcome.
- Allowing these folders to be zipped would be nice; a hands-off signal and a space saver. Not too tricky either, I think.
I may start a topic just for this actually.