---
title: "Creating a Custom WAD with Wally"
excerpt: "How to build a GoldSrc texture WAD in Wally: the 16-color-per-transparency rules, the 16-pixel dimension requirement, blue transparency and {\\ textures, and getting the WAD into your map without the missing-texture error."
category: "mapping"
tags: "wad, textures"
image: ""
read_time: "8 min read"
---
<p>A <code>.wad</code> is a package of textures that GoldSrc maps reference by name, and <strong>Wally</strong> is the classic editor for building them. If you want custom walls, signs, or logos in a CS 1.6 map, you make a WAD, add it to your compile tools and editor, and apply the textures. Get the format rules wrong and you get corrupted colours, invisible faces, or the dreaded missing-WAD error at load. This covers building a clean WAD in Wally.</p><h2>1. Understand the GoldSrc texture format</h2><p>GoldSrc textures are not arbitrary images. The hard rules Wally enforces (and that break your map if violated):</p><ul><li>Each texture has a <strong>256-colour palette</strong> (8-bit indexed). Wally handles the conversion, but subtle gradients will band.</li><li>Both dimensions must be <strong>divisible by 16</strong> — 64x64, 128x128, 256x256, 16x32, and so on. A 100x100 texture is invalid.</li><li>Texture <strong>names are limited to 15 characters</strong> and are how the map references them — keep them unique and descriptive.</li></ul><h2>2. Create a new WAD and add textures</h2><p>In Wally, create a new WAD3 package (the GoldSrc/Half-Life format). Import your images — Wally converts each to the indexed palette on import. Resize any image whose dimensions are not multiples of 16 <em>before</em> importing, or crop inside Wally, so you are not fighting a stretched, misaligned result later.</p><h2>3. Use the special texture prefixes</h2><p>GoldSrc gives certain name prefixes special meaning. The ones you will actually use:</p><ul><li><strong><code>{</code> (brace) prefix</strong> — a transparency/decal texture. The palette's <em>last</em> colour (index 255, pure blue <code>0 0 255</code>) is rendered transparent. This is how you make fences, grates, and cut-out signs.</li><li><strong><code>sky</code></strong> — reserved; do not name a normal texture <code>sky</code>.</li><li><strong>Animated textures</strong> use <code>+0name</code>, <code>+1name</code> sequences.</li></ul><p>For a fence texture, name it <code>{fence01</code>, paint the see-through parts pure blue, and set that as palette index 255. In the editor you then set the brush's render mode to Solid so the blue drops out.</p><h2>4. Keep the blue truly blue</h2><p>The transparency colour must be exact <code>0 0 255</code> and must be the last palette entry. If your image editor anti-aliased the edges, you get a blue fringe around the cut-out. Paint transparency areas with a hard, single-colour blue and no anti-aliasing so the edge is clean.</p><h2>5. Save and wire the WAD into your tools</h2><p>Save the WAD somewhere your editor and compiler can both reach. Then add it in two places:</p><ul><li><strong>Your editor</strong> (JACK/Hammer) — add the WAD to the texture/game configuration so the textures appear in the browser. See <a href="/tutorials/jack-editor-setup-cs16">JACK editor setup</a>.</li><li><strong>The compile</strong> — the <code>hlcsg</code> stage reads the WADs the map references. Either let the compiler find it via the wad path, or embed the used textures into the BSP with <code>-wadinclude</code> so the map is self-contained.</li></ul><h2>6. Decide: external WAD or embedded</h2><p>If you ship the map to a server, players need the textures too. You either distribute the <code>.wad</code> alongside the BSP (and list it in the map's resource file) or embed the textures into the BSP at compile with <code>-wadinclude</code>. Embedding makes a bigger BSP but removes the "cannot find WAD" class of problem entirely on the server side — covered in <a href="/tutorials/cs16-cannot-find-wad">the cannot-find-WAD guide</a>.</p><h2>Common errors</h2><ul><li><strong>Compile fails with a WAD-not-found error</strong> — the compiler cannot locate the <code>.wad</code>, or the map references a WAD you no longer have. Fix the wad path or <code>-wadinclude</code> the textures; see <a href="/tutorials/cs16-cannot-find-wad">cannot find WAD</a>.</li><li><strong>Texture looks corrupted / wrong colours</strong> — the palette conversion mangled a gradient, or the image was not truly indexed. Re-import in Wally and accept its palette.</li><li><strong>Transparency not working, whole texture is opaque blue</strong> — the name is missing the <code>{</code> prefix, the blue is not exactly <code>0 0 255</code> at index 255, or the brush render mode is not set to Solid in the editor.</li><li><strong>"Texture is not 16 aligned"</strong> — a dimension is not divisible by 16. Resize to the nearest multiple of 16.</li><li><strong>Texture does not appear in the editor browser</strong> — the WAD is not added to the editor's game configuration. Add it and refresh.</li></ul><h2>Verification</h2><p>Apply a custom texture to a test brush, apply a <code>{</code> transparency texture to a fence brush and set it to Solid render mode, then compile a small test map. Load it and confirm the wall texture displays correctly and the fence shows the world through its cut-out with no blue fringe. If the compile complains about the WAD, resolve the path before anything else. Once it renders in-game, the WAD is production-ready; manage how it ships with <a href="/tutorials/install-custom-maps-cs16-server">installing custom maps on the server</a>.</p>









