Garry's Mod Logo
Changes Header

Changes

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

add_circle

Features

  • Added ttt_filter_role entity (Community Contribution)
  • Let GM:TTTLastWordsMsg hook override default behaviour (Community Contribution)
  • Added crosshair customization (Community Contribution)
arrow_circle_up

Improvements

  • Magneto-stick DoAttack code cleanup (Community Contribution)
  • Changed holdtypes for consistency with viewmodels (Community Contribution)
  • Clarify Health Station usage in hint text (Community Contribution)
  • Update localization files (Community Contributions)
handyman

Fixed

  • Fixed C4/Radio sounds not playing in certain cases (Community Contribution)
  • Fixed "CS:S not mounted" warning not showing when CS:S is not mounted (Community Contribution)
  • Close player volume slider along with scoreboard (Community Contribution)
  • Fixed players sometimes being revealed as dead when they chat/voicechat right as they die (Community Contribution)
  • Fixed Health Station not breaking at exactly 0 HP (it being damaged, not used) (Community Contribution)
add_circle

Features

  • Added some generic logic entities from Portal 2 - logic_register_activator, logic_coop_manager, point_viewcontrol_multiplayer, point_viewproxy
  • Added new inputs/keyvalues to prop_vehicle_choreo_generic from Portal 2
  • * Inputs: SetCanShoot, UseAttachmentEyes, SetMaxPitch, SetMinPitch, SetMaxYaw, SetMinYaw
  • * Key-values: PlayerCanShoot, UseAttachmentEyes
  • Enable DMX versions 3, 4 and 5 loading for particles from newer Source Engine games
  • Ported most particle related features from CS:GO
  • Added 2 new spawnflags to env_player_surface_trigger - Trigger on player(s) leaving ground & Set output activator to the player
  • Added new inputs to game_text - SetText, SetPosX, SetPosY, SetTextColor, SetTextColor2
  • Added new inputs for game_player_equip - TriggerForAllPlayers and TriggerForActivatedPlayer, as well as "Strip All Weapons First" spawnflag
  • Added skybox_swapper entity
  • Added logic_eventlistener and logic_eventlistener_itemequip from Team Fortress 2
  • Added point_worldtext entity (CS:GO version) and added most Team Fortress 2-exclusive features into it
  • Added logic_random_outputs entity
  • Added fog_volume entity
  • Added trigger_tonemap entity
  • Added env_ambient_light entity
  • Added point_entity_finder entity
  • Added particle-based func_precipitation types from CS:GO
  • Added ability to override func_precipitation particle systems by name
  • Added func_precipitation_blocker entity
  • Implemented origin for playlooping/playrandom and ambientOriginOverride for "playSoundscape" in soundscapes
  • Added new options to Run Map dialog in Hammer
  • Restored "JellyFish" shader (Partially Community Contribution)
  • Added hostile keyvalue to npc_citizen - Will be treated as a combine. Useful for NPC reskins to not have combine noises. Or just for fun.
  • Implemented experimental 24-bit color support for Windows Dedicated Server console, and proper color support on Linux SRCDS
  • Implemented HDR override for fog colors for 20th anniversary Half-Life 2 maps (Also available in Hammer for mappers)
  • Added Master spawnflag to env_tonemap_controller
  • Added SetMaxDensityLerpTo input & HDRColorScale key-value to env_fog_controller
  • Implemented AttachToVehicle input for npc_fastzombie
  • Added sv_maxvoicepacketsperframe console variable
  • Enable "flammable" "no" prop interaction, to prevent props from igniting on explosion damage (for modellers at compile time)
  • Added min_use_angle for func_button from CS:GO
  • Added DisappearMinDist & DisappearMaxDist key values to func_lod (DisappearDist being deprecated and hidden, but still working)
  • Added GetSpeed and SnapToStartPos to func_rotating entity
  • Added AffectedByWind keyvalue to func_dustmotes entity
  • Added trigger_playermovement auto walk and no jump spawnflags
  • New localisation phrases in community.properties (Community Contribution)
  • Added ip_steam console variable
  • Added sv_usercmd_custom_random_seed console variable
  • Added sv_showimpacts console variable
  • Added radius support to env_wind
  • color_correction entities now work correctly with fog_volume - Adds Master and Simulate clientside spawnflags
  • Upgraded ColorCorrectionUI to CS:GO's version with ability to load saved presets
  • Added Quick Switches to the console dialog, allowing easy usage of common console commands and variables for debugging purposes
  • Added inputs to env_skypaint in Hammer for mapping
arrow_circle_up

