Garry's Mod Logo
schedule 29 April 2026
devblog

April 2026 Update

New mountable games, HUD improvements, content fixes, networking improvements and optimizations.

Rubat
Garry's Mod Project Lead
Estonia

New mountable games

With community effort and permission from the respective game developers, 2 new games are now available to be mounted in Garry's Mod: Black Mesa and Military Conflict: Vietnam!

As with other mountable games, you will need to own them on Steam first, which will enable players to use maps and models from these games in Sandbox and other gamemodes.

HUD Improvements

Some default HUD elements received some polish - the weapon selector, damage indicators, health and ammo displays.
The ammo HUD now correctly displays ammo for certain modded weapon types that use secondary clips, the default weapon selector can now display more slots and scroll weapon selection when there are too many weapons equipped to fit on the screen.

The HUD now also scales better at 4K resolution, preventing certain elements such as Sandbox notifications and voice chat from overlapping the ammo HUD.

New content & content fixes

The Combine APC is now a built-in vehicle, right in the spawnmenu, fully driveable by the player.
There are also numerous bug fixes to existing models for various issues such as props becoming pitch black when resting on ground, fire effects not displaying correctly and spawning wrong gib models when broken.

Network protocol changes

This update brings significant under-the-hood changes to the game's networking, enabling faster network transfer speeds to reduce server join times, and removing a whole host of unnecessary networking done by various entities, hopefully reducing overall bandwidth usage, especially on initial player spawn.

This update also switches many game systems to use double precision time, which should help servers to not need to restart or change maps as often and improve overall game feel after playing for a while on the same map.

Smaller stuff

As usual this update also brings a huge amount of fixes and other smaller changes. Some optimizations to performance and memory usage as well.

You can find the entire change list below.
add_circle

Features

  • Added Military Conflict: Vietnam and Black Mesa to mountable games list with permission from their developers (Community Contribution)
  • Added Combine APC vehicle to spawnmenu
  • Added 3rd skin to Combine Soldier player model that uses the Combine Soldier texture from Half-Life: Episode 2
  • Added a copy text button to server disconnection popup
arrow_circle_up

Improvements

  • Improved networking precision of world clicker - this fixes VERY jumpy tool ghosts in singleplayer when using context menu aiming, especially close to crosshair.
  • Changed damage indicator screen effects to use a "vignette" type texture to reduce fullscreen flashing
  • Default weapon selector can now display weapon slots 7-10 (if they are occupied)
  • Default weapon selector can now scroll when there are too many weapons in one slot to fit on screen
  • Reworked weapon positioning of the default weapon selector - it is no longer possible for weapons to be invisible/unselectable
  • Health and armor HUD now expands to fit 4 digits when necessary
  • Slightly adjusted ammo HUD to fit 9999s more comfortably
  • Default ammo HUD now supports showing secondary clips for weapons that use this feature
  • Fixed inconsistent ammo HUD counter colors when out of ammo
  • Slightly adjusted default HUD colors to have darker backgrounds and less bright text for better contrast on bright backgrounds
  • Improved default HUD (Health, Ammo, etc) text scaling at 4K
  • Made the player NPC squad HUD element fit all NPCs following you (up to 16), fixed it not having a background
  • Improved Sandbox notifications scaling and positioning at different screen resolutions
  • Moved voice chat UI so it no longer overlaps ammo HUD at high resolutions
  • Fixed loading screen and damage indicator panel size not updating after screen resolution change
  • Changed gun firing sounds from 140dB to 105dB to be less loud and high distances, and be consistent with other weapon sounds, such as the Crowbar
  • Spawnmenu now more correctly reflects disabled state of per-player disabled tools (by code, not just convars)
  • Reset firing delay when holstering weapons while in reload animation. This fixes immediately re-deploying certain weapons, such as the .357, not allowing you to fire until the cancelled reload time ends
  • Spawnicon Editor can now be resized
  • Allow copying server name from detailed server view
  • Updated some weapon spawnmenu icons that had poor contrast
  • func_conveyor entities now push physics props as well as players
  • Better match view model hands (gloves) for male11, male12, male17 and Arctic Mossman player models
  • Striders now fall to the ground if moved via physics gun. This also addresses the bug where Antlion Guard can launch the strider into the sky infinitely
  • Display a notification when Steam Workshop downloads fail while joining a server
  • Updated server version mismatch disconnect messages to directly say which side (client or server) is the problem
  • Better spawnicon generation for view models
  • Changed DMG_ACID screen damage effect to be different from radiation damage effects, now has green-ish tint
  • Fixed DMG_PLASMA making the screen just half black (now has cyan effect), and changed the associated sound from infinitely looping loud sound to the burn damage effect
  • Made Annabelle in player's hands produce same shooting sound as NPCs do
  • Made plastic materials emit some particles on bullet hit (Affects props like the blue barrel, Lamarr cage, etc.)
  • Stop Citizens endlessly lobbing health kits at injured NPCs since NPCs can't pick them up (Vortal Combat section in Half-Life 2: Episode 2 )
  • Made Combine Shotgunner Playermodel texture have colorable eyes (Community Contribution)
  • Updated Nova Prospect Combine Soldier player model materials to support player colors and be more consistent with other combine player models visually
  • Added new Team Fortress 2 maps to the Team Fortress 2 category, added icons for new Team Fortress 2 maps
  • Reworked internal workings of Finger Poser to add modding support to it - now also shows right hand as a right hand
  • Added color support for Arctic player model (Community Contribution)
  • Updated Rebel texture sheets (NPC and player models) to fix a small texturing issue on the gloves (Community Contribution)
  • Fixed Alyx playermodel coloring covering some wrong areas (Community Contribution)
  • Made airboat flashlight a bit brighter, shine a bit father, and fixed horizontal shadow cutting off due to vertical FOV
  • Disabled pose parameter interpolation for vehicles in singleplayer - This makes wheels (suspension) not lag behind the actual physical wheels in singleplayer
  • Increased default fade distance of detail props to match Half-Life 2 post anniversary update
  • Fixed Faceposer using incorrect (different from the range shown in UI) flex range when setting the values on the server
  • Applied some Half-Life 2 killicons to some Half-Life: Source weapons that look similar
  • Implemented case insensitive search and arrow key animation switching for spawnicon editor (Community Contribution)
  • Clarified what "Max Ragdolls" server setting does in Utilities => Admin => Server Settings with help text
  • Improved rendering of the duplicator tool bounds when intersecting with world
  • Improved duplicator spawn position calculation to avoid spawning duplications in walls
  • Show selected duplication name/icon in context menu
  • Dynamic resupply entity changes (Half-Life 2 campaigns) - use Player's max armor value instead of hardcoded 100, use "canon" values for max ammo of each ammo type (instead of 9999), so it spawns more useful ammo types instead of shotgun ammo most of the time
  • Added some Episodic and CS:S props to the first 2 default spawnlists (Community Contribution)
  • Added Tool Gun world model to default "Garry's Mod" spawnlist
  • Updated and reorganized default CS:S spawnlists - now includes all models since they are all available by default now
  • Added spawnicons for most CS:S props, re-rendered weapon spawnicons to be brighter
  • Made model sorting in "Browse => Games/Addons" in spawnmenu be case insensitive
  • Updated default detail sprite material to appear closer Half-Life 2 and fade out correctly
  • Restored mega Gravity Gun armor reduction effect during Half-Life 2: Episode 1 with hl2_episodic 1
  • Limited Colour tool Render Mode and Render FX inputs to valid ranges to prevent exploits
  • Fixed missing CS:S painting textures for the 2 unused painting models
  • Added density sliders to fogui interface
  • Strip out more obnoxious symbols from server names
  • Disallowed duplicating gmod_hands entity to fix certain saves somehow duplicating those entities
  • Updated language files
