User:Kizzycocoa/tutorials/what makes a good map
mapping can be very complex at times. but the most important question is the one above.
what makes an official VALVe map so good? how can I achieve that level of perfection?
there are very, very simple ways to do so, and also, many complex ways to achieve this level of detail
Contents
The Plot
every map should have a plot. something to back it up. half life and left 4 dead both have unspoken backstories and a main plot.
half life tells the story of a scientist having a very bad day at work. left 4 dead tells the story of survivors, trying to escape the zombie hoards that have overrun where they are.
be it a mod, a map or a simple sketched plan, it is always better with a form of plot.
hidden plots are also a good way to make the playing experience authentic. rat man dens, old decorated houses and small alcoves where people once were. the best game to find examples is half life 2. generally on the coast level, as the map is much bigger than other maps in the game.
however, too much story is also a problem. a good average limit is 2 main plots, and 5 hidden plots.
planning
now you have your plot, you can now make the layout of the map.
generally, a quick sketch of your map is ideal. that way, it gets slightly easier to visualise what your map will look like. if you make a sketch, try to plot where the zombie are going to be, where the energy ball launchers are, what the course is, etc. basically, the bare bones of the map.
if you'd prefer, you could just dive into the map, but planning usually helps a great deal.
the map
the first step is to create the bare layout of the map. an untextured layout is fine, but due to the yellow in the nodraw being a solid colour, it can be hard to see corners etc. in the 3D view. I generally use a metal wall texture, as it splits up the map into easy-to-measure units.
once you create the bare map, try to create as much decoration as possible. remember to make any details into a "func_detail" entity. nothing messes up compile more than, say, a cylinder that isn't a func_detail. the portal file will get split up a lot if details aren't turned into func_detail entities. the portal file makes zones of what to render. as the way source creates the file, it follows along the sides of the cylinder until it meets a wall or when intersecting with other splits. so if you have a cylinder, it will go along each side until it meets a split.
another fundamental problem is enclosing the whole main map with a skybox. this is the wrong thing to do. with skyboxes, only enclose parts that will see it.
leaks also mess up the map a lot. the lighting will be erratic, causing intenser dark areas to litter the map.
textures
textures really bring the map to life. the textures obviously show where you are, and when positioned right, will create the right atmosphere for your map. first off, the idioticly simple. if you're making a building, try to make it look like a building too. to have a rock ceiling and snow on the floor in an apartment block, and mean for it to actually be the ceiling/floor will not give the right atmosphere at all, and you are heading down the flamey road of no return. it would look extremely odd, and will make the user's opinion of your map plummet.
texture alignment is the absolute necessity to a good map. simple texture alignments makes the map look professional, and gives it a nice finish. when reviewed, this is usually picked up in maps.
to align textures is very simple. it's practically slider-based now, and the newest version of source can keep a hold of numbers like 0.125, and those with more than 2 numbers in decimals. all this can be seen in the texture browser. simply change the numbers by clicking the up and down arrows next to them, and try the textures as aligned as possible.
of course, the less menial way to align textures such as hallway textures is to click the top/bottom/left/right buttons. if the brush doesn't extend past the floor, then it should automatically align.
details
details are a huge boost for games. take half life two. so much detail has been put into the start. the carriages, the ropes, the workable vending machine, the litter etc. it probably took them over a week to get all these little details perfect, and it is well worth it. otherwise, the train station just wouldn't be real. it would feel vacant.
sound
sound is also fairly important.
for example, if you put in a soundscape. just put a trigger_soundscape into the map where the player will be, and add an env_soundscape_triggerable (with the right soundscape attached). the ambiance will be a lot more atmospheric than hearing absolute silence. even in silent moments, such as a haunted house. if you add a sound of wind or faint wailing, the atmospheric effect is greatly increased.
overlays
they are very important. add a few posters, leaves on the floor, cracks in bricks, all of these enhance your map that little bit more.
3D skyboxes
if your map is fully enclosed, such as a portal map, feel free to skip this part. 3D skyboxes are a very nice touch. it's a shame they aren't used more.
to make a skybox, simply make sure the co-ordinates 0, 0, 0 (the center of the grid) are in a place the map is (so it isn't in "the void"). place a sky_camera at 0, 0, 0. copy the IMPORTANT parts of the map and the sky camera. important such as the edges near the skybox boundries, or big buildings.
paste them in the new map. at this point, forget the boundaries of the map, or the size.
make the entire area full-size. mountains, brushwork etc. DO NOT add entities.
then size it down 1/16th of it's size. go to "transform", "scale" and type 0.0625 for the X, Y and Z values.
lighting
probably the hardest thing to perfect. lighting is very important for atmosphere. (as I am not good at lighting myself yet, I will leave this to someone else to fill in)
map protection
after all the hard work you've made, protecting it is important. especially from Vmex. (taken from Vmex's site)
Q. I'm a map author. How do I stop someone decompiling my map with VMEX?
A. There are several ways (in order of increasing security): Add a property key "no_decomp" with value "1" to any entity. (You will need to turn off smart edit to do this). Use a texture called "tools/locked" on any non-culled face in the map. (This is not a real texture, so you will have to make a custom one.) You may hide the texture in a sealed room, but it can't be on any culled face on the map (facing towards the void). Use this small prefab: protector.zip. Add it anywhere in the map, but don't rotate or scale it. If you retexture it, make sure all faces and all brushes have the same texture. Don't use the texture "tools/toolsinvisible", but "tools/toolsnodraw" is fine.
If VMEX detects any or all of these present in a map, it will refuse to decompile it. Note that a sufficiently wiley user can fairly easily alter your .bsp file to remove the first two methods (and thus allow the map to be decompiled), but they would need extensive knowledge of the .bsp format to remove the third, so this is the most secure.
final preparations
once finished, use a program to embed custom content in. this will help protect them a little bit (but they can still be extracted by knowledgable mappers). pakrat is probably the best program to use. after all this, you have now got your finished map.