Garry's Mod Logo
Changes Header

Changes

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

add_circle

Features

  • Implemented a basic "Hold key to continue scrolling" feature to all ListPanel vgui elements, such as old server browser and Hammer's model browser
  • Added lua_dumptimers concommands (each realm has its own suffix) for debugging
  • Added lua_dumpfonts(_menu) for debugging
arrow_circle_up

Improvements

  • Try to avoid reloading the language multiple times on startup, and add some safeguards when trying to set the language to an invalid one
  • Other minor error handling improvements for Steam Workshop subscriptions
  • Use the new undo.AddFunction return value for "Make Statue" property
  • Made the message "CTextureAllocator::GetTextureRect has invalid texture handle! Expect crashes!" not as spammy
  • Improved handling of invalid texture handles when shadow rendering
  • Added infinite loop prevention for a rare case in shadow rendering
  • Do not try to load filesystem_steam.dll/so/dylib since we do not ship it or use it, should avoid a certain startup crash
  • Minor optimization in Base gamemode's CalcView hook (Community Contribution)
  • Updated CPackedStoreReadCache to its TF2 version, to hopefully fix an uncommon crash
  • Better error handling for getting subscriptions to hopefully prevent "Fetching subscriptions" rarely getting stuck forever for some people
  • Reduced spaminess of "Couldn't find/load font" warnings
  • Added some debug info to "%s overflowed reliable buffer" disconnect message
  • Added "total" count to mat_dump(textures/materials)
  • Saving tool presets now only resaves the changed preset group, not all of the preset groups
  • The default server browser now uses the connection address to connect, not the query address
  • Minor optimization with the PlayerColor material proxy (Community Contribution)
  • Minor optimization with the PlayerWeaponColor material proxy
handyman

