Garry's Mod Logo
schedule 09 June 2021
Update

June 2021 Update

Colorable ropes, clientside voice scaling and many more smaller improvements.

This update adds many small improvements and fixes to stability or other parts of the game, among which is a new feature for constraint tools in Sandbox - colorable ropes: Colorable ropes are available to all rope based constraints in Sandbox, but only certain materials are supported. We have also added the ability to scale player voice chat on a per player basis clientside. This will allow players to adjust voice chat volume of every individual player in a server. This feature will need to be implemented manually by gamemode and server developers and is already available in the default Sandbox scoreboard, by using the mouse scroll wheel on the mute button. As per usual, you can find the full change list for this update below.
add_circle

Features

  • Added ability to clear Lua errors per category/group in the Problems menu
  • Added "menu_cleanupgmas", "mat_specular 0" and "Addon missing file, nothing to mount" issues to Problems panel
  • Added file size of the current file and total file count to non-Workshop server downloads
  • Added addon count and selected count to the addon menu (in the popup menu with filters/etc)
  • Added a visual bounding box of the current dupe to the duplicator tool
  • Rope related tools now can now color the ropes (will depend on whether the selected material supports this or not)
arrow_circle_up

Improvements

  • DNumSlider now colors the notches and the DTextEntry text to match the slider label
  • Improved slider notch rendering
  • Ensure all notches have at least 1 pixel between each other
  • Fixed the last notch not rendering for sliders with a range that isn't a whole number
  • Made the selected flag filters be per gamemode, not global per server browser tab
  • Made the addon selection checkboxes bigger and updated their style to match modern Chromium visuals
  • Also added a bit of space between the clickable addon name and the checkbox to prevent misclicks
  • Minor visual tweaks to the addons and server browser menus
  • Made the "Future version" tag in the server browser less visually prominent
  • Added default values to the Super DOF UI sliders (Middle mouse click resets to default)
  • Problems menu no longer complains about DirectX Level 90
  • Server browser no longer lists servers that are not empty first and then only empty servers (to bypass Steam limitations), now lists whatever Steam gives first
  • Undone server browser minimum ping penalty where servers < 60 ping would all be considered as having 40 ping for server ranking
  • Added description to local saves/dupes/demos telling the player where they can delete them
  • "Select All" button now selects all addons within current search/filter, not all subscriptions
  • Removed selection checkboxes for floating .gma addons
  • Made the background of a disabled addon darker so its more obvious when an addon is disabled
  • More responsive controls for drive_noclip for "Drive" property
  • Unmount addons mounted by server on map shutdown
  • Confirmation window for “Do you want to connect to this server” now also has a “remember my choice” option
  • Added map icons for new CS: GO maps
  • Increased forced defaults of "rate", "cl_cmd/updaterate" console variables to 100k and 66, from 30k and 30 respectively. This only affects clientside settings, which are overridden by server's settings (sv_maxrate, etc). This should result in better ping/performance when playing on busy servers
  • Updated language files
handyman

Fixed

  • Fixed env_sun glow overlay not working properly with the poster command
  • Fixed the first preset group not loading correctly on first map load
  • Loading a save from main menu now properly sets the player position
  • Fixed Lua errors in menu state when searching through addons with special symbols
  • Fixed Hoverball tool creating Lua errors when looking at an invalid entity with the tool selected
  • Fixed the option to re-render all spawnmenu icons not working properly
  • Adjusted the cl_weaponcolor safeguard against invisible colors to catch more cases
  • Fixed a regression with gamemode search bar changes from previous update where it expected the input to be lowercase at all times
  • Changed 'slam' ammo type's default maximum to 5 from 9999 (gmod_maxammo still overrides this if above 0)
  • Fixed certain language files not being loaded on Linux operating system
  • Fixed shooting weapons while in a vehicle not shooting directly at the player’s crosshair
  • Fixed default spawncions not being editable
  • cl_downloadfilter "mapsonly" also works with workshop addons now (checks for the “map” tag on addons)
  • Fixed Winch/Rope texture scaling wrapping around at length of 100
  • Fixed clientside player velocity for non local players being jittery and incorrect when standing on something moving
  • Fixed crash issues with npc_barnacle when its tongue entity gets deleted
  • Fixed crash issue when damaging Antlion Guard NPC
  • Fixed a potential crash issue with ragdoll physics
  • Fixed prop_vehicle_crane crashing the game when it is missing its magnet entity
  • Fixed Lua errors when trying to load a save with phys_magnets that were created by the map when saving
  • You can freeze Jeeps/Custom Vehicles with the Physics Gun once again
handyman

Fixed

  • TTT: Fixed "select language" strings in translations (Community Contribution)
  • TTT: Tuned shotgun headshot damage and gave shotgun very small accuracy boost to compensate for shotgun changes in base game (Community Contribution)
  • TTT: Show language names correctly in menu (Community Contribution)
  • TTT: Updated language files (Community Contribution)
  • TTT: Fix low-karma autokick evasion (Community Contribution)
