Item Save Glitch, or ISG for short, is a developer variable meant as a fix for the Half-Life 2 demo at E3 2003.
Whenever its active, every VPhys object in the game loses its collision.
This includes the player's VPhys Bounding Box, also known as the Havok Bounding Box, allowing the player to clip through anything, and put props inside of themself in a way very similar to quickclip.
Clipping this way is however significantly harder than quickclipping, due to the fact that while ISG is active, props simply phase through walls and floors.
For an unknwon reason, getting stuck in props with ISG only works when the player is crouched. The game will not recognize the player being stuck if they're standing.
Despite ISG being possible in every version of most Half-Life 2 derivative games, consistent setups are only known for Half-Life 2, Episode One, Episode Two, and Portal. Any instance of it happening outside of these games was accidental, and it is not known how it can happen.
Once active, the only way to get rid of ISG is to restart the game.
ISG as a glitch (not as a term) been known to exist for a long time, as it has happened to numerous people on their casual playthroughs of the game. There are documented examples of it happening as early as 2005 in Half-Life 2: Deathmatch, thanks old steam forums.
The first actual semi-consistent way to get ISG was found in Portal in 2014, and that is where the name "Item Save Glitch" comes from.
After the setup has been found, people assumed that ISG is a variation of Save Glitch happening to props, instead of the player, as the setup utilizes rubbing a prop against a portal. This later turned out to be false, but the name remained.
Just 2 years later, in 2016 margen64 discovered BBT. During his experiments with the glitch, he has managed to achieve ISG in Half-Life 2. By this point, some setups involving cheat commands were also known. Unfortunately, similarly to BBT, this would quickly be forgotten and neither of the glitches would start seeing any use.
In August of 2023, a Portal runner, nick, has managed to achieve ISG on accident while performing BBT, and posted a video of it to the community. This time the discovery wasn't forgotten, and in the same month PegasDoggeAM has managed to recreate it while utilizing BBT, although no one knew about it (except Rama) until January.
If you just want to play around with ISG, you can use the
spt_set_isg
command from SPT.
ISG in Portal is performed by first placing a portal on the very edge of a wall, then moving an object halfway trough the portal, but without directly moving it through, and lastly moving a different object through the first one.
A video demonstration can be seen here:
https://youtu.be/ZB1CrtS75vI
The method for executing ISG in Half-Life 2 utilizes sending a physics object to a location the game considers "Infinite" by utilizing BBT.
First, start up BBT as usual, and hit the floating prop. Make sure that it flies away, really quickly. It is not required to continue floating after hitting the prop.
Shortly after it flies away, (not too early, not too late) execute a saveload. The saveload can't be done immidietely, as the physics object will take a few seconds (usually only 2 or 3) to reach infinity.
After the saveload, the game will be on a crash timer. ISG needs to happen before that timer is up.
In order to make it happen, simply make a physics object (like a prop) touch another, sleeping physics object. This works better with some than with others, and there are instances where this method seems can seem pretty random.
If when the 2 objects touch, one collides with the other like normal, or if it simply goes inside of the other, try saveloading again.
If the collision continues behaving like normal, and a crash doesn't occur, the prop didn't fly away far enough for ISG to happen.
The prop which was hit, should start falling through the floor, and the moment that happens load back to an old save, from before BBT was started. If this is not done, or done too late, the game will crash. ISG should be active now.
It is not known why ISG happens, but the way it works once it is active, is known.
The only publicly available code which contains the ISG variable is from the Half-Life 2 source code leak from 2003. Because of that, code snippets will not be shown.
g_pCurrentMindist
is a variable present in the leak, and it only appears twice. Once on line 770 of ivp_mindist.cxx
, and once on line 1239 of ivp_impact.cxx
ivp_mindist.cxx is where the variable gets set, and ivp_impact is where it's used.
Inside of the IVP_Mindist::do_impact
function, there exists a small check for if the ISG variable is active, and if it is, the mindist of the specific physics object is deleted. Since the variable is always true after being set, this affects every physics object in the game.
A comment from ivp_mindist.cxx
implies that this was done as a fix for E3 2003:
HACKHACK: E3 2003, get around delete of collision object that is calling us up the stack
(TODO: Likely not entirely accurate. Needs verification)