atlanticaccent / starsector-mod-manager-rust

A mod manager for Starsector, a space fleet-battle and economics simulator. This time written in Rust.
https://atlanticaccent.github.io/starsector-mod-manager-rust/
MIT License
33 stars 1 forks source link

Export mod list #33

Open atlanticaccent opened 3 years ago

atlanticaccent commented 3 years ago

At very least export to a human readable list format that details:

Optionally, make list also machine readable, or have an option to produce a machine readable version that can then be imported (ie: imply the ability to import mod lists - track in separate issue).

A more advanced implementation may also include in the export forum links (if available) to support a hypothetical import function, which may notify a user on import if a mod in the list is not installed, and present the forum link for user's convenience.

jaghaimo commented 3 years ago

Isn't this duplicating descriptor.xml file from the save? Might as well reuse it. The program would then read that file in a save and suggest a new list of mods (missing / present). It will not provide the links to download them, though. One idea I've been toying around was to just "bite it" and manage a mod-database (id,download_link) and that way offer auto-update (or installation, based on descriptor.xml.

atlanticaccent commented 3 years ago

Isn't this duplicating descriptor.xml file from the save? Might as well reuse it. The program would then read that file in a save and suggest a new list of mods (missing / present). It will not provide the links to download them, though.

Ah, yeah I had forgotten that saves embed what mods they have enabled, that's a good idea. It would raise the edge case of creating a mod list in the manager that has not been encoded into a save, and then not being able to export that. Tbh this isn't something terribly high on my priority list, but that could change depending on what people say.

One idea I've been toying around was to just "bite it" and manage a mod-database (id,download_link) and that way offer auto-update (or installation, based on descriptor.xml.

I've thought about this too. Something akin to NPM or other package/dependency managers. And I believe 0.95 now lets mods specify dependencies. A back-of-the-napkin idea I had for this was to create a GitHub repo with a specific schema, where each "entry" is a folder named by ID/containing a file with a mod ID, and a series of version files, ideally version files extended with direct links to mod archives. You could then build a tool on top of that to clone/contact the repo and parse it for mods and then install them. This also lets new mods be added through forks/merge requests. One issue is that it's a bit more complicated, and requires mod authors to know how to use Git and GitHub, to an extent.

The main issues faced by any centralised "mods directory" would, I believe, be two-fold:

jaghaimo commented 3 years ago

Both are non-existential when using Github (use web editing / PR submission, hosting is for free). The bigger issue is getting people on board that (not only files ready, but also modders buying into the idea), and maintaining it up to date. In my case "bite it" meant maintaining it by myself (initially, and mostly for mods I use personally), until people notice it, start using it, and build it up.

It might not even be a need of "modders knowing how to use Github" case. Like with wiki, sooner or later a team would form up that would keep such repo up to date. I never had a tool to do that, so the idea never took off.