With talk of Tremulous 1.2 coming soon, can we finally enable automatic downloads on the official client?
When players connect to modded servers they are kicked out. Error messages displayed when a client connects are not intuitive to newer players who expect things to "just work". If you open the console and dig deep you *do* get a helpful error message saying something to the effect of "you may need to enable downloads" but it is buried in normal output and newbie players don't even know how to open the console on the first place.
The only argument I have heard against automatic downloads was from kevlarman. His objection was that by making it difficult to enable downloads, servers are discouraged from modding and therefore players will have less PK3s cluttering their Tremulous folder. I don't believe this is a good argument. Most players will only play on a handful of servers/mods and download only the PK3s they need for these servers.
Enemy Territory and regular Quake default to downloads enabled, why doesn't Tremulous?
I don't think enabling downloads by default is the way to go. After all, you're essentially downloading programs to run on you computer which is a huge security risk. If you haven't noticed, there is a large population of psychopaths in the tremulous community who would enjoy nothing more than destroying other people's computers just like they enjoy destroying their reactors :)
I've been meaning to implement a prompting system like in there is in Quake 4. The way it works is that even if you have downloads turned off, you will get a dialog that says essentially "this server wants you to download X. do you want to download it or disconnect" with the options of:
disconnect
download it
download any file from this server for this session
Of course this doesn't do much about the security risk, but at least someone will have to actually have to go through the process of agreeing to download the file. That's what I like to call plausible deniablity :)
There shouldn't be a security risk in running a QVM because it is compiled bytecode and essentially runs in a sandbox. If there were to be a security hole, it would be a client issue.
(In reply to comment #1)
> I've been meaning to implement a prompting system like in there is in Quake 4.
> The way it works is that even if you have downloads turned off, you will get a
> dialog that says essentially "this server wants you to download X. do you want
> to download it or disconnect" with the options of:
> disconnect
> download it
> download any file from this server for this session
Yes, thank you, that would resolve the issue.
Created attachment 1289[details]
Slightly more graceful disconnect for no-download clients from pure servers
This is a slightly hacked-up patch which addresses this issue in a stopgap way, from the server side. Currently (as Risujin said) clients who connect to a modded server with autoDownload turned off will actually freeze on the "loading the level" screen. (You can press escape to return to the main menu.) This is because the server "drops" the client without notice.
To fix this I just added a line to send a disconnect command to the client. I also added sv_pureDropMsg, to which you can assign a disconnect message to tell the client what happened.
This is a bit of a kluge because the client still has to go through the entire "loading the level" bit before it disconnects. I agree that a better solution would involve more client-server communication, and the interactive menu would be very nice.
This patch is installed on the server Avalanche and seems to work pretty well.
Created attachment 1317[details]
Download prompt patch against SVN 938
I have written a patch against the latest SVN that adds a download prompt to Tremulous. If the client's automatic downloads are disabled and a download is either required (sv_pure 1) or available (sv_pure 0), it will prompt the player with a dialog box which shows:
* Required/optional download
* Files list
* Redirect URL (if any)
* Download buttons for cURL and UDP which only show if that download method is supported by the server
* Ignore button which shows up for sv_pure 0
* Disconnect button
The patch adds a new menu file and two common cvars and corresponding flags to get the job done.
The patch has the following issues:
* The UI VM must support raising the prompt. If it does not, the client prints a warning and ignores the download.
* It is possible to put up for download more files than the prompt can display and thereby trick a user into downloading something they are not interested in. One way to fix this would be to integrate a list box into the menu item.
* We cannot prompt per-file because cURL will disconnect from the server. If the user chooses cURL for one file and UDP for another, we have lost our connection and the download fails.
* Connecting to a server which uses a UI VM that does not support the download prompt will disable the download prompt until a supporting UI VM is loaded.
Created attachment 2095[details]
updated to r1199
at lakitu7's request: risujin's code updated to r1199 and most of the indentation in client code fixed (but i may have missed some)
Created attachment 1289 [details] Slightly more graceful disconnect for no-download clients from pure servers This is a slightly hacked-up patch which addresses this issue in a stopgap way, from the server side. Currently (as Risujin said) clients who connect to a modded server with autoDownload turned off will actually freeze on the "loading the level" screen. (You can press escape to return to the main menu.) This is because the server "drops" the client without notice. To fix this I just added a line to send a disconnect command to the client. I also added sv_pureDropMsg, to which you can assign a disconnect message to tell the client what happened. This is a bit of a kluge because the client still has to go through the entire "loading the level" bit before it disconnects. I agree that a better solution would involve more client-server communication, and the interactive menu would be very nice. This patch is installed on the server Avalanche and seems to work pretty well.
Created attachment 1317 [details] Download prompt patch against SVN 938 I have written a patch against the latest SVN that adds a download prompt to Tremulous. If the client's automatic downloads are disabled and a download is either required (sv_pure 1) or available (sv_pure 0), it will prompt the player with a dialog box which shows: * Required/optional download * Files list * Redirect URL (if any) * Download buttons for cURL and UDP which only show if that download method is supported by the server * Ignore button which shows up for sv_pure 0 * Disconnect button The patch adds a new menu file and two common cvars and corresponding flags to get the job done. The patch has the following issues: * The UI VM must support raising the prompt. If it does not, the client prints a warning and ignores the download. * It is possible to put up for download more files than the prompt can display and thereby trick a user into downloading something they are not interested in. One way to fix this would be to integrate a list box into the menu item. * We cannot prompt per-file because cURL will disconnect from the server. If the user chooses cURL for one file and UDP for another, we have lost our connection and the download fails. * Connecting to a server which uses a UI VM that does not support the download prompt will disable the download prompt until a supporting UI VM is loaded.
Created attachment 1318 [details] Download prompt patch against SVN 938 Oops, forgot to remove some test code.
Created attachment 1334 [details] Download prompt screenshot
Created attachment 2095 [details] updated to r1199 at lakitu7's request: risujin's code updated to r1199 and most of the indentation in client code fixed (but i may have missed some)