ModDB integration
Support ModDB automation, user selects a mod from a list, NN does the downloading, extract, move, and whatever needed to set properly.
For that, a database with users table is needed in NukemNet's backend. The same user/pass combo should be used to login into the IRC part. #39
Below operations require user login:
Submit mod process (requires user login):
- In the NukemNet app, user creates a new mod entry, by pasting a link such as https://www.moddb.com/games/the-amc-tc, and giving the mod a title (e.g "StrikerDM 1.0").
- NN app sends an http request to that link, retrieves the list of files, and the user should select a file.
- NN app send an http POST request to NN backend, with the link of the file selected in the previous step, with the mod title.
- The backend verifies that the mod isn't already submitted in NN database, and the the link file is valid.
- Backend saves the mod entry in the DB, and the "submitter" field foreign key set to the submitter user.
- (TBD?) user needs to describe which file names need to be extracted from the mod ZIP, and possibly which NN param-ids need to load which file, and if the user left empty, NN should guess by the file extension (.grp file is -g, etc..). if no extraction is needed (the ZIP file can be used as is to play the mod), then the user can leave the file name list empty, and mark "Use ZIP file as mod file" option.
Only the submitter can delete/modify his submissions. Consider allowing a certain trusted users privileges to delete/modify mods of other users.
Using a mod from the database (no login required)
- User clicks "Play", opens the "Create Game Room" dialog as usual.
- User can enable mod selection from a dropdown list, autocompleted (debounced 200ms) retrieved from the NukemNet backend database of all mod submissions, user selects one from the list.
- If User (game room host) doesn't have the selected mod, it downloads it for him from moddb.
- When new users join, if they don't have the mod, it downloads it for them from moddb.
- The download dir for moddb mods should be inside a subfolder called "moddb" under the mods dir for that game&exec, e.g. {mods_nnres_dir}/{mod_name}/ALL_MOD_FILES_HERE
- ZIP file downloaded from ModDB, required files extracted and ZIP deleted (if the mod needs to extract files, otherwise if the ZIP file can be used as the mod file, no need to extract or delete).
- The game room should prevent launching game until all users finish downloading the mod file, meanwhile users can see percentage of download progress of each other (like the current logic for usermaps/mods support without DB).
Credit ModDB whenever a player uses this feature, providing a link to the moddb site of the mod. If any scraping takes place, do so responsibly.
Edited by Alon Amir