Before I cut back on the number of custom models, there were a large number of players that disconnected during the initial downloading and the size of the dev games were relatively small. After I cut back on the number of models for last Saturday’s dev games, it seems the amount of downloading was a lot more acceprable, I didn’t notice any disconnects during downloading, and we had some decent sized games.
The primary problem with the amount of downloading is that the 1.1 vanilla stock clients from trem.net can only download from the game server and not from web servers. The test server does have the download rate for game server downloads increased from about 3 kb/s to a range of 50 to 200 kb/s depending on the number of players downloading, however, that is still a pretty low rate for downloads on the order of 100 MB or more. On gpp servers, since everyone’s client was capable of web server downloads, it was not a big deal to join modded servers with large downloads.
That is what really needs to be done, it would also be helpful to initiate the downloading of anticipated next maps during the current map you are playing, and then if necessary finish any remaining downloading of said maps during the map changes. but for the optional custom models, it would be cool if the downloading did not interrupt gameplay, and as soon as you finish downloading a given model, that model becomes usable for you without requiring a map change. A download manager would also be something good to have, in a menu, for accepting downloads, pausing/resuming downloads, and canceling downloads.
Taunts can still be important to the game play. I think a better approach would be two commands that would convert a given model’s taunt/sounds to the default taunt/sounds, one command would be an admin command that affects all the players, and another version of the command would be player command that only affects a given player’s personal preference. You should be able to designate the model directly, or you should be able to designate indirectly by a given player (by name or slot number) that would then select the current model that player is using at the time you execute the command.
Put asside the “download next map in anticipation thing”- I expect bad bugs creeping in from that- hit me up for alternative thoughts however.
Con-current downloads + continued partial download support is something we can achieve from libcurl directly; but will (i suspect) require changes to both server and client.
My bet is that voice commands are the future evolution of taunts.
Here are some reasons:
There is no clean solution to swap taunt’s of one model- with that of another (e.g., “brak” with “human_base”)
Voice commands should be more-useful + more-annoying (depending on the circumstances)
Regarding adding a 2nd command to “mute” a players taunt’s, sure- why not.
but- I consider /mute as putting someone in timeout; why not shut them up completely.
They aren’t in a complete timeout, as they can still play. The taunt and/or voice command use might still be acceptable for that player to contribute with the game play while being on chat mute. Btw, we are going to have to take measures to avoid voice command spam.
If that is the case, we would have to only allow this feature for the new client, and have old client resort to the current “serial download approach”. We may have to create a fourth trem protocol in this case.
I don’t think a protocol bump is necessary- but the server/client would negotiate that pipe-lined requests are available.
I think the current stuff says- dl <this> … waits … dl <this> … etc… (but I could be mistaken- I’ve not looked at that code since I stopped trying to hack it.
If you did that through another “thread” you might be ok-ish… but
This will cause lag on the client
This could cause issues in the engine if you tried to “load” these files from a pk3 while the game is in-progress. Much of the pre-initialization/caching manages to create (what appears) to be the same “modelindex”, “soundindex”, etc… which if loaded out-of-order, or post-mortem would probably result in very odd artifacts. (though I’m not 100% certain).
I feel like being the party-pooper by doing this, but I don’t feel comfortable with the server hosting custom models based on third-party intellectual property for theoretical legal repercussions.
The likelihood of this ever being an actual problem is close to zero, since almost every server with custom model support that ever existed does this without issue. A world where corporations go after servers hosting old Quake 3 models seems like the same kind of world that deserves a third World War.
However, I feel its worth bringing up in the interest of self-preservation.
These models have already been widely distributed, and those websites that hosted these models have existed a long time, have been very popular of over the years, and have not been legally forced to remove their models in all these years.
These models were made for quake 3, and are not models made specifically and exclusively for commercial games.
GrangerHub will not be distributing these models with the Tremulous 1.3 release (such a release will only include models designed and made for Tremulous, not just for legal reasons, but also for technical and artistic reasons).
GrangerHub will not be hosting these models on mainstream servers. Any customized models, for this system, that would be hosted on servers such as GrangerPub would be design and made specifically for Tremulous.
GrangerHub is only using these models to test a specific new system on the test7341 server in lieu of new Tremulous models, and will likely be a temporary use on the test7341 server.
I agree with you, It does feel questionable- and the feature honestly only existed due to my debugging of the engine.
We’ve had some discussions on some server related changes; which would mitigate the need to host these files- as well as the ability to globally (server side) and locally; disable the feature’s altogether.
While this doesn’t address the asset owners own right’s to use them in the first place; all the models I’ve researched into ask for attribution if used in a full game conversion (we probably qualify)- but also, I’ve reached out to some of these copyright holders, all of which in all cases were not capable of being tracked down from the license information provided in the assets…
Sooner, rather than latter, I should add UI pieces which can at least provide the contributors information, because I want them to have the credit they deserve.
My last point, is that unless someone actually makes use of these assets, then they will inevitably be lost to history; my hope is that with proper attribution, etc… that an asset holder will be glad to see their work actually being used, v.s., hosted on a site and eventually lost.