FastDL vs Workshop

So I’m currently using workshop for 99% of my server’s content. The only problem is that sometimes players don’t download the workshop addons properly and as a result they see models errors (I am using custom content packs that I uploaded, means big workshop addons ~100mb x 2).

Now correct me if I’m wrong, but I think that FastDL would always make players download the files, unlike workshop which looks unstable/unreliable.

Now what I need to know is : would using FastDL cut down on download/joining speed or actually make it faster and more reliable?

Also I would like to know what preference do you, server owners, have between these two download methods?

http://forum.facepunch.com/showthread.php?t=1323860

FastDL also doesn’t always work due to clientside settings etc, however it is much more reliable - however compression isn’t as great and download speeds are MUCH slower.

A system I used was Workshop and then running some clientside lua to check a model used in the addons, if the model didn’t exist I would then either replace it in the code with a substitute for the clients (depending what it was for) or I’d force the workshop page to open in there steam overlay explaining that they need this content for our servers.

Something like this:



if not file.Exists("models/player/sillycop/cop5.mdl","GAME") then
    chat.AddText(Color(255,0,0),"It appears out custom content has not loaded, we will open the workshop files in your steam overlay. If you wish to remove all content errors from the server please subscribe to the addons.")
    timer.Simple(10,function() steamworks.ViewFile(0123456789) end)
else
    chat.AddText(Color(255,0,0),"It appears our custom content has been loaded - Please enjoy your stay @ Cake>Pie Servers")
end


Not tested that btw, was an example clientside code snippet to show a nice way of handling the workshop failures (Which are over 15%…).

So if I ever decide to put all my server content in FastDL, is there really such a thing as a script that would magically bzip all my files inside my server?

If you’re using a more up to date version of TCadmin on a dedicated, there’s a big button to do that.

Otherwise you’ve got to use something like this

The serer is hosted by Xenon Servers and the only button I see is “BZIP2 Maps” so I think it only works for maps… I guess I’ll have to go with option 2.

I’ve found the opposite to be true. For me, when I join servers with a lot of workshop items it takes almost a full hour to join because for some reason steam is sending me the files at ~.6Mbps-2Mbps. When using FastDL, I max my connection speed and can typically join any server within minutes.

And since you can use a CDN for the FastDL mirror, there really is no reason to use workshop other then for convenience.

Just my two cents.

I think the workshop cannot detect if you already have the content. For example, I have all the m9k stuff already subscribed to and yet joined a server that had it via resource.addworkshop and it made me redownload it all?

I guess that’s fine for tiny stuff, like gamemode content or whatever, but for huge weapon packs it’s tiresome and I don’t want to have to redownload 200mb weapon packs everytime.

This is sadly true, and annoying. It’s not every time it;s just the workshop file has to be in the downloads folder and not addons, I think the filename is different as well?

Downloading lots of small files is always slower than 1 large file, assuming the server speeds are the same etc. Plus steam use a much higher compression than is able with bzip.

But you are right, some people / or when steams in slow mode, get bad speeds with workshop and they just want to join the server. However for these folks you can turn steam workshop downloads off in your player options. Then simply subscribe upon joining?

It’s a matter of size I guess, for stuff not THAT big I’d probably use FastDL as well. However I’m not even sure if you could put the entire of M9K onto FastDL as there are limits.

If you sub to an addon, it downloads it under name_addonid.gma. If it’s sent via resource.AddWorkshop(), then it’s just sent as addonid.gma.