handyman

Fixed

  • Fixed freezes when removing large amount of entities in Sandbox at the same time (Such as undoing Dupes)
  • Fixed NPCs being unable to pickup constrained (in Hammer) weapons on Half-Life 2 campaign maps
  • Fixed some late-game Portal 1 maps missing their elevators
  • Enabled Half-Life 2: Episode 2 flinching behaviors for npc_zombie
  • Fixed Toolgun trace not hitting parented props again (Community Contribution)
  • Fixed some models not producing flashlight shadows
  • Fixed water rendering regression on existing maps that were not using realtime reflections (such as Team Fortress 2 maps)
  • Fixed water with flowmaps not working with cubemaps
  • Fixed scaled static props not rendering depending on player view angles
  • Fixed scaled static props not having scaled physics
  • Fixed deploy animation for Crossbow when it has no bolt loaded
  • Make Pistol weapon use its empty animations when the magazine is empty
  • Antlion Grub death ragdoll now inherits color/material from the NPC
  • Fixed some sounds, such as Zombine sounds, not playing without Half-Life 2 mounted
  • Fixed player wall slams playing sounds of the last ground surface the player was on, instead of the wall material the player hit
  • Fixed Sun Editor not inheriting map values on spawn properly
  • Fixed Combine Soldiers using rifle walk/run animations when wielding shotguns
  • Replaced Barney's face texture on Half-Life 2: Episode 1 maps with the correct one
  • Potentially fixed voice chat breaking for specific players until game restart
  • Fixed Half-Life: Source crowbar hit sounds not playing in multiplayer
  • Fixed buggy behavior of Half-Life: Source crossbow with its zoom (By removing the "instant" attack mode)
  • Fixed Flechette Gun being able to shoot through thin walls
  • Fixed animation canceling exploit with the RPG reload
  • Fixed airboat speedometer not updating
  • Fixed jump/land sounds not playing for non local players
  • Fixed underwater ambient sound never playing
  • Fixed Jeep & Combine APC not updating underwater state for the driver when entering/exiting water in the vehicle
  • Fixed Steam Workshop downloads not mounting gamemode files when joining servers if the addon was not subscribed to/mounted beforehand
  • Fixed airboat wake trail color, fixed first entry to water creating trail from height of 0 in map space
  • Fixed Shotgun/Annabelle fired by NPCs not having any bullet tracers
  • Material tool now more consistently affects flashlight shadows when making glass into metal, etc.
  • Fixed Zombie and Zombine blood color being Yellow/Green instead of Zombie color
  • Fixed Sandbox tools showing color alpha selectors when alpha is unused by the tool
  • Fixed decals on high poly models spazzing out across the whole map
  • Fixed "Edit entity" property creating Lua errors when the entity was removed after menu has opened (Community Contribution)
  • Fixed Lua errors when NPCs try to use Fists and Camera SWEPs
  • Prevented invalid data in spawnmenu lists added by addons breaking spawnmenu search with Lua errors
  • Fixed Lamp becoming missing texture for split second after being duplicated
  • Fixed player model eyes pointing to X axis when paused in singleplayer
  • Fixed player model faces (such as Alyx or GMan) in multiplayer (flexes flickering, or being set to wacky values, resulting in sideways mounts)
  • Fixed Lua error counts in Problems panel being covered up by the Copy to Clipboard button
  • Fixed server list single server refresh not removing weird symbols from server name (Community Contribution)
  • Implemented a small fix for dynamic lights (Light tool) when lighting bump-mapped materials
  • Prevented opening chat with cl_drawhud 0 locking you out of main menu/console
  • Fixed main menu being a tiny square for split second on game start up
  • Fixed Half-Life: Source ammo not respawning at correct positions with mp_weaponrespawn 1
  • Fixed killfeed showing neutral/fearful NPCs as friendly when killed by the player
  • Updated AppID for Counter-Strike: Global Offensive to the newly added separate game rather than using a CS2 beta
  • Fixed single character folders not working for textures on Linux, causing certain maps to have no textures at all
  • Fixed Hologram/Distort render FX affecting attachment & shadow positions - This fixes driving a hologram jeep causing player view to jitter around with the animation
  • Fixed sounds played via env_microphone entity not producing subtitles
  • Fixed light origin on weapons for local player in 3rd person
  • Force ragdoll light origin to the first physics bone - fixes strider and some other models appearing black after spawning, or when close to ceilings
  • Fixed Combine APC gibs not despawning after a short while like intended
  • Fixed some prediction errors with Half-Life: Source weapons
  • Fixed prediction errors with finger poser & duplicator tools
  • Fixed prediction errors with Bugbait right click
  • Fixed JIGGLE_IS_BOING jiggle bones not being scaled with model scale
  • Fixed prediction errors with SLAM and when holding Gravity Gun right click
  • Fixed dissolve effect visuals on models without hitboxes
  • Fixed fire effect not working correctly for certain built in props (models without hitboxes defined). This affects all PCF particles.
  • Fixed missing model for npc_missiledefense & other adjustments so it works better
  • Fixed props_phx\trains\tracks\track_switch2.mdl physics model (Community Contribution)
  • Fixed normals and physics mesh for Gravity Gun/Physics Gun world model
  • Fixed wood_wire_angle* props spawning glass gibs
  • Fixed some built-in glass props spawning gibs in a single spot
  • Fixed Shotgunner Combine Soldier player model erroneously using normal map from regular Combine Soldier
  • Fixed lighting on citizen view model hands due to flipped normal/bumpmap texture
  • Fixed Odessa and certain male citizen player models having their lips sealed shut
  • Fixed smscorch2_subrect.vmt having wrong texture offset (Fixes SmallScorch decal drawing incorrectly sometimes)
  • Fixed Ravenholm skybox texture on the Half-Life 2 map with Hunter-Chopper fight
  • Fixed Portal 1 energy pellet having a missing texture
  • Fixed hunter_flechette.mdl so Flechette Gun (and Hunter NPC) projectiles fly straight, not slightly tilted
  • Fixed light origin on a whole bunch of built-in models, so when they are spawned, they don't turn pitch black immediately or at certain resting angles
  • Fixed door opening animations not always playing for door03_slotted
  • Fixed certain door models with handlebar hardware type having incorrect lighting
  • Fixed door skins 13 and 14 having broken handlebar texturing
  • Fixed normals on balloon_classic.mdl LODs and camera.mdl LOD 3, causing them to look darker when far away
  • Fixed normals tri1x1.mdl and removed the extra unintended mesh on that model
  • Fixed normals on stunstick world model
  • Include tree_deciduous_card_01.mdl with the extra skin to fix some visual inconsistencies on HL2 maps due to 20th anniversary HL2 update
  • Fixed missing sounds for SLAM mine activation
