Garry's Mod workshop: what the server mounts, what the client gets
Two separate questions, and most missing-texture problems come from answering one while believing you answered the other.
There are two completely separate questions on a Garry's Mod server and almost every workshop problem comes from answering one of them while thinking you answered the other.
The first: what content does the server have loaded, so that maps and entities exist. The second: what content does the client download, so that players see it instead of errors.
Facepunch documents the workshop setup for dedicated servers. What follows is the distinction that documentation assumes you already hold.
-authkey and the collection
A dedicated server pulls a workshop collection at boot with +host_workshop_collection <id> and an API key passed as -authkey. Without the key, the server starts and silently loads nothing from the workshop, which looks exactly like a wrong collection ID.
The collection must be public. A friends-only collection resolves to nothing, again without an obvious error. These two together account for most of "my addons are not loading".
resource.AddWorkshop is the other half
Mounting a collection server-side does not give clients anything. A player joining a server with a mounted map and no client-side instruction gets the map (because the map has to be downloaded to join at all) and then sees purple-and-black checkerboard everywhere the addon's materials should be.
resource.AddWorkshop("id") in a server-side Lua file is what tells the client to download that addon. It is per-addon, not per-collection, and it is the line people learn about after their first week of players reporting missing textures.
Why the checkerboard is not a client problem
Players will tell you their game is broken. It is not. The server told them about a map and never told them about the props inside it, so the props resolve to the missing-texture material.
This matters beyond aesthetics: a player whose first thirty seconds are spent in a pink-and-black room does not stay to ask why. That is a retention failure disguised as a technical one, and it belongs in the same conversation as what the first ten minutes decide.
FastDL, and when you still need it
Workshop downloads are handled by Steam and are usually enough. FastDL (sv_downloadurl pointing at a plain HTTP server) still matters for content that is not on the workshop: custom sounds, legacy addons, anything you made yourself.
If you use both, the workshop takes precedence for what it covers. Running FastDL as a duplicate of your workshop content is a common arrangement that costs bandwidth and achieves nothing.
The size problem nobody plans for
A collection grows one addon at a time and each one is small. Then a new player joins, the client downloads eight hundred megabytes, and a meaningful share of them close the game during the loading bar.
There is no setting that fixes this. The only lever is the size of the collection, which is a content decision rather than a configuration one. Servers that keep new players tend to run smaller collections than the ones that have been adding addons for three years, which is one of the quieter reasons gamemode choice shapes everything else about how a server grows.
What to check, in order
When content is missing, work down this list rather than guessing:
- Is
-authkeyset, and is the key still valid? - Is the collection public?
- Does the server console list the addons at boot?
- Is there a
resource.AddWorkshopfor the missing one? - Does the client's console show a download failure, or no attempt at all?
Four of those five are server-side. The instinct is to start with the player, and the player is almost never the cause, which is the same pattern as most connection problems, where the thing that looks like a client fault is a server that never told anybody something it should have.
The habit worth forming
Check the list against a clean client once a season. Your own machine has every addon cached from months of testing, so it loads content the server never actually sent, and it will keep telling you the setup works long after it stopped working for anybody else.
Keep the collection and the resource.AddWorkshop list in one file, edited together. They are two halves of one decision and they drift the moment they live in different places, and a server whose content list has quietly drifted is a server that is losing new players for a reason nobody has noticed, which is the difference between a quiet server and a dying one.
- Tags
- garrys modworkshopconfiguration
- Share
Published · 3 min read