Revision Difference
Update_Preview_Changelog#552215
<cat>Play</cat>
<title>Update Preview Changelog</title>
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 `prerelease` and `dev` [beta branches](Dev_Branch).
# Game Changes
## Additions
* Added ability to invert colors in `Colour Modify` in spawnmenu⤶
* Added portal scene files⤶
* Ported some Portal 1 entities - the 2 turrets, personality core, fizzler trigger and security camera⤶
* The 2 Portal 1 turrets are available to be spawned through the Spawn menu in Sandbox⤶
* New default crosshair + customization⤶
* Addon preset importing and exporting⤶
* Confirmation when deleting addon presets⤶
## Fixes
* 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⤶
* Precache particles for portal maps⤶
* Fixed crashes when accessing out of bounds flex controllers⤶
* Path constrain vprof_playback_start concommand, so it cannot access files outside of the game's folder⤶
* Several map category adjustments for Fistful of Frags and Team Fortress 2 maps (Community Contribution) (`fofhr_`, `zi_`)⤶
* Disallowed making addon presets with empty names⤶
* Fixed addon presets with number only names being unable to be deleted⤶
* Fixed spawnmenu saved cursor position resetting to middle of the screen when clicking outside of the spawnmenu⤶
## Changes
* 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⤶
* More killicon aliases for physics kills⤶
* Adjust "Failed to find any models for this addon" error in spawnmenu to include a reason why it might be happening, as well as fit the text within its container⤶
* Half-Life Source turrets can now be spawned on the ground as well⤶
* Reduced default max_fps to 150⤶
* Renamed CS:GO mountable game to mention the legacy branch - this option might be removed in a future version⤶
## TTT Changes
* Nothing so far.
# Technical Changes
## Additions
* 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/outputs to `func_tracktrain`⤶
* SetMaxSpeed⤶
* MoveToPathNode⤶
* TeleportToPathNode⤶
* LockOrientation⤶
* UnlockOrientation⤶
* OnArrivedAtDestinationNode (Output)⤶
* 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:⤶
* Position on Model Random (initializer) - also `hitbox scale` is now `model hitbox scale`⤶
* Movement Lock to Bone (operator)⤶
* Cull relative to model (operator)⤶
* New `VertexLitGeneric` parameters - `$AllowDiffuseModulation` and `$NoTint` - both allow disabling color tint per material (both existed in other source engine games, so that's why both are added)⤶
* Additions to .gma whitelist⤶
* Added data_static/ alternative to data/ folder with all the acceptable extensions for file.Write⤶
* Added materials/colorcorrection/*.raw⤶
* Add some of the existing navigation related entities to the base FGD⤶
## Fixes
* Fixed "last known <page>CNavArea</page>" not updating for players, which is used by some internal nextbot functionality, and some <page>navmesh</page> 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"` <page>Global.Material</page> 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 <page>Global.RunConsoleCommand</page>⤶
* Fixed `toggle_duck` console command in multiplayer⤶
* RPG Missile stops its looping sound when removed prematurely⤶
* SourceTV fixes⤶
* Fixed crashes when using tv_record console command⤶
* Player.IsBot now returns true for SourceTV master client⤶
* Prevent tv_enable going beyond absolute max player count and crashing⤶
* SourceTV players are considered bots for player library⤶
* Fixed duplicate definitions for Player.GetTool (Community Contribution)⤶
* Improved support for non-English messages in DTextEntry history (Community Contribution)⤶
* World clicker aim uses correct FOV values, so it works when FOV is modified by CalcView hooks, etc⤶
* Add a hack for displacements with `$alphatest 1` materials not having collisions⤶
* Lazily fix props with VortWarp shader crashing when entering water⤶
* Give sk_ally_regen_time a minimum value of 0.01 to avoid division by 0, and subsequent freezes due to infinite loops⤶
* Resolved incompatibility with `$BlendModulateTexture` and `$detail` - fixes gm_construct sand/grass transitions⤶
* Fixed blendable textures on a brush being inverted in Hammer i.e. not appearing like they do in-game⤶
* Fixed fonts from gamemode's content/ folder not being extracted - For workshop addons, so they can actually be loaded.⤶
## Changes
* Do not set `PANEL.ClassName` in <page>vgui.CreateFromTable</page> to a missing variable (Community Contribution)⤶
* Minor tweaks to <page>cvars</page> library internals (Community Contribution)
* Increased view model networking limitations, notably bodygroup combinations⤶
* <page>Editable Entities</page> editing now uses <page>net.WriteEntity</page>, not a 32bit <page>net.WriteUInt</page> (Community Contribution)⤶
* Doubled particle precache limit⤶
* Added file path to `"ERROR: couldn't open."` warnings⤶
* Change usages of deprecated gui.MousePos to input.GetCursorPos (Community Contribution)
* Safeguards against malformed .gma files⤶
* Empty stored entity outputs when pasting duplications to prevent abuse⤶
* Reduced Player.__index calls in player 3rd person animations (Community Contribution)⤶
* func_physbox/pushable is ignored by navmesh gen as walkable surfaces⤶
* More "reportable" keyvalues in default FGDs - Shows useful info in the Entity Report window⤶
* Disabled default automatic navmesh unblocking to accommodate CNavArea:MarkAsBlocked⤶
* Hide "No bound shader" warning behind developer 1 - And also add which materials the error is for⤶
## Deletions
* Nothing so far.
⤶
## gmad.exe changes⤶
* Auto ignore .git stuff⤶
* Print out list of files that did not match the whitelist at the end of the console output, so they are more visible⤶
* Print out ignored files, and their total at the end of the output⤶
* Added `-quiet` to suppress spammy messages⤶
* Reduced buffer reallocations, which results in much faster .gma file creation, most noticeable with many small files (Community Contribution)⤶
# Lua API Changes
## Additions
* Added <page>ProjectedTexture:SetLightWorld</page> and <page>ProjectedTexture:GetLightWorld</page>⤶
* Added <page>Global.CreateParticleSystemNoEntity</page>⤶
* Added <page>CNavArea:GetSpotEncounters</page>⤶
* Added <page>CNavArea:GetVisibleAreas</page>⤶
* Added <page>surface.GetTextPos</page>⤶
* Added <page>engine.AbsoluteFrameTime</page>⤶
* Added <page>render.RenderFlashlights</page>⤶
* Added flags of the world to <page>DIconBrowser</page> (Community Contribution)⤶
* Added <page text="EF_NOFLASHLIGHT">Enums/EF</page>⤶
* Added <page>Weapon:GetDeploySpeed</page> to all weapons⤶
* Added <page>Weapon:SetDeploySpeed</page> to all weapons⤶
* Added net.Write/ReadUInt64 and File:Write/ReadUInt64⤶
* Added Angle.IsEqualTol⤶
* Added render.ComputePixelDiameterOfSphere⤶
* Added COND.* enums, used in NPC creation⤶
* Added SENT_AI:OnTaskFailed⤶
* Added NPC:GetIdealYaw, NPC:GetArrivalDirection, NPC:SetUnforgettable⤶
* Added CNavArea:MarkAsDamaging, CNavArea.IsDamaging⤶
* Added 2 optional arguments to util.JSONToTable - bypass depth/breadth limits & disable string to number conversion for keys⤶
* Added 6th optional argument to util.ScreenShake - AirShake⤶
* Added `DComboBox.RemoveChoice( index )` (Community Contribution)⤶
* Improvements to MatSelect⤶
* Added `MatSelect:Clear`(Community Contribution)⤶
* Added `MatSelect:SelectedItemPaintOver( x, y )`(Community Contribution)⤶
* `MatSelect:AddMaterial*` methods now return the created `DImageButton`(Community Contribution)⤶
* Added `local pnl = MatSelect:FindMaterialByValue( value )`(Community Contribution)⤶
* Added `MatSelect:SelectMaterial( pnl )`(Community Contribution)⤶
* Vector:Mul() now supports VMatrix⤶
* Added navmesh.CreateNavLadder⤶
* Added OnCloseCaptionEmit hook⤶
* Added gui.AddCaption( text, duration, fromPlayer )⤶
* Added GM:OnPlayerJump hook⤶
* Added new optional argument to render.ClearDepth: bool stencil - also clear stencil buffer, defaults to true for backwards compatibility⤶
* Added a new argument to GM:EntityRemoved - for full update removes⤶
* Added NPC:Set/GetViewOffset⤶
* Added Panel.GetScrollStartIndexes⤶
* Added missing enum for NAV_MESH_BLOCKED_PROPDOOR⤶
* Added navmesh.GetBlockedAreas()⤶
* Added CNavArea:MarkAsBlocked( teamID ), CNavArea:MarkAsUnblocked( teamID )⤶
* Added CNavArea:RemoveAttributes( flags ), CNavArea:AddAttributes( flags )⤶
* Added NPC:GetCurGoalType, NPC.IsCurWaypointGoal, NPC.GetGoalTarget, NPC.GetGoalPos⤶
* Added SWEP/SENT.ClassNameOverride (Community Contribution)⤶
* NPCData.OnCeiling, OnFloor, OnDuplicated can now also be functions⤶
* Added net.Read/WritePlayer (Community Contribution)⤶
* Added 2nd return value to NPC:Disposition - priority⤶
* Added ents.Iterator and player.Iterator (Community Contribution)⤶
* Added string.CardinalToOrdinal (Community Contribution)⤶
## Fixes
* Fixed <page>file.Find</page> ignoring `"Copy ("` files⤶
* Fixed <page>game.SetSkillLevel</page> always being forced to the value of `'skill'` convar⤶
* Apply cyclic parent hierarchy stack overflow fix to clientside <page>Entity:SetParent</page>⤶
* Reset value of <page>render.SetLightingMode</page> on map shutdown⤶
* Reset <page>render.EnableClipping</page> to `false` on map shutdown⤶
* Make <page>file.Exists</page> return correct values for folders in Lua paths⤶
* <page>util.DecalEx</page> now also affects static props⤶
* Increased networked bits for player flags so <page>Player:HasGodMode</page> is now networked to clients properly⤶
* Fixed DNumberWang passing both strings and numbers to OnValueChanged (Community Contribution)⤶
* Fixed Player:SprintEnable not working⤶
* EntityEmitSound blocks CSceneEntity close captions⤶
* Made 2nd argument of Global.EmitSound actually set the sound position⤶
* Global.EmitSound precaches the sound when ran in multiplayer serverside⤶
* Sentences system calls GM:EntityEmitSound⤶
## Changes
* Made <page>util.IsOBBIntersectingOBB</page> shared⤶
* <page>game.CleanUpMap</page> now respects the `EFL_KEEP_ON_RECREATE_ENTITIES` flag⤶
* Made <page>Entity:SetHealth</page> have an effect clientside for prediction purposes⤶
* <page>Entity:FireBullets</page> calls <page>WEAPON:DoImpactEffect</page> on active weapon serverside to mimic clientside behavior⤶
* Added safeguards against not popping <page>render.PushCustomClipPlane</page>s⤶
* <page>util.GetModelMeshes</page> now accepts "00000000" format bodygroups⤶
* <page>CNewParticleEffect:SetControlPointOrientation</page> can now accept an <page>Angle</page> instead of 3 directional <page>Vector</page>s⤶
* Made <page>Global.FrameNumber</page> shared⤶
* <page>DGrid</page> now works correctly with <page>Panel:Clear</page>, and ignores invisible items (Community Contribution)⤶
* <page>DListView_Column:SetFixedWidth</page> sets the column width immediately (Community Contribution)⤶
* <page>Player:IsWorldClickingDisabled</page> is now properly networked to client⤶
* Removed networking limits for <page>Player:SetFrags</page> and <page>Player:SetDeaths</page>⤶
* Reduced <page>net.WriteEntity</page>/<page>net.ReadEntity</page> from 16 bits to 13 bits (Community Contribution)⤶
* Made <page>Entity:CreatedByMap</page>, <page>Entity:MapCreationID</page> and <page>Entity:GetCreationID</page> networked and shared⤶
* <page>Entity:SetFriction</page> now affects players⤶
* Following functions will no longer return <page>nil</page> **when used on invalid entities**, and will return `0` instead:⤶
* <page>Entity:GetNumPoseParameters</page>⤶
* <page>Entity:GetHitBoxGroupCount</page>⤶
* <page>Entity:GetHitBoxCount</page>⤶
* <page>Entity:GetBodygroupCount</page>⤶
* <page>Entity:GetSkin</page>⤶
* <page>Entity:GetSequence</page>⤶
* <page>Entity:GetNumBodyGroups</page>⤶
* <page>Entity:GetSequenceGroundSpeed</page>⤶
* <page>Entity:GetSequenceMoveDist</page>⤶
* <page>Entity:GetModelContents</page>⤶
* <page>Entity:GetLayerDuration</page>⤶
* <page>Entity:GetLayerWeight</page>⤶
* Special Cases:⤶
* <page>Entity:GetBoneCount</page> - used to return `-1`, now returns `0`⤶
* <page>Entity:GetPlaybackRate</page> - returns `1`⤶
* <page>Entity:GetBoneName</page> - returns `__INVALIDBONE__`⤶
* <page>Entity:GetSequenceActivity</page> - returns `-1`⤶
* <page>Entity:GetSequenceVelocity</page> - returns `vector_origin`⤶
* <page>Entity:GetLayerPlaybackRate</page> - returns `1`⤶
* Return empty string on failure:⤶
* <page>Entity:GetPoseParameterName</page>⤶
* <page>Entity:GetSequenceName</page>⤶
* <page>Entity:GetSequenceActivityName</page>⤶
* Reverted "Allowed weapons and entities to set their own classname" as it was causing issues⤶
* Panel:GetNumLines now works with TextEntry⤶
* Added .dem and .vcd to file.Write whitelist⤶
* Added render.Push/PopRenderTarget overflow/underflow safeguards⤶
* Weapon:GetTracerOrigin is now called for 3rd person view as well⤶
* LuaMesh.BuildFromTriangles now allows modifying the exiting mesh without crashing (vertex count must be the same)⤶
* Also made certain render.Push* function overflowing not crash the game outright⤶
* Better optional argument handling for sound.Play⤶
* Bumped gui.OpenURL url limit to 2000 characters⤶
* Allowed GM:OnPhysgunFreeze to be ran on non vphysics entities - the 2nd argument ( physobj ) will be NULL for those cases⤶
* Panel.DrawTextEntryText doesn't silently fail with invalid input, will correctly error instead⤶
## Deletions
* Nothing so far.