Skip to content
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

Change mod loading location #746

Draft
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

GeckoEidechse
Copy link
Member

@GeckoEidechse GeckoEidechse commented Jul 4, 2024

What this do?

Basically

  • mods/ gets split into
    • mods/core/ for core Northstar mods (only Northstar.XYZ named mods allowed)
    • mods/manual for manually installed mods (no name specific requirements other than that they should be AUTHOR.MODNAME maybe.
  • packages is moved into core/thunderstore-legacy
  • a new folder for non-packages style Thunderstore mods, i.e. all the files are in the root of the zip instead of in /mods/<mod-name> (forcing on Northstar mod per Thunderstore mod)

Additionaly mod.json should get maybe also get a manifest version number and 0 should be assumed if the version number is missing.

Partially implements: R2Northstar/Northstar#618

 

What this involved?

Arguably the biggest issue with all of this is getting all the wiki and other sources of information updated, updating GitHub Actions for pushing to Thunderstore, getting helpers informed, somehow getting old YouTube videos updated, getting mod-managers involved, ... it's gonna be a mess at first but it's gonna be worth it.

 

Why?

  • Support for other mod sources next to Thunderstore in the future
  • No more multiple Northstar mods in a single Thunderstore mod

 

TODO

  • make code look nicer
  • require mods in mods/core/ to be prefixed with Northstar.
  • add mods/thunderstore/
    • Add check for AUTHOR-MOD-VERSION folder name and mod.json in folder root
  • add mods/manual/
  • Change mod loading location #746 (comment)
  • Figure out how to do plugins. They should be inside a Northstar mod IMO but how exactly? Or are there better approaches? Plugins should be in a subfolder of the mod like rpak folder for example
  • Add manifest version number in mods.json
  • Non-PR-related: Literally get everyone informed on this and stuff changed accordingly
    • Helpers
    • Wiki
    • ModdingDocs
    • Mod-managers
      • FlightCore
      • Viper
      • VTOL
      • r2modman
      • Tether
  • ???

@GeckoEidechse
Copy link
Member Author

Keeping this as draft and not pinging people that need to be involved in this until I actually have something that somewhat fulfils the requirements above.

@github-actions github-actions bot added the merge conflicts Blocked by merge conflicts, waiting on the author to resolve label Jul 10, 2024
@github-actions github-actions bot removed the merge conflicts Blocked by merge conflicts, waiting on the author to resolve label Aug 7, 2024
@catornot
Copy link
Member

catornot commented Aug 25, 2024

Here are my thoughts on a better mod loader:

structure

I like the current mods so I think packages should be dropped and plugins should just be added has a subdir like rpaks.

The old formats should just be dropped and a tool converter tool we could translate most stuff to the new format.
The plugins dir would be an exception since it just convenient for faster development

tooling

this is kinda of off topic...

with the converter we should also have just cli tool/s for quick mod maintenance stuff like cargo

loading

For loading order I like how rain world does it. The mods are just ordered kinda of randomly but can be reordered manually but dependencies must loaded before.

so like

  • manually ordered
  • dependencies must be below the dependent mods

This means we drop load priority thing and replace it with dependencies defined in mod.json. This would also allow the dependencies constants to not be some randomly added system.

reloading

A quick note about this and again from rain world. Some mods could be just tagged with restart on reload and the launcher would load back into the same server or lobby.

I accidentally pressed shift + enter and it sent the comment before I finished it >:(

@GeckoEidechse
Copy link
Member Author

Related Discord discussion thread https://discord.com/channels/920776187884732556/1277362579781455984

@ASpoonPlaysGames
Copy link
Contributor

Make the mod name field in the mod.json purely visual only. It should display in UI and not be used for anything else. The mod's folder/path should be used as it's identifier

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Candidates for next Major release
Status: Gecko TODOs
Development

Successfully merging this pull request may close these issues.

3 participants