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 physcannon_instant (defaults to 1)
    • Exactly as it sounds, makes the gravity gun be able to be used instantly after switching to it, bypassing deploy animation (and sv_defaultdeplyspeed). The default value preserves the original HL2/GMod behavior
  • Spawnmenu addon spawnlist generator for right click menu, similar to the one for mounted games
  • Added some existing models to the Lamp Tool, for more variety
  • Added the ability to auto join full servers when they get a free slot to the default server browser
  • Added the ability to add servers to favorites by IP to the default server browser
  • New spawnicon editor options - Move speed customization, FOV precise control, camera position copy/paste, quick rotate model +/- 45deg, Fixed selecting text in spawnicon editor only working on second try, forced LOD to highest
  • Display SENT/SWEP usage info in spawnmenu tooltip
  • Added new Team Fortress 2 map icons
  • Added prop_disable_distance_fade convar (cheat) - If set to 1, disables prop fading out with distance set by the map, including static props and other entities. Useful for taking screenshots

Fixes

  • Fixed playermodel drifting away in prop_vehicle_crane when holding W or S
  • Fixed Winch right click not setting rope color correctly
  • Fixed inflator tool no longer working on NPCs
  • Fixed NPC kill related achievements not working
  • Fixed Lua being able to make the main menu fully black on disconnect
  • Fixed toolgun ghost envtity fading out at distance in singleplayer on some maps
  • Fixed Color Modify post processing effect defaults not resetting invert
  • Fixed fsd-overrun-toy.mdl physics mesh being rotated 90 degrees (Community Contribution) & reduced its mass
  • Fixed spawning normal combine soldiers from spawnmenu with shotguns having their skin set to the shotgunner one
  • Fixed portal turret playing its disintegration sound twice when disintegrated via mods
  • Fixed player disconnection message sometimes not appearing, due to the player object being gone too soon
  • Fixed volume of certain sounds not being set briefly when first loading into a map - This fixes game making sounds when not focused when the option to specifically prevent that is enabled
  • Fixed auto generated spawnlists from mountable games disappearing on reload because they were incorrectly having "needs app" being set to the app ID, and not the app folder.
  • Fixed addons over 2GB not loading correctly. The new limit is 4GB.
  • Fixed "skill" console variable (selects difficulty) not doing anything for Half-Life 2 content
  • Finger poser and Faceposer correctly rebuilds UI on loss of entity
  • Fixed GMod force-adding "English (US)" keyboard layout which persists until PC restart
  • Fixed crazy mouse acceleration values completely breaking player view, making the game unplayable
  • Fixed faceposer breaking after 384 different flex names were loaded in a session - The limit is now 1024 and and if it is reached, a console warning is printed.

