Garry's Mod Logo
schedule 29 October 2024
update

October 2024 Update

Optimizations, Half-Life 2 animation fixes, and more.

Rubat
Programmer
Estonia
This update brings many animation fixes for the Half-LIfe 2 campaigns playable through Garry's Mod if you own the games on Steam.
There are also a few quality of life improvements - a search bar for addon presets and spawnicon editor menus, as well as a date of last visit for each server in the server browser.
For modders the new Particle Editor layout is now available, identical to how it works in newer Source Engine games. A whole bunch of new particle operators and initializers are included with the new layout a as well.
The update also includes a bunch of smaller fixes, optimizations, stability improvements and additions here and there, for modders and players alike. You can find the complete list of changes below.
add_circle

Features

  • Added game icons to the mountable game list in main menu (Community Contribution)
  • Added sbox_maxconstraints and sbox_maxropeconstraints - both default at 1000, sbox_maxconstraints is for non rope constraints only, not ALL of them, no-collide is considered a non rope constraint now for the sake of limits
  • Added a search bar in spawnicon editor, as well as the ability copy sequence names to clipboard (Community Contribution)
  • Added a search bar to addon preset list
  • Added tooltips for vehicles in spawnmenu, similar to those for SWEPs, SENTs
  • Added Resistance Turrets to spawnmenu if Half-Life: Episode 2 is mounted
  • Added "Last played date" for each server in the server browser
  • Added Fortress Forever and NeoTokyo spawnpoints and their Map Categories (Community Contribution)
  • Added map category in main menu for G-String game (Community Contribution)
arrow_circle_up

Improvements

  • Added map icons for new Team Fortress 2
  • Improved suspension travel animation on the Jalopy from Half-Life 2: Episode 2
  • Display the command that is not bound in Sandbox hints, when no key is bound for it
  • Localized many spawnmenu entities and other text (Community Contribution)
  • Made "hold shift to force open main menu" warning popup an informational one visually (Community Contribution)
  • Updated Half-Life Source Deathmatch icon to match its Steam icon
  • Always enable loading screen for the map console command, such as when ran from command line
  • Implemented clientside parts of recently portal entities (turret lasers and such)
  • You can now use Gravity Gun on portal energy balls successfully, they will be detected by the ball catchers and won't fly in random direction
handyman

Fixed

  • Fixed a bug where duplicated constraints would not be able to be cleaned up via Utilities > Admin or User Cleanup
  • Fixed duplicated no-collides not being cleaned up via "No-Collides" cleanup option
  • Fixed undoing no-collide constraint not restoring collisions
  • Fixed a typo in Motor Tool settings (Community Contribution)
  • Fixed Rollermine visuals when it is hacked by Alyx in Half-Life 2: Episode 1
  • Fixed certain characters having missing animations in Half-Life 2 episodes: Eli, Vortigaunt, Dog, Antlion, Combine Dropship, Mossman, Zombie, Poison Zombie and Fast Zombie, Headcrabs, Lamarr, G-Man
  • Fixed Kleiner model using incorrect idle animation
  • Fixed certain combine monitor props displaying wrong visuals in Half-Life 2: Episode 1
  • Fixed Half-Life 2: Episode 2 and Portal 1 endings not displaying correctly (camera position)
  • Fixed grabbing certain transparent props with the Physics Gun making the screen black
  • Fixed Half-Life: Source barnacle interactions with the player
  • Fixed Half-Life: Source Alien Controller not doing damage
  • Restored some more Half-Life 2-specific behaviors, controlled by the following convars - sk_plr_health_drop_time, sk_plr_grenade_drop_time and sv_robust_explosions
  • Improve how the Sandbox gamemode handles invalid spawnlists, so the spawnmenu doesn't completely break
  • RPG rocket no longer slows down every time it enters water
  • Fixed impaled NPCs (such as with the harpoon prop) not appearing in the kill feed
  • Fixed some animations from newer model versions not working (Portal 2, Left 4 Dead models)
  • Fixed incorrect particles spawning if there are too many precached in a session
