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
requiresv_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 ofcfg/mount.cfg
file to be loaded asmount.cfg
(for example,-mountcfgfile mount2.cfg
would loadcfg/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 to0
and back to1
- 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 untilSteamHTTP
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
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()
anderror()
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 to100000
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
andvtex.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 thanshaders/
) - 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 requireddeveloper 1
), make them warnings - Moved
map.pack
tocache/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 ofvoice_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
, removedpoint_clientcommand
andpoint_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
forstudiomdl.exe
from 32 to 64
Lua API Changes
Additions
- 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
andHitBoxSets
- 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
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.
- 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
- 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 playerconstraint.Motor
accepts a bool for"toggle"
parameter (was only accepting0
or1
)- 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 ofplayer.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 formatIMesh [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