Changes

  • Fixed tiny amount of damage (less than 0.1) taking a whole armor point
  • Do not render first person Physics Gun effects during skybox pass
  • Updated localization files
  • Change "Filter" label on console to better represent what it does
  • Strip certain Unicode character groups from server & gamemode names - It's mostly the obnoxious box characters
  • Moved extracted .gmas from addons/ to cache/workshop/ - This simplifies code and allows this:
    • Reworked menu_cleanupgmas to take into account server downloads - Meaning, Workshop files downloaded from servers and extracted, then deleted by Steam in 2 weeks, now get detected as useless extracted versions and are prompted for deletion
  • Do not fully disable the crosshair if player is dead, so it is visible when spectating a player in first person view, or flying around the map in spectate mode and cl_observercrosshair is set to 1 (default)
  • Visually and physically disable (but not hide) disabled Sandbox tools -
  • Display a warning when trying to activate tools without a toolgun
  • Force spawnlist file names to lower case on save
  • Moved "Delete multiple items" in spawnmenu multi-select right click to the bottom - This is consistent with normal spawnicon right click item order
  • Do not try to render and save icons for models without meshes - This mostly applies to character animation files. They will appear as "ERROR" models
  • Limit certain old addon whitelist entries to old addons only
  • Reworked default Half-Life 2 spawnlists to include most models that are shipped with the game without requiring mounting, as well as re-grouped similar models together in the 2 topmost default spawnlists.
    • Also added default spawnlists for Half-Life 2 episodes and Lost Coast, which will appear if those games are mounted
    • Updated default spawnlists will not appear if you already have played the game before the update - to get them you will need to delete your existing spawnlists completely (and save changes)
    • Also updated/added hundreds of default spawnicons
  • If a spawnicon does not exist, try to look in addons first before generating one - This makes it so that you can still edit icon, but if you do not have a spawnicon rendered, and a workshop addon provides one, the game will use the workshop one as a fallback
  • Add subscriptions as "Unknown Addon' while we fetch their details - they will not be mounted as they could be banned/backdoored
  • Restored Half-Life 2 use sounds with gmod_suit 1
  • Restored angle alignment/snapping for +use pickup
  • When mat_viewportscale is set to a tiny, game breaking value, fire a "Problem" notification for the user with a quick fix
  • Display an error in console when .gma addon file list has failed to be read completely
  • Included modified Alyx/Kleiner/Vortigaunt models that include animations from episodes
  • Included Episode 2 floor turret models for its skins & gibs
  • Included Episode 2 combine mine model, so its skins appear on that one EP2 map
  • Included Episode 1 ceiling turret model so it functions correctly when dry firing on that one EP1 map
  • Improved kill feed NPC names for map spawned NPCs like Rebels, Antlion Workers, etc.
  • Improved Episode 1 intro - blue vorts material conflicts with EP2 resolved, wake up sequence works
  • Make sure to restore gamemode on server disconnect to what it was before joining the server
  • Enabled Episodic behaviors for Vortigaunts - don't attack while carrying NPC, lower threshhold for range attacks during episodic maps
  • Enabled Alyx darkness mode, flashlight blindness & other episodic behaviors
    • Fixed Alyx still following the player in darkness mode without flashlight
    • Fixed Alyx's darkness breathing breaking other voice lines
  • More episodic behaviors for Zombies and Headcrabs
  • Replace default cubemap texture with the one map compilation generates by default - this only affects maps that are renamed after compilation, which used to make them look overly shiny
  • Changed default value of "skill" convar to 2 (normal difficulty, was easy before)
  • Increased severity of mat_hdr_level problem (HDR being disabled)
  • Faceposer flex groups - The groups are defined by the models themselves.

Deletions

  • Remove Episode 2 exclusive soundscapes (wind gusts) from gm_construct

TTT Changes

  • Added TTTShowSearchScreen hook (Community Contribution)
  • Optimized ragdoll search network traffic
  • Fixed disconnected player networking (Community Contribution)
  • Updated Russian localization (Community Contribution)
  • Replace deprecated GetConVarNumber/GetConVarString usage (Community Contribution)
  • Updated localization files (Community Contribution)

Technical Changes

Additions

  • Build vbspinfo.exe
  • Added sv_maxunlag convar
  • Added sv_log_client_errors (defaults to 1) - Allows to disable logging of them to a file
  • Added sv_npc_full_pvs_checks (Default to 1) - Fixes some NPCs flicking in multiplayer with more than 1 player on the server
  • Added host_workshop_autoupdate (defaults to 1) - Set to 0 to disable dedicated server workshop auto updates.
  • Added new shader parameters to Core shader - $EntityOrigin, $Diameter
  • Added $BASETEXTURESPEED, $BASETEXTURE2SPEED, $BASETEXTURE3SPEED for VolumeClouds shader
  • Added -disablehttp command line parameter

