Source is a game engine developed by Valve Corporation, and it comes with development kit, that is completely free to download and use. To get it you need to install Steam from SteamPowered.com site. Source SDK is available for Windows, and since Source SDK Base 2013, which is available on github, you can use it on linux and mac. Source has established itself as a very optimized game engine so you don't have to have expensive hardware to work with it, as requirements are low.
All Source SDK versions except Source SDK base 2013 you can download from the Steam. All you need is to download and install Steam from the steamcommunity.com. If you want to use the Source SDK 2013 you should install it from github (how to install Source SDK 2013).
Development in Source SDK is separated into two parts - programming and level creation. Using of the Source SDK is much easier when you have resource packages. For beginners it is better to choose a game to make a mod for, to have some base to start with, but who is confident in his abilities can make a game without additional resources.
Level creation is performed in Valve Hammer Editor, and for typing your code, Microsoft Visual Studio of a suitable version is recommended. In addition, SDK has utilities like Faceposer (to create face animations, simulate npc emotions) and Modelviewer.
Barrier to entry is also ambiguous; on the one hand, it will be very hard for beginners to get used to Valve code to modify it. You will have to spend hours to understand the system (as it was for me), find needed files in the huge hierarchy of different script. On the other hand, if you are bad in programming, you can create your game without typing any code by making maps with brushes, models and so on. In this case, your game or mod will use the same mechanics of the one of Valve games, depending on your choice.
Source SDK from the start has some resource packs, but you always can add more of them from the games on source, like CS:GO, Half-Life 2 and episodes, portal series and so on. There are a lot of textures and models that you can use in your game. That packs have fgd. format, and can be found in Source SDK and games directories. For example, when creating a mod for HL2, you have all the files from it, including all models for source sdk, textures, and sprites. Also you can create your custom ones.
Source is very attracting as it is, especially in the hands of professional designer. With every new version of engine new features are added. Last Source versions have functions like:
- HDR rendering
- Ragdoll mechanics
- Developed particle systems
- Source is one of the first game engines that used complicated shader effects
- Dynamic Lighting
- Advanced realistic physics, based on Havoc (Looks very realistic)
- Face animation systems
Graphical power of Source Engine are presented in games like Portal 2 or Counter Strike: Global Offensive. Soft lighting, accurately adjusted color correction and competently composed textures are keys to sucess in level creation. Source also has amazing physics of props and ragdolls, which you can use for creating puzzles, mechanisms and so on. Game where you can take a look at Source physics is a sandbox called Garry's mod. It uses all the different features of Source Engine. Face animation is Source's main special features, that has a lot of tools to make expressife facial gestures and adjust animation and speech of charater. Source is very flexible game engine, so using tools listed above you can create all types of environments: from medieval castles and villages to futuristic space ships and magical fantasy worlds.
As already mentioned, level design is performed in Valve Hammer Editor. In Hammer you will step by step create your game world with brushes that have different shapes and textures. The biggest part of your map will consist of brushes, because source is not really good for creating maps with models, as lighting applied to your models will look ridiculous.
The easiest thing to create in Source is a shooter type game, because it comes with all code needed for shooter, but it is not limited at that point: strategies, sandboxes, RPGs, racing games and so on can be created in Source. Good examples are Lambda Wars, and Garry's mod.
Despite Source is always being updated, there are some issues that are not fixed yet or they are coming from developers' mistakes. Some of them and possible fixes are listed below to keep your development process very easy and relaxing.
Leak issue is common among beginners. Source render system works in the space limited with brushes, often with skybox textures on it. If there are some holes to the void or entities outside your map, source will have problems compiling your map. To fix it you need to check your map for leaks and seal it with brushes. IMPORTANT! Models and entities (even brush entities such as func_detail) cannot seal your map, so be careful.
One thing that can cause that problem is that grid is turned off. To toggle it you need to press Shift+R. If you don't see the grid, and you can not place any entities on the map, your problem is probably in your mod's gameinfo.txt. Check your number after SteamAppId in gameinfo.txt. This number should match the Steam Application Id of the game your mod refers to. If the number belongs to a game you haven't installed you will not be able to run your mod and hammer will not work too.
That problem is comes from your GameConfig.txt. GameConfig.txt contains paths, and reason of the problem that paths need to be updated. First fix is to right click on your base game (the one you are creating mod for) in steam, then click properties and find the button called "verify integrity of game cache". Press it and wait for the end of the process. If it doesn't fix it browse to your base game's folder, find "bin" folder and rename your GameConfig.txt to GameConfig.old, then launch your Hammer using hammer.bat or hammer.exe from the same folder. Hammer will create new GameConfig with updated paths. If you still can not use Hammer from Source SDK Launcher, but it works perfectly when you open it directly from the bin folder of the game you are making mod for, use it instead of the one you have in Source SDK Launcher.
Probably it happens because of a leak. Take a look at a Leak article. Other thing that can cause this problem is that you've created props with wrong prop types. In Source there are 3 prop types:
- Static - prop_static can not move and is a cheapiest type of prop;
- Physics - prop_physics is affected by gravity and other physics components;
- Dynamic - prop_dynamic can have parent object and can be used in different prop systems.
Every prop in source has types that it can become, and types that it can not be; To check your prop type you can use model viewer (It is not needed to launch modelviewer as a standalone program, you can use it within the Hammer when you choose the prop). Press the Info, then look at the checked boxes. If physics is checked, prop HAS to be physics or dynamic (if it is checked). If static is checked and physics is NOT checked, so prop has to be static or dynamic. If only dynamic box is checked, so prop has to be dynamic.
There is two variants of fixing that error: 1. Fully exit the steam client, open the client folder, then delete "appcache" folder and restart your computer. Try to launch your SDK with steam. 2. Paste the files of Source SDK from steamapps/ to steamapps/common
This problem often happens with large, complex maps. One thing that can cause it is Leak, that we've already mentioned. If you checked your map for leaks and found none probably your map just is not optimised. Compile process tries to optimise the map on it's own, but sometimes it is impossible to process a map that is too complex. Some there some optimization techniques:
1. Func_detail - Try converting some of your brushes, that are not playing the main role in world geometry to the func_detail. This can help hammer to compile map faster.
2. Brush Optimization is a complex process - first of all you need to optimize brush faces. For an example you have a corner made from 2 brushes. As you see in the screenshot below, player sees only 2 faces, but his computer (and yours, when compiling a map) renders 3 faces (take a look at the next screenshot). To fix it use the method that is covered in the video. The next thing in brush optimization, is to avoid creating map out of grid (which you can achieve by pressing alt and moving the brush). It will be much easier for Hammer to save and compile your map, when your brushes will have coordinates like 123 164 and 2300 but not 123.98530989 164.57400543 and so on. It is not necessary when you have only 3 or 4 brushes out of grid, but when number of that brushes is counted in hungreds and thousands Hammer will have to use a lot of your computer's memory. Also to optimize your map, you can make parts of the map that player can't see not to render. This can be achieved by painting all the brush faces that player will never see (like outer side of the wall for an example) into the nodraw texture.