Improvements

  • Do not estimate velocity clientside since we network it for every entity anyway
  • * Use networked velocity for entities that set it serverside
  • * Physics entities such as props, vehicles, SENTS do not set their velocity, since its all handled by the physics engine, so it ends up not actually being networked
  • Moved "SOLID_VPHYSICS static prop with no vphysics" warning to developer 1
  • Made particle preview background slightly lighter (32,32,32)
  • Set the default particle orientation in Particle Editor on creation
  • Added particle material name to "unimplemented sprite renderer" warning (.pcf particles)
  • Force Sandbox tool classnames to lowercase at all times to fix a bug in multiplayer where the client and server classname could have mismatching capitalization
  • Applied potential filesystem optimization suggested by the community
  • Micro optimization for SWEP think
  • Optimize DListView_Line - Remove DListViewLabel's Think function since it does nothing in DListView_Line anyway
  • Minor code quality & performance improvements to Toolgun Help, RenderTarget related Lua code, skypaint matproxy, ToolGun and Post Processing control panels, ents.FindByClassAndParent, removed deprecated calls to ControlPanel:AddControl, Workshop Mount VGUI, Sandbox hints, Removed unused JS dependencies in main menu - angular-ui, jquery-ui, jquery-color, AngularJS from 1.1.2 to 1.8.2, cleaner server list layout code & Better display on small screens (Community Contributions)
  • Micro optimization for Entity.__index (Community Contribution)
  • Micro optimizations for team library (Community Contribution)
  • Potential micro optimizations in localization loading/parsing
  • Store disabled workshop addon IDs as Uint64 instead of IDs turned to strings - should save some memory
  • Clear CShadowDepthView to black instead of white - fixes reflective glass on certain maps having while glow with flashlight turned on
  • Do not throttle loopback (local servers) connections when sending data from server to client
  • Check allocated edict count before allocating more - this should prevent "ED_Alloc: no free edicts" crashes when spam spawning hundreds of entities per second
  • Improved X-axis text inset handling with center alignment (for DButton when an icon is use)
  • Change Hitbox 7 color from white to orange for the debugging console variable and HMLV
  • Search for shaders in map file if none were found in the game folder
  • Added "shaders/*.vcs" to BSP whitelist
  • Updated screenspace_general shader with some CS:GO features
  • * Removes $X360APPCHOOSER (Use $VertexColor)
  • * Adds $VERTEXSHADER
  • * Added most CS:GO parameters except for C4* and C5* parameters
  • Enable sv_parallel_sendsnapshot by default
  • Display a warning when async file read operation tries to read more bytes than there are in the file
  • Display HTTP error when FastDL fails to download a file and if it's not a 404 error
  • Made lua_run entity keyvalues case insensitive
  • Call Entity:SetCreator on all Sandbox spawned entities, not just SENTs (Community Contribution)
  • Filled in some GMod specific console variable descriptions that are defined in C++
  • Added shader name to "failed to create shader" console error message
  • Rework how LZMA decompression works for BSP files to be more reliable and less wasteful
  • Added more useful info to Client=>Server and Server=>Client GMod specific net message ToStrings for debugging purposes (net_showmsg)
  • Unhide sv_maxspeed console variable
  • Do not read mapcycle.txt file from addons or mountable games
  • Added weapon class name & entity index to "Weapon spawning in solid" console warning
  • Exit SRCDS (with a message) if GSLT is invalid or expired (can still not provide one), instead of never connecting to Steam. This behavior is consistent with CS:GO. hide_server 1 can be used to hide your server from the server list.
  • Added description for debug_dump console command and print more info about what it did when ran
  • Rollermine uses two-pass render group when open instead of translucent, this makes it render better with SSAO pass (such as with Bokeh DOF)
  • Allow Map I/O to convert integer/float parameters to strings automatically
  • Unhide sv_hl2mp_weapon_respawn_time/sv_hl2mp_item_respawn_time
  • Also made mp_weaponstay work for map spawned entities, by respawning them
  • Update verbosity of "Out-of-range value" warnings
handyman

