Quote:
Originally Posted by DJPlaya
I dont get it, does this let Users download optional Files from Mapchange to Mapchange so they dont load everything at the same Time? U wrote about that the Plugin uses their Acc ID to detect if they are allowed to download smt? Or has it something todo with the loaded Map (because some Map Makers are to stupid to pack the Stuff into the bsp)?
Please explain
|
This library / web server script combination is a little weird; I'll try to explain it via an example.
Let's say I have a lot of silly custom sound effects that can play whenever a player is killed with specific weapons. I add it to the server's download table so the player has to download the file before joining the server so they can hear it.
But maybe for some reason, the player doesn't want to hear the sounds. Sure, the plugin might be configurable to prevent them from hearing it (with Client Preferences, for example), but even if they don't care about the sounds at all, they still have to download it before joining my server.
It ends up being a waste, and from talking with a few people from my old community (which had this same feature), one reason some people hesitated from joining is the sheer amount of custom extra sounds that end up requiring a download.
So, the problem I ended up having is that I needed some way for players to not download stuff that they might not actually need, while still giving players the option of having it. I could just drop it altogether, but I personally loved the feature as it made the server stand out.
One solution I've thought about was to just not have them present in the server's download table at all, but instead to put them up as a content pack online. It ends up being clunky. You have to depend on the players to keep track of updates. If you have a lot of this sort of content and update it, it really just ends up going to waste since nobody's willing to put up with that.
Another way is to use
the FileNetMessages-related extension to download optional content in the background while connected. I never looked into it much, as a comment posted mentions it only works with stuff in downloadables, in which case the client might've already picked it up while connecting.
This is the other solution I ended up working with.
- While adding files to the server's download table, a plugin can also associate the file to a download category, and set whether or not the category is enabled / disabled by default.
- When the client connects, the server sends them a user-specific download URL. When the client notices they're missing something, they make a request to the fast download server with that URL.
- The server checks whether or not the user wants the file based on its category, then either redirects them to the actual file to download (in which case it's just like a normal download) or sends back an HTTP 404 (Not Found).
- If the client receives the Not Found response, they continue connecting without downloading the content, which is what we want in this case.
- If the client wants to change whether or not a specific category of content is accessible to them, they can do it easily while connected to the server.
It's a cheap trick, but as far as I can tell, it seems to work (the precache-related shortcomings may or may not be outdated). If there are any cleaner solutions with similar client ease-of-use, I'd like to hear them.
tl;dr: Players can have the best of both options: They can have extra content served to them if they want it, or have the server keep them from downloading it if they don't.
__________________