remove_circle

Removed

  • Removed skins with missing textures from certain built-in props
arrow_circle_up

Improvements

  • "SAM" admin tool support for TTT bans (Community Contribution)
  • Updated localization for Turkish, Spanish and German (Community Contributions)
  • Fixed selecting "Swedish chef" language setting the language to an invalid value (Community Contribution)
handyman

Fixed

  • Fixed traitor button rendering inconsistencies & optimization (Community Contribution)
  • Fixed ragdoll not being created if ttt_dyingshot is on (Community Contribution)
  • Check data_static/ for rearm scripts for use in workshop addons (Community Contribution)
add_circle

Features

  • Added a whole bunch of particle system operators and initializers from CS:GO, including additional properties to existing ones
  • Added SetTarget1-SetTarget4 map inputs to logic_choreographed_scene/scene_entity
  • Added hide_server convar, which when set to 1 will hide the server from the server browser
  • Implemented experimental auto-refresh support for weapons in spawnmenu - changing weapon info (including adding a new weapon) will update/add the weapon in spawnmenu automatically
  • Added disable_on_remove key-value to logic_collision_pair
  • Added "Toggle" input to env_projectedtexture
  • Added "Start Disabled" spawnflag for env_projectedtexture (also rearranged options in Hammer in order of usefulness)
  • Implemented networking for scaled props spawning scaled prop gibs
  • Added `SetLifetime` input to prop_combine_ball - 0 or negative values makes it infinite
  • Added BallCaught and OnBallCaught input/output for portal energy ball entities (from Portal 2)
arrow_circle_up

Improvements

  • player.CreateNextBot sets the bot name by the time player_activate event is called
  • Bump max Source Engine save game size to 12M (from 3) - so the game is not stuck in a (near) infinite loop when trying to load malformed saves during level transitions
  • Bump "cvarlist" buffers from 128 to 1024, so console command/variable descriptions fit
  • Linux: Do not try to execute threaded tasks if there are no tasks - this addresses significant slowdowns on Linux (srcds?) to do with the filesystem
  • Removing point_spotlight will now also remove entities it created
  • More safeguards against loading malformed .gma files
  • Fixed weapon tracer spread on Y axis not being taken into account at all when the effect is fired serverside
  • Micro optimizations to spawnicon and static prop rendering
  • PhysModelCreateBox doesn't reset solid parameters
  • Replace missing .png/.jpg image data with solid white color - this would happen when a Material()'d .png file goes missing (is deleted). It used to be undefined behavior
  • func_smokevolume removes its particles when dormant (when not seen by the player), so the particles can be used by other entities since there's a global limit
  • Mount floating .GMA files before fetching info about subscriptions - so they load in time if launching the game with +map
  • Always mount folder addons before Workshop system (so that the workshop system can find floating .gmas in addons/ folders consistently)
  • Do not hide servers with out of bounds data such as impossible player counts, clamp the data instead
  • Mention valid sample rates in "Invalid sample rate X for sound Y" warning
  • Unblock mp_flashlight console variable in menu state (for use by gamemode convar settings)
  • mat_texture_list - Don't display alpha channel for formats without alpha channel (RGB888, etc)
  • Navmesh auto-blocking checks now run on map start/cleanup
  • Rework how spawnpoint entities are added in base gamemode - one file now, not 25 duplicated files
  • Move default console position to the left a bit so it does not obstruct certain main menu UI elements by default
  • Code cleanup: Replace debug.getregistry usage with RegisterMetaTable where appropriate (Community Contribution)
  • Code cleanup: Use math.tau in some places instead of 2 * math.pi (Community Contribution)
  • Use m_yaw/m_pitch convars instead of hardcoded values in the built-in taunt cam (Community Contribution)
  • Use 4-number overload of surface.SetDrawColor in base game for performance (Community Contribution)
  • `teamonly` in `player_say` game event is now networked to clients
  • npc_combinecamera now fires OnLostEnemy output on losing its target
  • Changed how SWEPs store ViewModel/WorldModel/PrintName - To get rid of 80 character limit for all 3 fields
  • Network gravity scale for players, for prediction
  • Reduced networked bit counts for player's driving mode ID, player class ID and team ID (from 32bit)
  • Network "Sprint Enabled" state to players for prediction (Player:SprintDisable)
  • Do not initialize the scaled prop physics objects as physics shadows for clientside only entities
  • Do not network duplicate health/velocity for players - Since it is already done for all entities
  • Do not set collision bounds on physgun beam to save network bandwidth
  • Increased `modelprecache` maximum size to 8192 (from 4096)
