SDK Overview
What is the SDK
The  Source SDK is a development kit for creating and modifying games built on the
 Source SDK is a development kit for creating and modifying games built on the  Source Engine. It includes the relevant source code files that enable developers to modify and create internal game systems. While the Source SDK does not provide access to the engine, it does provide header files. These header files can be used in conjunction with other SDK code to interface with the engine, allowing communication between the public SDK code and
 Source Engine. It includes the relevant source code files that enable developers to modify and create internal game systems. While the Source SDK does not provide access to the engine, it does provide header files. These header files can be used in conjunction with other SDK code to interface with the engine, allowing communication between the public SDK code and  Valve's closed-source engine code.
 Valve's closed-source engine code.
What The SDK Isn't
It's important to understand that the Source SDK DOES NOT include Source Engine code. This means that while you can interface with low-level systems, you cannot change them. However, anything above those systems, you can! While it's obvious that the game code is available, Valve also included other  Visual Studio 2022 projects along with the SDK (like compiler tools).
 Visual Studio 2022 projects along with the SDK (like compiler tools).
How the SDK Operates
As we described earlier, the Source SDK IS NOT the Source Engine. This means we are still going to need the engine to run our game. To get this engine, Valve published  Source SDK Base 2013 - Multiplayer on Steam. Downloading this software from Steam grants us a relatively barebones version of the engine that we will use to launch our SDK mod.
 Source SDK Base 2013 - Multiplayer on Steam. Downloading this software from Steam grants us a relatively barebones version of the engine that we will use to launch our SDK mod.
Valve designed the engine from the ground up to be highly modular. As you start reviewing SDK code, you should see this pattern emerge. At the lowest level, the engine will dynamically load and unload .dll files depending on what logic is needed and when. This means that we can launch our SDK using the original  hl2.exe without needing to recompile the entire engine. Instead, all that is required from us is to tell the
 hl2.exe without needing to recompile the entire engine. Instead, all that is required from us is to tell the .exe file that we want to use our SDK code instead of the original.
This happens by using launch parameters. The SDK should set this up for you automatically without you realizing it. If you inspect the properties of the Client (HL2MP) project in Visual Studio under Configuration Properties -> Debugging -> Command, you should find it set to: 
<drive>\Steam\steamapps\common\Source SDK Base 2013 Multiplayer\hl2_win64.exe. This is telling you that whenever you build and launch your SDK project, this .exe will be used. Just under it, you'll notice Command Arguments (what it will pass the .exe program as it tries to launch it) is set to: -game "<src code directory>\game\mod_hl2mp" -dev -w 1920 -h 1080 -windowed. These arguments tell the Source Engine to launch our mod. The -game parameter specifies which mod directory to load, -dev enables the developer ConVar which prints console output to the top-left of the screen and enables extra debug messages (also disables automatic loading of menu background maps), while -w, -h, and -windowed configure the window size and display mode for easier debugging.
Getting Started
Now that you understand the fundamentals of what the Source SDK is and what it actually does, you can start exploring the codebase. With this being said, Source is LARGE and really old (potentially older than some of its developers), meaning it's recommended you take some more time to learn about some generic SDK concepts as well as some generic  C++ concepts that are used heavily throughout the engine.
 C++ concepts that are used heavily throughout the engine. 
The next article that is recommended is VPC Scripts. These Valve Project Creator scripts are how Valve ensures everyone on their team is working in a relatively consistent development environment. They do this by controlling project settings and some pre-processor functionalities with these scripts, allowing everyone on the team to have a uniform baseline project.