Garry's Mod Logo
Changes Header

Changes

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

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
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"