handyman

Fixed

  • Fixed potential crashes to do with textures
  • Fixed a crash to do with decals and r_maxmodeldecal 0
  • Fixed crashes with sniper_proto (Half-Life 2 Sniper)
  • Fixed potential bug with CBaseAnimating::IsOnFire
  • Fixed G-String game icon
  • Fixed the game always mounting folders that it's only supposed to on local builds
  • Fixed TEXTUREFLAGS_POINTSAMPLE not respecting TEXTUREFLAGS_NOMIP
  • Fixed erroring material in Half-Life 2: Episode 1 causing console spam (Stalker teeth)
  • Fixed Close Caption HUD being disabled by SetHUDVisibility MapIO input
  • Fixed Lua errors when loading a (Source Engine) save that had add-on Sandbox tools that are no longer present after the save was made
  • Prevent crashes with wireframe model rendering and high vertex models (Mostly applies to Hammer, simply does not render such models)
  • Entities that block radius (explosion) damage (such as doors), don't block it on themselves
  • Fixed a Linux Dedicated Server crash with sv_showlagcompensation
  • Fixed a crash to do with teleporting constrained entities
  • Fixed missing wooden ladder sounds (Half-Life 2: Episode 2)
  • Fixed a few ways malicious clients could lag servers
  • Adjust how we disable self-unblocking for Lua-blocked nav areas to avoid negatively affecting other nav blocking entities
  • Prevent crashes to do with removal of world entity (another method)
  • Replace usage of "devshots_screenshot" with "screenshot" (for -makedevshots)
  • Fixed weapon_snark network types
remove_circle

Removed

  • Deleted constraints.lua - unused file
  • Removed -nulldevice command line switch
  • Remove respawn_entities concommand - we have gmod_admin_cleanup
  • Removed unused bodyque entity
  • Remvoed unused vote_controller entity
  • Remove unused networked field from gmod_gamerules entity
  • Completely remove the unused Source Engine commentary system, its UI stuff and entities
  • Remove test_traceline entity
  • Remove unused properties/fields on engine SWEP implementation
  • Removed unused stringtables - "GModGameInfo", "ServerMapCycle" and "InfoPanel"
add_circle

Features

  • Added MatSelect:OnSelect and MatSelect:OnRightClick
  • Added new function to util.Timer object - TIMER:GetElaspedTime (Community Contribution)
  • Added properties.Remove (Community Contribution)
  • Implemented ENTITY:GetPreferredCarryAngles for ai type SENTs
  • Added NPC:SetIdealSequence
  • Added 5th argument to constraint.Nocollide - disableOnRemove
  • Added surface.GetPanelPaintState
  • Added massCenterOveride for certain physics initialize functions - Entity:PhysicsInit. Entity:PhysicsInitMultiConvex, Entity:PhysicsInitConvex, Entity:PhysicsFromMesh, Entity:PhysicsInitBox
  • Added ProjectedTexture:SetNoCull and ProjectedTexture:GetNoCull
  • Added NAV_MESH_BLOCKED_LUA
  • Added PropSelect:OnSelect hook
  • Added PropSelect:OnRightClick hook
  • Added PropSelect:FindModelByValue
  • Added PropSelect:SelectModel
