Workshop docsGetting started
How the game finds your files
Most "it doesn't show up" problems come down to a file in the wrong place. Learn the folder layout once and the rest of these guides make sense.
Black Mesa doesn't care where a file came from: the game folder, a VPK you made, or a Workshop item. It stacks all of them into one virtual file system and looks files up by their relative path, like materials/ or maps/.
That gives you the one rule that matters: put each file at the path the game expects, and it will be found. Your mod folder should mirror the layout of the game's own bms folder.
The folders you'll use
| Folder | What goes in it |
|---|---|
maps/ | Compiled maps (.bsp), and for multiplayer maps the loading screen file maps/. |
maps/ | AI nodegraphs (.ain). The game writes these itself the first time a map with AI nodes loads. |
materials/ | Textures (.vtf) and the materials that use them (.vmt). |
materials/ | Multiplayer loading screen images. See Loading screens. |
models/ | Models (.mdl plus its .vvd, .vtx and .phy files). |
sound/ | Sounds (.wav, .mp3). |
campaigns/ | Your campaign file (.json), which puts your levels in the main menu. See Creating a campaign. |
ui/ | Images the main menu shows, such as campaign and chapter thumbnails. |
resource/, scripts/, cfg/ | Text, configuration and game scripts. Be careful here (see below). |
A finished singleplayer map with a few custom textures might look like this:
mymap/
├── campaigns/
│ └── mymap.json
├── maps/
│ ├── mymap.bsp
│ └── graphs/
│ └── mymap.ain
├── materials/
│ └── mymap/
│ ├── wall_panel.vmt
│ └── wall_panel.vtf
└── ui/
└── mymap/
├── logo.png
└── chapter1.pngSame path, same file: overrides
If two sources contain a file at the same path, only one of them is used, and content from add-ons and Workshop items wins over the base game. That's how weapon and model replacement mods work.
It's also how a map ends up breaking the game for everyone who subscribes to it. If your item ships a file at a path the game already uses, your version replaces the original for every map, not just yours.
The fix is simple: give your files their own folder. Put textures in materials/, models in models/, sounds in sound/, menu images in ui/, and give your campaign file a name nobody else will use.
Don't repack the game's own files
Don't start from a copy of one of Black Mesa's VPKs and upload it with your changes. Every file in it replaces the game's version for everyone who subscribes, including the ones you never touched, and those copies go out of date with every update.
Ship only the files you made. To replace something on purpose, like a weapon model, ship just those files. To change the game's text, menus or scripts, make a standalone mod.
Where to put files while you're testing
You don't need to pack anything to try your map. The game also reads loose files from its own folder:
Black Mesa/: loose files placed here (e.g.bms/ bms/) work straight away. This is where Hammer copies your map after compiling.maps/ mymap.bsp Black Mesa/: anybms/ custom/ .vpkfile or folder inside this is mounted at startup. Create the folder if it doesn't exist. It's the easiest way to test a packed VPK exactly as players will get it.
The game only looks for VPKs and Workshop items when it starts. Restart the game after adding or removing one.
Naming rules that save headaches
- Lowercase, no spaces. Use
wall_panel_01.vmt, notWall Panel 01.vmt. Source tools struggle with spaces, and file names can be case-sensitive on Linux. - A unique prefix for everything. Short initials or a project tag (
ap_,lrs_) on map names, folders and campaign files avoids clashes with the game and with other people's items. - Never name a map after an official one. A map called
bm_c1a0a.bspreplaces the start of the real campaign.
Glossary
| Term | Meaning |
|---|---|
| VMF | Your map's source file, the one you edit in Hammer. Don't ship it. |
| BSP | A compiled map, the file the game actually loads. |
| VPK | A package of many files that keeps their folder paths, like a zip file the game can read directly. |
| VMT / VTF | A material (a text file describing a surface) and the texture image it uses. |
| MDL | A compiled model. |
| AIN | An AI nodegraph, which lets NPCs find their way around a map. |
| FGD | An entity definition file, which tells Hammer what entities exist. |