remove_circle

Removed

  • Removed auto generated server list flags - It's been long enough for people to adjust to setting sv_location
  • Removed explosion sound from Emitter tool's underwater explosion effect
  • Removed "player is dead" effect that covered entire screen red, which was applied inconsistently anyway
add_circle

Features

  • Added screenspace_general_8tex shader
  • Added SurfaceName to trace concommand
  • Added a few new features to prop_vehicle_jeep - DisableRadarDetectEnemies, EnableHazardLights, DisableHazardLights, ReleaseBusterFromCargo Hammer inputs, NoHazardLights key value (Hammer support included)
  • Added new spawnflag for func_tracktrain - GoldSrc rotation
  • Build and ship mksheet.exe (for particle sprite sheets)
  • Added EnableSpotlight Input to npc_cscanner
  • Restored sv_showhitboxes convar
  • Added "damage" keyvalue to crossbow_bolt entity
  • Implemented STUDIOHDR_FLAGS_VERT_ANIM_FIXED_POINT_SCALE flag support for model flexes
  • Implemented $pointsamplemagfilter shader parameter for LightmappedGeneric shader
  • Implemented CHAR_DIRSTEREO for sounds
  • Added a toggle for r_DrawModelLightOrigin convar to console quick actions (extras button)
  • Added "Allow Roll" spawnflag to func_tracktrain
  • Network m_bLocked state for prop doors to clients
  • Network m_bLocked state for vehicles and prisoner pod to clients
  • Network prop door m_eDoorState to clients
