Garry's Mod Logo
schedule 21 January 2020
Update

January 2020 Update

Significant Steam Workshop support changes

Rubat
Programmer
Parts Unknown
The biggest changes this update brings are to our Steam Workshop support. Here are the benefits of the new system:
  • Addons will have a much higher size limit, up to 2GB
  • New or updated addons on Steam Workshop will display their real, uncompressed size
  • New or updated addons will take less space on your HDD/SSD
  • There will be no negative impact on download/upload sizes
  • Players will be able to update their uploaded Dupes, Saves and Demos from in-game
Please note that new or updated addon files will no longer be stored in your addons/ folder, instead they will be stored by Steam in steamapps/workshop/ folder of your Steam game library. We have also added the ability for players to update their existing Dupes, Saves and Demos uploaded to Steam Workshop. The process for this is very simple - simply press "publish" on the new version of your local content, such as a Dupe you created, and select one of your existing items on the right in the reworked UI for publishing the content: We have also added "Dupes" section to the main menu, allowing you to delete your local Dupes from in-game, without a need to open game's install folder.

Addon developers and server owners

If you are using 3rd party tools that do not use gmpublish.exe to upload content to Steam Workshop then addons published with those tools after the update may cease to work. This does not apply to already existing addons, however the benefits above only apply if you are using the new version of gmpublish.exe (v1.2) Existing addons can take advantage of the new system and its benefits by simply updating using the new gmpublish.exe (v1.2). Please note that this is a one way process and there's no going back to the old system once you convert your addon, meaning you won't be able to update it again with old versions of gmpublish.exe or 3rd party tools that do not use gmpublish.exe (which realistically shouldn't matter). If you are currently using steamworks.Download in conjunction with game.MountGMA, that will also cease to work for new Steam Workshop content. You will need to switch your code to use steamworks.DownloadUGC instead. Please note that it takes a WorkshopID directly, not a file ID like its predecessor. All of this is documented on the Official Wiki.

Other changes

In addition to the Steam Workshop support changes, this update includes the usual fixes and improvements across the game. We have updated the Player Model selector in Sandbox to include a search bar so it is easier to find specific models. We have also translated certain previously untranslated parts of the game, such as the Publish creation and the Player model selector menus, among other smaller changes. Source Engine menus and UI language is now tied to your language selected in Steam. This behavior can be overwritten with the -language launch parameter. You will find the full change list for this update below.
add_circle

Features

  • Added CSGO map icons from the new operation
  • Added Dupes section to main menu to allow deletion of dupes in-game
  • You can now subscribe to Demos, Saves and Dupes in the main menu
  • New "Publish Creation" UI that also allows updating of Dupes/Saves/Demos
  • Added -language launch option to override Source Engine language
  • Player Model Selector now has a filter/search bar
arrow_circle_up

Improvements

  • Limited Light tool brightness to 20 (from 255)
  • Reset runspeed every frame like we used to, even if we are sprinting/walking
  • Make the map name more noticeable in the missing map error when loading saves
  • Display a message when a save or demo fails to download from Workshop
  • Delete map.pack on game start to hopefully reduce cases of BSP embedded content not loading when the map is loaded from Steam Workshop (Missing textures fix)
  • Certain Steam related errors now display a user friendly error message rather than an error code that you have to google
  • Improved handling of hidden addons on Steam Workshop, so they are displayed as such in the addons menu
  • Certain gm_load errors are now displayed nicely to client instead of printing to console
  • Don't draw the Suit Power HUD at all with gmod_suit 0
  • Translate "Character" shader into "VertexLitGeneric" (Support for new CSGO models)
  • Translate "SolidEnergy" shader into "UnlitGeneric" (Black Mesa Source Xen support)
  • Updated language files
  • Limited chat history to 64k characters to avoid lag/freezes with long chat logs
  • Translated more parts of the game, such as: Spawnicon Editor (partial), Player Model Selector, script error UI, spawnicon and spawnlist right click menus, workshop mounting and fetching subscriptions messages
  • Source Engine language system is no longer forced to English and uses Steam's UI language.
  • Subscribe/Install buttons in main menu are now hidden with -noworkshop active
handyman

Fixed

  • Reenabled monster_flyer sounds
  • Added Default preset value for gmod_suit in server settings
  • Fixed Sandbox control panel sliders with invalid convars making errors
  • Apply FCVAR_SERVER_CAN_EXECUTE to stopsound, not stopsounds
  • Changes towards fixing errors from opening the context panels too soon
  • The ladder mount sounds now match the footstep sounds for custom footstep sounds
  • Fixed deleting Saves not deleting the associated image file
  • Fixed server downloads trying to download compressed files from FastDL when we just got them from Workshop
  • Yet another ragdoll crash fix (trigger_remove)
  • Failed server downloads (0 byte files in download/ folder) will no longer prevent server downloads from working for that file
  • Fixed copying text from TextEntry with new lines cutting off copied text by the amount of new lines
  • Fixed Black Mesa Source's maps having missing props all over the place
  • -noworkshop launch option properly affects and is displayed in Dupe/Save/Demo sections of the main menu
  • Fixed func_tankrocket on Half-Life 1 maps firing stationary rockets that do no damage
  • Fixed a console warning when turning off func_tracktrain controls
  • Fixed being able to control any func_tracktrain (even uncontrollable ones) using Physgun
arrow_circle_up

Improvements

  • TTT: Added sphere option to .fgd to display radius of ttt_traitor_button in Hammer (Community Contribution)
handyman

Fixed

  • TTT: Fixed infinite traitor selection loop in case of bad console variable value
remove_circle

Removed

  • TTT: Removed unused exploitable console command "wepswitch"
add_circle

Features

  • -allowlocalhttp launch option for servers
  • Extra messages when failing to write map.pack to disk and more verbose warnings when failing to create fonts
arrow_circle_up

Improvements

  • Disable "EmitSound: Whatever out of bounds" and just clamp the values instead of not playing the sound
  • Try to reduce amount of "failed to create font" warnings from badly made addons
  • Switched Steam Workshop support completely to ISteamUGC
handyman

Fixed

  • Non halting Lua errors no longer crash the game in menu state
  • Fixed first font ranges (starting with 0) never working for Lua created fonts
  • Fixed gmad.exe not being able to create files over 500MB
  • Further improved performance with clientside DTVar callbacks
remove_circle

Removed

  • Get rid of menu_reload altogether, since it was disabled ages ago
add_circle

Features

  • Added Entity.GetBrushSurfaces for simple brushes
  • DListView.GetSelectedLine now also returns the actual line panel, not just an index
  • Added steamworks.DownloadUGC( workshopID, fCallback ) - replaces steamworks.Download for game.MountGMA needs (also is also used for dupes/saves/demos)
  • Added cam.GetModelMatrix
  • Added second argument (optional, defaults to false) to cam.PushModelMatrix which multiplies given matrix with the currently active matrix
  • Added Entity.GetNWVarTable()
arrow_circle_up

Improvements

  • Entity arguments now properly error on type mismatch
  • Change DImageButton default preview image to be different from DImage
  • Get rid of steamworks.VoteInfo usage in base game and make it alias of steamworks.FileInfo
  • steamworks.FileInfo now returns the vote info as well (same key names as VoteInfo)
  • Increased Entity.GetMaterials limit to 256 (from 127) for certain maps have a lot of materials and 128 is not enough
  • Added "visibility" key to steamworks.FileInfo, and replaced title and description with "Hidden addon" if they are empty
  • Added stack trace to the rest of non-halting errors produced by Lua functions
  • Upgraded steamworks.Publish to support ISteamUGC and Workshop item updating
  • Apply special TextEntry hack for Panel.GetValue from Panel.GetText to get rid of the 8k char limit
  • steamworks.FileInfo's "children" key uses numbers as keys, not strings
handyman

Fixed

  • util.TableToJSON now properly writes boolean keys
  • Bootil's JSON functions support writing NaNs and Infinity (as nulls), as well as reading nulls (as empty strings) which all now also applies to GMod's JSON functions