Garry's Mod Logo
Changes Header

Changes

What’s changed in Garry's Mod in each patch.

add_circle

Features

  • Merged Episode 1, Episode 2 and Lost Coast mounting options into the Half-Life 2 mounting option
  • Added sv_quota_stringcmd_kick convar - kicks players who exceed sv_quota_stringcmdspersecond
arrow_circle_up

Improvements

  • Disallowed players from using voice chat unless they are fully connected
  • Added some more known backdoor URLs to HTTP blacklist
  • Blocked "load" console command for Lua
handyman

Fixed

  • Fixed crashes to do with entity render groups in Lua
  • Fixed crashes with missing physics objects in bone followers and info_radial_link_controller
  • Fixed crashes with particles getting insane particle count
  • Fixed crashes to do with NPC:TaskFail & debug overlay
  • Fixed crashes with CTriggerWind when loading a save
  • Fixed GM:PlayerAuthed being called twice
  • Fixed GM:PlayerAuthed always returning empty SteamID in singleplayer even when we have it available
  • Fixed 2 exploits reported via HackerOne
  • Fixed r_lightcache_zbuffercache 1 crashing the game if set after map load
  • Fixed "material __error is missing" warning on map load
  • Fixed .gma whitelist being different between game/gmad
  • Fixed character blinking by making flex controller names case insensitive again
  • Fixed degraded loading times for certain servers/addons due to spawnmenu changes from October 2024 update
  • Fixed BRANCH being set to "prerelease" on NONE beta clients (dedicated servers will continue to report "prerelease" on NONE/"public" beta)
  • Fixed Lua error with DTree node on rebuild when all its child nodes are deleted
  • Fixed dying outside of the map displaying "Dropping weapon in solid" console messages - Player:StripWeapons still drops weapons before removing them, Player:KillSilent and other methods of dying no longer does
  • Potential fix for family sharing owner SteamID being wrong in unknown cases
  • Potential fix for server reconnect spam by malicious actors
  • Do not set "commentary" to 0 on map start, since the console variable no longer exists
remove_circle

Removed

  • Removed a bunch of unused gamemenucommand commands - things like Half-Life 2's chapter selector, etc
  • Removed __screenshot_internal - it was never used by the game, no reason to keep it
  • Removed cl_soundfile - Unused, no reason to keep it, was trying to send itself to servers on join
  • Removed unused systems - Source's bug reporter, benchmarking stuff, BonusMaps stuff, Mumble stuff
  • Removed some debug related save/load related console commands
  • Stop shipping Commentary Editor for -tools, since we removed the commentary system which was never used in the first place
add_circle

Features

  • Added game icons to the mountable game list in main menu (Community Contribution)
  • Added sbox_maxconstraints and sbox_maxropeconstraints - both default at 1000, sbox_maxconstraints is for non rope constraints only, not ALL of them, no-collide is considered a non rope constraint now for the sake of limits
  • Added a search bar in spawnicon editor, as well as the ability copy sequence names to clipboard (Community Contribution)
  • Added a search bar to addon preset list
  • Added tooltips for vehicles in spawnmenu, similar to those for SWEPs, SENTs
  • Added Resistance Turrets to spawnmenu if Half-Life: Episode 2 is mounted
  • Added "Last played date" for each server in the server browser
  • Added Fortress Forever and NeoTokyo spawnpoints and their Map Categories (Community Contribution)
  • Added map category in main menu for G-String game (Community Contribution)
arrow_circle_up

Improvements

  • Added map icons for new Team Fortress 2
  • Improved suspension travel animation on the Jalopy from Half-Life 2: Episode 2
  • Display the command that is not bound in Sandbox hints, when no key is bound for it
  • Localized many spawnmenu entities and other text (Community Contribution)
  • Made "hold shift to force open main menu" warning popup an informational one visually (Community Contribution)
  • Updated Half-Life Source Deathmatch icon to match its Steam icon
  • Always enable loading screen for the map console command, such as when ran from command line
  • Implemented clientside parts of recently portal entities (turret lasers and such)
  • You can now use Gravity Gun on portal energy balls successfully, they will be detected by the ball catchers and won't fly in random direction
