Scope Discussion #13
Replies: 3 comments 1 reply
|
we should include modpack and vehicle downloading with any future mod loader |
1. Mods only, or published content in general?I think for a full sized Mod Manager it should be most published content, mods, mod packs, vehicles, game saves, etc. This would make the most sense as it would make it so there doesn't need to be multiple pieces of software for each (CKAN, KerbalX, etc.). It would also make dependency resolution for modded vehicles, save games, even multiplayer servers when that gets created, much easier as the Mod Manager (or KSA Content Manager now) can check the vehicle save metadata for which mods are required and automatically let the user know and/or download them for the user. 2. Where does the catalogue come from?From my experience with trying to make Borea connect to SpaceDock's API, I would say either something like CKAN, or perferably, Something entirely different so we can make more design decisions. If for Why not SpaceDock
These reason are just the main reasons why I do not want to use SpaceDock as the permanent Mod/Content indexer. 3. The loader: external dependency, specified interface, or our own?Personally, external dependency. I only say this since Borea is planning to support multiple mod loaders (only if that ever becomes a thing) and it makes sure that the whole modding ecosystem doesn't collapse if the one mod loader doesn't get support. Also allows us to automatically change to the official KSA mod API/loader once/if that comes out. 4. What is this repository, and where does the implementation live?I am completely open to moving Borea to KSA Modding as long as there is a credit that it originally lived under my repository (or that I was the original creator). Sorry, but I plan to use it in my resume for job applications. :) 5. What should this explicitly not do?Nothing to add. |
|
Settled by RFC 0025: a content manager covering mods, mod packs, vehicles, and saves, an index of our own definition, StarMap as an external dependency, and Borea as the implementation. The repository is renamed to content-manager-design accordingly. The follow-up threads are #15 and #16 for the metadata format, #27 for the index, and #20 for the loader boundary. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
We should agree on the scope of what we are actually building.
Everything below is genuinely open. What comes out of this thread becomes RFC 0001.
Please reference the numbers so the thread stays followable, and feel free to answer only the ones you care about.
1. Mods only, or published content in general?
Mods are obviously in. The open part is everything else that gets published and passed around.
A published vehicle is mechanically a file plus some metadata that somebody downloads and drops into place, and therefore not that different from a mod. Saves and modpacks are the same shape.
All of it lives under the same
Constants.DocumentsFolderPathroot as mods do, so a tool that touches that tree at all is already halfway there, and we would have an easy opportunity to manage other things too.2. Where does the catalogue come from?
A manager needs to know what mods exist, where to download them, and what they work with. I think it is important not to rely on any additional costly S3 storage or VMs. Four sources exist today:
builds.jsongame version list that updates itself hourly from the master server through a GitHub Action, so it costs nothing to run. We could build an equivalent, or just read it.3. The loader: external dependency, specified interface, or our own?
Every KSA code mod needs StarMap. The game has no concept of a code mod at all:
mod.tomldeclares assets, and nothing inModLibraryloads an assembly. See research/starmap.md.A. Treat StarMap as an external dependency. Install it like any other mod and declare it as a dependency of code mods. This is what the CKAN fork does today and it works. Cost: we inherit its release cadence, packaging and roadmap, and it installs and behaves differently from a normal mod.
B. Build or absorb a loader. Cost:
ModAssemblyLoadContextand its resolution order, Harmony orchestration, and the per-mod assembly isolation that lets two mods ship different versions of the same library. StarMap already does all of that, is MIT, and works. Rebuilding it splits the only working loader in the ecosystem.One live example makes this concrete. StarMapLoader/StarMap#80 adds
-InstancePathandINSTANCE_PATHthrough a Harmony prefix on the getter ofKSA.Constants.DocumentsFolderPath. If it lands, it is the first mechanism by which two KSA setups can hold different mod sets, because that one property roots everything user writable: mods, the manifest, saves, settings, vehicles, screenshots. If it does not land, instancing as currently imagined does not exist. Our design would depend on a decision in someone else's repository.4. What is this repository, and where does the implementation live?
This repository exists to design the client, not to produce a specification for its own sake. What gets decided here is what gets built.
Where does the implementation live? Borea is the Mod loader furthest along by a distance, it is the only implementation with current momentum, and it is structured well for this. Its author @MrJeranimo is a steward here. Several other attempts exist and have not seen a commit in months.
The options:
5. What should this explicitly not do?
Push back on any of these, and add the ones I have missed.
All reactions