arrow_circle_up

Improvements

  • Improved maximum possible network speed
  • Improved game smoothness at high uptime by switching timing logic to double precision
  • Increased FOV networking bits from 8 to 16 to maintain precision
  • Network SWEP:CallOnClient and GM:HUDWeaponPickedUp using EHANDLEs for reliability
  • Reduced network bit counts of various networked properties from 32bit to as little as needed
  • Switched BroadcastLua/SendLua features to the net message system allow longer than 256 characters inputs
  • Potential Sandbox gamemode memory usage improvements (especially for dedicated servers)
  • Made "ProcessServerInfo failed" kick show a popup instead of just booting to menu
  • Ported CS:GO's TexturePacker and FontTextureCache - Fixes a weird font corruption issue
  • Updated FastLZ library
  • Updated BASS.DLL to 2.4.18.3
  • Updated vphysics.dll to TF2-double precision version (Windows & Linux only)
  • Fixed PhysGun/GravityGun resetting buoyancy on picked up props (Windows & Linux only)
  • Bumped mp_decals default to 1024 (from 200), added description
  • Minor optimizations for new game and server list menu screens (Community Contribution)
  • Try to occasionally compact pending sounds vector after they are sent out, to reduce runtime memory usage, instead of waiting for player to disconnect
  • Clear m_CompensatedEntities of invalid entities every 60 seconds to prevent server crash in highly unlikely scenario of nobody shooting a gun for a very long while in the server
  • Applied proposed SV_PackEntity optimization (Community Contribution)
  • Clicking disabled DMenuOption no longer closes all menus
  • Disabled DMenuOption no longer react to hover events (visually)
  • Loading screen data now respects sv_visiblemaxplayers
  • Send local player exclusive data of weapons to spectators as well, such as current bullet count
  • Do not forcibly crash the server if player_connect event failed to create - now prints a warning and continues on
  • Added texture name to ShaderAPIDX8::CreateD3DTexture warning, and add the likely fail reason to help modders fix the issue
  • Changed "gamemode is nil" crashes into Lua errors
  • Made env_embers compile with parenting support, so its particles follow the parent
  • Switched Dynamite entity to not use timer.Simple (exploit fix) and clamp delay to 3600
  • Make particle COLLISION_MODE_INITIAL_TRACE_DOWN actually trace down (Z axis) instead of tracing on the X axis
  • sv_showimpacts convar now draws server hitboxes in blue color
  • Added description and min/max to engine_no_focus_sleep convar
  • Alias prop_portal_stats_display to prop_dynamic - fixes some Portal 1 maps missing elevators
  • Alias func_simpleladder to use func_brush - fixes Left 4 Dead ladders not working
  • Made light entities non-networked to make room for more of other networked entities. No functionality loss.
  • Potential server memory usage optimization when many players are present on the server
  • Reload soundscripts when games are mounted - fixes no voice lines playing in Half-Life 2 episodic maps when the game was started without HL2 mounted, and then HL2 is mounted.
  • Clamp bot player count in the server browser, and apply all clamping to serverlist.Query
  • Force lowercase filenames for CUtlFilenameSymbolTable on non windows platforms as well, should help maps on Linux (TF2 SDK Community Contribution)
  • Made cl_showhitboxes 2 show ONLY player hitboxes
  • Removed 12 character cap for address of outgoing packets via net_showudp convar
  • Clear _rt_Camera texture to black on disconnect
  • Clear water reflection/refraction textures when unused (such as when out of map bounds, or when disabling either one live)
  • Added some invalid handle checks to shadow rendering to prevent crashes
  • Added some sanity checks to map loading to prevent crashing
  • Replaced the while loop from DModelPanel render with surface.GetScissorRect
  • Allow solid triggers to touch non-solid triggers, allowing loose weapons and ammo entities to touch remove/teleport triggers, etc.
  • Unhide r_particle_timescale convar
  • r_radiosity now defaults to 4 again, to hopefully improve prop lighting on all maps
  • weapon_fists now sets damage position (Community Contribution)
  • Made closedcaption fonts anti-aliased (Community Contribution)
  • Stop CSoundPatches on entity removal to stop looping sounds never stopping for removed entities
  • Prevent CSoundPatches from playing when they have invalid/removed entities associated with them
  • Applied some clientleafsystem invalid index checks from TF2 SDK
  • Applied some bounds validations in shader API
  • Use actual model scale for jiggle bone scaling - It was calculating the scale from bone orientation before (??) which was causing oscillations on some models when unscaled
  • NPC spawning entities (npc_template_maker) will now cleanup half-spawned non NPC entities
  • Slightly improved error handling for saving JPG/PNG files (spawnicons)
  • Simplify how we get Steam APIs to hopefully prevent crashes
  • Added virtual destructor to ILuaThreadedCall for binary modules
  • Updated UnlitTwoTexture shader to CS:GO version - Includes support for TRANSLUCENT shader combo and BEACHFOAM material parameter from CS:GO
  • Reject more invalid Water shader combos (with console messges)
  • Fixed fallback skybox texture trying to use a non-existent texture
  • Improved performance of scaling physics objects (Community Contribution)
  • Paths starting with slashes are now considered invalid
  • Implemented batched overlay rendering support for better map decal performance
  • r_staticpropinfo 5 now shows static prop bounds
  • Bumped maximum RenderData size to 16MB (from 4.4 MB). This is a bandaid fix for many skinned meshes existing on screen at once causing crashes (on x86-64)
  • Make "Unable to load module X" crash popup give a reason on Windows
  • Added VPROF scope to IsPhysicsObjectValid
  • Removed VPROF scope from LuaInterface::GetType
  • Show end of the URL in HTML panel console messages
  • Added some self checks in game client launcher
  • Do not precache AR2 ball materials until used, they can now also unload on map change
  • Do not forcibly precache muzzleflash materials that are not even used
  • Do not precache some Half-Life Source weapon assets
  • Many, many smaller internal cleanups and fixes
