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
.bspfile. Older maps, private maps and maps built in Hammer arrive as a loose file, sometimes inside a zip withmaterials/,models/andsound/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 ownmaps/subfolder puts those maps in the rotation without you touchinggarrysmod/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_IDThe 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_b5Everyone 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:
- 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. - FastDL via
sv_downloadurl. For loose files, stand up an ordinary web server, mirror thegarrysmod/folder layout onto it so the map sits atmaps/yourmap.bsp, and pointsv_downloadurlat it. Clients request a.bz2compressed 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
| Symptom | Cause | Fix |
|---|---|---|
| Server exits at startup saying the map cannot be found | The .bsp is not in garrysmod/maps/ or any loaded addon, or the name is misspelled | Check the exact filename and case, drop the .bsp extension in +map |
| Player hangs on the loading screen forever, server looks healthy | The client has no copy of the map and no download path | Add the map to the Workshop collection, or serve it over FastDL |
| Purple and black checkerboard surfaces | A missing material, usually from a Source game the client has not mounted | Deliver the content properly; mounting on the server alone does not push textures to clients |
| Red ERROR signs standing in the world | A missing model, a different fault from the checkerboard | Track down the model pack the map depends on and ship it to clients |
| Large map crashes the server or clients out of memory | A 32 bit binary running out of address space | Use 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 logic | Map built for a different gamemode | Match 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.
| Prefix | Built for | Notes |
|---|---|---|
gm_ | Sandbox | Build and mess about maps, the two shipped maps use it |
rp_ | Roleplay, usually DarkRP | Cities with shops and apartments, often the largest downloads |
ttt_ | Trouble in Terrorist Town | Needs TTT spawn and weapon entities to be playable |
ph_ | Prop Hunt | Prop dense interiors sized for hiding |
de_, cs_ | Counter-Strike defusal and hostage layouts | Very 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
- Dedicated-server setup, installing app 4020 and getting a first map running
- Workshop collections and addons, the collection your maps should live in
- Content packs and mounting, when a map needs another Source game
- Missing textures and ERROR models, the two faults told apart
- Workshop download troubleshooting, stalled and failed client downloads
- Startup flags and server.cfg, where
+mapand the rest belong - Server requirements, sizing memory and storage for a map rotation
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.