Garry's Mod Logo
schedule 28 June 2023
Update

June 2023 Update

New visual effects and features for developers.

Rubat
Programmer
Estonia
This update adds a few new visual effects for mappers and modellers to take advantage of, for better visuals.

There are also new additions for the Hammer Editor for mappers to enjoy, such as new entities, static prop lightmaps, and more.

We are also introducing experimental changes that remove the script limit for singleplayer, so that you can play with all your addons regardless of how many you have installed.

This update also adds a new option to delete temporary server files on game shutdown, such as sprays. This feature is controlled by gmod_delete_temp_files console variable and is enabled by default. If you wish to disable this feature, you can set the console variable to 0.

And as usual, there are plethora of new Lua API additions and changes for modders to create even cooler addons.
add_circle

Features

  • Added ability to invert colors in Colour Modify in spawnmenu
arrow_circle_up

Improvements

  • Experimental: Completely removed Lua file limit for singleplayer
  • Game binaries are now code signed on windows
  • Better names for Texturize shader options in spawnmenu (Community Contribution)
  • Delete materials/temp/ and sounds/temp/ folders on game launch and shutdown
  • Added gmod_delete_temp_files, defaults to 1, which controls the behavior above
  • Refresh main menu subscription lists (addons, dupes, etc) if they are open when subscriptions change
handyman

Fixed

  • Create a world entity for naughty maps that are engineered to crash on load by not spawning the worldspawn entity
  • Fixed a crash when deleting npc_manhack too early
  • Batch server Workshop download queries to 50 addons at a time, which should fix addons past 100 not loading when joining servers
  • Fixed "Join Game" feature not working due to recent Steam update
add_circle

Features

  • Added Half-Life: Source difficulty configuration files
  • Added filter_activator_context and filter_activator_model entities
  • Changing skill level with Lua or the convar also runs/loads the appropriate skill config files
  • Added full support for Static Prop Lightmaps
  • Added $phong, $envmapLightScale and $envmapLightScaleMinMax parameter support for LightmappedGeneric shader
  • Added $phongAlbedoBoost parameter to VertexLitGeneric shader
  • Added $phongDisableHalfLambert parameter to VertexLitGeneric shader
  • Added $pp_colour_inv to g_colourmodify shader
  • Added $envmapsphere parameter to VertexLitGeneric, which restores how Half-Life: Source chrome materials render
  • Added input/output descriptions to "Entity Properties" window in Hammer
  • Added prop_sphere to Hammer and added radius keyvalue to it
  • Added func_friction to Hammer
  • Added 6 new inputs to all entities - SetLocalOrigin, SetLocalAngles, DisableDraw, EnableDraw, DisableReceivingFlashlight, EnableReceivingFlashlight
  • Added "Disable flashlight" keyvalue to all entities in Hammer
  • Added new inputs to func_tracktrain - SetMaxSpeed, MoveToPathNode, TeleportToPathNode, LockOrientation, UnlockOrientation
  • Added new output to func_tracktrain - OnArrivedAtDestinationNode
  • Added the following particle initializers - Position Along Ring, Position Along Epitrochoid, Position Modify Place On Ground, Position From Chaotic Attractor, Scalar Random, Vector Random, Vector Component Random, Set Hitbox to Closest Hitbox, Set Hitbox Position on Model, Velocity Set from Control Point, Remap Particle Count to Scalar
  • Added the following particle operators - Remap Direction to CP to Vector
  • Added the following global particle attributes - screen space effect, normal, Visibility input dot min/max, Visibility input distance min/max
  • Added "render models" particle renderer
  • Added "hitbox" and "hitbox set" parameters to - Movement Lock to Bone (operator), Cull relative to model (operator), as well as Position on Model Random (initializer) whose "hitbox scale" is now "model hitbox scale"
arrow_circle_up

Improvements

  • Do not set PANEL.ClassName in vgui.CreateFromTable to a missing variable (Community Contribution)
  • Minor tweaks to cvars library internals (Community Contribution)
  • Increased view model networking limitations, notably bodygroup combinations
  • Editable Entities editing now uses net.WriteEntity, not a 32bit net.WriteUInt (Community Contribution)
  • Doubled particle precache limit
handyman

Fixed

  • Fixed "last known CNavArea" not updating for players, which is used by some internal nextbot functionality, and some navmesh editing functionality
  • Potential fix for sv_parallel_sendsnapshot and sv_parallel_packentities crashing the server randomly
  • Spawnmenu search properly invalid input from addons, instead of erroring
  • Workaround fix for "../data/whatever" Material paths not working on Linux when garrysmod/materials/ folder is missing
  • Fixed gmpublish on Linux not working out of the box
  • Fixed Particle Editor Model Picker not applying picked model
  • Fixed certain NPCs that create entities crashing when the server is at the entity limit
  • Prevent Lua errors in Sandbox tools & constraint library when the server is at the entity limit
  • removeid concommand now works as expected with RunConsoleCommand
  • Fixed toggle_duck console command in multiplayer
add_circle

Features

  • Added ProjectedTexture:SetLightWorld and ProjectedTexture:GetLightWorld
  • Added CreateParticleSystemNoEntity
  • Added CNavArea:GetSpotEncounters
  • Added CNavArea:GetVisibleAreas
  • Added surface.GetTextPos
  • Added engine.AbsoluteFrameTime
  • Added render.RenderFlashlights
  • Added flags of the world to DIconBrowser (Community Contribution)
  • Added EF_NOFLASHLIGHT
  • Added Weapon:GetDeploySpeed to all weapons
  • Added Weapon:SetDeploySpeed to all weapons
arrow_circle_up

Improvements

  • Made util.IsOBBIntersectingOBB shared
  • game.CleanUpMap now respects the EFL_KEEP_ON_RECREATE_ENTITIES flag
  • Made Entity:SetHealth have an effect clientside for prediction purposes
  • Entity:FireBullets calls WEAPON:DoImpactEffect on active weapon serverside to mimic clientside behavior
  • Added safeguards against not popping render.PushCustomClipPlanes
  • util.GetModelMeshes now accepts "00000000" format bodygroups
  • CNewParticleEffect:SetControlPointOrientation can now accept an Angle instead of 3 directional Vectors
  • Made FrameNumber shared
  • DGrid now works correctly with Panel:Clear, and ignores invisible items (Community Contribution)
  • DListView_Column:SetFixedWidth sets the column width immediately (Community Contribution)
  • Player:IsWorldClickingDisabled is now properly networked to client
  • Removed networking limits for Player:SetFrags and Player:SetDeaths
  • Reduced net.WriteEntity/net.ReadEntity from 16 bits to 13 bits (Community Contribution)
  • Made Entity:CreatedByMap, Entity:MapCreationID and Entity:GetCreationID networked and shared
  • Entity:SetFriction now affects players
  • Reverted "Allowed weapons and entities to set their own classname" as it was causing issues
  • Following functions will no longer return nil when used on invalid entities, and will return 0 instead - Entity:GetNumPoseParameters , Entity:GetHitBoxGroupCount, Entity:GetHitBoxCount, Entity:GetBodygroupCount, Entity:GetSkin, Entity:GetSequence, Entity:GetNumBodyGroups, Entity:GetSequenceGroundSpeed, Entity:GetSequenceMoveDist, Entity:GetModelContents, Entity:GetLayerDuration, Entity:GetLayerWeight
  • Following functions will no longer return nil when used on invalid entities, and will return an empty string instead - Entity:GetPoseParameterName, Entity:GetSequenceName, Entity:GetSequenceActivityName
  • Entity:GetBoneCount - used to return -1 on failure, now returns 0
  • Entity:GetPlaybackRate - returns 1 on failure
  • Entity:GetBoneName - returns __INVALIDBONE__ on failure
  • Entity:GetSequenceActivity - returns -1 on failure
  • Entity:GetSequenceVelocity - returns vector_origin on failure
  • Entity:GetLayerPlaybackRate - returns 1 on failure
handyman

Fixed

  • Fixed file.Find ignoring "Copy (" files
  • Fixed game.SetSkillLevel always being forced to the value of 'skill' convar
  • Apply cyclic parent hierarchy stack overflow fix to clientside Entity:SetParent
  • Reset value of render.SetLightingMode on map shutdown
  • Reset render.EnableClipping to false on map shutdown
  • Make file.Exists return correct values for folders in Lua paths
  • util.DecalEx now also affects static props
  • Increased networked bits for player flags so Player:HasGodMode is now networked to clients properly
handyman

Fixed

  • Fixed a crash related to rendering static props
  • Case insensitive search for singleplayer files
  • Fixed addons breaking properties system clientside
  • Fixed a server crash when maxplayers is set in server.cfg and the command line
  • Made Combine Gunship aim at player's center so it can actually hit players
  • Fixed Combine APC bullet tracer coming from the wrong attachment
  • Fixed combine APC rockets going over player's head with certain hold types
  • Fixed a crash with DMX unserializer when external references are used
add_circle

Features

  • ents.GetMapCreatedEntity is now shared
arrow_circle_up

Improvements

  • DListView now ignores invisible lines (Community Contribution)
  • Steam Voice Settings button now opens Steam Settings in overlay, since old Steam UI was deleted by a Steam UI update
  • Increased .vtx file size limit for studiomdl.exe, and added safeguards against crashing when the limit is hit
  • Added voice_recordtofile to blocked concommand list
  • DNS lookup Global.HTTP URLs before sending the requests
  • poster command now works correctly with cl_leveloverview enabled
  • TTT: Made Poltergeist weapon range easier to override (Community Contribution)
  • Potential improvement to 64x64 cubemap quality when building map cubemaps (Community Contribution)
handyman

Fixed

  • Fixed a crash issue when loading certain particle files
  • Fixed skill configs not applying in time for singleplayer, resulting in NPCs not having health set, etc
  • Fixed metropolice NPC crashing when its target is removed during a weapon burst fire
  • Fixed a regression with halo/outline rendering
  • Fixed up ToS/Privacy Policy links on Options menu
  • TTT: Fixed notification sound cue and make it toggleable (Community Contribution)
add_circle

Features

  • Added VMatrix.__unm (negate operator)
arrow_circle_up

Improvements

  • Prevent display of concommands in gamemode settings
  • Defer gamemode loading until all other components are loaded
handyman

Fixed

  • Added missing snow footstep sound fallbacks
  • Fixed npc_(template_)maker crashing the server when spawning non NPC entities
  • Do not run OnRequestFullUpdate outside of main thread to prevent server crashes
remove_circle

Removed

  • Removed Global.HTTP DNS lookups as they were causing too many issues
add_circle

Features

  • Added util.IntersectRayWithSphere
  • Added util.IsSphereIntersectingSphere
  • Added util.IsBoxIntersectingSphere
  • Added util.IsPointInCone
  • Added util.IsSphereIntersectingCone
  • Panel.PaintManual can now render panels larger than the screen, when its first argument is set to true
  • Added "Clear" button to the console
  • Added missing TF2 map icons from its new updates
  • Added "Color Lit Per Particle" particle initializer, update "Color Random" initializer to include new options
  • Added duplicator.Disallow (Community Contribution)
  • Added DPanPanel (Community Contribution)
  • Added math.CHSpline (Community Contribution)
  • Added SANDBOX:ContextMenuShowTool hook (Community Contribution)
  • Added Global.ScreenScaleH (Community Contribution)
  • Added table.Pack (Community Contribution)
  • Added table.Flip (Community Contribution)
  • Added DHScrollBar (Community Contribution)
  • Added math.CubicBezier (Community Contribution)
  • Added math.QuadraticBezier (Community Contribution)
arrow_circle_up

Improvements

  • Made language.Add type-error on invalid input instead of silently fail
  • Last argument of util.IsOBBIntersectingOBB is now optional
  • Try to prevent static prop lightmap crashes when given invalid data
  • Panel.PaintAt restores zpos of the panel
  • Clamp physics forces phys_torque applies to prevent crashes/crazy physics
  • Duplicator saves and restores sub materials by default
  • Restored nav_generate progress dialog UI
  • Move OnRequestFullUpdate warning to developer 1 so it is not as spammy
  • Matched behavior of SteamID functions for bots between clientside and serverside
  • Made Player:SteamID64 and Player:AccountID never return no value
  • Error no halt when player.CreateNextBot would crash due to being ran too early
  • Remove limits when reading SteamHTTP response headers
  • Entity.IsMarkedForDeletion now checks Entity.Remove queue, so its output is now more correct
  • Applied an experimental change to render.RenderView to render using VIEW_MONITOR instead of VIEW_MAIN as a potential fix for sprite rendering when using that function
  • Added more NPCs categorized as hostile and friendly towards players (IsFriendEntityName global) (Community Contribution)
  • Added Versus Saxton Hale map category from recent TF2 update (Community Contribution)
  • TTT: Disable notification sound by default and add a setting for it (Community Contribution)
  • Various code cleanups (Community Contribution)
handyman

Fixed

  • Fixed trigger_hurt forgiveness not resetting damage correctly
  • Increased limit of language.GetPhrase output to 4000 bytes, from 1000 - if limit is hit, truncate the string, instead of outputting an empty string
  • Fixed a crash due to BSP ZIP hash collision
  • Fixed crashes due to combining Entity:EnableCustomCollisions and Entity:PhysicsInitSphere
  • steamworks.GetList "days" parameter is functional again
  • Restored functionality of "dtwarning" convar, which defaults to 1 now to maintain old behvaior
remove_circle

Removed

  • Make Entity:InitializeAsClientEntity do nothing and error no halt when used. The function was useless and would often crash when used inappropriately