handyman

Fixed

  • Fixed a bug where duplicated constraints would not be able to be cleaned up via Utilities > Admin or User Cleanup
  • Fixed duplicated no-collides not being cleaned up via "No-Collides" cleanup option
  • Fixed undoing no-collide constraint not restoring collisions
  • Fixed a typo in Motor Tool settings (Community Contribution)
  • Fixed Rollermine visuals when it is hacked by Alyx in Half-Life 2: Episode 1
  • Fixed certain characters having missing animations in Half-Life 2 episodes: Eli, Vortigaunt, Dog, Antlion, Combine Dropship, Mossman, Zombie, Poison Zombie and Fast Zombie, Headcrabs, Lamarr, G-Man
  • Fixed Kleiner model using incorrect idle animation
  • Fixed certain combine monitor props displaying wrong visuals in Half-Life 2: Episode 1
  • Fixed Half-Life 2: Episode 2 and Portal 1 endings not displaying correctly (camera position)
  • Fixed grabbing certain transparent props with the Physics Gun making the screen black
  • Fixed Half-Life: Source barnacle interactions with the player
  • Fixed Half-Life: Source Alien Controller not doing damage
  • Restored some more Half-Life 2-specific behaviors, controlled by the following convars - sk_plr_health_drop_time, sk_plr_grenade_drop_time and sv_robust_explosions
  • Improve how the Sandbox gamemode handles invalid spawnlists, so the spawnmenu doesn't completely break
  • RPG rocket no longer slows down every time it enters water
  • Fixed impaled NPCs (such as with the harpoon prop) not appearing in the kill feed
  • Fixed some animations from newer model versions not working (Portal 2, Left 4 Dead models)
  • Fixed incorrect particles spawning if there are too many precached in a session
remove_circle

Removed

  • Removed skins with missing textures from certain built-in props
arrow_circle_up

Improvements

  • "SAM" admin tool support for TTT bans (Community Contribution)
  • Updated localization for Turkish, Spanish and German (Community Contributions)
  • Fixed selecting "Swedish chef" language setting the language to an invalid value (Community Contribution)
handyman

Fixed

  • Fixed traitor button rendering inconsistencies & optimization (Community Contribution)
  • Fixed ragdoll not being created if ttt_dyingshot is on (Community Contribution)
  • Check data_static/ for rearm scripts for use in workshop addons (Community Contribution)
add_circle

Features

  • Added a whole bunch of particle system operators and initializers from CS:GO, including additional properties to existing ones
  • Added SetTarget1-SetTarget4 map inputs to logic_choreographed_scene/scene_entity
  • Added hide_server convar, which when set to 1 will hide the server from the server browser
  • Implemented experimental auto-refresh support for weapons in spawnmenu - changing weapon info (including adding a new weapon) will update/add the weapon in spawnmenu automatically
  • Added disable_on_remove key-value to logic_collision_pair
  • Added "Toggle" input to env_projectedtexture
  • Added "Start Disabled" spawnflag for env_projectedtexture (also rearranged options in Hammer in order of usefulness)
  • Implemented networking for scaled props spawning scaled prop gibs
  • Added `SetLifetime` input to prop_combine_ball - 0 or negative values makes it infinite
  • Added BallCaught and OnBallCaught input/output for portal energy ball entities (from Portal 2)
arrow_circle_up

