Garry's Mod Logo
Changes Header

Changes

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

add_circle

Features

  • Added MakeRegularAlly/MakeGameEndAlly inputs for GMan/Mossman/Monk/Fisherman in Hammer
  • Added new .QC commands to studiomdl.exe - $maxverts, $phyname, $internalname, $qcassert, $lcaseallsequences, $defaultfadein, $defaultfadeout, $appendsource, $redefineattachment, $skinnedLODs
  • Mount CSS/Episodic VPKs in tools (Hammer & compilers)
  • Implemented color preview for models in Hammer
  • Added color keyvalue to prop_door_rotating in Hammer
  • Added ability to paint 4-way blend materials in Hammer (Supported materials only!)
  • Implemented particle picker for Hammer
  • Added file metadata to map and model compiler exes (version, description, product name, etc.), and given them an icon
  • Added -SunSamplesAreaLight option for VRad (Community Contribution)
  • Reenable -maxlightmapdim and -defaultluxelsize for VBsp, and them add to help text
  • Water materials with $lightmapwaterfog (and flowmaps) will now receive lightmaps on map compile
arrow_circle_up

Improvements

  • Add descriptions to light entity keyvalue properties in Hammer
  • Update StudioMDL usage info when given no parameters - added previously unmentioned command line options, dump supported .qc command list
  • Move modelscale keyvalue from Breakable to specifically prop_physics and its variants in Hammer to better represent what entities support the feature
  • Make tools/toolsinvisibleladder not create visleaves during map compilation
  • Adjusted VRAD's post-compile stats to show data size limits in correct places, as well as bump max data size for entity lump
  • Enable static prop lighting (vertex & lightmap) for VRAD with -fast (Since it is already controlled by -StaticPropLighting)
  • Mention -StaticPropLighting requirement for vertex lighting on static props in Hammer (Disable Vertex Lighting field)
  • Images are now saved as .bmp instead of .tga in HLMV
  • Change Shader display to a read only text entry in HLMV, so it can be copied
  • Display selected material in a text box in HLMV, so it can be copied
handyman

Fixed

  • Fixed default model for physics_cannister, npc_launcher, npc_missiledefense (now a box) and weapon_bugbait in Hammer
  • Fixed some entities such as info_ladder_dismount not using colors in Hammer as defined in the FGD files
  • Fixed visual and undo bugs with CMapSweptPlayerHull (func_useableladder) in Hammer
  • Enable VRAD compile stats without -verbose flag
  • Fixed StudioMDL crashing when creating folders for the model
  • Fixed HLMV crashes when doing stuff without a model selected
  • Fixed extremely slow "Take screenshot" performance in HLMV
  • When a material is missing in HLMV, include the missing material name in "VMTs loaded" section
remove_circle

Removed

  • Remove non existent key-values from env_smoketrail in Hammer
  • Removed non existent entities from Hammer - Weapon_Brickbat, env_rotorwash, references to weapon_beerbottle, test_sidelist, npc_crabsynth, env_terrainmorph
  • Remove non existent entities from BreakableBrush "spawn on break" keyvalue in Hammer
  • Disallowed creating "Auto" visgroup in Hammer manually
add_circle

Features

  • Added Entity:FindGestureLayer
  • Added Entity:FindGestureSequenceLayer
  • Added Entity:RemoveLayer
  • Added Entity:SetLayerAutokill
  • Added GM:OnNPCDropItem
  • Added NPC:IsCrouching
  • Added NPC:SetForceCrouch
  • Added 2 new optional args to mesh.TexCoord
  • Added NPC:CapabilitiesHas
  • Added NPC:ConditionID
  • Added NPC:IsUnforgettable
  • Added NPC:MoveGroundStep
  • Added effects.TracerSound
  • Added sequence events to util.GetModelInfo
  • Added util.IsBoxIntersectingBox
  • Added MATERIAL_CULLMODE_NONE for render.CullMode
  • Added new arguments to Entity:DropToFloor
  • Added new argument to HTML:ConsoleMessage
  • Added Panel:SetTextHidden
  • Added MAX_PLAYER_BITS global
  • Added MainEyePos and MainEyeAngles
  • Added IGModAudioChannel:GetTagsWMA & IGModAudioChannel:GetTagsMP4
  • Added render.GetFogMaxDensity
  • Added skin parameter to util.GetModelMeshes + up to 15% optimization
arrow_circle_up

