Mod Deployment

DeathbobDeathbob Join Date: 2003-10-10 Member: 21574Members
I have been thinking about how to get Mods / Maps / Models / Sounds to clients.

At first I considered how HL, TF2, et al. But a large problem is that maps change and final versions are never ever final.

Then I considered the L4D series and thought how I never play mods because I don't want to go download them only to find the game has ended by the time I come back.

Lastly I realized that I have never had these problems with Garrys Mod. Doing research I found that it appears to use hashing of files to keep different files separate. It also redownloads all the lua (in a single compressed bundle) since it is so small. This would allow for a very transparent experience for the user. Combined with automatic pruning, directories shouldn't grow too large.

HTTP downloading is a must, but should not be required. And for when not used, the throttling for downloads should be controllable. Trickle downloads in NS1 were painful.

As an unimportant side note, you should give an eta for the downloads overall.

Comments

  • HarimauHarimau Join Date: 2007-12-24 Member: 63250Members
    edited August 2010
    Maybe you could use a peering system like bittorrent, and players could opt out of being a 'seed'. Have the server be the primary seed. (Yeah, I can see the 'ethical' problems with this.)

    Otherwise you could just have the server being the only source.

    Or perhaps you could have it so that a direct URL is given to download it (similar to what Alien Swarm and I guess other Valve games implement) - perhaps have it as "standard" modding protocol? As part of the actual file, there'll be some "header" information with this URL.

    Adding to Deathbob's sidenote: Not just an ETA, but also size (total), size (current), file # / files total, and download speed. Pretty much the standard things.
  • DeathbobDeathbob Join Date: 2003-10-10 Member: 21574Members
    I like the idea of bittorrent, with web seeding the protocol should be relatively transparent. It wouldn't surprise me if some library with LGPL is available and can provide this. Actually, this could probably be implemented as a mod.

    Those standard things also seem to be missing from a lot of games.
  • HarimauHarimau Join Date: 2007-12-24 Member: 63250Members
    edited August 2010
    <!--quoteo(post=1793342:date=Aug 11 2010, 12:33 AM:name=Deathbob)--><div class='quotetop'>QUOTE (Deathbob @ Aug 11 2010, 12:33 AM) <a href="index.php?act=findpost&pid=1793342"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Those standard things also seem to be missing from a lot of games.<!--QuoteEnd--></div><!--QuoteEEnd-->
    This is true, unfortunately. But not always - game patchers/updaters generally have most of that 'standard' information available, but perhaps not currentfile name, or currentfile size. Just depends on the game. However, these games don't have that information when downloading custom content from a custom server (or it's simply not applicable). Honestly I don't really think there's an excuse not to show this info, except perhaps clutter (too MUCH information): Currentfile size may be unnecessary (if you're given the total file size); currentfile name as well - but at least you'd be able to see what it is you're downloading, unless the custom content is just terribly named.
  • DeathbobDeathbob Join Date: 2003-10-10 Member: 21574Members
    <a href="http://en.wikipedia.org/wiki/Libtorrent_(Rasterbar)" target="_blank">http://en.wikipedia.org/wiki/Libtorrent_(Rasterbar)</a>

    fsfod (on irc) pointed out that there may be problems with leaving the client open all the time (which would be necessary). Throttling becomes big and it may be worth only unchoking one at a time when playing.
  • DeathbobDeathbob Join Date: 2003-10-10 Member: 21574Members
    edited August 2010
    [Deleted duplicate]
  • DeathbobDeathbob Join Date: 2003-10-10 Member: 21574Members
    I am also going to continue to request that while loading, the server can specify a list of audio files to play (maybe with a setting to disable for those who dont like loading music). If not found it should move down the list.
  • RothgarRothgar Join Date: 2009-11-13 Member: 69372Members
    The Standard Industry Accepted Methods are fine, the files should be small enough that "maps" etc can be done via HTTP with bzip2 or similar to allow compression to decrease bandwidth and download times.

    I don't like the idea of bit-torrent for games as a number of players probably wouldn't realize it was enabled and would complain about lag (especially when people are shaped) and how NS2 chewed through their bandwidth allowances etc.

    KISS:

    Large Mods should be external downloads.
    Small Mods depending on what has changes should be download-able off the server or via HTTP.
    Maps should be download-able via the server (If it has been allowed) with optional bandwidth throttling variables to allocate how much total bandwidth off the server can be used for direct downloads. Otherwise they should be directed to a HTTP server which could either house the normal map files or a compressed version.

    i.e. basically how map downloading works currently with some slight tweaks as others mentioned, the trickle system was painfully slow, however I believe it was done to stop consuming all the server bandwidth and causing players in-game to lag.
  • Thraka2Thraka2 Join Date: 2002-12-03 Member: 10426Members
    Perhaps a better approach would be to use the clients connected to the server and the server itself as the seeds? You're guarantied that the clients on the server have the files since they got them via downloading. A big global network of seeds I don't think would work well as a lot of servers may customize things and have their own different types of files that most likely only the clients on the server will have.

    Personally I don't mind helping a fellow player download some stuff faster for the server I'm playing on, but I don't want to be host to every joe ns player out there.
  • HarimauHarimau Join Date: 2007-12-24 Member: 63250Members
    edited August 2010
    Thraka2: That's actually the bit-torrent approach we were already talking about (the 'tracker' being the server, not a global tracker - that hadn't even occurred to me). Well, that's actually what I had in mind, I'm not sure about Deathbob, but I was of the impression that he was thinking along the same lines. Rothgar appears to think along the same lines, and is against it for obvious reasons (the same reasons that make me doubt its viability). It could work... it may even set a precedent.
  • FehaFeha Join Date: 2006-11-16 Member: 58633Members
    I would prefer a system like gmod, where the server can upload everything you need.

    And just like in gmod it should be possible to tell server to not upload at all or with a certain max speed/size. Aswell as clients can set if they want to allow downloading from server.

    FastDownloadUrl is also a good thing, which would be good if it was possible for servers to set.

    If the server turn off uploading it may instead upload the files to a svn or fileshare site, where clients can dl from. However, in such cases it would be awesome if the server could send a short string to the client like "content is at www.content.com".
    While speaking about sending data before the real dl starts, it would be nice if you could upload a txt and maybe small lua script to the client, then initalize it, before the other stuff start upload, making not only messages possible. One use for this could be that with a sql module you could make client during download connect to a database and that way let him/her chat even though still joining.
  • Thraka2Thraka2 Join Date: 2002-12-03 Member: 10426Members
    <!--quoteo(post=1794376:date=Aug 15 2010, 09:13 AM:name=Harimau)--><div class='quotetop'>QUOTE (Harimau @ Aug 15 2010, 09:13 AM) <a href="index.php?act=findpost&pid=1794376"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Thraka2: That's actually the bit-torrent approach we were already talking about (the 'tracker' being the server, not a global tracker - that hadn't even occurred to me). Well, that's actually what I had in mind, I'm not sure about Deathbob, but I was of the impression that he was thinking along the same lines. Rothgar appears to think along the same lines, and is against it for obvious reasons (the same reasons that make me doubt its viability). It could work... it may even set a precedent.<!--QuoteEnd--></div><!--QuoteEEnd-->

    Ahh I guess I just thought global automatically, then everything I read catered to that. :)

    Regardless of if the clients opt out or not, you'll get the same 'normal' experience of getting the files from the server. But if players have it enabled, you get a boost. I don't see why it shouldn't be implemented. Additionally, someone posted about the client needing to be online all the time? I don't think that is true. It can be notified that someone is connecting and it needs to be turned on. The server can then notify the client that there are no more people waiting for content and it can shut off.

    I think this is a really cool idea.
  • ctoon6ctoon6 Join Date: 2007-06-15 Member: 61256Members
    BT would be an awesome idea, however it would need to be configured so that clients could adjust some stuff like max upload speed, max connections.

    but imo i would like it so that servers could simply allow it, force it or not use it at all.
  • HarimauHarimau Join Date: 2007-12-24 Member: 63250Members
    <!--quoteo(post=1794400:date=Aug 16 2010, 01:44 AM:name=Thraka2)--><div class='quotetop'>QUOTE (Thraka2 @ Aug 16 2010, 01:44 AM) <a href="index.php?act=findpost&pid=1794400"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Additionally, someone posted about the client needing to be online all the time? I don't think that is true.<!--QuoteEnd--></div><!--QuoteEEnd-->
    Yeah I agree. I didn't understand it when I first read that, actually, but I suppose it makes sense from a 'global tracker' perspective?
  • MCMLXXXIVMCMLXXXIV Join Date: 2010-04-14 Member: 71400Members
    edited August 2010
    I like the bittorrent idea. Some existing clients (Vuze at least!) have code that will automatically back down the bittorrent connection speeds if any increase in latency is detected. This could be done quite easily by NS2 as it has detailed statistics coming from the connection between client and server. I have this working at mine and it's pretty good - I can play a game while my housemate is downloading linux isos etc.

    Alternatively, as this can be quite tricky to implement, it could be possible to specify your connection speed in a menu - by default the bittorrent max connections and stream rate could be set quite low so as not to cause problems on most Cable/DSL lines.
Sign In or Register to comment.