handyman

Fixed

  • Dedicated server workshop system now loads the cache (overwriting) if ANY of the server collections fail to be retrieved.
  • Fixed retry logic for dedicated server workshop collection info polling
  • Fixed multi-bone static prop models flashing across the map randomly
  • Fixed health/maxhealth not networking in singleplayer for Nextbots and NPCs
  • Fixed env_wind and shooting causing infinite looping at high CurTime
  • Fixed crashes (on game exit?) to do with HTML panels (CEF)
  • Improve TWOPASS model detection & make alpha-tested materials be considered opaque
  • (Sub)Material overrides now affect depth passes
  • Fixed rapidly loading models (like from dupes) affecting model's translucency flags for the rest of the session
  • Prop Spawn effect no longer breaks depth pass
  • Do not draw effect rings in the Depth Pass (Community Contribution)
  • "Fixed" certain built-in weapons rendering effects in opaque pass
  • Remove forced RENDERMODE_TRANSCOLOR from Balloon entity, so it gets correct render group and renders in the depth pass
  • Fixed entities with material overrides being in the wrong render group if the previous frame changed the material's opacity
  • Fixed an infinite loop crash with Inverse Kinematics on certain models
  • Fixed potential crashes with malformed models
  • Fixed net_graph lerp value precision (TF2 SDK Community Contribution)
  • Internal fixes for VGUI build mode and TextImage::GetText potential crashes (TF2 SDK Community Contribution)
  • Scaled physics props now properly work with Source Engine saves (TF2 SDK Community Contribution)
  • Fixed dynamic shadows poking through thin surfaces (walls) (TF2 SDK Community Contribution)
  • Fixed potential crashes with some map loading functions
  • Fixed a crash in the particle system when querying hitboxes of brush models
  • Fixed VOX system's map id replacing not working at all, causing certain NPC speech sounds to never play
  • Fixed severe performance loss when many team no-collided players stand in the same spot (Make use of NOTEAMCOLLIDE in serverside ShouldCollide)
  • Fixed Player:ScreenFade fade times being truncated unexpectedly when set to higher values
  • Fixed networking of ammo types for weapons
  • Prevent infinite loops in map logic system - when encountering over 100 inputs per tick, delay inputs until next tick
  • Fixed status console command trying to use non existent convars
  • Fixed spawnicons not rendering when always returning true in GM:RenderScene
  • Fixed crashes to do with flexes on NPC models
  • Fixed a crash with CrossbowLoad effect
  • Fixed a typo in nags_alyx.txt, which caused invalid scene files attempting to be precached
  • Handle potential mesh related crash issues (Out of bounds array access)
  • Fixed a crash when running "+showbudget" on SRCDS
  • Jalopy no longer spawns a trigger_vehicle_cargo entity at all times. Instead, spawn the entity only when asked to, i.e. CargoVisible key value is set before Entity.Spawn is called (maps), or SetCargoHopperVisibility input is used on the car. This input can now also be used to properly disable the functionality by doing SetCargoHopperVisibility 0. This means that Sandbox Jalopy no longer uses 2 edicts, and will not be able to hold a magnusson device in the invisible holder (unless explicitly enabled beforehand)
  • Fixed numerous potential crash issues
  • Don't reset per-player Sandbox item counts on serverside Lua Refresh of Sandbox-derived gamemodes (Community Contribution)
  • Added fallback material sprites/flare6 for the env_funnel entity, so its not missing material with no games mounted
  • Fixed an exploit that allowed spamming player_pickup entities on the server that would be never normally cleaned up
  • Fixed crashes with certain material proxies when used on static props
  • Fixed static props with material proxies flip flopping render groups, causing visual flickering
  • func_movelinear now properly supports changing parents via SetParent input - Fixes a bug on ep1_c17_01 with one of the doors
  • Fixed serverside player hitboxes in vehicles when the player is at odd angles
  • Fixed some player animation/hitbox client/server desync for vehicle animations (steering, rollercoaster) and the "Ear grab" animation
  • Fixed a Lua error due to ErrorNoHaltWithStack not being declared in saverestore library, and make the library only use that function to help pinpoint erroring addons
  • Fixed Lua errors when manually running internal concommands dupe/save_publish, and an accidental Lua global variable in DModelPanel (Community Contributions)
  • Fixed potential crash issues with the dropship NPC, headcrab canisters entity and the detail object system
  • Fixed Half-Life: Source Gauss Gun complaining about out of bounds values on the effects it creates
  • Fixed a crash in CVoiceGameMgr::ClientConnected due to binary module usage
  • Fixed file list concommand autocomplete (such as for load concommand) searching mounted game content
  • Send replicated convars in batches of 128 on server join - fixes an overflow/network channel corruption issue on server join when the server tries to send over 255 replicated convars to the client.
  • Fixed leaks with CProceduralTexturePanel - fixes color picker preview in particle editor breaking after a few uses
  • Fixed initial angle snap for thirdperson camera (Community Contribution, TF2 SDK)
  • Make flDeadtime in prediction code use correct data type, so old prediction entries are not prematurely removed when close to max sv_unlag time (Community Contribution)
  • Fixed color mismatch between cl_showhitboxes and sv_showhitboxes
  • Fixed multiple crashes with HLTV
  • Fixed a crash when trying to load weird/invalid VTX model files (From Back Mesa Blue Shift mod?)
  • Fixed crashes where Alyx is trying to enter a removed Jalopy vehicle (Also makes Alyx cancel trying to enter the vehicle if it is removed while she is running to it)
  • Restored Steam Peer-to-Peer functionality on Linux dedicated servers
  • Fixed a crash when context menu driving func_button entities in multiplayer
  • Fixed potential crash issue with rope rendering
  • Fixed missing CloseCaption_Small font
  • Implemented vendor specific shadow depth format test for Intel GPUs (fixes flashlight not working)
  • Fixed crashes with weird .phy model files
  • Do not check toolmode_allow_* convars for options in the Utilities spawnmenu section
  • Fixed a number of crashes with some specific entities on spawn (when misusing them)
  • Implemented more model data validations to prevent crashes
  • Move where model scale limits are enforced to prevent model scale related crashes from map logic
  • Fixed prop_vehicle_jeep's CreateLinkController input leaking entities if misused (called 2 or more times)
  • Fixed a number of console commands crashing due to missing player when used on dedicated servers (For example prop_physics_create)
  • Fixed a NPE crash with network transmission check
  • Fixed decal related crashes with static props
  • Fixed Physgun glow rendering in buildcubemaps and when the player is invisible in 3rd person
  • Optimise menu digest scheduling (Community Contribution)
  • vgui_slideshow_display refuses to scan invalid folders for slides, improving performance when misused
  • Rebuild ambient cube indexes for when there are >65536 of them in a map - fixes large maps having bad prop lighting
  • Do not assign client-only color_correction entities serverside - this fixes map cleanups applying color correction that is not present when just starting the map
  • Changed console messages from the buddha command to be sent to client console like expected, instead of the server console previously
  • Fixed a NPE crash with trigger_tonemap on map cleanup while a player is inside the trigger
  • Fixed trigger_weapon_strip preventing weapon pickup indefinitely if removed while player is inside the trigger
  • Fixed effects of trigger_playermovement sticking when removed with a player inside the trigger
  • Static prop scale now applies to static prop lighting origin
  • Added models/*.ani to server download whitelist
  • Fixed drone clips being considered water on CS:GO dangerzone maps
  • Fixed bugbait effects crashing in a certain scenario
  • Fixed rare crashes with Entity:FireBullets in a specific scenario and hitting nothing
  • Fixed $treeswaystatic parameter not being copied to DepthWrite shader instances
  • Fixed multiple crashes with certain entities when server is at entity limit, such as dropships carrying striders
  • Applied mitigation for server DoS exploit with memory allocating in networking
  • Fixed crashes when trying to create physics objects too soon
  • Fixed infinite loops in model animation code with malformed models
  • Fixed some models with jigglebones becoming invisible randomly (Community Contribution, TF2 SDK)
  • Potentially fixed rarely getting notifications in chat for already unlocked achievements
  • Fixed Player:Lock and server spawns causing drowning noise
  • Fixed alpha-tested brushes not rendering in SSAO pass
  • Fixed warnings about "two path IDs" during loading engine saves
remove_circle

Removed

  • Removed r_norefresh, CRender::m_frameStartTime, duplicate definition for mat_depthbias_normal
  • Removed clientside part of prop_vehicle_cannon from builds (Serverside part was never in GMod)
  • Disabled all unused FreeImage plugins
  • Removed "scripts/game.txt" (doesn't seem to be used by the game)
  • Removed unused showhitlocation convar
  • Removed r_maxdlights convar as it is already set to its max value anyway
  • Removed ZLib and XZip libraries from GMod, since they are unused by the game
  • Removed unused HUD/GUI elements from client builds
  • Removed CRC calculation for game_sounds_manifest.txt loading, since the CRC is never used
  • Removed the entire GameStats(Uploader) system - It's never used by anything
  • Removed Language system from dedicated server builds (since it is unused there)
  • Removed particle_test* convars/concommands
  • Removed simple_bot entity (and simple_bot_add concommand)
  • Removed hunter_shoot_flechette concommand
  • Removed fadein and fadeout console commands
  • Removed most impulse commands - all of these are either useless or do nothing, or are replaced by Sandbox features. (impulse 101 continues to work)
  • Removed collision_test, kdtree_test, voxeltree_view, voxeltree_playerview, voxeltree_box, voxeltree_sphere console commands
  • Removed drawcross, drawline, cast_ray, cast_hull, test_dispatcheffect console commands
  • Removed hidden "killtarget" concommand
  • Removed a lot of unused internal fields, potentially improving memory usage
  • Removed various unused networked fields, saving on network bandwidth
  • Logic_playerproxy - removed defunct SetLocatorTargetEntity input
  • Removed remaining CSteamAPIContext references to enable updating Steamworks SDK to latest versions in the future
  • Removed lua_matproxy_nobindmat convar, Lua matproxies no longer push thousands of material objects to Lua
  • Removed now unused autoaim_max_deflect convar
  • Removed ent_autoaim concommand
  • Removed the unused, never working player Hint system
add_circle

Features

  • func_tracktrain - Added missing spawnflag (4) to Hammer, updated description of "HL1 train" spawnflag
  • Added "Has Gun" keyvalue to prop_vehicle_jeep in Hammer
  • Added search and "copy name" button to Particle Editor (-tools mode)
  • Added 2 new parameters to VRAD: -LeafAmbientSampleReduction and -AmbientFromLeafCenters
  • Implemented drag'n'drop support for HLMV model loading
  • VBSP now adds extra keyvalues to worldspawn entity about itself that could be useful for debugging:
  • "vbsp_version" which will contain the VBSP compile date (of the map compiler, not the map)
  • "vbsp_exe" with 2 possible values "gmod" and "gmod_64". Indicates the map was compiled using GMod's VBSP. (32bit and 64bit)
arrow_circle_up

Improvements

  • Updated ambient_generic radius description in Hammer to hopefully prevent confusion
  • Made auto generated values of func_breakable_surf in Hammer not appear as broken, and provide explanation as to what they do
  • Made auto generated func_useableladder origin property in Hammer not appear as broken
  • Changed "????" text in Hammer spawnflags section to a more descriptive text "Flag with missing description (id)"
  • Adjusted "Invalid value %f for -maxlightmapdim" warning in VBSP for better clarity
  • gmad.exe can no longer overwrite existing files when extracting .gma files
  • Increased minimum size of HLMV window so all its UI elements fit without resizing
  • HLMV window title now always contains program name (instead of just the opened model name)
  • Make $maxverts optional in StudioMDL (only has an effect when used in a .qc file)
handyman

Fixed

  • Fixed prop_vehicle_jeep having static prop key values in Hammer that are not applicable to it
  • Added descriptions to some entity fields where there were previously none in Hammer
  • Fixed startsound/stopsound properties for some entities in Hammer having invalid default values (Community Contribution)
  • Prevent materials being deduplicated in the HLMV material list, so all missing material names now show correctly
  • Reset particle previews in Particle Editor when they were hidden and became visible - workaround for some particle previews just becoming blank after a while of not being simulated
  • Fixed StudioMdl crashes with .smd animation files accessing out of bounds bones
remove_circle

Removed

  • Removed non existent entity prop_vehicle_cannon from Hammer
  • Removed fireballsprite from env_explosion in Hammer (never did anything)
  • Removed coldworld and xbox specific fields from worldspawn in Hammer
  • Removed WaveHeight from func_water_analog in Hammer
  • Removed SetLocatorTargetEntity from logic_playerproxy entity in Hammer (non functional in Garry's Mod)
  • Removed non functional "HUD Locator Precache" spawnflag from prop_vehicle_jeep in Hammer
  • Removed "Ember type" from env_embers in Hammer (never did nothing)
add_circle

Features

  • Added CNewParticleEffect:SetShouldSimulate/CNewParticleEffect:GetShouldSimulate
  • Added game.GetMapChangeCount
  • Added render.IsTakingScreenshot
  • Added new STUDIO_ flags argument to WEAPON:ViewModelDrawn, GM:PreDrawViewModel, GM:PostDrawViewModel, GM:PreDrawPlayerHands and GM:PostDrawPlayerHands
  • Added Entity:CopyBoneMatrix
  • Added COLLISION_GROUP_HL2_SPIT enum.
  • Added more data to util.GetSunInfo, such as size, material and color
  • Added game.GetWindSpeed
  • Added game.Get3DSkyboxInfo
  • Added ActivityWeight/ActivityID fields to util.GetModelInfo sequences
  • Added surface.GetScissorRect (Faster than surface.GetPanelPaintState)
  • Added mesh.BoneData
  • Added second argument to Mesh - boneWeights
  • Added IMesh:DrawSkinned (Lua mesh hardware skinning support)
  • Implemented Panel:Clear for DPropertySheet and DCollapsibleCategory
  • Added ENTITY:ResolveCustomFlyCollision( trace, vecVel )
  • Added ProjectedTexture:SetSkipShadowUpdates/ProjectedTexture:GetSkipShadowUpdates
  • Added ability for vehicles in spawnmenu to set health on spawn
  • Added ability for Spawnmenu NPCs (Sandbox) to randomize their model on spawn (Community Contribution)
  • Added PhysObj:GetBuoyancyRatio
arrow_circle_up

Improvements

  • Reset effects of render.WorldMaterialOverride, render.ModelMaterialOverride and render.BrushMaterialOverride on disconnect
  • Prevent entity precaches on map start from calling GM:OnEntityCreated/Removed hooks
  • Add more entities to protected list (cannot be parented, overwritten or removed) - gmod_gamerules, ai_network, soundent, instanced_scripted_scene, ai_ally_speech_manager, scene_manager, npc_barnacle_tongue_tip
  • Entity:GetModel force lowercases weapon world models too (It was already forcing lowercase on all other entities)
  • Reenabled net message buffer limiters so net.BytesLeft should now work as expected
  • Apply some random-ish patches from LuaJIT repo, including a memory allocator fix
  • Made Entity:SetLightingOriginEntity use model illumination position when given an entity with a model
  • RichText:SetText now discards \r and \0 characters - this is consistent behavior with RichText:AppendText and fixes Panel:GetText not working correctly after SetText and AppendText calls in that order
  • Player:Spawn will now force exit the player from their vehicle
  • Allow GM:PrePlayerDraw/GM:PostPlayerDraw recursion up to 10 deep
  • Micro optimizations for Matrix & Entity:GetBoneMatrix
  • Micro optimizations for Vector, and __div, __mul, Mul Vector methods
  • Entity:SetCollisionGroup once again allows HL2 specific collision groups
  • Queue simple timers to next frame if called from a simple timer callback (if using the same callback function we are currently executing)
  • Micro optimization for sql.QueryValue (Community Contribution)
  • GM:HUDShouldDraw now gets called for cl_showfps panel (when active)
  • Applied correct rendering matrices for GM:PreDrawHUD and GM:PostDrawHUD, so calling cam.Start2D is no longer necessary
  • Moved calling of GM:PreDrawHUD slightly later, so it renders in the 2D view, just like GM:PostDrawHUD does
  • Moved GM:PostDrawEffects to be called slightly sooner than before, so it is called in the 3D view, not after it, and also is consistently called only when GM:PreDrawEffects is, not at all times.
  • Make game.GetMapVersion also return the BSP version
  • Allowed render.Capture to run with console open when a custom render target is set
  • chat.AddText now handles numbers like expected
  • Player:PlayStepSound volume argument now defaults to 1
  • Minor optimizations for Matrix() and Angle() global functions
  • Clamped animation playback rate to networking limits when set by Nextbot:BodyMoveXY internally
  • More strict type checking for table members, for tables passed to engine functions (Will throw non halting Lua errors)
  • Potential micro optimization for trace filter tables
  • mesh.Begin now throws errors with invalid primitive counts
  • Apply name restrictions to concommand.Add for certain invalid characters
  • Make joystick input add to mouse delta, not replace it - since the player can still use both at the same time (CUserCmd:GetMouseX)
  • Pass GM:AdjustMouseSensitivity's arguments to WEAPON:AdjustMouseSensitivity (Community Contribution)
  • IMesh:BuildFromTriangles will now read weights from util.GetModelMeshes - It will only read 2 weights max (as per hardware skinning limtiation), while util.GetModelMeshes can return up to 3!
  • concommand.Add now errors when given invalid parameter types
  • Added type checking to Entity:PhysicsInitConvex's second argument
  • render.ModelMaterialOverride will no longer override current override type
handyman

Fixed

  • Fixed Player:DropObject not working for Physics Gun without its first argument
  • Rework how trace whitelist works - it now better respects the collision group/mask, using it when testing for whitelist, instead of inverting it after the entity failed to pass the whitelist
  • Fixed a material refcount issue with render.MaterialOverride - occurred with dupe icon generator where the outline became missing texture with bigger dupes
  • Fixed potential refcount issues with render.MaterialOverrideByIndex, render.WorldMaterialOverride, render.ModelMaterialOverride, render.BrushMaterialOverride
  • Fixed IMaterial:GetShader on Linux SRCDS always returning "shader_error"
  • Fixed "Error" and "ErrorNoHalt" not firing GM:OnLuaError on dedicated servers
  • Fixed EmitSound not firing GM:EntityEmitSound
  • Prevent infinite loops with GM:EntityEmitSound hook
  • Fixed Player:PlayStepSound not really doing anything in multiplayer
  • Make effects.BubbleTrail not turn start/end pos into mins/maxs, unexpectedly affecting the effect
  • Fixed vertex limit checking for mesh.Begin when using an IMesh object (65535 now, instead of 32768)
  • Fixed crashes with improper usage of SavePresets
  • Fixed potential crashing issues with util.GetModelMeshes
  • Fixed util.SpriteTrail leaking entities when given invalid arguments and throwing Lua errors
  • Fixed GM:AdjustMouseSensitivity returning nothing still affecting sensitivity
  • Fixed navmesh.GetNavAreaCount not matching navmesh.GetAllNavAreas return count
  • Fixed drive system not fully working in TTT
remove_circle

Removed

  • Blocked write access to fs_ convars from Lua
  • Blocked write access to mat_texture_list_txlod_sync and building_cubemaps convars
  • Blocked setinfo concommand
  • Disallowed Entity:PhysicsInit* functions on players
add_circle

Features

  • Added weapon group spawnflags to ttt_random_weapon (Community Contribution)
  • Added TTTRadarScan hook (Community Contribution)
  • Added equipment menu sorting options (Community Contribution)
arrow_circle_up

Improvements

  • Made "Confirm Death" button get disabled if pressed, like "Call Detective" button already does
  • Improvements to translate-ability of TTT gamemode (Community Contribution)
  • Use Garry's Mod language setting by default (Community Contribution)
handyman

Fixed

  • Fixed auto weapon spawning on non-TTT maps (Community Contribution)
  • Visual fixes for TTT weapons in singleplayer (Community Contribution)
  • Fixed hover visuals for credits store icons getting stuck