Garry's Mod Logo
Changes Header

Changes

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

add_circle

Features

  • Added ability to clear Lua errors per category/group in the Problems menu
  • Added "menu_cleanupgmas", "mat_specular 0" and "Addon missing file, nothing to mount" issues to Problems panel
  • Added file size of the current file and total file count to non-Workshop server downloads
  • Added addon count and selected count to the addon menu (in the popup menu with filters/etc)
  • Added a visual bounding box of the current dupe to the duplicator tool
  • Rope related tools now can now color the ropes (will depend on whether the selected material supports this or not)
arrow_circle_up

Improvements

  • DNumSlider now colors the notches and the DTextEntry text to match the slider label
  • Improved slider notch rendering
  • Ensure all notches have at least 1 pixel between each other
  • Fixed the last notch not rendering for sliders with a range that isn't a whole number
  • Made the selected flag filters be per gamemode, not global per server browser tab
  • Made the addon selection checkboxes bigger and updated their style to match modern Chromium visuals
  • Also added a bit of space between the clickable addon name and the checkbox to prevent misclicks
  • Minor visual tweaks to the addons and server browser menus
  • Made the "Future version" tag in the server browser less visually prominent
  • Added default values to the Super DOF UI sliders (Middle mouse click resets to default)
  • Problems menu no longer complains about DirectX Level 90
  • Server browser no longer lists servers that are not empty first and then only empty servers (to bypass Steam limitations), now lists whatever Steam gives first
  • Undone server browser minimum ping penalty where servers < 60 ping would all be considered as having 40 ping for server ranking
  • Added description to local saves/dupes/demos telling the player where they can delete them
  • "Select All" button now selects all addons within current search/filter, not all subscriptions
  • Removed selection checkboxes for floating .gma addons
  • Made the background of a disabled addon darker so its more obvious when an addon is disabled
  • More responsive controls for drive_noclip for "Drive" property
  • Unmount addons mounted by server on map shutdown
  • Confirmation window for “Do you want to connect to this server” now also has a “remember my choice” option
  • Added map icons for new CS: GO maps
  • Increased forced defaults of "rate", "cl_cmd/updaterate" console variables to 100k and 66, from 30k and 30 respectively. This only affects clientside settings, which are overridden by server's settings (sv_maxrate, etc). This should result in better ping/performance when playing on busy servers
  • Updated language files
handyman

Fixed

  • Fixed env_sun glow overlay not working properly with the poster command
  • Fixed the first preset group not loading correctly on first map load
  • Loading a save from main menu now properly sets the player position
  • Fixed Lua errors in menu state when searching through addons with special symbols
  • Fixed Hoverball tool creating Lua errors when looking at an invalid entity with the tool selected
  • Fixed the option to re-render all spawnmenu icons not working properly
  • Adjusted the cl_weaponcolor safeguard against invisible colors to catch more cases
  • Fixed a regression with gamemode search bar changes from previous update where it expected the input to be lowercase at all times
  • Changed 'slam' ammo type's default maximum to 5 from 9999 (gmod_maxammo still overrides this if above 0)
  • Fixed certain language files not being loaded on Linux operating system
  • Fixed shooting weapons while in a vehicle not shooting directly at the player’s crosshair
  • Fixed default spawncions not being editable
  • cl_downloadfilter "mapsonly" also works with workshop addons now (checks for the “map” tag on addons)
  • Fixed Winch/Rope texture scaling wrapping around at length of 100
  • Fixed clientside player velocity for non local players being jittery and incorrect when standing on something moving
  • Fixed crash issues with npc_barnacle when its tongue entity gets deleted
  • Fixed crash issue when damaging Antlion Guard NPC
  • Fixed a potential crash issue with ragdoll physics
  • Fixed prop_vehicle_crane crashing the game when it is missing its magnet entity
  • Fixed Lua errors when trying to load a save with phys_magnets that were created by the map when saving
  • You can freeze Jeeps/Custom Vehicles with the Physics Gun once again
handyman

Fixed

  • TTT: Fixed "select language" strings in translations (Community Contribution)
  • TTT: Tuned shotgun headshot damage and gave shotgun very small accuracy boost to compensate for shotgun changes in base game (Community Contribution)
  • TTT: Show language names correctly in menu (Community Contribution)
  • TTT: Updated language files (Community Contribution)
  • TTT: Fix low-karma autokick evasion (Community Contribution)
arrow_circle_up

