1 - Adding a spawn pointFor this tutorial, I've gone ahead and made a small room. If you want to see what your map will look like in tf2, first of all remember that your map wont load if there is a space in the name. Use _ as a substitute for a space.
To mark where you will spawn in your map, you need an entity called an info_player_teamspawn. If you are confused about what an entity is, it can range from a light, to a prop, to a button. They allow you to script stuff to happen in game.
First of all you must create an entity. To make one, simply select it from the left side menu, and click on the floor in the 3d view.
As default you should see a little green man (p.s. its a green gordon freeman). If not, it doesn't matter. With the object you've made selected, press ALT and ENTER together to bring up its properties. Here you should see another window. What you want to do is turn this thing into a spawn point, do so by setting class to info_player_teamspawn.
One thing to note, make sure to press apply a few times to make sure it actually sets it to the correct entity. Now your entity should look the same as mine.
Something else to note, there's a slight bug with hammer, so your spawn point should be a few units off the ground. I've gone and set the grid down to 4 units per square and moved the entity so his feet are 4 units off the ground:
Make sure to set the grid back to 16 units! A word of advice is to have about 16 of these spawn points so everyone doesn't overlap when they spawn.
2 - Compiling your mapTo compile your map is to basically convert your map from a hammer format (.vmf) to a format which tf2 can run (.bsp). To compile your map, press F9 (make sure its saved first with a name with no spaces).
Some things to note here. BSP should always be at normal (no exceptions). VIS can be set to fast if you want a faster compile time when testing, but for a final release you should typically use normal. This is the same for RAD. HDR should be unchecked, since its not required. One other thing, typically you should check the 'Don't run the game after compiling'. Don't be lazy, go open tf2 yourself! So now go and hit OK.
Once you hit OK, prepare for some epic lag, (just leave your PC until it's done). Compile times can very dramatically. Poorly built maps can fail when compiling, and some unoptimized maps can take hours and hours to compile. For a small dev map it should only take a few seconds. One thing to note: I'm going to use jump_volcanic as an example here since it's a colossally large map. VIS only takes 1 second, so if it's taking longer, then you're doing something wrong. RAD on the other hand takes ages. I'll explain at the bottom of this tutorial what these things are actually doing if you are interested.
You know when the compile has been completed because it says 'Copy to clipboard' at the bottom of the compile log. (or if it crashes...) Now you can load up tf2, type map (mapname) into the console, and marvel at your first tf2 map!
Some technical stuff, if you're interested.
BSP (Binary space partitioning)
This step of the compile calculates all geometry and entities positions and w/e. Kinda boring but you always need this.
VIS (Visible info sets) - or something like that
This process calculated vis leafs. A vis leaf is a section of map, the size of each vis leaf is calculated by the position of geometry in your map. The reason this can take ages for some maps is because there is way too much geometry or if you use loads of tiny pieces and they are all off the grid and messy. So like I said, volcanic only took 1 second to compile VIS, so it was very optimized.
RAD (Radiosity simulator)
Radiosity basically means lighting. This step of the compile calculated lighting, light bounce, texture lightmaps etc... This can take a long time as your map becomes larger, and as you add more lights into your map. HDR, or high dynamic range, will cause RAD to run twice, calculating light bloom and other stuff that HDR uses to make more experienced peoples maps more pretty (and more realistic). HDR will also cause your map to be about twice as big.