Fix: Missing or Black Textures In Game

August 13, 2025 Daemon666 8 min read

The map compiles, loads, and plays — but walls are solid black, or you see the purple/black checkerboard, or a texture is simply flat and wrong. Nothing crashes. This is almost always a WAD problem: the texture data that lives in .wad files did not reach the renderer, either because it was not embedded in the BSP and not present on the client, or because a texture name does not match. Here is how GoldSrc finds textures and how to make sure yours are found.

1. Understand where textures come from

A compiled .bsp references textures by name. At load time the engine resolves each name from one of two sources: textures embedded inside the BSP (via -wadinclude during hlcsg), or textures found in .wad files present on the machine loading the map. If a texture is neither embedded nor available in a client-side WAD, it renders black or as the missing-texture pattern. See wadinclude vs external WADs for the trade-off.

2. Decide: embed or ship the WAD

Two clean approaches, do not half-do either:

  • Embed the custom textures so the BSP is self-contained. Add -wadinclude for each custom WAD in hlcsg:
hlcsg -wadinclude mytextures mymap

The match is by WAD filename (without extension). Embedded textures ship inside the BSP, so players need nothing extra — ideal for a handful of custom textures. Do not embed the big stock WADs (halflife.wad, cstrike.wad) — every client already has those, and embedding them bloats the BSP.

  • Ship the WAD to clients via FastDL alongside the map, and leave the texture external. Then the client loads it at connect. This is covered in the server-side missing WAD guide.

3. Fix the black-on-server case

If the map looks fine when you test it locally (because you have the WAD) but is black for players, the WAD is on your editor machine but neither embedded nor delivered. Either recompile with -wadinclude for the custom WAD, or put the WAD on your FastDL host and reference it. Stock textures being black points instead at a corrupt or wrong-path stock WAD; see cannot find WAD.

4. Check for texture name mismatches

GoldSrc matches textures by name, and names are limited to 15 characters and are case-insensitive. If you renamed a texture in the WAD after building the map, or two WADs contain a different texture under the same name, the engine grabs the wrong one or none. Rebuild your custom WAD with unique, stable names and recompile. Special tool textures — SKY, AAATRIGGER, NULL, CLIP, ORIGIN — are handled by the compiler and should never render in game; if you see AAATRIGGER on a wall, you textured a visible face with a tool texture by mistake.

5. Rebuild custom WADs cleanly

A truncated or half-written WAD produces black textures for exactly the textures it lost. If you author WADs in a tool like Wally, re-export the WAD, confirm every custom texture is present and named correctly, and place it where the compiler's wad paths point. See creating custom WAD textures.

One more detail that catches people: GoldSrc textures with dimensions that are not multiples of 16 can render as garbage or black on some hardware, and transparent ({-prefixed) textures need the render mode set on the brush or they show their blue key colour. If a single custom texture is black while its neighbours in the same WAD are fine, check its dimensions and its transparency flag before blaming delivery.

Common errors

  • Purple/black checkerboard on custom textures — the custom WAD is neither embedded nor delivered to the client. Use -wadinclude or ship the WAD via FastDL.
  • Everything black including stock textures — a WAD path is broken or the stock WAD is missing; fix the wad paths, not the map. See cannot find WAD.
  • One texture wrong, rest fine — a name collision between two WADs, or a renamed texture. Give it a unique name and recompile.
  • AAATRIGGER or SKY visible on a wall — you textured a real face with a tool texture. Re-apply the intended texture to that face.
  • Looks fine locally, black for players — you have the WAD, they do not. Embed it or deliver it.

Verification

The decisive test is a clean machine. Copy only the .bsp (and the FastDL content, if you go the external route) to a client that does not have your custom WAD in its cstrike/, and load the map. If the textures render, embedding or delivery is correct. If they are black on that clean client but fine on yours, the WAD is still only local — recompile with -wadinclude or put it on the mirror. For the full packaging flow, see packaging a map for FastDL.

Contributeurs: Daemon666 ✦
Partager :