arrow_circle_up

Improvements

  • Limited sv_loadingurl to http(s) only
  • Added nullptr safeguard to CFontTextureRegen (out of memory)
  • More potential crash prevention when loading textures and in Lua bindings
  • Safeguards for potential crashes in CShadowMgr relating to projected textures
  • Switched the "gain manager" for voice chat to the CS:GO one. (voice_avggain, voice_maxgain replaced by voice_gain_* cvars)
  • Increased internal buffers for map names to 128 characters, from 40, servers can now use maps with longer names
  • Slightly improved SSAO depth pass (NeedsDepthPass hook, render.GetResolvedFullFrameDepth), so it works correctly with props/NPCs and viewmodels (Bokeh DOF now works better)
  • Nicer error messages for FastDL download errors in console
  • Let mat_envmaptgasize override the default cubemap size if it is set to a value higher than the map's cubemap size
  • cfg/network.cfg is no longer considered userconfig, and is ran before autoexec.cfg
  • mat_dumpmaterials now has an optional argument to hide refcount 0 materials
  • Increased networked string limit (Doubled, to 4096)
handyman

Fixed

  • Deleting point_viewcontrol now also disables it instead of putting the player in an invalid state
  • Disable all active point_viewcontrol entities when loading a save to prevent softlocking the player
  • Added out of bounds checks for boneIDs in CIKContext::AddDependencies to avoid crashes
  • Added some nullptr safeguards to CMDLCache functions
  • Fixed potential crash with playing MP3 files
  • Made sure the "entityflame" entity also stops its own burning sound clientside in case it couldn't be stopped from the server due to PVS
  • Fixed crash issue when trying to pickup prop_vehicle_jeep with invalid physics
  • Fixed a potential crash when converting MATERIAL_VAR_TYPE_MATERIAL to a string
  • Fixed material shader parameters not loading correctly on Linux dedicated servers
  • Fixed for Linux file system find not properly handling partial wildcards (i.e. folder/*_suffix.txt where the filename folder/test_file_suffix.txt would not be found)
  • Fixed mat_showlightmappage using a DirectX8 material
  • func_breakable_surf plays its initial broken sound at the correct position even if it is moved by the physics gun
  • Fixed some console commands crashing when used without a player on the server
  • Fixed ent_remove being able to delete players
  • Added support for $boneflexdriver in models into the game
  • Fixed some cl_show_* cvar debug text overlapping itself or going offscreen
  • Potential fix for crashes due to removing fire particles when removing an entity on fire
  • Fixed crashing issues with trying to set/get flags on invalid physics objects
  • Do not disable collisions when parenting brushes to one another
  • Fixed parenting issues with func_movelinear, and a an issue with startSound possibly not restarting
  • Fixed the half life 2 shotgun hack affecting SWEPs
  • Fixed models not being flushed on level changes/disconnects when not hosting a local game (i.e. in multiplayer in general)
  • Fixed Super DoF creating errors when used outside of sandbox gamemode (Community Contribution)
add_circle

Features

  • Hammer: Added func_instance_io_proxy support to hammer/vbsp (in-game support is already present)
  • StudioMDL: Added -fastbuild option to studiomdl.exe that does not write/compute .sw.vtx and .dx80.vtx files
  • StudioMDL: Added more context to "Zero-size file or no sequences." studiomdl warning
  • StudioMDL: Added $boneflexdriver support to studiomdl
  • StudioMDL: Added support for "noanim_keepduration", "forceboneposrot", "scalebonelen", "bonedriver", "reverse", "appendanim" $sequence commands from CS:GO
  • StudioMDL: Added "framestart" and "nostallframes" $sequence commands from CSGO
  • StudioMDL: Added support of "autosteps" to "ikrule" in $sequence
  • StudioMDL: Added support for "percentstartloop" for $sequence
  • StudioMDL: Added "$dmxeyelid" and "$vcafile" commands
  • StudioMDL: Added "noautodmxrules" support to $model
  • StudioMDL: Added -vpfix command line switch that may fix high poly models with LODs and bodygroups getting some of their meshes on LOD 0 destroyed
arrow_circle_up

Improvements

  • StudioMDL: Use auto growing vectors for bunch of internals (vertices, normals, faces, texcoords, etc) instead of static arrays
  • StudioMDL: Changed mesh weights cut off from 0.05 to 0.0001 (matches CS:GO)
  • StudioMDL: Restored position epsilon for fuzzy vertex position comparisons to 0.05, from 0.01 as it caused issues with certain high quality models
  • Hammer: Increased MAX_MAP_OVERLAYS to 1024 (2x increase), increased MAX_MAP_BRUSHSIDES to a lot (~163k, ~3x increase), matching CS:GO limits
handyman

Fixed

  • Hammer: Fixed a crash when creating a new Manifest
  • Hammer: Fixed "Show Collision Models" setting not working in certain cases such as being in a Manifest
  • Hammer: Updated CMapOverlay to CS:GO's version - fixes most copying issues - different normals implementation
remove_circle

Removed

  • Hammer: Get rid of Hammer's "CFileChangeWatcher::AddDirectory" warning as it serves no purpose for the end user
add_circle

Features

  • Added DSlider.Set/GetNotchColor
  • Added SKIN.colNumSliderNotch
  • Added 2 new arguments to CanTool hooks - the toolobject and the button used (left/right/reload = 1/2/3)
  • Added missing ACT_ enums used by the default player model animations
  • Added NPC:GetBestSoundHint( types = all of them ) = table or nil
  • Added sound.GetLoudestSoundHint( type, pos ) = table or nil
  • Added ENT:GetSoundInterests for "ai" type SENTs
  • Added PhysObj.SetAngleVelocityInstantaneous
  • Added PhysObj.SetAngleVelocity
  • Implemented ENT:OnTakeDamage for nextbots
  • Added Player.Get/SetVoiceVolumeScale(0 .. 1) - Clientside only, sets the desired voice volume multiplier per player
  • Added Player.LocalEyeAngles(), which returns eye angles unmodified by being parented to a different entity (such as while being in a vehicle)
  • Added a 3rd argument to Pre/PostDrawTranslucent/OpaqueRenderables - isRendering3DSky
  • Added CMoveData.Set/Get for: ConstraintWidth, ConstraintSpeedScale, ConstraintCenter, FinalIdealVelocity, FinalJumpVelocity, FinalStepHeight
  • Added permissions library
arrow_circle_up

Improvements

  • Use ErrorNoHaltWithStack for numpad.OnDown/OnUp errors when given an invalid key
  • Added con_filter*, gm_video, mat_dxlevel and the new voice cvars to blocked cvar list
  • Switched Think, OnRemove and RunAI entity hooks to use the Lua string pool for "anim" and "ai" SENTs
  • Made Player.IsSpeaking shared (on server, it will return true within 0.1s of the last voice packet from a player, no packets are sent when the voice chat button is held but the player is not talking)
  • Reduced update rate of PlayerCanHearPlayersVoice when nobody is talking to 5 seconds
  • PathFollower functions can now accept player.CreateNextbot() entities instead of the NextBot SENTs. They will also throw proper errors when given invalid entities
  • Made DrawBokehDOF function available to addons, i.e. it is no longer a local function (Community Contribution)
  • Apply PhysObj.EnableMotion to all PhysObjects of a Jeep (it also works on Jeeps now)
  • Entity.GetModelMaterials will now return a complete list of materials if used on a brush model, including the map. Maximum for models is reduced to 128 (from 256) which matches other places in the engine when it comes to models
  • Micro optimization to player:__index (Community Contribution)
  • Forcibly disallow the resource library from adding .xbox.vtx and .sw.vtx files to the server's downloadables list
  • Make sound.Add soundscripts treated as overrides so they are cleaned up/restored on disconnect
  • gma.MountGMA now also clears list of missing materials
handyman

Fixed

  • sound.Generate now flushes its cache on level shutdown (And also with snd_restart)
  • Fixed dedicated server crashing when trying to reference invalid SteamAPI pointers after using the map console command, such as the HTTP functions
  • Fixed sounds not working correctly (playing everywhere) with clientside only entities: Footstep sounds, _G.CreateSound, Entity.EmitSound, Entity.StopSound, Entity.StartLoopingSound
  • Fixed ClientsideRagdoll crashing if called too early
  • CSpawnIcon::RebuildIcon(Ex) now clears the cached spawnicon material like it did before (so the spawnicon appears in its “loading” state again)
  • Fixed Entity.FollowBone glitching around clientside in certain cases
  • Fixed srcds workshop addons missing some fields in engine.GetAddons()
  • SteamID functions return the correct(-ish, the steam universe is hardcoded to "Public" one) value in singleplayer for the player serverside (It was already correct on client)
  • Fixed GetTouchTrace() crashing the game when the entity in the cached trace result no longer exists
  • render.RenderView now resets the "ShouldDrawLocalPlayer" cache, allowing the hook to be called again for those renders, fixing ShouldDrawLocalPlayer not working properly with multiple renders within a frame.
  • Prevent weld constraint assigning a global variable with the last created weld (Community Contribution)
  • Fixed performance discrepancy of Entity:GetMaterials() between different models
  • Fixed GM:PlayerLeaveVehicle not being called when the player is forced into a vehicle while being in a different vehicle
  • Entity.SetAngles properly sets angles on jeeps, they no longer snap back to old angles
  • Fixed some entities (such as props) reporting "took damage" as false in PostEntityTakeDamage when they are killed
  • Fixed some constraint library functions (such as HasConstraints, GetAllConstrainedEntities, etc) not functioning with the world entity
  • Fixed gmsave library (Spawnmenu save system) not saving constraints that are attached to the world entity on both ends (such as ropes)
  • Fixed duplicator library's Min/Max calculations for dupes