Fixed

  • Fixed some minor memory leaks - These are mostly in developer features to do with KeyValues, not normal gameplay
  • Initialize m_rgflCoordinateFrame on creation clientside - This fixes certain matrices being nulled out when they are not supposed to, such as when calculating prop_vehicle_choreo_generic look angles
  • Allow loading PCF version 2 in -tools Particle Editor
  • Fixed many, many potential crashes with the particle system
  • Fixed missing materials with legacy Ash precipitation type
  • Fixed 2 "Parent cvar in server.dll not allowed" warnings on client start up
  • Do not print cc_lang = with developer 1
  • Fixed "Not playing a local game" being printed on game start up
  • Fixed some warnings on map load when Portal 1 or Half-Life Source are not mounted
  • Fixed crashes with func_tank
  • Fixed crash when ents.CreateClientProp is given an empty string
  • Fixed logic_collision_pair and some other obscure entities not calling GM:EntityRemoved
  • Remove NULL entities from Entity.Constraints table when associated constraints are removed
  • * Fixes for tanktrain_ai
  • * Fixed sound playback and updated default sounds to existing files
  • * Added "Chase Target" key value
  • * Added missing "Target Entity" input to the FGD
  • * Fixed movement direction selection & movement speed
  • * !player target will update to the closest player before every move
  • * Change update rate while moving to 0.1s (from 0.5)
  • Updated RPG viewmodel to use correct muzzle flash event and prevent console warning when firing
  • Fixed a server crash exploit to do with malicious packets
  • Fixed bone manipulations (scale, position) being transformed by how much the player moved on level transition
  • Fixed which entity is the inflictor/weapon in CTakeDamageInfo when firing built-in C++ weapons, including when NPCs fire them, as well as trigger_WateryDeath.
  • Fixed small potential memory leak with creating Lua bone followers
  • Fixed a small memory leak in gamemode .txt file parsing
  • Fixed a small memory leak with saving presets (presets library)
  • Fixed "Bad SetLocalOrigin on gmod_hands" warnings (Community Contribution)
  • Prevent .ani files from loading if they would crash the game i.e. if the .ani file is smaller than the model expects it to be
  • Update jQuery version and reduce reliance on it in main menu, as well as lazy load images (Community Contribution)
  • Do not crash with "bad inline model number", show a console warning instead
  • Fixed bone manipulated entities' render bounding box being set to invalid sizes with certain models
  • Fixed "Toggle" input on some triggers improperly toggling the entity
  • Fixed console warning about missing material when opening Options menu
  • Fixed max player speed not being set when trying to slow walk with +walk but slow walk is disabled via Player:SetCanWalk
  • Do not unexpectedly reduce maximum health on dead entities
  • Play act console command animations on the server as well (for hitboxes)
  • Fixed a stack overflow in TextEntry scrolling
  • Fixed a rare crash when net_showmsg console variable is in use
  • "Fixed" an infinite loop in memory allocation by exiting the engine/tool with a nice message
  • Prevent developer only messages about bone access not being allowed with util.DecalEx in multiplayer
  • Fixed MP3s recaching 2 times in a row sometimes for no reason
  • Fixed cache size not being able to exceed 65kb per item
  • Make MP3s skip the ID3 data immediately on cache, not on first playback. This makes loading a bit slower per-file, but makes it so we don't need to cache upwards of 400KB of unused data per MP3 for playback without hanging the game
  • Increased amount of cached data for MP3s to satiate initial burst of data access by BASS.DLL (from 16K to 96k) This was preventing asynchronous load of the entire file
  • Fixed SWEP.ViewModelFlip making view model sway backwards
  • Fixed scrollbar parent resizing not adjusting scrollbar grip position (Lua scrollbar panels)
  • Fixed CRopeKeyframe having huge serverside bounds when not attached to anything, such as being the last entity in a series
  • Fixed trigger_remove OnRemove output not working at all
  • Made cmd console command not kick people (And hide it)
  • Fixed .gma files being left open in some cases if they failed to load/parse
  • Prevent potential crashes to do with traces on models
  • Materials using the SpriteCard shader can now render correctly with render_sprite_trail particle renderer
  • Mitigate invalid vehicle scripts causing server crashes
  • Fixed player_squad NPC squad being overflown when spawning too many npc_alyx or npc_citizen entities
  • Fixed spawnmenu NPC squads being overflown when spawning many NPCs in the same faction at once
  • Fixed infinite loop with removing world decals
  • Fixed input parameter type for prop_ragdoll's StartRagdollBoogie input
  • Fixed out of bounds pose parameters sometimes getting garbage values
  • Fixed a crash in trace code that could happen after a changelevel
remove_circle

Removed

  • Removed scratchpad from game builds
  • Removed bloodspray console command
  • Removed some perforce VGUI panels from builds
  • Removed some useless strings from garrysmod_english.txt
  • Removed mat_surfaceid and vgui_drawtree_panelptr console commands/variables
  • Removed unused resource/chromium/ folder
  • Removed non existent commedit.dll from sdkenginetools.txt
  • Removed cl_threaded_client_leaf_system console variable, which was doing nothing since 2016, except to mislead people
  • Removed sv_autojump as it also does nothing besides misleading people
  • Removed hack for Intel GPUs that disabled Shader Model 3 shaders
  • Removed some clientside weapon stubs for non existent weapons
  • Removed usage of DOFModeHack from Bokeh DOF
  • Remove cl_customsounds as it no longer has an effect on anything
add_circle