Improvements

  • player.CreateNextBot sets the bot name by the time player_activate event is called
  • Bump max Source Engine save game size to 12M (from 3) - so the game is not stuck in a (near) infinite loop when trying to load malformed saves during level transitions
  • Bump "cvarlist" buffers from 128 to 1024, so console command/variable descriptions fit
  • Linux: Do not try to execute threaded tasks if there are no tasks - this addresses significant slowdowns on Linux (srcds?) to do with the filesystem
  • Removing point_spotlight will now also remove entities it created
  • More safeguards against loading malformed .gma files
  • Fixed weapon tracer spread on Y axis not being taken into account at all when the effect is fired serverside
  • Micro optimizations to spawnicon and static prop rendering
  • PhysModelCreateBox doesn't reset solid parameters
  • Replace missing .png/.jpg image data with solid white color - this would happen when a Material()'d .png file goes missing (is deleted). It used to be undefined behavior
  • func_smokevolume removes its particles when dormant (when not seen by the player), so the particles can be used by other entities since there's a global limit
  • Mount floating .GMA files before fetching info about subscriptions - so they load in time if launching the game with +map
  • Always mount folder addons before Workshop system (so that the workshop system can find floating .gmas in addons/ folders consistently)
  • Do not hide servers with out of bounds data such as impossible player counts, clamp the data instead
  • Mention valid sample rates in "Invalid sample rate X for sound Y" warning
  • Unblock mp_flashlight console variable in menu state (for use by gamemode convar settings)
  • mat_texture_list - Don't display alpha channel for formats without alpha channel (RGB888, etc)
  • Navmesh auto-blocking checks now run on map start/cleanup
  • Rework how spawnpoint entities are added in base gamemode - one file now, not 25 duplicated files
  • Move default console position to the left a bit so it does not obstruct certain main menu UI elements by default
  • Code cleanup: Replace debug.getregistry usage with RegisterMetaTable where appropriate (Community Contribution)
  • Code cleanup: Use math.tau in some places instead of 2 * math.pi (Community Contribution)
  • Use m_yaw/m_pitch convars instead of hardcoded values in the built-in taunt cam (Community Contribution)
  • Use 4-number overload of surface.SetDrawColor in base game for performance (Community Contribution)
  • `teamonly` in `player_say` game event is now networked to clients
  • npc_combinecamera now fires OnLostEnemy output on losing its target
  • Changed how SWEPs store ViewModel/WorldModel/PrintName - To get rid of 80 character limit for all 3 fields
  • Network gravity scale for players, for prediction
  • Reduced networked bit counts for player's driving mode ID, player class ID and team ID (from 32bit)
  • Network "Sprint Enabled" state to players for prediction (Player:SprintDisable)
  • Do not initialize the scaled prop physics objects as physics shadows for clientside only entities
  • Do not network duplicate health/velocity for players - Since it is already done for all entities
  • Do not set collision bounds on physgun beam to save network bandwidth
  • Increased `modelprecache` maximum size to 8192 (from 4096)
handyman

Fixed

  • Fixed potential crashes to do with textures
  • Fixed a crash to do with decals and r_maxmodeldecal 0
  • Fixed crashes with sniper_proto (Half-Life 2 Sniper)
  • Fixed potential bug with CBaseAnimating::IsOnFire
  • Fixed G-String game icon
  • Fixed the game always mounting folders that it's only supposed to on local builds
  • Fixed TEXTUREFLAGS_POINTSAMPLE not respecting TEXTUREFLAGS_NOMIP
  • Fixed erroring material in Half-Life 2: Episode 1 causing console spam (Stalker teeth)
  • Fixed Close Caption HUD being disabled by SetHUDVisibility MapIO input
  • Fixed Lua errors when loading a (Source Engine) save that had add-on Sandbox tools that are no longer present after the save was made
  • Prevent crashes with wireframe model rendering and high vertex models (Mostly applies to Hammer, simply does not render such models)
  • Entities that block radius (explosion) damage (such as doors), don't block it on themselves
  • Fixed a Linux Dedicated Server crash with sv_showlagcompensation
  • Fixed a crash to do with teleporting constrained entities
  • Fixed missing wooden ladder sounds (Half-Life 2: Episode 2)
  • Fixed a few ways malicious clients could lag servers
  • Adjust how we disable self-unblocking for Lua-blocked nav areas to avoid negatively affecting other nav blocking entities
  • Prevent crashes to do with removal of world entity (another method)
  • Replace usage of "devshots_screenshot" with "screenshot" (for -makedevshots)
  • Fixed weapon_snark network types
