Motivation
Client mods. People like them. The usual way they’re used also bring a whole mess of disorganization.
See context for an earlier fix: Client Addon Packages: the future
Issues with earlier fix
- Players might want to customize certain files locally.
- Approval process sucks.
- Compatibility concerns?
Planned solution (generally should be part of 1st MVP)
- In-game mod library, select client packages to subscribe to and have them downloaded (similar to SteamUGC).
- cfx-ui tab called ‘Mods’, backed by a forum section for ‘Client Mods’
- Takes download tag, first thumbnail and heading as a list, probably detail-page-ing into a description of the mod aka the forum topic first post and maybe a summary of assembly.xml content.
- Allows enabling/disabling mods for next restart and unsubscribing them.
- Offer safe mode + toggle after a game crash similar to MTL, this’ll disable mods and such.
- Downloads using BITS so that no custom download management logic has to be written.
- cfx-ui tab called ‘Mods’, backed by a forum section for ‘Client Mods’
- Standalone client-side upload tool.
- Uploads using either BITS to a frontend or some S3 SDK directly to backend storage.
- Will repack and defragment RPFs to optimize sizes, also check assembly.xml for common issues.
- Signs as CFP2 (CFXP + cross-signing support) using user-tied signing key, will require cross-signed key to validate on client.
- will be generated on initial upload of a signing pubkey, however only available upon approval of any mod by the user
- Probably size cap to allow granular downloads (500 MB per outer RPF?) to save costs and pains.
- Gives you a special download link to use in your forum topic to be fetched by the mod downloader.
- Forum topic will require approval (assuming this works fine w/ Discourse?), which will involve a cursory glance over a new mod. Other than using the special download tag and specifying a thumbnail, no requirements are made to formatting.
- Maybe direct conversion of packed/unpacked .oiv? Might increase plagiarism however.
- Some way for user customizations?
- Whitelisted set of files to override after a mod loads?
- Allow users to specify variant packages in a release (different .oiv->.rpf files)?
Timeframe
If everything is clear, this can trivially be done next cycle assuming a lack of other higher-priority tasks.