Improvements

  • ClientsideModel is now able to be hit by clientside only traces after initializing physics on it post creation (Collision bounds must be set manually if model changes)
  • Try to end mesh.Begin when a mesh wasn't ended when the function is called. (i.e. after a Lua error) It will still error afterwards like it did before, but now prevents game hanging, hopefully without side effects
  • End current Lua mesh (if there is one) on Lua error - preventing game crashes and graphical glitches
  • Change ents.CreateClientRope slack parameter to work better
  • ents.CreateClientRope ropes now despawn if any of its attached entities are removed
  • Allow giving ents.CreateClientRope local vectors instead of attachment IDs
  • Made Entity:PhysicsInitBox/Sphere set solidity before setting the physics object - this improves behavior for those functions with ClientsideModel and is consistent with PhysicsInit()
  • Validate input range for File:Read and File:Write, so the game does not crash with negative bytes to read
  • Improved handling of BSP model names for Lua clientside entities (sets the model index so tracing code can work better)
  • Improved handling of infinite loops with Entity:WaterLevel when called from the water level change hook
  • Switch debugoverlay functions to better optional argument checking with type checking
  • util.IsValidModel returns false if extension is not .mdl
  • Changed render.DrawQuadEasy to use better optional argument handling (potentially breaking)
  • Sandbox gamemode: Do not store the NPCTable/VehicleTable tables on the entities (The name is still stored)
  • Player:GetPunchAngle will now error with lua_strict set to 1 (deprecation warning)
  • Allow mesh.TexCoord to only accept 1 texture coordinate
  • Optimizations for usage of GM:PlayerCanHearPlayersVoice - it will no longer be called for non speaking players
  • Minor optimizations for most Lua functions returning a sequential table
  • Minor adjustment to WEAPON:OnRemove for consistency of execution time with other OnRemove hooks, no functional change expected
  • Validate input ranges for sound.Generate (will error)
  • Validate input ranges for most Lua functions that use enumerations in arguments (will silently clamp the value)
  • Entity:GetCycle now returns 0 instead of nil for invalid entities
handyman

Fixed

  • Fixed clientside sounds not firing WEAPON:FireAnimationEvent
  • Fixed render.SetShadowsDisabled setting the shadow distance instead of disabling shadows
  • Fixed duplicate HTTP headers being discarded instead of being joined with a comma like it did previously
  • Fixed Player:Flashlight playing sounds when disabling a disabled flashlight, etc.
  • Fixed list.GetEntry erroring when used
  • Fixed infinite loops when calling Entity:DrawModel from GM:PrePlayerDraw/GM:PostPlayerDraw
remove_circle

Removed

  • Blocked editdemo console command from Lua just in case
  • Removed obsolete/undocumented/useless panel types from vgui.Create
  • Disabled vmevent API (jit.attach)
add_circle

Features

  • Added most of Counter-Strike: Source and Half-Life 2 Episodic content to Garry's Mod (excluding voice over and music due to licensing issues, as well as excluding maps)
  • Enabled Episodic spawnmenu content (NPCs/Vehicle/Entity) by default
  • Added a confirmation dialog when trying to load a save that would change current map
arrow_circle_up

Improvements

  • Prevent throwing props immediately when using +USE pickup if holding left or right mouse buttons while picking up something
  • Made Combine Energy Balls bounce from frozen props in a more consistent fashion
  • Made crossbow bolts bounce from indestructible props, frozen and unfrozen
  • Faceposer uses localized string for "Other" category
  • Minor optimizations to Problems panel, ability to close it via ESC key or clicking empty space around it (Community Contribution)
  • Updated browser implementation on Windows to support much newer features
  • "Edit Entity" window in Sandbox now shows prettier entity names (instead of the internal names) (Community Contribution)
  • Made r_pixelfog require sv_cheats 1 to prevent players disabling fog
  • Increase physgun_maxrange maximum value to 32k (from 8k)
  • Localize old spawnmenu category names for addon-added entities, weapons, etc (Community Contribution)
  • Updated Dedicated Server UI on Windows - added workshop collection entry box, gamemode selection, removed mandatory RCON password (blank=disable RCON) and replaced Steam icon with a Garry's Mod one
handyman

