Feature Proposal: Listen Server Workshop Sync

Specifically directed toward Garry, but feel free to share your feelings on this idea (which is in fact encouraged, since my opinion is not the only one that matters).

It would be really cool if people hosting listen servers didn’t have to worry about their clients obtaining at least the Workshop addons (everything non-workshop would still be managed by the legacy Resource.addFile).

Idea on how it would work:

-Client connects, listen server sends the list of workshop addon ids.
-Client determines which addons they are missing from the list. If they are indeed missing some addons, a message comes up on the client’s screen saying something like “This server has some Workshop addons that you are missing. Download and reconnect?”
-If the user answers ‘yes’, GMod creates a folder called something like “Addons_server” with a structure much similar to the “Addons” folder.
-GMod downloads the Workshop addons FROM THE STEAM SERVERS into said folder WITHOUT SUBSCRIPTION, and is reconnected.
-Later on, if the client decides to subscribe to any of the addons that have already been downloaded, GMod checks if the package had already been downloaded to the “Addons_server” folder. If it was, it simply moves it to “Addons”, and performs a version check on that.

Also a ConVar for the listen server would be useful (frozen to 0 if server is dedicated): sv_kick_on_missing_workshop_addons (set to 1 if you wish to enforce that clients have all of your workshop addons downloaded). The user would still be notified and warned about the missing workshop files at all times, but whether not the server wants to keep the client if they answer ‘no’ to the Workshop sync will vary. If you feel that the message is too naggy, you could also add a client ConVar cl_auto_reject_workshop_sync (Set to 1 to ignore workshop sync upon connection, and continue connection attempt).

This proposal aims to eliminate the need of individually adding every addon to a listen server host’s collection and asking everyone who joins to get the pack first. If this is eliminated, collections themselves will become more intuitive (grouping fun combinations of mods, as opposed to making collections for the sake of the server content).