Features

  • Added model scale preview to Hammer
  • Added HammerID for entities in Hammer's selection status bar (Brushes already had this added a while back)
  • Added build date to Hammer's About dialog
  • Added "starlayers" to env_skypaint in Hammer, and mention the skybox texture name requirement in the entity description
  • Added internal/hidden npc_rollermine inputs in Hammer
  • Include missing Garry's Mod specific additions in Hammer - new Rollermine spawnflag and beam_spotlight's SetColor input
  • Implemented Hammer preview for point_worldtext
  • Implemented Hammer multi-cordon system from CS:GO
  • Added light_directional support for VRAD
  • Implement -StaticPropSampleScale & -StaticPropBounce for VRADfrom CS:GO
  • Added -softenCosine for VRAD
  • Added -bounceFromNamed (lights) to VRAD (Community Contribution)
  • Added %alphatexture VMT compile parameter for VRAD (Community Contribution)
  • Added `Ignore Solid` for point_spotlight in Hammer
  • Added support for %CompileNoShadows to VBSP
arrow_circle_up

Improvements

  • Tweak Hammer splash image & .exe info
  • Increase MAX_MAP_BRUSHES from 16384 to 65535
  • Increase default size of Hammer Entity Help window
  • Expand Hammer Object Bar by 20px to fit auto vis groups horizontally
  • Allow bool and boolean to be interchangeable in .fgd files
  • Hammer & other tools mount addons/ folder by default (can be disabled with -noaddons launch parameter)
  • Updated the Hammer icon to be higher quality and have Garry's Mod colors
  • When copying game configs in Hammer options, ask for a new name instead of copying the existing name without a way to change it
  • Switch Hammer to use CmdSeqDefault.wc by default (like CS:GO, user preferences are still stored in CmdSeq.wc)
  • Updated input elements Hammer Options tabs to fit the width of the window and fit more data
  • Update "Lighting Origin" KV description to mention info_target, not info_lighting, latter of which is removed on compile and is only meant for static props
  • Ensure Hammer's Entity Properties Input/Output columns fit the header text, so its not "P...", "O...", etc. when adding a new input for the first time
  • Entity comments allow adding new lines with Enter in Hammer Object Properties
  • Ported some other VRAD changes from CS:GO to do with displacement lightmaps, supposedly should be better where brushes/displacements meet
  • Only show "Warning! Invalid model version" with verbose flag in VRAD output
  • Increase usefulness of "Occluder straddles multiple areas" VBSP warning
  • Do not set thread count to 1 if the local CPU has more than 32 of them (limited to 64 now, and is clamped instead of resetting)
  • Set default Model Picker model image output folder to a game sub-folder, not C:/
  • Tools: try searching for gameinfo.txt relative to the .exe of the tool, if gameinfo.txt not found
  • Actually implement undo limit in tools (and set it to 512 in Particle Editor)
handyman

Fixed

  • Fixed collision model preview in Hammer being offset in 3D when dragging
  • Fixed keybinds in Hammer for 1 & 2 not updating the render distance setting correctly, resulting in it being reset to previous step when certain actions happen
  • Fixed empty buttons appearing in Hammer Entity Properties when it is opened before any entity is selected
  • Made Hammer use gmod.exe when generating GameConfig.txt
  • Fixed Hammer breaking VMF files if they contain \n in keyvalue values
  • Text parsing: Handle loading/writing \r correctly (Hammer VMF)
  • Fixed map instances being added to recently opened files in Hammer when opening the parent map
  • Fixed certain inputs having wrong descriptions in Hammer Entity Properties window
  • Added missing HLFaceposer.exe icons
  • Fixed a crash in HLFaceposer.exe when opening file lists when files are in VPKs
  • Fixed HLFaceposer.exe crash due to missing phoneme extractor DLLs
  • Fixed tool Model Picker causing console warnings
  • Fixed "Clear Undo History" option not working in Particle Editor
  • Fixed panel/memory leak with particle picker previews (Particle Editor)
  • Fixed a memory corruption issue with VRAD static prop lightmaps
  • Fixed VRAD crashing due to missing VVD files
  • Fixed VBSP crashing with missing VVDs, and fix it trying to look for VVDs in incorrect places in rare cases
  • Prevent VBSP crashing with bad VMFs (that contain unescaped newlines in KV values), display an error
  • Fixed map compile tool output formatting to do with missing prints related to threaded workloads
  • Removed duplicate "missing material" output from VBSP
  • Fixed a crash with Material Picker (-tools)
  • StudioMdl: Gracefully handle numframes 0 or below in $sequence with an error message, instead of crashing
remove_circle

Removed

  • Hide "Generate Backpack Icons" button in Model Picker as it is not applicable to Garry's Mod
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