Garry's Mod Wiki

Update Preview Changelog

This page contains upcoming changes to the game in the next update. The update date is available on the Steam News section for Garry's Mod.

The update is already accessible on the dev beta branch, and possibly on the prerelease beta branch.

Game Changes

Additions

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

Fixes

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

Changes

  • 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

Deletions

  • 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 from Video Options since it doesn't do anything
  • Remove duplicate "Black and White" color modify preset (Community Contribution)

TTT Changes

  • Nothing so far

Technical Changes

Additions

  • 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

Fixes

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

Changes

  • 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 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 one.
  • 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)

Deletions

  • 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

Developer tool changes

Hammer

  • Added inputs to light_environment, removed point_clientcommand and point_servercommand since they do not work in Garry's Mod.
  • Fixed 3D grid not rendering correctly in Hammer due to recent changes
  • More colors for Lightmap Grid in Hammer for super small (red) and super large (green) lightmap scales
  • Removed links to dead Valve websites, link to Valve Developer Community instead (Hammer & tools)

Map Compile Tools

  • Improve version 49 model support for VRAD static prop lightmaps
  • VRAD: -allowdynamicpropsasstatic also allows props without $staticprop
  • VRAD static prop lightmap system respects selected model skin (fixes a crash with malformed models as well)
  • Apply sanity checks for model loading from base game client to VRAD
  • Fixed VRAD always forcing -verbose to being enabled
  • Removed MAX_TEXLIGHTS limit from VRAD
  • VBSP displays a warning/error when vphysics.dll/shaderapiempty.dll are missing, instead of crashing

Other

  • Increase MAXSTUDIOSKINS for studiomdl.exe from 32 to 64

Lua API Changes

Additions

Fixes

  • 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

Changes

  • 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

Deletions

  • Nothing so far