Fixed

  • Fixed leading spaces in a console command not adding it to the console autocomplete history
  • Updated Metrocop player model so the model actually has a shadow
  • Fixed Metrocop player model gloves having unintended white texture bits
  • Physics Gun rotation and Camera zoom/roll now work consistently independent of client FPS
  • Fixed Resistance Turrets being in Combine Overwatch NPC squad (Spawn menu)
  • Fixed pink or green artifacts appearing on certain decals when spammed in one place a lot
  • Bonemerged models inherit lighting origin from parent - makes view model hands match lighting of the view model itself
  • Fixed incorrect player aiming animations for other players sitting in vehicles
  • Restored functionality of m_filter (No longer forced to 1)
  • Fixed non ASCII characters in "Unknown command X" console message appearing as "?"
  • Update RPG Launcher world model to fix muzzle flashes not playing, or playing at incorrect times
  • Fixed changing video settings always forcing a map reload
  • Fixed missing Trails tool undo message localization
  • Fixed missing Antlion Guard step sounds
  • Fixed CS:S Leet playermodel coloring area overlapping the belt
  • Ship Half-Life 2: Episode 2 override of barricade001a.mdl with fixed physics mesh
  • Fixed Hacked Rollermine not respecting ignore players flag
  • Fixed d2_coast_09 not changing fog color when coming out of the tunnel
  • Fixed visual 1px overlap in SWEP info tooltip during fade out (Community Contribution)
  • Fixed being unable to damage partially submerged props with explosions from above the water surface
  • Improve how death is handled when NPC is killed by a harpoon. Fixes killing Antlion Guard on d2_coast_11 with a harpoon not progressing the map
  • Fixed some map surfaces (that use built-in materials, across Half-Life 2, Episode 2 and CS:S maps) having incorrect surface properties, making footstep sounds not match the surface
  • Fixed decals from the Paint tool that were not working or working poorly when applied on models
remove_circle

Removed

  • Removed "Use Bloom" checkbox from Video options, as it was not bound to any convar or setting, meaning it did nothing
  • Removed "No HDR but use bloom" setting from Video Options since it doesn't do anything
  • Remove duplicate "Black and White" color modify preset (Community Contribution)
add_circle

Features

  • Added -mountcfgfile launch parameter that allows overriding filename of cfg/mount.cfg file to be loaded as mount.cfg (for example, -mountcfgfile mount2.cfg would load cfg/mount2.cfg)
  • Added host_writeconfig_lua console command (blocked from Lua)
  • kickid supports kicking players by SteamID64
arrow_circle_up

Improvements

  • Tell the player if garrysmod.ver is read only, which could lead to inability to join servers
  • Log workshop addon mounts (count only) in console for debugging purposes
  • Micro optimization for cam.Start2D (Community Contribution)
  • Remove most of usage of deprecated CSteamAPIContext on the client
  • Apply more strict checking of invalid Lua states in CLuaObject
  • Make Lua print() and error() text colors in console the same
  • AvatarImage keeps track of textures it creates and reuses them, preventing exhaustion of texture name symbol list
  • Add WriteTempEntities overflow warning from CS:GO
  • Do not force "rate" cvar to 100000 on start up (from 1000000), and remove archive flag from it
  • When dealing physics stress damage on characters, set inflictor and attacker if possible - will try to set the inflictor/attacker to something more useful than "World". In case of multiple props, it will be the first entity doing the stress damage
  • Truncate killfeed names to 512 bytes to prevent net message overflows
  • Register private animation events as client events too, so they call the clientside SENT hook for model animation events
  • Reject empty or near empty .gma files with a nice message
  • Bump internal render data buffer from 64k to 80k to prevent rare? crashes
  • Improve performance/memory usage of Lua mat proxies
  • Added some sanity checks around for unclosed Lua ISave/IRestore blocks
  • Prop fading changes when the fade distance is below 500, to prevent the prop looking transparent at all times
  • Draw console notify text over all other panels (with developer convar above 0)
  • Added background to text output of cl_pdump cvar
  • Update lights.rad to its up to date Half-Life 2 version with HDR and episodes support (Community Contribution)
  • Use player.iterator instead of player.GetAll in some base game functions (Community Contribution)
  • The game now ships updated copies of vpk.exe, soundsystem.dll and vtex.exe
  • Reduced OBS_MODE_DEATHCAM interpolation time from 3 seconds to 1 second
  • More strict shader loading file whitelist (Requiring to be in shaders/fxc/ rather than shaders/)
  • Try to provide some useful info to "hit surface has no samples" warning
  • Increased MAX_NODES (Max AI nodes on a map) from 4096 to 8192
  • Only allow sound precache on level transitions/game load - this should help with sound precache overflows in single player games while still not breaking engine saves and level transitions
  • Added description to sv_sticktoground console variable
  • Changed description of bot_zombie console variable to explain what it does
  • Unhide *.ain (AI Nodes) loading errors (previously required developer 1), make them warnings
  • Moved map.pack to cache/map_pack.bsp
  • Updated "AI node graph is out of date" warning to include version number
  • Hide "Soundscape: <name>" message if soundscape_debug convar is 0
  • Disable sv_parallel_sendsnapshot by default - apparently still causes random unreproducible crashes that need solving first
  • Disable mouse3/4/5 input on DAdjustableModelPanel (Community Contribution)
handyman

