Revision Difference
Update_Preview_Changelog#562069
<cat>Play</cat>
<title>Update Preview Changelog</title>
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](Dev_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
## 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 entity 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⤶
## 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 - https://files.facepunch.com/rubat/1b0311b1/dLCCdKRb8T.png⤶
* Visually and physically disable (but not hide) disabled Sandbox tools - ![](https://files.facepunch.com/rubat/1b0311b1/dLCCdKRb8T.png)⤶
* 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. ![](https://files.facepunch.com/rubat/2024/June28-263-UnwittingEthiopianwolf.jpg)⤶
## Deletions
⤶
## 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
## 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 <page>serverlist.Query</page>
* 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 `.mp3`s 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⤶
## 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` & <page>GM:DrawDeathNotice</page> (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
⤶
⤶
## Deletions⤶
* `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⤶
* Fixed `vrad.exe` not writing light entity flags to the BSP, fixes "Cast entity shadows" option in Hammer not working.⤶
* Also added info to the hammer option about how to properly make "Cast Entity Shadows" key on lights work⤶
⤶
## Deletions⤶
* Removed `mat_stub`
* Removed full paths from "Adding Filesystem Addon" console messages
## 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
## 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 https://files.facepunch.com/rubat/1b0411b1/sXVENkgcR7.png⤶
* Added a bunch of new options for Hammer's Run Map dialog so they are not hidden from the average user ![](https://files.facepunch.com/rubat/1b0411b1/sXVENkgcR7.png)⤶
* Fixed `"Point At"` button always writing to `"angles"` key-value pair instead of the selected key-value pair
# Lua API Changes
## Additions
* Added `ENT.PhysicsSounds` for `anim` type SENTs - If set to true, re-enables physics impact sounds for the entity
* Added <page>vgui.GetAll</page> - Internal, returns only Lua created panels. Used to fix PANEL:PreAutoRefresh() and PANEL:PostAutoRefresh() not working
* Middle mouse click for <page>DColorCube</page>/<page>DColorMixer</page> to reset to convar defaults
* Added <page>DColorCube:GetDefaultColor</page>/<page>DColorCube:SetDefaultColor</page>
* Added <page>DSlider:ResetToDefaultValue</page>
* Added `"content_descriptors"` to <page>steamworks.FileInfo</page> result
* Added private activity functions
* <page>util.GetActivityNameByID</page>
* <page>util.GetActivityIDByName</page>
* <page>util.GetAnimEventIDByName</page>
* <page>util.GetAnimEventNameByID</page> is now also shared
* Added <page>Panel:SetCookieName</page> support for <page>DNumSlider</page>, <page>DCheckbox</page>, <page>DCheckboxLabel</page>
* Added <page>DAdjustableModelPanel:GetMovementScale</page>/<page>DAdjustableModelPanel:SetMovementScale</page>
* Added optional argument to <page>NPC:StopMoving</page> - immediate (defaults to true)
* Added new argument to <page>Entity:CreateBoneFollowers</page> - table of bone names
* Bone follower support for AI and Nextbot SENTs
* Added <page>Entity:Dissolve</page>
* Added a 3rd argument for <page>PathFollower:Chase</page> - cost function
* Added <page>NPC:SetStepHeight</page> and <page>NPC:GetStepHeight</page>
* Added <page>NPC:GetArrivalSpeed</page> / <page>NPC:GetArrivalDistance</page>
* Added ability for traces to use a table of class names as `"filter"`
* Traces now have `"whitelist"` input property - This will turn the table filter into a whitelist, rather than ignore list. This will NOT affect function() filters
* Added `"hitclientonly"` option to trace functions clientside
* Added new data to <page>util.GetModelInfo</page> - MeshCount, BoneCount, Flags, StaticProp (specific flag)
* Added a new argument to <page>concommand.Add</page> autocomplete callback - tokenized arguments
* Added <page>CNewParticleEffect:GetRenderBounds</page>
* Clientside physics object scaling is now possible with <page>Entity:SetModelScale</page>
* Added <page>PhysObj:MakeShadow</page>( maxSpeed, maxAngSpeed )
* This allows making any physics object a physics shadow, not just ones created by Entity:PhysicsInitShadow
* Speed values of 0 or below mean do not allow movement.
Added <page>Global.RegisterMetaTable<page>( name, table )
* <page>sound.Generate</page> now accepts table of samples, or direct binary data as a string
* The table input should have float values from -1 to 1 (index starting with 1), and is about 4 times faster than using a function
* string input must be raw 16bit sound data (each sample is a signed short), and is much faster than the 2 other methods.
* Added optional argument to <page>sound.Generate</page> - loopStart (sample ID)
* Entity:Set/GetPoseParameter now can accept numbers instead of strings
* Entity:GetPoseParameterRange can now accept string instead of a number
* Added steamworks.GetList/FileInfo serverside
* Allow 3 separate number inputs to certain mesh.* functions - mesh.Position, mesh.Normal, mesh.TangentS, mesh.TangentT
* file.Remove now returns true on success, false otherwise
* Gamemode cvars: Added `"replicate"` field - If set to 0, removes REPLICATED flag from gamemode cvars⤶
* Added Entity.GetFlexType( id ) = string⤶
* Added Color:Lerp( target, frac )⤶
* Added string.NiceName & use it for bodygroup names⤶
## Fixes
* Fixed <page>PhysObj:GetFrictionSnapshot</page> only returning 1 entry
* Fixed crashes with `ENT.RenderGroup = RENDERGROUP_STATIC(_HUGE)`
* Fixed a crash with <page>Entity:PhysicsInitConvex</page> and invalid input
* Potential fix for a crash with<page>Nextbot:BodyMoveXY</page>
* Fixed <page>render.SetLocalModelLights</page> ignoring last light
* Fixed <page>IMaterial:GetKeyValues</page> sometimes returning nothing on dedicated servers
* Prevented invalid input to <page>render.DrawWireframeSphere</page> to avoid crashes
* Fixed <page>DMenuOptionCVar</page> resetting from cvar too early in certain use cases
* <page>surface.PlaySound</page> can accept soundscript names clientside
* This will only translate the soundscript name to a file path, it will NOT affect pitch/volume, etc, since the function does not support that at all.
* EmitSound handles registered sounds a bit better clientside (no need for a hack by adding .wav to the sound name)
* You could, and still can add .wav to the end of the registered sounds to make them work with EmitSound, which is still useful for serverside, but clientside this is no longer necessary.
* Fixed Entity:FollowBone not working with boneID 0.
* Fixed SoundDuration returning wrong values for MP3 files
* Fixed .wav SoundDuration being off by number of channels on srcds
* Fixed sound duration not really working on Linux SRCDs
* Fixed timer callbacks, HTTP callbacks & async file read callbacks not firing clientside if the client is timing out
* Release materials created by surface.GetTextureID clientside on disconnect
* Fixed Entity:SetModel, util.GetModelMeshes and util.PrecacheModel leaking model reference counts
⤶
⤶
## Changes⤶
* Fixed crashes relating to Entity.FollowBone⤶
* Fixed util.DecalMaterial to actually work⤶
* Fixed file.AsyncRead erroring after Lua shutdown⤶
⤶
## Changes⤶
* Increase the limit of <page>Entity:ManipulateBoneScale</page> to 512 (from 32)
* <page>Global.Material<page> function can use `.cache` files from <page>steamworks.Download</page>
* <page>DCollapsibleCategory</page> 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 <page>vgui.Create</page> 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`⤶
* 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 <page>Global.ColorToHSL<page>, <page>Global.ColorToHSV</page> and <page>physenv.SetPerformanceSettings</page>
* "anim" type SENTs move physics objects clientside for you - hopefully this does not cause any issues
* Try loading model from Hammer keyvalues before setting 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
⤶
⤶
## Deletions⤶
* Entity.FollowBone, SetAttachment and 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 SetBright, and vice versa⤶
* DLabel.SetHighlight always overrides SetDark AND SetBright⤶
* IMaterial:GetColor returns an actual Color⤶
* Disabled DLabel has faded out colors⤶
⤶
## Deletions⤶
* Removed <page>file.AsyncRead</page> from menu state entirely, since its broken there anyway