Fixes

  • Fixed a longstanding crash with CSoundPatch usage
  • Fixed a crash on exit to do with panels
  • Fixed a crash with gameui_show_dialog and remove the console command
  • Potential crash fixes to do with traces
  • Fixed a crash due to missing attacker in player take damage hook
  • Fixed a crash related to static props on map load for certain maps
  • Fixed some crashes with DSPs
  • Fixes towards crashes with poster command and insane size values
  • Fixed crashes with huge font blur values
  • Fixed a crash when an NPC sees more than 255 enemies
  • Fixed a self-crash with +vgui_drawtree
  • Fixed a crash with multicore rendering and logging
  • Properly handle mounted addons disappearing (unmounted) - This fixes a crash with BASS.DLL trying to play addon files that are no longer there.
  • Fixed a crash to do with static props when they change models - i.e. when a static prop goes from error.mdl to a more complex one.
  • Move various crash fixes & security improvements
  • Restored "gamemenucommand RestartWithNewLanguage"
  • Fixed a warning about "Invalid texture id -1" on disconnect
  • Fixed env_blood color setting, and add new colors, as well as fixed missing textures for some settings and restored hidden settings
  • Fixed certain detail props not rendering on maps with more than 65k of them
  • Prevent ent_create player to avoid issues from doing so
  • Fixed a memory leak with serverlist.Query
  • Implemented a workaround for animation event IDs on listen servers being set to "invalid" values (client vs server conflicts)
  • Fixed Portal 2 .wav files that are actually .mp3s not playing
  • Fixed trackspeed only working after ReturnToEyes input (point_viewcontrol)
  • Fixed env_screenoverlay SwitchOverlay input forcing overlays on when the entity is disabled
  • Fixed env_zoom not working sometimes, and not undoing itself on removal
  • Fixed scaled props scaling collision bounds twice
  • Fixed clicking a TextEntry sometimes setting invalid caret position
  • Fixed crashes when point_template is used improperly
  • Fixed logic_collision_pair not really working at all when spawned by map
  • Fixed crashes when certain models are spawning generic gib types that do not come with GMod
  • Fixed a bunch of possible crashes with Vehicles pre Entity:Spawn()
  • Fixed whereis concommand sometimes not finding the certain workshop addons (server exclusive .GMA addons)
  • Fixed unmounting GMAs leaving behind empty folders internally
  • Fixed division by 0 when parsing MP3 files on Linux
  • Resolved case sensitivity issues with lua_refresh_file
  • Improvements for content unloading
    • Fixed materials with matproxies sometimes getting permanent artificial refcount
    • Resolved model materials going into negative refcounts - This is a specific case where error models are "hotloaded" into non error models
    • Fixed sprites causing material refcounts going negative - Similar case to models where sprite materials become available after precaching as error
    • Fixed Lua particles leaking material refcount - This is fixed by precaching the material just before it is used
    • Do not precache particle materials on the server (game.AddParticles)
      • Allows particle materials to reach 0 refcount on disconnect from singleplayer, and also makes no sense to precache particle materials serverside anyway
    • Clean up rope materials on disconnect, not game shutdown - Allows rope materials to reach 0 refcounts
    • Fixed intro screen material not being freed
    • Fixed __error material getting an extra forever refcount on game launch
    • Fixed __loading and __background getting forever refcounts, preventing them from being freed
    • Fixed certain sprites (such as physgun beam) being forever referenced if drawn
    • Fixed NPCs spawning sprites sometimes causing artificial refs on the material
    • Fixed another case where particle materials would end up with artificial refcount
    • Free existing/previous font textures/materials on disconnect
  • Fixed NPC death animation blending (Community Contribution)
  • Fixed NPC death poses (Thanks MapBase)
  • Fixed legacy workshop addons sometimes not extracting correctly - This would happen on download, potentially after messing about with Steam files
  • Prevent NPCs complaining about sequence -1 when trying to move, but the NPC model has no correct movement sequence
  • Fixed NPCs and players complaining about bone access when creating death ragdolls
  • Corrected string representations of some CLASS_ enums
  • Fixed a crash to do with soundscapes after map cleanup
  • Rework how movement is disabled when player is dead with movetype_walk, so gravity/velocity, etc. is still applied
  • Fixed nextbot deaths counting twice for npc_maker
  • Fixed flex bone drivers in-game - Made the flex bone driver code mimic the code from HLMV, which basically includes special case for BONE_USED_BY_BONE_MERGE
  • Fixed player angles serverside while in vehicle not matching client
  • Also fixed GetPassengerSeatPoint returning wrong values for vehicles without ACT_IDLE, such as the chair models, now will select first sequence
  • Fixed crashes when getting name of invalid ammo type
  • Fixed "Unknown language" in TextArea right click
  • RichText uses localized string for "Copy" in context menu, also fixing extra & being present in Lua created version of the panel
  • Also fixed Text Entry Copy/Cut context menu buttons not being disabled when they should be
  • Fixed a whole bunch of potential crashes with NPCs in multiplayer when there are no players on the server
  • Fixed crash with trigger_weapon_strip when a non NPC/Player entity enters it