remove_circle

Removed

  • Deleted constraints.lua - unused file
  • Removed -nulldevice command line switch
  • Remove respawn_entities concommand - we have gmod_admin_cleanup
  • Removed unused bodyque entity
  • Remvoed unused vote_controller entity
  • Remove unused networked field from gmod_gamerules entity
  • Completely remove the unused Source Engine commentary system, its UI stuff and entities
  • Remove test_traceline entity
  • Remove unused properties/fields on engine SWEP implementation
  • Removed unused stringtables - "GModGameInfo", "ServerMapCycle" and "InfoPanel"
add_circle

Features

  • Added MatSelect:OnSelect and MatSelect:OnRightClick
  • Added new function to util.Timer object - TIMER:GetElaspedTime (Community Contribution)
  • Added properties.Remove (Community Contribution)
  • Implemented ENTITY:GetPreferredCarryAngles for ai type SENTs
  • Added NPC:SetIdealSequence
  • Added 5th argument to constraint.Nocollide - disableOnRemove
  • Added surface.GetPanelPaintState
  • Added massCenterOveride for certain physics initialize functions - Entity:PhysicsInit. Entity:PhysicsInitMultiConvex, Entity:PhysicsInitConvex, Entity:PhysicsFromMesh, Entity:PhysicsInitBox
  • Added ProjectedTexture:SetNoCull and ProjectedTexture:GetNoCull
  • Added NAV_MESH_BLOCKED_LUA
  • Added PropSelect:OnSelect hook
  • Added PropSelect:OnRightClick hook
  • Added PropSelect:FindModelByValue
  • Added PropSelect:SelectModel
arrow_circle_up

Improvements

  • DNumSlider: Setting min or max value updates slider pos
  • Optimized SortedPairs further (Community Contribution)
  • Player:StripWeapons drops weapons before removing them - This mimics behavior of Player:StripWeapon
  • Fallback to garrysmod.ver for when Steam is not available to set BRANCH (SRCDS)
  • Made gui.HideGameUI work more like GM:OnPauseMenuShow
  • Merge some math library optimizations (Community Contribution)
  • Consistent return values from Sandbox tool Make* global functions
  • Reduced net.WritePlayer bit count based on server's maxplayers (Community Contribution)
  • Micro optimization for GWEN.CreateTextureBorder and related functions (Community Contribution)
  • Implemented Panel:Clear for PropSelect
handyman

Fixed

  • Fixed IMaterial:SetVector4D not using float inputs
  • Fixed DropEntityIfHeld affecting all players holding anything
  • Fixed MatSelect and PropSelect erroring on select if not given a convar
  • Fixed Entity:ManipulateBoneJiggle type 2 non functioning
  • Corrected UTF8<->UTF16 conversion for the close caption function & hook
  • Call GM:PlayerAuthed outside of player prediction so CurTime has a valid value
  • Fixed Player:UniqueID returning nothing before GM:PlayerInitialSpawn
  • Fixed huge network load of ManipulateBone* functions
  • Fixed CNewParticleEffect.AddControlPoint attachment default value - No longer produces console warnings when not given an attachment name
  • Fixed a crash with Panel:AppendText
remove_circle

Removed

  • Added killserver, cancelselect to concommand blacklist
  • Block gui.SetMousePos/input.SetCursorPos while main menu is open
  • Disallow Panel:SetHTML on panels with non empty hostname (i.e. SetHTML can only be called on empty HTML panels, or on panels that previously had its content set via SetHTML)
  • Disallow Panel:RunJavascript on panels with local IP addresses