For this tutorial I am going to port 2fort from team fortress classic over to team fortress 2/sfm.
WARNING- Dont do any of this to fan maps that you dont own. That is rude. Always ask the creator first. Also. Some games do not work well with the listed decompiler. If this is the case you can use something like bspviewer or bsp2map, but they do not convert as accurately and will require more adjustment.
STEP 1 - getting the file you need.
Get your .bsp file.
Copy it to another folder somewhere easy to get to. Open up Half Life Unified Sdk Map Decompiler. you want to run the program in the folder called HalfLife.UnifiedSdk.MapDecompiler.GUI.exe
file > convert > (your bsp) and it will run automatically. make sure to read the options shown to you and check ones that you want.
You should now have a .map file. Open it with jack. Some textures will be missing but ignore that. you want to make sure that the map looks right, compiling removes a lot of brush data. But as long as it didnt break in the process, go and save it as a .rmf file.
Step 2 - getting the textures.
Open MAPFool and open up your map in it.
click on upgrade obsolete enemies and press ok. Then press export textures to .tga. make a seperate folder for this in your map folder. Call it materialsrc. Now all of the used textures in your map are converted to individual pictures.
Step 3- making materials
Source doesnt use wads like goldsrc. it uses something called materials, which are a combination of 2 file formats. One file controls the what the texture looks like (the .vtf), and the other is code which controls how it appears in the map(the .vmt). You need to make both of these. Don't worry because the code is adding one line and you can copy and paste it, it isnt hard.
Open up VTFEdit. immediately go to options and check automatically create VMT file. Since the textures are all going to be different sizes you have to do this one by one. open up your first tga file and copy the filename. you will see a window like this. make sure that the resize settings are on like this. Source uses different sized textures to goldsrc.
press save. name it the same as the tga file it came from. Saving it will generate a .vmt file. Open it up. it should look like this.
it needs another line to tell it how it should interact with the world and what type of material it is. Add "LightmappedGeneric" { "$basetexture" "PUT TEXTURE NAME HERE" "$surfaceprop" "concrete" } in. This string shows the textures name and what material it is, in this case it is concrete. But it can be changed depending on what you are making. I am not a big source mapper. I cannot give an incredible insight on what you can add and change here. so if you are interested in configuing it more check here. but for most cases this should be fine. Here is a list of words you can use that are not concrete. UPDATE!! you do not need to add anything to the vmt. It just makes it more realistic and natural in the engine.
Step 4- the map
For some reason hammer for source doesnt like being run directly for some games. Since i am going to be putting it in TF2 i am going to C:\Program Files (x86)\Steam\steamapps\common\Team Fortress 2\bin and running hammer.bat So just find that file in your chosen games directory. Open up the rmf file in hammer. You are going to have to press open and go down to make it look for worldcraft maps instead of the default valve map files. The map should be completely white once opened. immediately save this as a .vmf.
Go into the root folder for the game you are porting the map to. there should be a folder in there called materials. Paste in the folder of .vtf and .vmt files that you have just made. Go back into hammer. go into your options, put the folder into your materials directory. press file. press convert wad to vmt. it should have textures now. If it does not, add the Games WAD into the same folder and try again. sometimes it can be a massive pain to do and sometimes it will be completely fine and work, and then when you come to re open hammer the textures are all gone again.
Step 5- cleanup
The textures will not be applied properly. you are going to have to move them all back to their original positions. things like text or signs will be the easiest to spot. obsolete functions will need to be deleted and replaced, the skybox will need to be renamed in the map settings to something source supports, some brushes might neeed to be replaced. etc. But. Your map is now in source. What you do with it is up to you.