Changes

  • Increase default value of budget_panel_height to 800
  • Allow prop_vehicle_crane to receive damage events when player hitbox is not hit
  • Base Lua code clean ups
  • Some minor memory usage optimizations
  • Added convar descriptions to many default Lua-defined convars
  • Hide mod_load_*_async convars - They are linked to a game hang when enabled, and they are disabled by default anyway
  • Reset ammo types on map shutdown as well, so they are gone by the time another map is loaded
  • Move some hardcoded values of weapon_fists to SWEP.* variables
  • Default cl_detail_allow_vertex_lighting to 1
  • Added "resource/overviews/*.txt" to BSP whitelist
  • Ignore \n, \r and \t in player names
  • Optimized skypaint matproxy (Community Contribution)
  • Reworked Portal Rocket Turret targeting to make the SetTarget input work
  • Do not prevent C_BaseAnimating entities from rendering if sequence is set to -1
  • Do not run animations on prop_prisoner_pod if its empty, to potentially save on network bandwidth
  • Allowed custom (private) activity IDs on client to be registered on model load
  • Restored "permanent failure" check on SRCDS steam logon failure - Basically will login anonymously if provided GLST is invalid
  • Block more URLs that crash Awesomium - .mov, .mp4 - This is not ideal, but there isn't a better way
  • Micro optimizations with weapon_base & GM:DrawDeathNotice (Community Contribution)
  • GMad.exe: On windows, pause on error when using drag'n'drop
  • Only allow dx80/dx90.vtx files in gmpublisher, sw.vtx/xbox.vtx are useless files not used by the game, so no reason to allow them on workshop to waste disk space
  • Disabled .sw.vtx generation in studiomdl.exe
  • studiomdl.exe no longer requires -nop4 every time it is used
  • Print games that are mounted to console (like folder addons) with developer 1
  • Improve consistency of trace surfaceID returns clientside - this only relates to usages of shadow PhysicsObjects
  • vcollide_wireframe - draw the actual physics object clientside if it exists
  • Gibs inherit model scale of scaled props
  • Improved scaled physics prop trace hit detection when the prop is scaled only from the server
  • Reworked game_text rendering clientside to allow for 256 channels at the same time (from 6)
  • Merge scripts/talker/* with episodes
  • Gravity Gun doesn't delete Physics Objects it didn't create
  • Hammer support for sent_ball - To serve as another example of Lua entity in Hammer
  • debug_dump: Separate Lua and non-Lua cvars
  • Add light position to some vrad.exe warnings
    • light has _fifty_percent_distance of X but _zero_percent_distance of Y
    • can't solve quadratic for light X Y
  • Add more info to "gamemode is not a table" error/crash
  • Also added info to the hammer option about how to properly make "Cast Entity Shadows" key on lights work
  • point_viewcontrol only gives invincibility if it freezes the player
  • Updated map icon for ep2_outland_06a to actually represent what it is
  • Half-Life 2 map categories are done stricly by name, so modded versions of those maps do not unexpectedly end up in the Half-Life 2 cateogires
  • Also limited some of the cvars to sane values, m_customaccel_max and m_customaccel_exponent specifically
  • Unhide sv_stressbots and make it a cheat
  • Reduced max allowed voice packets per frame to 48 (from 64)
  • Include map name in map related disconnect messages
  • Kick players who send impossible voice packet sizes (<= 1 byte, above 2k)
  • Added sv_signon_dos_disconnect from CS:GO - mitigates a DOS exploit
  • Experimental: Do not close srcds on model precache overflow, just use error model

Deletions

  • Removed mat_stub
  • Removed full paths from "Adding Filesystem Addon" console messages
  • Removed -textmode

Developer tool changes

  • Ported -blocksize for vbsp from CS:GO
  • Minor fixes to map compile tool output text not having new lines in some cases
  • Added Ambient Occlusion for vrad (CS:GO version) (-aoscale, -ambientocclusion)
  • Fixed Hammer's expert config files not being treated as userconfig by Steam, therefore getting wiped on validation
  • Added more info to "Patch Sample Radius Clamped" warning in vrad
  • Alternative fix for traces not hitting transparent displacements
    • Better consistency with brushes that use same materials - does not cast shadow and traces hit them
  • Improve verbosity and detection of "CMaterial::Draw(): StretchDIBits failed" in hammer
  • Use integers, not shorts for leafs in map compile tools - I think this affects VRAD only, fixes warnings/issues on some complex maps
  • Fixed improper model removal handling for LODs in studiomdl.exe, resulting in a crash
  • Fixed vrad.exe not writing light entity flags to the BSP, fixes "Cast entity shadows" option in Hammer not working.
  • Move "Model X has mismatching model version" to -verbose (vbsp.exe)
  • Merge hlmv crash fixes from CS:GO - Related to high poly models and the debug rendering modes
  • Added a new option to HLMV Flex tab for $boneflexdriver preview - It will move Flex sliders live as the animation plays
  • Added ficool2's VRAD ambient occlusion implementation
  • Fixed errors with singular static prop causing VRAD to bail for all remaining static props yet to be processed

Hammer changes

  • More logical defaults for func_button in Hammer
  • Fixed default detail types (Hammer Editor) having missing models and textures
  • Fixed a crash with Hammer Model Viewer and bad models
  • Increased size of "size" status bar to be able to fit the entire text
  • Added a bunch of new options for Hammer's Run Map dialog so they are not hidden from the average user
  • Fixed "Point At" button always writing to "angles" key-value pair instead of the selected key-value pair

Lua API Changes

Additions

Fixes

Changes

  • Increase the limit of Entity:ManipulateBoneScale to 512 (from 32)
  • Material function can use .cache files from steamworks.Download
  • DCollapsibleCategory items support disabled styles
  • More consistent Vector/Angle optional argument handling - You can now do Vector( nil, 1, 2 ) and get the expected output
  • Made new vgui.Create errors non halting to prevent breaking existing mods that are badly coded
  • Block mem_force_flush from Lua access just in case - Having this enabled in autoexec causes issues, so lets disallow servers to force it on players
  • Block servers from modifying fov_desired, skill, cl_playerspraydisable, voice_overdrivefadetime
  • Block "path" concommand from being able to be ran via Lua
  • Block all .log files for file.Read, not just console.log
  • Changed Matrix memory management to match Vector/Angle - This aims to fix stuttering when GCing lots of matrices, for example in rendering hooks
  • Try to make sure SENTs are initialized clientside before processing net messages, to avoid a race conditions with sending newly spawned SENTS to clients
  • Type check table arguments of ColorToHSL, ColorToHSV and physenv.SetPerformanceSettings
  • "anim" type SENTs move physics objects clientside for you - hopefully this does not cause any issues
  • Try loading model from Hammer keyvalues before setting models/error.mdl on anim SENTs
  • Player:SetAvoidPlayers ignores noclipping players
  • Give debug name to physics objects created via Lua & models scaling - for Lua functions, will be the function name that created it, for scaled physics objects - model name + scale
  • Entity:FollowBone, Entity:SetAttachment and Entity:SetParent will throw errors when given absolutely invalid attachment/bone IDs (i.e. less than 0, or above 255)
  • Entity:GetBodyGroups returns "empty" for submodels with no meshes (instead of nothing)
  • DNumSlider:SetEnabled also affects its DLabel
  • DLabel:SetDark disables DLabel:SetBright, and vice versa
  • DLabel:SetHighlight always overrides DLabel:SetDark AND DLabel:SetBright
  • IMaterial:GetColor returns an actual Color
  • Disabled DLabel has faded out colors
  • Make WEAPON:Think not run before NextAttack in singleplayer - This mimics SWEP:Think's behavior clientside in multiplayer
  • Call TOOL:Holster and TOOL:Deploy when switching tools clientside - This was done when using gmod_tool serverside only, it is now done when gmod_toolmode changes both clientside and shared

Deletions

  • Removed file.AsyncRead from menu state entirely, since its broken there anyway