Fixed

  • Fixed a case where voice chat would cease to work if voice_enable is set to 0 and back to 1
  • Fixed clientside errors happening before LevelInit not being sent to the server
  • Fixed commas in AddOutput map IO input causing the input text to be truncated (Now uses the special ESC symbol internally, like Hammer VMFs do)
  • Automatically delay HTTP calls until SteamHTTP is ready (for dedicated servers)
  • Queue lua_error_url messages until SteamHTTP is available (for dedicated servers)
  • Do not render drag'n'drop overlay for engine panels when UI mouse input is not active
  • Fixed ragdoll boogie (flopping around due to being touched my mega gravity gun) happening from +USE pickups/throws through Lua
  • Prevent crashes when trying to write too much data into a small texture
  • Fixed an infinite loop in weapon selection HUD with certain weapon names
  • Fixed mat_luxels 1 producing unusable results
  • Fixed a crash issue with close caption HUD
  • Fixed crashes to do with PCF loading due to weird formats
  • Fixed crashes with PCFs using ELEMENT_INDEX_EXTERNAL
  • Fixed crashes with point_worldtext during saving
  • Fixed particle related crashes when attached to an entity
  • Improvements for >2GB file support on non-Windows OSes
  • Prevent ToGL crashes on Linux when encountering a debugger break
  • Implemented cubemap seam/edge blending for HDR cubemaps
  • Added some sanity checks when loading VTF files and possibly running out of memory
  • Fixed HTLV clients getting kicked for reliable snapshot overflow in certain cases
  • Fixed some more minor memory leaks (from TF2 SDK)
  • Clean up g_SBoxObjects table in Sandbox gamemode when entities get deleted, to prevent potential memory leak
  • Fixed Player:GetCount not updating on entity delete (undo) after rejoin
  • Fixed a crash when using -hijack command line parameter
  • Fixed env_fog_controller.SetColorHDR map input not working
  • Fixed a NPE crash with CLuaInterface::IsType that can only happen with binary modules
  • More accurate water level for props, so props half submerged are no longer considered fully submerged
  • Fixed a crash when reloading materials
  • Fixed version console command not having proper Steam Beta branch value
remove_circle

Removed

  • Removed Novint Haptics Device integration
  • Remove voice_modenable in favor of voice_enable. There's no reason to have both, it only creates confusion.
  • Removed unused console variables that did nothing to prevent confusing players: r_fastzrejectdisp, mat_shadowstate, mat_maxframelatency, mp_usehwmvcds, mp_usehwmmodels, r_threaded_client_shadow_manager, r_threaded_renderables, r_decal_cullsize, r_drawopaquestaticpropslast, r_threaded_renderables, snd_mix_async, mat_parallaxmap, mp_teamlist, mp_teamoverride, mp_defaultteam, mp_allowNPCs, mat_disablehwmorph, sv_contact, sv_consistency, joy_yawsensitivity_default, joy_pitchsensitivity_default, option_duck_method_default, sv_stickysprint_default, mp_autocrosshair, mp_allowspectators, mp_friendlyfire, mp_fadetoblack, mp_chattime, mp_waitingforplayers_time, mp_waitingforplayers_restart, mp_waitingforplayers_cancel, mp_clan_readyrestart, mp_clan_ready_signal, mp_readyrestart, mp_ready_signal, mp_forcerespawn, mp_fraglimit, cl_burninggibs, r_propsmaxdist, cl_first_person_uses_world_model, mat_max_worldmesh_vertices, showparticlecounts, cl_team, cl_class, cl_SetupAllBones, cl_forcepreload, hud_centerid, hud_showtargetid
  • Removed -preload launch parameter
  • Delete replay.dll/replay.so which are unused
add_circle

Features

  • Added inputs to light_environment, removed point_clientcommand and point_servercommand since they do not work in Garry's Mod.
arrow_circle_up

Improvements

  • Increase MAXSTUDIOSKINS for studiomdl.exe from 32 to 64
  • Removed MAX_TEXLIGHTS limit from VRAD
  • Improve version 49 model support for VRAD static prop lightmaps
  • VRAD: -allowdynamicpropsasstatic also allows props without $staticprop
  • Apply sanity checks for model loading from base game client to VRAD
  • VBSP displays a warning/error when vphysics.dll/shaderapiempty.dll are missing, instead of crashing
  • More colors for Lightmap Grid in Hammer for super small (red) and super large (green) lightmap scales
handyman

Fixed

  • Fixed 3D grid not rendering correctly in Hammer due to recent changes
  • Fixed VRAD always forcing -verbose to being enabled
  • VRAD static prop lightmap system respects selected model skin (fixes a crash with malformed models as well)
  • Removed links to dead Valve websites, link to Valve Developer Community instead (Hammer & tools)