Improvements

  • Limited sv_loadingurl to http(s) only
  • Added nullptr safeguard to CFontTextureRegen (out of memory)
  • More potential crash prevention when loading textures and in Lua bindings
  • Safeguards for potential crashes in CShadowMgr relating to projected textures
  • Switched the "gain manager" for voice chat to the CS:GO one. (voice_avggain, voice_maxgain replaced by voice_gain_* cvars)
  • Increased internal buffers for map names to 128 characters, from 40, servers can now use maps with longer names
  • Slightly improved SSAO depth pass (NeedsDepthPass hook, render.GetResolvedFullFrameDepth), so it works correctly with props/NPCs and viewmodels (Bokeh DOF now works better)
  • Nicer error messages for FastDL download errors in console
  • Let mat_envmaptgasize override the default cubemap size if it is set to a value higher than the map's cubemap size
  • cfg/network.cfg is no longer considered userconfig, and is ran before autoexec.cfg
  • mat_dumpmaterials now has an optional argument to hide refcount 0 materials
  • Increased networked string limit (Doubled, to 4096)
handyman

Fixed

  • Deleting point_viewcontrol now also disables it instead of putting the player in an invalid state
  • Disable all active point_viewcontrol entities when loading a save to prevent softlocking the player
  • Added out of bounds checks for boneIDs in CIKContext::AddDependencies to avoid crashes
  • Added some nullptr safeguards to CMDLCache functions
  • Fixed potential crash with playing MP3 files
  • Made sure the "entityflame" entity also stops its own burning sound clientside in case it couldn't be stopped from the server due to PVS
  • Fixed crash issue when trying to pickup prop_vehicle_jeep with invalid physics
  • Fixed a potential crash when converting MATERIAL_VAR_TYPE_MATERIAL to a string
  • Fixed material shader parameters not loading correctly on Linux dedicated servers
  • Fixed for Linux file system find not properly handling partial wildcards (i.e. folder/*_suffix.txt where the filename folder/test_file_suffix.txt would not be found)
  • Fixed mat_showlightmappage using a DirectX8 material
  • func_breakable_surf plays its initial broken sound at the correct position even if it is moved by the physics gun
  • Fixed some console commands crashing when used without a player on the server
  • Fixed ent_remove being able to delete players
  • Added support for $boneflexdriver in models into the game
  • Fixed some cl_show_* cvar debug text overlapping itself or going offscreen
  • Potential fix for crashes due to removing fire particles when removing an entity on fire
  • Fixed crashing issues with trying to set/get flags on invalid physics objects
  • Do not disable collisions when parenting brushes to one another
  • Fixed parenting issues with func_movelinear, and a an issue with startSound possibly not restarting
  • Fixed the half life 2 shotgun hack affecting SWEPs
  • Fixed models not being flushed on level changes/disconnects when not hosting a local game (i.e. in multiplayer in general)
  • Fixed Super DoF creating errors when used outside of sandbox gamemode (Community Contribution)
add_circle

Features

  • Hammer: Added func_instance_io_proxy support to hammer/vbsp (in-game support is already present)
  • StudioMDL: Added -fastbuild option to studiomdl.exe that does not write/compute .sw.vtx and .dx80.vtx files
  • StudioMDL: Added more context to "Zero-size file or no sequences." studiomdl warning
  • StudioMDL: Added $boneflexdriver support to studiomdl
  • StudioMDL: Added support for "noanim_keepduration", "forceboneposrot", "scalebonelen", "bonedriver", "reverse", "appendanim" $sequence commands from CS:GO
  • StudioMDL: Added "framestart" and "nostallframes" $sequence commands from CSGO
  • StudioMDL: Added support of "autosteps" to "ikrule" in $sequence
  • StudioMDL: Added support for "percentstartloop" for $sequence
  • StudioMDL: Added "$dmxeyelid" and "$vcafile" commands
  • StudioMDL: Added "noautodmxrules" support to $model
  • StudioMDL: Added -vpfix command line switch that may fix high poly models with LODs and bodygroups getting some of their meshes on LOD 0 destroyed
arrow_circle_up

Improvements

  • StudioMDL: Use auto growing vectors for bunch of internals (vertices, normals, faces, texcoords, etc) instead of static arrays
  • StudioMDL: Changed mesh weights cut off from 0.05 to 0.0001 (matches CS:GO)
  • StudioMDL: Restored position epsilon for fuzzy vertex position comparisons to 0.05, from 0.01 as it caused issues with certain high quality models
  • Hammer: Increased MAX_MAP_OVERLAYS to 1024 (2x increase), increased MAX_MAP_BRUSHSIDES to a lot (~163k, ~3x increase), matching CS:GO limits
handyman

Fixed

  • Hammer: Fixed a crash when creating a new Manifest
  • Hammer: Fixed "Show Collision Models" setting not working in certain cases such as being in a Manifest
  • Hammer: Updated CMapOverlay to CS:GO's version - fixes most copying issues - different normals implementation
remove_circle

Removed

  • Hammer: Get rid of Hammer's "CFileChangeWatcher::AddDirectory" warning as it serves no purpose for the end user
add_circle

Features

  • Added DSlider.Set/GetNotchColor
  • Added SKIN.colNumSliderNotch
  • Added 2 new arguments to CanTool hooks - the toolobject and the button used (left/right/reload = 1/2/3)
  • Added missing ACT_ enums used by the default player model animations
  • Added NPC:GetBestSoundHint( types = all of them ) = table or nil
  • Added sound.GetLoudestSoundHint( type, pos ) = table or nil
  • Added ENT:GetSoundInterests for "ai" type SENTs
  • Added PhysObj.SetAngleVelocityInstantaneous
  • Added PhysObj.SetAngleVelocity
  • Implemented ENT:OnTakeDamage for nextbots
  • Added Player.Get/SetVoiceVolumeScale(0 .. 1) - Clientside only, sets the desired voice volume multiplier per player
  • Added Player.LocalEyeAngles(), which returns eye angles unmodified by being parented to a different entity (such as while being in a vehicle)
  • Added a 3rd argument to Pre/PostDrawTranslucent/OpaqueRenderables - isRendering3DSky
  • Added CMoveData.Set/Get for: ConstraintWidth, ConstraintSpeedScale, ConstraintCenter, FinalIdealVelocity, FinalJumpVelocity, FinalStepHeight
  • Added permissions library
arrow_circle_up

Improvements

  • Use ErrorNoHaltWithStack for numpad.OnDown/OnUp errors when given an invalid key
  • Added con_filter*, gm_video, mat_dxlevel and the new voice cvars to blocked cvar list
  • Switched Think, OnRemove and RunAI entity hooks to use the Lua string pool for "anim" and "ai" SENTs
  • Made Player.IsSpeaking shared (on server, it will return true within 0.1s of the last voice packet from a player, no packets are sent when the voice chat button is held but the player is not talking)
  • Reduced update rate of PlayerCanHearPlayersVoice when nobody is talking to 5 seconds
  • PathFollower functions can now accept player.CreateNextbot() entities instead of the NextBot SENTs. They will also throw proper errors when given invalid entities
  • Made DrawBokehDOF function available to addons, i.e. it is no longer a local function (Community Contribution)
  • Apply PhysObj.EnableMotion to all PhysObjects of a Jeep (it also works on Jeeps now)
  • Entity.GetModelMaterials will now return a complete list of materials if used on a brush model, including the map. Maximum for models is reduced to 128 (from 256) which matches other places in the engine when it comes to models
  • Micro optimization to player:__index (Community Contribution)
  • Forcibly disallow the resource library from adding .xbox.vtx and .sw.vtx files to the server's downloadables list
  • Make sound.Add soundscripts treated as overrides so they are cleaned up/restored on disconnect
  • gma.MountGMA now also clears list of missing materials
handyman

Fixed

  • sound.Generate now flushes its cache on level shutdown (And also with snd_restart)
  • Fixed dedicated server crashing when trying to reference invalid SteamAPI pointers after using the map console command, such as the HTTP functions
  • Fixed sounds not working correctly (playing everywhere) with clientside only entities: Footstep sounds, _G.CreateSound, Entity.EmitSound, Entity.StopSound, Entity.StartLoopingSound
  • Fixed ClientsideRagdoll crashing if called too early
  • CSpawnIcon::RebuildIcon(Ex) now clears the cached spawnicon material like it did before (so the spawnicon appears in its “loading” state again)
  • Fixed Entity.FollowBone glitching around clientside in certain cases
  • Fixed srcds workshop addons missing some fields in engine.GetAddons()
  • SteamID functions return the correct(-ish, the steam universe is hardcoded to "Public" one) value in singleplayer for the player serverside (It was already correct on client)
  • Fixed GetTouchTrace() crashing the game when the entity in the cached trace result no longer exists
  • render.RenderView now resets the "ShouldDrawLocalPlayer" cache, allowing the hook to be called again for those renders, fixing ShouldDrawLocalPlayer not working properly with multiple renders within a frame.
  • Prevent weld constraint assigning a global variable with the last created weld (Community Contribution)
  • Fixed performance discrepancy of Entity:GetMaterials() between different models
  • Fixed GM:PlayerLeaveVehicle not being called when the player is forced into a vehicle while being in a different vehicle
  • Entity.SetAngles properly sets angles on jeeps, they no longer snap back to old angles
  • Fixed some entities (such as props) reporting "took damage" as false in PostEntityTakeDamage when they are killed
  • Fixed some constraint library functions (such as HasConstraints, GetAllConstrainedEntities, etc) not functioning with the world entity
  • Fixed gmsave library (Spawnmenu save system) not saving constraints that are attached to the world entity on both ends (such as ropes)
  • Fixed duplicator library's Min/Max calculations for dupes