-
Notifications
You must be signed in to change notification settings - Fork 124
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduction of packages
directory and how mod-managers should handle it
#505
Comments
Oh boi this got way longer of a read than I planned. Anyway paging
|
A neat advantage of this is that things like the |
What about plugins? Besides a security warning when installing, do they get scanned for and loaded when inside |
They do not, |
Congrats, you're the first person to notice that I conveniently left out plugins from the mentioned PR :,) But yeah, plugins would be at Functionality should arrive in launcher in time so do NOT put them in |
Probably should also poke @pg9182 cause we probably wanna add support to the (Or at least add docs / update sample yaml, not sure if the container does anything special in advance to check stuff in regards to mounted mods) |
Thank you for that, I was considering rewriting the entire mod install part of Viper, because it's very messy right now, and it'd then also add support for plugins, but I've made very little progress on it due to personal reasons. But this makes it much easier Even if it's not implemented on release with |
libthermite basically supports this now on the dev branch, this change actually makes my job so much easier 🫡 relevant example: https://github.com/AnActualEmerald/thermite/blob/dev/examples/packages.rs |
I dont think this is a blocking issue as |
On it. |
Aight, so from the looks of it we got a bunch feature PRs queued up that we could release together as This is also perfect for the change with the
As we don't wanna delay the Northstar update forever, I'd propose we start rolling out release candidates over the weekend and then release it within the next week. Now I know that this is a rather short timeframe so I wanna stress that if you cannot support If you are unable to add support Essentially I don't want the release to be blocked by mod-manager but also understand that everyone also has a live outside of Northstar and isn't always able to commit time to their mod-manager etc ^^
TL;DR: Northstar release with that feature some time next week, release candidate over the weekend, legacy mod install is still supported in Northstar for the time being, if you got any issues with implementing (in time), please reach out <3 |
#503 has been merged and will most likely be released some time next week (most likely towards the weekend). |
Release candidate is still in the works as it's being held back waiting on a remaining PR. In the meantime, if you need a working build for testing, just download the newest launcher from CI. |
Release candidate is out by now if anyone needs it for testing and release is slated for Friday. Just to repeat myself I wanna stress that if you cannot support |
As mentioned before, the old method still works for mods so you got time to move over. If there are any complications, please reach out <3 |
Wouldn't it make more sense to leave the |
That unfortunately won't work given how around 1/4 of all players on Northstar unfortunately still install/update their game manually where the common instruction for updating is to simply overwrite the existing files. So that would result in duplicated Now we could add logic to blacklist the And then even more spaghetti code is needed to ensure that updating a mod from Thunderstore properly removes the old one before adding the new one while also making sure not to remove the old one when the new one fails to install. So yeah, basically |
You know, it just now occurred to me that I maybe should've let the Thunderstore people (i.e. @ebkr and @MythicManiac) know of this. I mean r2mm uses it's own profile so mod-manager compat isn't an issue but it probably even simplifies their own codebase for Northstar if they switch over the support to TL;DR: When downloading mod from Thunderstore, take |
Making this issue to discuss #503 with mod-manager authors. Mentioned PR overhauls the mod loading process by allowing to read Thunderstore packages natively.
For reference, Thunderstore packages are just the zip downloaded from Thunderstore which in turn contain Northstar mods.
What's changing and why?
The idea behind #503 is to basically simplify mod installation by separating core mods from user installed mods and reading Thunderstore packages directly. This is done in an effort to overhaul the mod system which is currently being discussed in R2Northstar/Northstar#472
For mod-managers this also massively simplifies the installation process as you no longer have to extract the Northstar mods from a Thunderstore package but rather just extract the zip into a folder of the same name in
R2Northstar/packages
.So if you have a zip from Thunderstore called
EladNLG-HUDRevamp-2.0.0.zip
you just extract all the contents into a directoryEladNLG-HUDRevamp-2.0.0
located inR2Northstar/packages
.This also makes updating mods and replacing old files trivial, as you can just download the new version and extract it into the
packages
directory just like a fresh install, simply and deleting the previous version if the update was successful.And finally that means that the whole deal with copying
manifest.json
into each Northstar mod and creatingthunderstore_author.txt
is no longer necessary, as the manifest is already contained in the Thunderstore package and the Thunderstore author name can be deduced from the folder name (in fact the folder name matches the entire Thunderstore mod string).Here be dragons
The "caveat" in this simplified approach is that we are also require the mod to follow the specification exactly as based on past experience allowing for any edge case handling etc just causes more issues in the long run.
Specification
This means, if you do extract the zip contents to a folder that does not follow
AUTHOR-MOD-MAJOR.MINOR.PATCH,
it will be ignored by Northstar launcher.Similarly as we are keeping the previous folder structure in tact to not break mods on Thunderstore right now, the Northstar mods will have to still be located in a subfolder called
mods
. Mods that do not adhere to this setup will be ignored by NorthstarLauncher.Backwards compatibility and broken mods
Note that the structure within the Thunderstore package is unchanged for this update. This means that it's still a folder that contains a
mods
folder that then contains Northstar mods.As there are some broken mods on Thunderstore right now that fail to adhere to this setup (and are therefore not installable by most mod-managers under the current install method), so you wanna make sure to check whether a mod is correctly formatted instead of just extracting the zip without any checks.
Whether you just check whether a mod is correctly formatted and fail out if it isn't or whether you attempt to fix it for the user is up to you.
(Although I do recommend just to error out to avoid accidentally introducing more issues when you perform error handling)
What would I need to do to make my mod-manager compatible?
packages
folder (otherwise you might not be able to see all installed mods)packages
folder instead ofmods
based on new specification (otherwise you might annoy other mod-managers that have to maintain legacy format because of you)packages
as opposed tomods
faster 👀What stays the same?
enabledmods.json
mods/
Timeframe:
The rough timeline of stuff (without actual information of when what happens)
packages
releasedTL;DR:
We go from
to
Footnotes:
R2Northstar/packages
refers toPROFILE_FOLDER/packages
.R2Northstar
is simply the default profile name, hence I picked it here ^^The text was updated successfully, but these errors were encountered: