How to Develop a Map That Works

Some general advice regarding level design.
Planning
Don't touch Hammer. Instead, start with pen and paper. It's much more difficult to change the fundamental layout of a map once you start adding detail.
For Counter-Strike maps, consider:
- Most real-life locations involve repetition and large open spaces with few features; they would make terrible game levels.
- Meeting points, where the two teams see each other for the first time. Careful spawn placement and timing is the foundation of great maps like de_dust.
- Bomb sites, defensive positions and sniper nests. How would players from either team approach a certain area? How close is the bomb site to a meeting point?
- Performance, how efficiently will the map run on a computer? Vast football-stadium maps will typically fare poorly, while closed spaces with lots of twists will perform well but suffer in gameplay.
Building
Valve usually builds "orange maps" with bare gameplay essentials before actually working on level art and textures. Concentrate on the layout of your level, then apply textures and lighting afterwards. Create the basic map structure using dev textures (type "dev" in the filter box) and big, simple blocks. For a Counter-Strike map, place some spawn points, some buyzones and some bombsites. No stairs, just ramps.
- Optimize at every step of map creation.
- Turn on Snap to Grid.
- Don't overlap brushwork, for purposes of neatness and organization.
This isn't to say that you should actually start optimizing your map now (adding hint brushes, area portals, etc) but you should be mindful of the concepts mentioned here so that your map is constructed efficiently.
Playtest early. Ensure meeting points are timed correctly and "main arenas" do not cause low framerates.
Balance
Unleash 20 bots on the map, and let them go at it for an hour. If the result of that comes out significantly in favour of one side or another, try to figure how to re-balance the map. Watch where the bots meet, or see whether there are certain positions that gives one team too much of an advantage.
Once you're sure that the map works correctly, then you can start thinking about adding textures, details, props, sounds, etc.
Tips
- Purpose
- A level with purpose draws the player in. It both gives the player a goal, and creates the sense that something is being accomplished above and beyond what the player is doing in that moment.
- Motion
- Give motion and momentum to your level in both a physical and temporal sense. I'm referring less to doors, trains and buttons, and more to the motion of consequences. By looking at a level, you should be able to guess what has happened before you arrived, and at least have an inkling of what will happen in the immediate future. Give the player a sense that he is running through a living area, where things happen. Have the map flow smoothly, have one thing lead to another.
- Character
- This can be used to describe the lighting, the structure, the relative ambiance of a level. The character of a level can determine, and is partly determined by, its purpose and motion.
- Know thy enemy
- The one thing holding you back from making "the perfect level" is the limitation placed upon you by both the engine and by current technology. While designing levels, always be sure to keep track of your levels performance data, and stay within the range you set at the start of your project.
See Also
- Single-Player Mapping Tips - some more specific tips for single-player mappers.
- Counter-Strike:_Source#General_Documentation - A list of short tutorials to help with mapping escapades.
External Links
www.johnsto.co.uk - A few very good articles to help you getting started, by the creator of de_dust.