Menu
 

Garry's Mod Maps: Installing and Delivering Maps on a Server

Garry's Mod Maps: Installing and Delivering Them

A freshly installed Garry's Mod dedicated server has exactly two maps. Pull app 4020 with SteamCMD, open garrysmod/maps/, and you will find gm_construct.bsp and gm_flatgrass.bsp. That is the whole shipped map list. Every RP city, every TTT map, every prop hunt arena and every build map you have ever played on is community content that somebody put there on purpose.

That one fact explains most map problems on a server. Adding a map is really two jobs: getting the .bsp onto the server, and getting the same file onto every client that joins. Doing only the first is the single most common mistake, and it looks like a player stuck forever on the loading screen while the server console reports nothing wrong.

Last verified: September 17, 2026. Map content changes faster than server software. Check the map's own Workshop page or readme for the assets it requires, and test the exact map on a clean client before you announce it.

Where maps come from

  • The Steam Workshop. The normal route. A map is published as an addon, and the server can subscribe to a whole collection at boot. Note that subscribing in your own game client does nothing for your server, they are separate installs.
  • A standalone .bsp file. Older maps, private maps and maps built in Hammer arrive as a loose file, sometimes inside a zip with materials/, models/ and sound/ folders that must be kept alongside it.
  • Bundled inside a gamemode or content addon. Garry's Mod loads every directory under garrysmod/addons/, so an addon folder that contains its own maps/ subfolder puts those maps in the rotation without you touching garrysmod/maps/ at all.

Installing a map on the server

Loose file route. Drop the .bsp straight into garrysmod/maps/. If the download included materials/, models/, sound/ or a .nav file, keep the folder structure intact and merge it into garrysmod/, or put the whole thing in its own folder under garrysmod/addons/ so it stays easy to remove. The map name is the filename without the extension, so rp_downtown_v4c.bsp is loaded as rp_downtown_v4c.

Workshop collection route, and this is the better one. Build a collection in Steam, make it public or unlisted so the server can read it, and pass its ID at startup:

./srcds_run -game garrysmod +gamemode sandbox +map gm_construct \
    +maxplayers 24 +host_workshop_collection YOUR_COLLECTION_ID

The server downloads and mounts everything in the collection on boot, and Steam keeps it updated when an author publishes a new version. More importantly, when the running map matches a map inside that collection, the client is automatically marked to download it. That is the delivery half of the job solved for free. Facepunch documents the collection rules on Workshop for Dedicated Servers.

Choosing the boot map and changing it live

srcds_run ships with DEFAULT_GAME="garrysmod" and DEFAULT_MAP="gm_construct", which is why a server you never configured still comes up on Construct. Override it with +map on the command line, and note that host_map is the convar holding that boot map name. To switch while players are connected, use the console or RCON:

changelevel ttt_minecraft_b5

Everyone is moved to the new level together. If the map is missing on the server, changelevel fails immediately and you stay where you are, which makes it a cheap way to test that a file really landed. Remember that the map and the gamemode are separate settings: booting a TTT map under sandbox gives you a playable but pointless server, and a gamemode switch needs a restart rather than a changelevel.

Your players need the map too

This is the part people skip. The server having a .bsp does not put it on anyone's disk. A client that joins a level it does not have must obtain the file before the level loads, and there is no way to fix that mid join. You have two supported paths:

  1. Workshop delivery via host_workshop_collection. Put the map addon in the server's collection. Clients pull it from Steam's content servers at full speed, and updates are handled for you. Use this unless you genuinely cannot.
  2. FastDL via sv_downloadurl. For loose files, stand up an ordinary web server, mirror the garrysmod/ folder layout onto it so the map sits at maps/yourmap.bsp, and point sv_downloadurl at it. Clients request a .bz2 compressed copy first and fall back to the plain file, so compressing saves real bandwidth on a large map.

sv_allowdownload governs the legacy path where files trickle out of the game server itself. It is slow enough to be a bad experience and is not a substitute for either option above. If you want players staring at something other than a blank bar while a 200 MB map downloads, sv_loadingurl points at your own loading screen page. And if you run sv_pure, remember it constrains which client files are allowed, so test a custom map with your actual pure setting rather than assuming.

Missing map assets and missing map files produce different symptoms. See missing textures and ERROR models for the symptom side, and content packs and mounting for the case where the map itself arrived fine but its textures came from another Source game.

Map problems and what causes them

SymptomCauseFix
Server exits at startup saying the map cannot be foundThe .bsp is not in garrysmod/maps/ or any loaded addon, or the name is misspelledCheck the exact filename and case, drop the .bsp extension in +map
Player hangs on the loading screen forever, server looks healthyThe client has no copy of the map and no download pathAdd the map to the Workshop collection, or serve it over FastDL
Purple and black checkerboard surfacesA missing material, usually from a Source game the client has not mountedDeliver the content properly; mounting on the server alone does not push textures to clients
Red ERROR signs standing in the worldA missing model, a different fault from the checkerboardTrack down the model pack the map depends on and ship it to clients
Large map crashes the server or clients out of memoryA 32 bit binary running out of address spaceUse the 64 bit build; the September 2026 update brought 64 bit binaries on Windows for exactly this
Map loads, gameplay makes no sense, no spawn logicMap built for a different gamemodeMatch the gamemode to the map prefix, see below

What the map name prefix tells you

Prefixes are a convention, not a rule the engine enforces, but authors follow them closely enough that they are a reliable hint about which gamemode a map expects and which entities it places.

PrefixBuilt forNotes
gm_SandboxBuild and mess about maps, the two shipped maps use it
rp_Roleplay, usually DarkRPCities with shops and apartments, often the largest downloads
ttt_Trouble in Terrorist TownNeeds TTT spawn and weapon entities to be playable
ph_Prop HuntProp dense interiors sized for hiding
de_, cs_Counter-Strike defusal and hostage layoutsVery often pull their materials from Counter-Strike: Source

Sizing: maps are not free

A large open roleplay map costs more resident memory than a small arena, and the cost is paid on every level change, not once. Plan for it the same way you plan slots. The bigger hit is usually bandwidth: the first time a full server of new players joins a 300 MB map pack, that is 300 MB multiplied by however many of them arrive at once. Workshop delivery moves that traffic to Steam. FastDL moves it to your own web host, where it is your bill. Rotating between a handful of tested maps rather than a sprawling rotation keeps both the memory ceiling and the first join penalty predictable, and gives returning players a cached copy already on disk.

Related Garry's Mod guides

Want the Workshop collection, map storage and content delivery handled without running your own web host? Launch managed Garry's Mod hosting and keep this page for the map decisions that are actually yours.

Tired of fighting this issue every patch?

Run a managed Garry's Mod server with us. We handle the patches, mod-version pinning, save backups, and DDoS protection. Set up in minutes, multiple datacenter regions, no contract.

See Garry's Mod hosting plans →
Top