First of all, I don't think OA devs will implement this feature. I will. As far as I can do it, I will try. OA devs have a lot of other stuffs in their roadmap, so that's totally understandable that they did not implement this feature yet. From what I understand, their primary concern is to make a fully working game with a complete set of content. Enhancing the gameplay's feature is not on the roadmap (yet), but the community can then contribute. And after all, who can better enhance the gameplay than the community itself?
Secondly, I must point out that this feature is of even more importance since for future versions of OA it is considered to put most of the current maps into a tribute pack (which will never ever be played if this feature is not enhanced).
Thirdly, I would like to summarize concisely the ideas I propose:
- a client's dialog box summarizing the list of the packages to be downloaded, splitted into two categories: required and optional, and with the possibility for the user to choose what packages to download, or just refuse to connect.
- 1 new folder where to put optional contents for admins (will be shown in the optional list for clients).
- 1 new folder to separate third-party content from the baseoa folder (for clients, so that baseoa is never touched by downloaded pk3 files). This would allow players to keep a pretty clean install. See Sago's proposition of a cached pk3 as an alternative solution.
Now onto replies:
I have been working a little on the side on a cache system based on secure checksums, to see if I could get a prototype working.
Good news

But I've got some questions:
- How the client's can really trust what the server is sending? I mean, isn't there already a CRC checksum? Of course an MD5 checksum is a lot better, but still the server can be misguiding the client by sending corrupting pk3?
- About the cache pk3, will it still be loaded when the client is playing in single player, or in other servers, or would only some parts of the content will be loaded when required by the server?
Actually, QVMs should not be able to do this. If you happen to have a working PoC then submit it to the ioquake3 team to fix. QVMs should only be able to read and write files from your game installation (homepath, basepath) but nowhere else. They can not launch external programs and can not run arbitrary commands.
You can do a few nasty things by setting the vm_* cvars and then autodownloading native libs for your platform. This circumvents all of the QVM security considerations, but that's due to their design.
Nice to know, I wasn't sure about the read/write protection. Anyway, (I didn't write it) but I'm aware that QVM security has been enhanced a lot in ioquake3, but as it was clearly stated on the ioquake3 mailing list, QVM has
never been designed for security, so even if it's enhanced, I still expect to see some security concerns, because the initial design is flawed.
But, I can be mistaken, but anyway since I have limited knowledge on this issue, I prefer to be more cautious and consider this as a possible issue.
Please don't support the "ioUrT" name., it's just plain wrong. They've ripped the ioquake3 sourcecode and call it io*. "io" here is for icculus.org, who has nothing to do with their fork. Other games using ioquake3 are not called io* either, think of World of Padman, Smokin' Guns, Tremulous, Turtle Arena etc.
You're right but that's the name. How should I call it then?
While a confirmation dialog gives control to the players, I don't think it'll actually work. Just assume I want to join a server and the game keeps asking me whether I want to download file 1, file 2, file 3, .. , file 20. I'll sure as hell just click "yes" or even "yes, always", because all I care for is playing on that server. Besides, what is this zzz-proskins2.pk3 anyways?
I did not say that it would ask one dialog per file, I think I stated that it would be a dialog box with a full list of Required and then Optional files that will be downloaded, from which list players can just choose what they want or not.
I think the freedom of choice can't be better applied than that.
After all, even with such a system in place it would still require admins to setup their servers properly. I've seen so many misconfigured public servers that I simply assume that they won't be able to do so (in general).
Indeed but this is another problem. First, these features aren't exist. If they did, I'm pretty sure quite a few servers (the most played) would take benefit. At least, I will.
The thing also should be what should be obligatory and what optional.
For me, models, skins and audiopacks should be optional. Maps, ofc, should be obligatory.
That's also what I propose and I think it's a very important feature. Nowadays it already works, but it's kind of tricky and not very flexible (only one folder for all optional files for all gamemods).
I am less interested in the precise mechanics of the implementation than I am in the OA Devs just resolving the problem. To me this trumps the creation of addition player models, art and all that other fluff and should have been implement in 0.8.8.
I know what you mean WaspKiller and you know we share the same vision about the subject, but I don't concur to what you are saying here. The devs aren't the only one to implement features, the community also can, and for the moment noone did anything, so don't unnecessarily blame the devs, the community is to be blamed too. I know you aren't really part of this community, so I'm not blaming you, I know what you are doing for E+ and OA, but please also consider the responsibility of the community for the advancement of the game (since it's an opensource game, the community is a whole part of it).
Can I also ask for an option in the Game Options menu to enable/ask/disable AD as well?
Yes there should be such an option. If impossible with the current UI, it would be splitted on two separate options (Enable autodownload Yes/No - if Yes another option: Always accept autodownload?).
There are however other reasons why I don't think enabling autodownload by default is a good idea. (...)
A more obvious reason would be that I'm only interested in free (as in GPL, PD) content. There's currently no way to know the license of a pk3 files before downloading. This'd require the kind of system I mentioned before; a public list with known checksums for pk3 files as well as their license (if it is known at all).
No a list is not needed here. We could also add to the system a code to read from a txt file that would list all the files required or optional to download along with a description and their licence, but I think that for now it's unnecessary (maybe later?), because players are free to download the file anyway and check the licence for themselves, or just look over the web since there will be a list of the files before downloading.
Really I think that the GPL idea is a bit far-fetched here.
P.S.: While exact error messages are always helpful, they're not that easy to create for such problems as missing pk3s. There could be just a missing sound (luckily we have silence.wav), missing textures or a problem that prevents the gamecode from being loaded. To display a meaningful error message to the player would require quite some work for the developers. This is further complicated that a pk3 file can contain any kind of content and thus trigger all different kind of errors when missing.
Meaningful error messages for any type of error would be great, but practically impossible to implement.
Here this is not the issue: what I describe is a way to handle a precise type of error, caused by missing packages that can be downloaded from the server which the player is trying to connect.