Fixed

  • Fixed the game refreshing gamemode and map lists for menus multiple times while loading onto a map or disconnecting, remounting addons or changing gamemode
  • Fixed subscribing to addons while in game remounting addons more than once
  • Fixed memory sizes being displayed incorrectly in certain places with large values
  • Prevent spawnicons with sizes 33-63 from saving "_64" versions of the spawnicons, now uses the default 64x64 image without any suffix like it should
  • Properly remove unmounted (.gma) addon files from internal map so when something tries to access them we don't crash
  • Fixed models loaded by ClientsideModel() or similar methods losing their modelbounds data on map disconnect due to them being reloaded (for now, we don't reload such models)
  • Fixed gui.EnableScreenClicker()'s internal panel showing up after a screen resolution change while it is active
  • Fixes for potential crash issues when handling Lua entities in C++
  • Fixes for potential crashes with MOVECOLLIDE_FLY_CUSTOM, FLY_BOUNCE, FLY_SLIDE, DEFAULT
  • Fixed server browser blacklist being case sensitive
  • Missing the weapons/scripted_ents.Get function at entity creation no longer exits the game (For example when it's only missing clientside)
  • Let people know that -authkey is no longer needed in the srcds console if it is still in the srcds launch options
  • Fixed GameContentChanged hook running 3 times in a row in menu state
  • Fixed first file embedded in the BSP not being decompressed when needed
  • Fixed the default screen resolution selection so it should now select the desktop resolution
  • Added a nullptr check when generating the error texture to prevent crashes
  • Fixed PlayerWeaponColor material proxy hack for Super Grav Gun for cases where people override the default gravity gun (Community Contribution)
  • SteamAPI errors on non first page of Dupes/Saves/Addons/Demos will not hide the pagination so you can go back to the cached pages
  • Fixed a potential issue with Workshop Subscriptions not properly marking files as downloaded
  • Fixed deleting npc_manhack's sprites causing a crash when its deleted sprites are accessed by the NPC code
  • Fixed ErrorNoHalt not being considered a menu state error when it was called in the menu state
  • Fixed a bug with VPK file searching that would result in garbage data in file.Find
  • Fixed potential clientside crashes with ragdolls
  • Potential workaround for "SV_CreatePacketEntities: GetEntServerClass failed for ent 1." error message and crash when disconnecting from a listen server as a host while it is not empty
remove_circle

Removed

  • Removed files that are automatically sent from lua/send.txt
  • Deleted the Panel.IsModal existence check from DMenu now that the update is released and that check is no longer necessary
  • Removed unnecessary arguments in C++ => Lua workshop download callbacks in menu state
add_circle

Features

  • Enabled "Visual Styles 6.0", so Hammer's UI styles should now match OS
  • Added icons for env_sun, point_template and info_lighting_relative,
  • Added targetname keyvalue to light_environment (with a warning about file size) and updated the key names and help text of other keyvalues to better explain what each key does
  • Added "Sprinkle" tool from CS:GO (with an example sprinkle definition)
  • Added Random XYZ and Offset Z to Sprinkle tool
  • Added the Sprinkle Tool to the left sidebar
  • Added func_pendulum to the .fgd
  • Added info_lighting_relative to the fgd
  • Added (Set)LightingOrigin(Hack) inputs and keyvalues to prop_dynamic and all NPCs and (Set)ModelScale for prop_physics, prop_dynamic and NPCs
  • Added a preventative warning when trying to convert a displacement to an entity (Map with that won't compile)
  • Added fade distance keyvalues for prop_door_rotating
  • Texture Browser => Mark now marks decals/overlays if no solids with given texture were marked
  • Creating a new VMF will now spawn a simple box in front of the camera for orientation and select the "Selection" tool
  • Hammer will now select the nodraw texture on VMF load and when creating a new VMF rather than the first texture which will be random depending on custom content installed
arrow_circle_up

Improvements

  • Added a missing tooltip for ID_TOOLS_DISP_DRAWREMOVEDVERTS (One of the buttons on the top toolbar)
  • Horizontal resizing of Texture Browser now moves the buttons that would cover the current texture text
  • Adjusted the Texture Application Tool UI (Face Edit Sheet window) to fit longer texture names
  • Added extra width to the right side toolbar so Auto Visgroups can fit without a horizontal scrollbar
  • Adjusted icons for env_skypaint, lua_run (To remove the ugly white lines around the image) and info_lighting
  • Adjusted "Run Map [Advanced]" window to fit more parameters and made the newlines work in the Parameters text box
  • Increased textbox size of Texture scale so it fits the longest value it can have
  • Minor visual adjustments to Object Properties window
  • Made "Show Detail Objects" setting save across sessions
  • Moved the "use count" in texture browser above the texture name and fixed the opaque/self-illum/transparency icons to display properly
  • Made the "Entity Report" window a bit wider and stretched the bottom controls to the right edge
  • Changed the default 3D view type to "Textured Shaded" from "Wireframe"
  • Texture Browser's current selection is now a read only editable text box so you can copy from it
  • Replaced "Select Folder" dialogs in Options menu with the more modern ones
  • Increased the text fields width for many things in the first tab of Object Properties window
  • Model Browser now scrolls to the selected model
  • Marked "Hinge Axis" of prop_door_rotating as non functioning so there is no question about it. ("Fixing" it would break all existing maps)
  • "angles" keyvalue will no longer be created with values "0 0 0" when moving objects that have a model in the editor (such as decals)
  • Opening Entity Report for a different VMF when the Entity Report is already open will now properly recreate it for the currently active VMF
  • Added "CTRL+(SHIFT+)V" text to "Paste (Special)" in right click menus to let the user know about the existence of these shortcuts
handyman

Fixed

  • Fixed Auto visgroups UI being rebuilt for each solid face of the brush textures are being applied to, now rebuilds once
  • Fixed major hang when opening Texture Application Tool with many objects selected
  • Fixed multiple crashes due to .fgd BaseClasses being redefined with fewer variables than they had before
  • Applying textures via the "Face Edit Sheet" window or "Apply Current Texture" Tools no longer rebuilds visgroups UI for each object, only after all textures are applied, so it should be much faster now
  • Fixed custom detail.vbsp in map properties not having an effect in the editor itself
  • Fixed map views forcibly taking focus away from LightingPreviewWindow
  • Fixed custom "detailmaterial" not showing in the editor
  • Fixed the Ray-Traced Preview in Hammer being an error texture
  • Fixed a crash when trying to place a non existent Prefab using the Entity tool
  • Fixed a crash in Object Properties => Model
  • Marked certain Hammer config files as userconfig so they do not get wiped on branch change/verification (You can still delete them and verify to reset)
  • Fixed carving brushes with decals/overlays on them creating "Tell a programmer" windows
  • Fixed releasing LMB/RMB outside of the 3D view while painting displacements continuing to paint until you re-click in the 3D view
  • Fixed crashing issues with Object Properties Output/Input column sorting
  • KeyValue copy & paste now properly pastes the spawnflags (and updates the UI)
  • The Entity Report dialog will now close when its associated VMF is closed to prevent crashes
  • VRAD: Fixed 3d skybox being forced on certain leafs where 2d only skybox is expected
add_circle

Features

  • Added ClientSignOnStateChanged
  • Added SIGNONSTATE_* enums
  • Added 4th argument to GM:PlayerBindPress - button code
  • Added a 3rd argument to gmsave.LoadMap - a callback that is called after the save have been successfully loaded
  • Added DProperty_Entity panel that acts as a entity picker row
  • Allow returning false in undo.AddFunction to skip undo if it's no longer valid (Community Contribution)
  • GM:GameContentChanged is now also called for serverside/clientside realms like originally intended
  • Added DTree_Node.GetExpanded
  • Added DTree_Node.OnNodeAdded( newNode )
  • Added Panel.Set/GetX/Y (Uses Lua Panel.Set/GetPos internally) and switched Panel:Center(Horizontal/Vertical) to use them
  • Made PrecacheSentenceFile() shared (was serverside only)
  • Added spacers support to DComboBox (Community Contribution)
  • Added PreUndo and PostUndo hooks (Community Contribution)
  • Added Entity:GetAnimTimeInterval
  • Added Player:Set/GetActivity
  • Added Weapon:SetActivity
  • Added NPC:SetActivity
  • Added NPC:Set/GetMoveVelocity
  • Added NPC:UpdateTurnActivity
  • Added NPC:HasObstacles
  • Added NPC:AutoMovement
  • Added NPC:Get/SetTaskStatus
  • Added TASKSTATUS_* enums
  • Added NPC:Get/SetMoveInterval
  • Added NPC:GetIdealMoveSpeed
  • Added NPC:GetIdealMoveAcceleration
  • Added NPC:GetMinMoveStopDist
  • Added NPC:GetMinMoveCheckDist
  • Added NPC:IsMoveYawLocked
  • Added NPC:SetMoveYawLocked
  • Added NPC:MoveStart
  • Added NPC:MoveStop
  • Added NPC:MovePause
  • Added NPC:ResetMoveCalc
  • Added NPC:MoveClimbStart
  • Added NPC:MoveClimbExec
  • Added NPC:MoveClimbStop
  • Added AIMR_* enums
  • Added NPC:MoveJumpStart
  • Added NPC:MoveJumpExec
  • Added NPC:MoveJumpStop
  • Added NPC:ResetIdealActivity
  • Added NPC:IsGoalActive
  • Added NPC:ClearBlockingEntity
  • Added NPC:GetNavType
  • Added NPC:SetNavType
  • Added NAV_* enums
  • Added file.AsyncRead
  • Added ProjectedTexture.Get/SetShadowSlopeScaleDepthBias
  • Added ProjectedTexture.Get/SetShadowDepthBias
  • Added ProjectedTexture.Get/SetShadowFilter
  • Added ProjectedTexture.Get/SetTargetEntity
arrow_circle_up

Improvements

  • DProperties now accept the same row types (names) as the DTVar (Entity:NetworkVar) types are called
  • util.TableToKeyValues and CreateMaterial now throw a type error when given not a table to arguments that expect a table
  • util.StringToType now works with "entity" type ( EntIndex )
  • Updated the continue statement implementation in LuaJIT
  • SpawnmenuContentPanel:SwitchPanel now accepts nil to switch to no panel
  • Entity.SetTable now throws a type error when given not a table (used to silently fail)
  • SurfaceInfo.__tostring now contains the ID of the surface
  • steamworks.DownloadUGC now has an internal queue and displays download progress just like workshop subscriptions would
  • Steamworks library: More invalid Lua state safeguards, functions now throw type errors when not given a callback where one is expected
  • render.ReadPixel/render.CapturePixels now returns the alpha channel too (naturally uses more memory)
handyman

Fixed

  • Fixed Vehicle.SetVehicleParams taking "steering" parameters from "engine" table, fixed it affecting the speed of some cars due to vphysics shenanigans, fixed it needing boostMaxSpeed, maxRevSpeed and maxSpeed in different units
  • Setting size of a spawnicon AFTER the model should now work correctly (Still not recommend doing so though)
  • SpawnIcon:SetSpawnIcon no longer requires the file to be loaded elsewhere to work
  • Fixed DCheckBoxLabel's vertical alignment of the label (Community Contribution)
  • DTextEntry removes its autocomplete menu if it is open when the text entry itself is removed
  • Fixed an issue with DTree file folders where adding folders to an open node would not populate the added node unless the parent node was collapsed and then expanded again
  • Maintain nicer sorting for numbers in DListView column sorting (Regression fix for previous update)
  • Fixed Panel.LerpPositions not working well with Panel:Center*() functions (or with GetPos() in general)
  • Fixed a self crash with render.DrawSphere when giving the sphere zero/negative segment counts
  • Fixed Entity.GibBreakServer crashing with brush entities
  • Fixed render.SupportsHDR always returning false
  • Fixed Player.GetFriendStatus never showing "blocked" status
  • Fixed cookie library cache having outdated values in certain rare cases (Community Contribution)
arrow_circle_up

Improvements

  • TTT: Changed a bunch of default values for console variables (Community Contribution)
  • TTT: Renamed Portuguese localization (Community Contribution)
  • TTT: Fixed Magneto Stick ragdoll pinning hint never showing for innocents (Community Contribution)
add_circle

Features

  • Implemented material conditional tests for GPU level from L4D+ games, assuming GPU level 3, reduces console spam and should improve how certain materials from those games look
  • Added the func_instance_io_proxy entity (No hammer support, just the entity for existing maps)
  • Added support for "boolean" type in .fgd files for GMod's Hammer
  • Added mat_dumpmaterials for debugging purposes
  • Added "Where Is" button to mat_texture_list to help debug addons overwriting materials/textures
  • trigger_push: Added "SetPushDirection" input
  • trigger_push: Added "Only falling players" key value
  • trigger_push: Spawnflag 4096 now acts like it does in CSGO - properly takes into account mass and multiple physics objects
  • Added ProcessID to game's title if -multirun is set (Windows only)
  • Added support for \ and \n to .properties
  • nav_quicksave 2 will now skip mesh visibility computation
arrow_circle_up

Improvements

  • Hammer: Display Raytraced preview in the 3d view when it finishes rendering
  • Do not autofocus a panel with SetTabPosition( 1 ), preventing ability to unfocus all text fields
  • Translate SDK_ shaders to their non SDK_ variants
  • You can no longer shoot when clicking on empty space around a modal panel
  • Increased MAXSTUDIOANIMBLOCKS to 512
  • Reset viewmodel skin, bodygroups and pose parameters when the active weapon changes
  • Dedicated Server Workshop: More descriptive error message when Steam failed to download an addon
  • Clientside gravity gun object detachment when a serverside weapon switch happens also destroys the clientside physics object the Gravity Gun creates just like dropping/punting the object does
  • Moved "Edit Instance" button to not cover the input/output icons in Hammer (All 3 also behave better when resizing the window)
  • Studio models now initialize their contents when creating a physics object
  • Cleaned up duplicate collision group rules
  • Changed error string for k_EResultBanned to not scare players. Used to say "VAC Banned", which is inaccurate
  • Added position to buildcubemaps console messages for debugging
  • Added additional info to "MaterialSystem: Out of memory in render data!" warning
  • Updated bass.dll (mp3free) to 2.4.15
  • Do not try to precache Half-Life 1 models/materials and Half-Life 2: Lost Coast harpoon on map load, for cases when those games are not even mounted
  • Serverside gibs now also inherit RenderMode and RenderFX
  • Changed "Model Warning: [%s] might be invalid! " warning to a more descriptive "Warning! '%s' animation requested bone %i, but model only has %i!"
  • More anti lag safeguards for ArmDupe net message
  • env_sprite_clientside can be animated now
  • Updated language files
  • Added extra info to "Failed to lock vertex buffer in CMeshDX8::LockVertexBuffer" error
  • Sandbox entities no longer draw their world tip/outline when the entity is set to not draw (Community Contribution)
  • Improved error handling of dedicated server workshop support
  • Hammer: Added HammerID to the "solid with X faces" and "group of X objects" descriptions for easier distinguishing/debugging
  • Hammer: Disallowed object groups (CMapGroup) to be hidden by the visgroup system - the objects themselves are hidden not the CMapGroup. Fixes "orphaned objects" warning
  • Hammer: Adjusted visgroup validation to allow solids be a child of an object group regardless of format version. Prevents those solids on old .vmfs from losing their visgroup
  • Hammer: Increased amount of recent files to 10, from 4
  • Updated Steamworks SDK to v1.50
  • Added FCVAR_USERINFO flag to gmod_language cvar
  • Decoupled sound.PlayURL/File's threads from server's tickrate, reducing the delay between function call and start of playback
  • Changed translation of base_ai class from "AI" to "Base SNPC"
  • Adjusted the message "C_PhysPropClientside::Initialize: PhysModelParseSolid failed for entity X" to include the model name for debugging
  • Added error messages when failing to allocate memory for model anim blocks
handyman

Fixed

  • Fixed not resetting LightmappedGeneric's shader constant 0 ($basetexturetransform) between renders, resulting in it affecting materials which do not have $basetexturetransform set (Also affects Hammer)
  • Right/Middle mouse clicking in Hammer 3D view works better now, by disabling mouse look only when it was started by middle/right clicking a 3D view
  • Shutdown CPlayerPickupController (player_pickup entity) if its associated player somehow becomes NULL to avoid crashing
  • Fixed "whereis" console command not working properly with floating .gma files
  • Fixed modal panels preventing player from interacting with the gui.OpenURL confirmation dialog
  • Prevent studiomdl.exe from writing to out of bounds memory (MAXSTUDIOANIMBLOCKS)
  • Fixed not having an active weapon causing ItemHolsterFrame to not be called on any weapon, which caused issues with the Gravity Gun
  • Fixed FOV desync between server/client for when r_jeepFOV is above player's desired FOV
  • Prevent potential crashes in CShaderAPIDx8::CopyRenderTargetToTextureEx
  • Fixed serverside console spam from the Paint tool
  • Prevent crashing if the BoneToWorld matrix is null while trying to render a model
  • Fixed a memory "leak" when building cubemaps, which would have resulted in crashing during the process
  • Fixed Hammer's Transform dialog (CTRL+M) improperly reading Y and Z coordinates
  • gm_spawnvehicle no longer creates Lua errors when used in dedicated server console
  • Fixed a crash when clearing the console while it is being excessively spammed
  • Applied bone setup crash fixes to Hammer too
  • Fixed crashing issue when trying to pick up an entity without a physics object, or when the physics object of currently carried object somehow becomes invalid (+use pickup)
  • Fixed prop_* entities resetting their render mode when they have fading distances set (now resets to transparent-color only if set to normal render mode)
  • Fixed func_tracktrain's outputs in Hammer
  • Fixed Lua errors when settings/users.txt is somehow missing
  • Fixed gmpublish.exe's "Can't edit workshop id X! (are you the author?)" message interpreting the ID as a 32bit integer
  • Fixed forced ladder move not resetting without an active ladder on player death, resulting in players who died while dismounting a ladder to respawn at the ladder
  • Fixed auto refresh not working when include is called from a C function
  • Fixed ability to crash the game when the dying player receives damage while in a death related hook. This results in Player.Alive returning false ( used to return true ) in PlayerDeath and DoPlayerDeath hooks for the dying player
  • Deleting an active player_pickup entity will now properly stop and cleanup the +use pickup stuff instead of leaving the player in an invalid state
  • base_ai entity now functions when spawned directly, rather than being a floating error so it can now serve as a code example
  • Better error messages when gamemode/weapons/scripted_ents tables do not exist or are invalid types. (sweps, sents errors also no longer close the game)
  • Fixed lua\vgui\dcolorbutton.lua not being added to the clientside download list
  • Prevent crashes when dying NPCs create ragdolls and apply infinite force to them
remove_circle

Removed

  • Deleted lua/menu/progressbar.lua (unused file)