arrow_circle_up

Improvements

  • DNumSlider: Setting min or max value updates slider pos
  • Optimized SortedPairs further (Community Contribution)
  • Player:StripWeapons drops weapons before removing them - This mimics behavior of Player:StripWeapon
  • Fallback to garrysmod.ver for when Steam is not available to set BRANCH (SRCDS)
  • Made gui.HideGameUI work more like GM:OnPauseMenuShow
  • Merge some math library optimizations (Community Contribution)
  • Consistent return values from Sandbox tool Make* global functions
  • Reduced net.WritePlayer bit count based on server's maxplayers (Community Contribution)
  • Micro optimization for GWEN.CreateTextureBorder and related functions (Community Contribution)
  • Implemented Panel:Clear for PropSelect
handyman

Fixed

  • Fixed IMaterial:SetVector4D not using float inputs
  • Fixed DropEntityIfHeld affecting all players holding anything
  • Fixed MatSelect and PropSelect erroring on select if not given a convar
  • Fixed Entity:ManipulateBoneJiggle type 2 non functioning
  • Corrected UTF8<->UTF16 conversion for the close caption function & hook
  • Call GM:PlayerAuthed outside of player prediction so CurTime has a valid value
  • Fixed Player:UniqueID returning nothing before GM:PlayerInitialSpawn
  • Fixed huge network load of ManipulateBone* functions
  • Fixed CNewParticleEffect.AddControlPoint attachment default value - No longer produces console warnings when not given an attachment name
  • Fixed a crash with Panel:AppendText
remove_circle

Removed

  • Added killserver, cancelselect to concommand blacklist
  • Block gui.SetMousePos/input.SetCursorPos while main menu is open
  • Disallow Panel:SetHTML on panels with non empty hostname (i.e. SetHTML can only be called on empty HTML panels, or on panels that previously had its content set via SetHTML)
  • Disallow Panel:RunJavascript on panels with local IP addresses
add_circle

Features

  • Output an identifying string on map/model compile tool startup so you know the studiomdl/vbsp/vvis/vrad is from Garry's Mod
  • Added "Browse" button to env_spritetrail in Hammer
  • Ported updated layout of the Particle Particle Editor from newer Source Engine games
  • Added color input/key-value for func_water_analog in Hammer
arrow_circle_up

Improvements

  • VVIS/VBSP automatically tries to find gameinfo.txt if path not given
  • Load particle editor first in -tools mode for convenience
  • Improve scrollbar styling in -tools mode, so its more obvious what the position of the slider is
  • $eyeposition and $illumposition are now affected by $scale (studiomdl.exe)
  • VRAD: -dumppropmaps dumps the lightmaps as .pfm during HDR compiles
  • VRAD: -dumppropmaps dumps files to /sp_lightmaps/ instead of base directory
  • VRAD: Fixed -dumppropmaps TGA output color range to be accurate with what is written to the BSP (also only writes TGA files for SDR compiles)
  • VRAD displays which lighting mode is being compiled in the log (HDR vs SDR)
  • Compile HDR .ppl files into the BSP, without overwriting the SDR ones and swap-in HDR static prop lightmaps when HDR lighting is in use in-game
handyman

Fixed

  • Fixed VBSP disabling -v flag midway through compilation if -verboseentities is not set
  • Fixed VBSP being unable to find sub instances in subfolders
  • gmad.exe allows model.vtx files again to be uploaded to Steam Workshop
  • Adjust Hammer entity definitions so Garry's Mod specific sandbox settings don't appear on point entities such as point_spotlight
  • StudioMDL: Fixed models with more than 65k vertices breaking up
  • Fixed studiomdl.exe crashing when remapping sequences to preserve their order