Garry's Mod Logo
Changes Header

Changes

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

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)
add_circle

Features

  • •
    Added list.GetEntry (Community Contribution)
  • •
    Added list.RemoveEntry (Community Contribution)
  • •
    Added GM:OnClientLuaError( error, ply, stack, addon_name )
  • •
    Added new info to util.GetModelInfo - IncludeModelCount, IncludeModels and HitBoxSets
  • •
    Added ents.CreateClientRope
  • •
    Added sql.QueryTyped (Community Contribution)
  • •
    Added Color:Copy method (Community Contribution)
  • •
    Added player.GetCountConnecting
  • •
    Added ai.GetNodeCount
  • •
    Added HexToColor, Color:ToHex (Community Contribution)
  • •
    Added CtrlNumPad:GetValue1/CtrlNumPad:GetValue2 (Community Contribution)
arrow_circle_up

Improvements

  • •
    Throw a non halting Lua error when giving invalid types to Entity:SetNetworkedVar (and the other SetNetworkedX functions)
  • •
    Throw a non halting Lua error when trying to read net message past its end (Limited to lua_strict being set to 1)
  • •
    Added engine_no_focus_sleep to blocked convar list
  • •
    On dedicated servers, BRANCH returns "unknown" instead of "prerelease" - Since the builds are identical 99% of the time, "unknown" is the more expected value. This way, it's incorrect only in 0.01% instances of servers using the prerelease beta, instead of most of the time when not using any beta.
  • •
    Apply changes to type() function for speed improvements (Server/menu) (Community Contribution)
  • •
    CUserCmd:GetMouseY/X values on the server are now independent of client FPS of the associated player
  • •
    constraint.Motor accepts a bool for "toggle" parameter (was only accepting 0 or 1)
  • •
    Do not try to run HTTP requests with invalid URLs at all
  • •
    Run GM:PlayerBindPress for unbound keys too
  • •
    numpad library discards bindings to KEY_NONE (Community Contribution)
  • •
    Remove tostring call on the argument of player.GetBySteamID64, since it is supposed to be a string at all times anyway (Community Contribution)
  • •
    Optimized all player.Get* functions a bit
  • •
    Optimized all ents.Get* and ents.Find* functions
  • •
    Improved reliability of entity iterator functions
  • •
    string.ToColor micro-optimization (Community Contribution)
  • •
    Disallow calling Entity:Spawn on the world entity
  • •
    Make util.RemoveDecalsAt distance a float, and use squared distances internally
  • •
    Added IMesh.__tostring method with format IMesh [X verts, Y indices]
  • •
    Throw a non halting error when ENTITY:GetRenderMesh returns a mesh. but not a material
  • •
    Prevent a crashing issue with multicore rendering and IMesh:BuildFromTriangles
handyman

Fixed

  • •
    Fixed double clicks not invoking GM:VGUIMousePressAllowed hook
  • •
    Player:VoiceVolume works for local player without voice_loopback - This only works when using Steam voice, and only when not recording voice to file. (The default state)
  • •
    Fixed IGModAudioChannel:GetPos returning invalid values sometimes
  • •
    Fixed Player:GetAimVector clientside for non local players in vehicles always pointing in the same direction relative to the vehicle
  • •
    Fixed worldspawn entity not calling entity create/remove hooks correctly clientside
  • •
    Fixed clientside ragdolls not calling GM:EntityRemoved
  • •
    Consistent Player:SteamID returns for multirun clients between client/server
  • •
    Fixed VMatrix:InvertTR returning invalid values
  • •
    Made VMatrix:GetAngles be less affected by matrix scale
  • •
    Fixed "timeout" not working in HTTP on client, clamp it to 1-3600
arrow_circle_up

Improvements

  • •
    Throw a non halting Lua error when hitting Lua file limit, to let players know that they have hit the limit
handyman

Fixed

  • •
    Fixed a regression crash on Linux when almost finished loading a map
  • •
    Prevent crashes with steamworks library when used too early on dedicated servers
  • •
    Fixed console spam about invalid sprite orientation when the sprite material is simply missing
  • •
    Fixed HLTV clients being kicked due to mismatching SteamID
  • •
    Fixed a crash to do with env_projected_texture's texture
  • •
    Fixed some security issues reported on HackerOne
  • •
    Remove unnecessary return value in WorldPickerMouseDisable hook so GM:VGUIMousePressAllowed hook works more reliably for addons (Community Contribution)
  • •
    Fixed Lua error with creator tool when trying to spawn NPCs that do not exist on the server (Community Contribution)
  • •
    Blocked .vdf and specific .cfg files from being accessible by the Lua file library
  • •
    Added one more known Lua backdoor URL to HTTP blacklist
  • •
    Increased default value of mem_max_heapsize to 512, and block it from being changed by Lua API
  • •
    Block datacachesize convar from being changed by Lua API, to prevent crashes when set to invalid values
  • •
    Fixed monitor (and potentially other) materials in Hammer acting strangely when using "Fit" option in texture application tool.
handyman

Fixed

  • •
    Fixed Hammer Editor crashing when browsing for models (Regression)