Saveload clipping allows the player to utilize saveloads to traverse through geometry, by utilizing Unstucking Code. The player needs to be "Stuck" in order for this code to trigger. It is possible in almost every Source Engine game, but functions a bit differently between them. By default, the player will clip Down in New Engine games, and Up in Old Engine games.
In addition, the player will clip by around 20 units with every saveload when crouching, and only by about 2 when standing.
This can be changed by applying velocity to the player. When the player has velocity, they will clip by the default value + in the direction of the velocity.
In normal circumstances, the player will only be able to enter new geometry by clipping down in NE, and up in OE, while crouching. Clipping from the side will not work, though, the player is free to move anywhere when Out of Bounds in the void.
This limitation is removed by having either Quickclip or Item Save Glitch, allowing the player to clip through anything, without limitations.
In order to perform a Saveload Clip, first the player needs to get stuck. There are a lot of ways to do this, but the most common one is either Propclipping, or simply putting a prop inside of the player with QC or ISG. These do not work in some games however. In OE HL2, J-Clip is often used. OE EP1 does not have an easy way of getting stuck.
Some other methods of getting stuck include Decollision Clipping, Displacement Clipping, Level Transition Clipping, NPC Clipping, and more.
Once the player is stuck, they need to execute a saveload. this will cause them to move according to the conditions listed in the introduction.
The vast majority of players use a Saveload bind to make saveloading easier.
bind KEY "save slsave;load slsave"
In some situations, the player's velocity is going to be reset upon loading a save.
This can be caused by different factors.
in Source 2009 versions of HL2-based games and above, being in the void will cause the player to lose all of their speed.
In Old Engine, being stuck in brushes can reset the velocity as well.
Additionally, in all versions of Half-Life 2 based games, entering a level transition will cause a velocity reset.
Those can be circumented however, by utilizing Tick-Perfect Saveloads, executed in the 0-tick window.
This will not give the game a chance to reset the velocity, allowing the clip to continue with it.
Clipping this way, while Out of Bounds is called Void Clipping.
The player can use a Damage Boost in order to give themselves some velocity while stuck.
This will allow them to clip in a different direction that they were clipping in up to this point.
If the player is in a position which requires Tick Perfect clipping when performing the redirect, they will have a 1 tick window to saveload before the velocity from the redirect disappears. Performing this while in the void is usually called Voidclip Redirecting.
Voidclip Redirecting with a frag granade in Half-Life 2 will give the player a limited amount of save-loads to work with. This is because the granade's sprite will duplicate on every saveload, eventually crashing the game.
If the object the player is attempting to clip through, or get stuck with, is past the player in the Entity List, the clip will fail. This will occur if the object spawns after the player in the map. This is most often seen with NPCs.
To get around this, reenter the map after the entity has already spawned.
Saveload clipping is a direct result of Valve trying to get the player unstuck, if the game detects that they are stuck.
When loading the player from the Entity List, the game will run a check to see if the player is stuck. if they are, it will try to get them unstuck by moving them up (in Old Engine) or up, and then down (in New Engine).
After the game is done checking whether it has succesfully unstucked the player, it will simply leave them in the new position instead of moving them back to where they previously were.
Since the game runs the check while running through the Entity List, any entity past the player in the list will not be detected by the code.