Proton icon indicating copy to clipboard operation
Proton copied to clipboard

Garry's Mod (4000)

Open ardadem opened this issue 6 years ago • 49 comments

Compatibility Report

  • Name of the game with compatibility issues: Garry's Mod x86_64 branch
  • Steam AppID of the game: 4000

System Information

  • GPU: 1050 Ti
  • Driver/LLVM version: nvidia 430.26
  • Kernel version: 5.1.15
  • Link to full system information report as Gist: Here
  • Proton version: 3.16-9 Beta

I confirm:

  • [ X] that I haven't found an existing compatibility report for this game.
  • [ X] that I have checked whether there are updates for my system available.

Symptoms

Game stuck on loading screen.

Reproduction

I found a error line in log: 7092.239:0024:0025:err:steamclient:create_win_interface Don't recognize interface name: SteamMatchGameSearch001

And i searched it. Seems it's fixed in newer version proton -here- but Proton 4.x which is doesn't include CEF patch. Proton developers merged this into -here- Proton 3.15+. Garry's Mod x86_64 uses Chromium Embedded Framework which is game need it to render html main menu and in-game things. (also i tried to play on Proton 4.x. Yes, game launched but CEF not worked as expected)

Log file

steam-4000.log

ardadem avatar Jul 01 '19 10:07 ardadem

I tried to launch with latest steam dll and it worked but CEF still not works. CEF patch needs to be merged.

ardadem avatar Jul 01 '19 11:07 ardadem

Hello @ardadem, please add a Proton log of the game run with Proton 4.2.

kisak-valve avatar Jul 01 '19 13:07 kisak-valve

Proton version: 4.2-9 steam-4000.log Also in-game folder exist chromium log, may useful: chromium.log

ardadem avatar Jul 01 '19 14:07 ardadem

GloriousEggroll added wine stagging patches to him custom proton build. Now it's works perfectly with him proton build.

Proton 4.11-3 2019-08-31-13:55:06-screenshot

Proton 4.14-GE-2 2019-08-31-13:50:08-screenshot

ardadem avatar Aug 31 '19 10:08 ardadem

VrMod For Garry's Mod

Issue transferred from https://github.com/ValveSoftware/Proton/issues/3777. @benrob0329 posted on 2020-04-18T04:36:32:

Compatibility Report

  • Name of the game with compatibility issues:
  • Steam AppID of the game: Garry's Mod (ID 4000) with the VrMod (https://steamcommunity.com/sharedfiles/filedetails/?id=1678408548)

System Information

  • GPU: Nvidia GTX 980ti
  • Driver/LLVM version: nvidia 440
  • Kernel version: 5.5
  • Proton version: 5.0-6
  • System Information: https://gist.github.com/benrob0329/6d3aad583d043cc6e10ae2096995525b

I confirm:

  • [x] that I haven't found an existing compatibility report for this game. (in this configuration)
  • [x] that I have checked whether there are updates for my system available.

steam-4000.log

Symptoms

The mod is Windows-only, but seems to work for those users just fine. However upon starting it in Proton:

] vrmod_start

[VRMod] lua/autorun/vrutil.lua:390: g_sharedTexture is null
  1. VRMOD_ShareTextureFinish - [C]:-1
   2. VRUtilClientStart - lua/autorun/vrutil.lua:390
    3. unknown - lua/autorun/vrutil.lua:47
     4. unknown - lua/includes/modules/concommand.lua:54

CShaderAPIDX8::BlitTextureBits: couldn't lock texture rect or use UpdateSurface
(these continue for some time)

I have attempted to adjust library overrides, use a real d3d9 library (via Proton tricks) and generally take stabs in the dark but it has not led to any new information unfortunately.

Reproduction

  1. install Gmod
  2. Force Use Of Proton
  3. Install The VrMod As Per Link Above
  4. Install VrMod Module As Per Workshop Page Instructions
  5. Use Console To Start VR Mode

kisak-valve avatar Apr 18 '20 11:04 kisak-valve

I've investigated the behavior of VRMod a little bit and I think I can see where the problem comes from.

As far as I can tell the Lua script component of the addon (vrmod.lua, normally stored inside of a .gma archive and downloaded from the Steam Workshop) calls GetRenderTarget, a function in the Garry's Mod Lua API that gets a render target or creates the render target if it does not already exist. This is used to create the frame that is used for VR. However this function does not return the raw pointer to the resource, which the VRMod DLL (gmcl_vrmod_win32.dll/gmcl_vrmod_win64.dll, downloaded from an external GitHub linked on the workshop page) requires in order to function. In order work around this and to acquire the raw pointer the VRMod DLL uses a library called MinHook to temporarily replace the DirectX 9 CreateTexture function in the shaderapidx9.dll DLL with a thin wrapper. This thin wrapper calls the original CreateTexture function but collects the result for further use in the VRMod DLL. The wrapper is hooked immediately before the Lua script calls GetRenderTarget and unhooked immediately afterwards.

The problem, I suspect, comes from the way the address of CreateTexture is determined. First GetModuleHandleA is used to get shaderapidx9.dll, then GetProcAddress to get a function called CreateInterface, which is then called to create some pointer. The result of CreateInterface is then passed through some fairly complex pointer arithmetic to compute the actual address of CreateTexture. The use of pointer arithmetic (rather than named types, structure members, etc.) and the fact that I cannot find any documentation for the CreateInterface function leads me to believe that this code is interfacing with implementation details which WineD3D/DXVK do not replicate exactly for obvious reasons.

The code in question can be found between lines 143 and 155 of the VRMod DLL source code here: https://github.com/catsethecat/vrmod-module/blob/8df57db09892e18e6b4f0287bc98755f0cf83de5/src/source.cpp I suspect that modifying the VRMod DLL itself (or perhaps using a native shaderapidx9.dll?) would be the only way to get this mod to work on Linux, as replicating such implementation details of DirectX seems likely to be outside of the scope of the WineD3D/DXVK projects.

SOy5SH4nDMwi avatar Oct 05 '20 00:10 SOy5SH4nDMwi

Chromium menu still not working, i tried using that proton ge version that was specified but instead of game i get no steamuser error...

tomekb530 avatar Mar 22 '21 14:03 tomekb530

Proton GE doesn't fix anything as of now, CEF is still broken.

feversec avatar Aug 04 '21 21:08 feversec

There seems to be a regression going from proton both 5.0-10 and 5.13-6 have greater performance compared to 6.3-5 and experimental: unknown unknown2 Note it's not related to DXVK as WineD3D has the same issue for the protons, however there seems to be something with Wine/Proton that affects this game and doesn't have proper gpu utilization resulting in awful frame pacing and frame timing it just jumps up and down as you move around the map.

kodatarule avatar Aug 12 '21 09:08 kodatarule

Hello @kodatarule, please add PROTON_LOG=1 %command% to the game's launch options, reproduce the regression with Proton 6.3, and attach the generated $HOME/steam-$APPID.log to this issue report as a file. (Proton logs compress well if needed.) Also, please copy your system information from Steam (Steam -> Help -> System Information) and put it in a gist, then include a link to the gist in this issue report.

kisak-valve avatar Aug 12 '21 12:08 kisak-valve

The log got incredibly big, but with the log the performance got even worse steam-4000.tar.gz And here's the gist: https://gist.github.com/kodatarule/819698738f3b4a07e314c8c5c586455f EDIT: The log is done by using Proton 6.3-5.

kodatarule avatar Aug 12 '21 13:08 kodatarule

@kodatarule Could you test Proton 6.3-6c and see if the excessive lag is gone? In my testing, it seems like it was fixed due to some improvements in the last release :)

alasky17 avatar Aug 25 '21 19:08 alasky17

For the main game it seems fixed, but for the mod temporal assassin the regression is still there.

kodatarule avatar Aug 31 '21 17:08 kodatarule

@kodatarule Sweet! Thank you for testing that :) Could you give me a hint about how to get/use the temporal assassin mod? I don't see it in the Steam workshop, and the one server that mentioned temporal assassin was not an open server.

alasky17 avatar Sep 01 '21 18:09 alasky17

You can git clone it, but it requires git-lfs for the bigger files from their gitlab page and then you just copy and paste files + overwrite - https://gitlab.com/B1gJohnson/temporal-assassin

kodatarule avatar Sep 02 '21 20:09 kodatarule

@kodatarule Thank you for the info! Unfortunately I'm not seeing a big difference between 6.3-6 and 5.13-6 with that mod. The general fps fluctuation when I was on a server was larger than any potential difference that I saw which makes it very hard to dig into :/

alasky17 avatar Sep 02 '21 20:09 alasky17

I guess it could be something with the mod probably

kodatarule avatar Sep 03 '21 20:09 kodatarule

CEF in the x86_64 branch appears to work okay with stock Wine (main menu works), but it's still broken with Proton. Definitely a Proton bug. Or perhaps something to do with pressure-vessel.

Cloudwalk9 avatar Oct 23 '21 17:10 Cloudwalk9

Compatibility Report

  • Name of the game with compatibility issues: Garry's Mod
  • Steam AppID of the game: 4000

System Information

  • GPU: AMD ATI Radeon RX 5500/5500M / Pro 5500M
  • Driver/LLVM version: Mesa 21.3.1
  • Kernel version: 5.15.7-arch1-1
  • Proton version: 6.3-8

I confirm:

  • [ ] that I haven't found an existing compatibility report for this game.
  • [x] that I have checked whether there are updates for my system available.

Symptoms

Garry's Mod crashes upon startup with the "Steam Error: No SteamUGC" error message every time despite having the Steam client being up to date.

Reproduction

Launch Garry's Mod.

Log file

steam-4000.log

ge4rsh0t avatar Dec 20 '21 01:12 ge4rsh0t

Helo @ge4rsh0t, err:steamclient:create_win_interface Don't recognize interface name: STEAMUGC_INTERFACE_VERSION016 looks like the line of interest from your log. This hints that the game bumped the version of steamworks they're using and lsteamclient in Proton will need a refresh.

kisak-valve avatar Dec 20 '21 02:12 kisak-valve

I modified the start script for Proton to bypass pressure-vessel. CEF still failed to start. Unless there's some other sandboxing I'm not aware of, I've ruled that out as being a problem. Last known working version was any Proton before 5.13, particularly the GE fork, but Garry's Mod will no longer start on older Proton versions, and the performance was unacceptable anyway.

Cloudwalk9 avatar Dec 20 '21 02:12 Cloudwalk9

@kisak-valve I have compiled this particular version of Proton Experimental and I can confirm that the game is now able to launch with this version of Proton. Thanks.

Here is the log file if necessary: steam-4000.log

ge4rsh0t avatar Jan 04 '22 04:01 ge4rsh0t

@kisak-valve Proton on x86_64 branch (chromium) doesn't show the main menu due to CEF. Any assistance?

steam-4000.log chromium.log

SoraBytes avatar Feb 07 '22 10:02 SoraBytes

@kisak-valve Proton on x86_64 branch (chromium) doesn't show the main menu due to CEF. Any assistance?

steam-4000.log chromium.log

This has been an issue for some time now, would love to know why exactly this happens - Other CEF apps seem to work properly

Curve avatar Feb 17 '22 18:02 Curve

Compatibility Report

  • Name of the game with compatibility issues: Garry's Mod
  • Steam AppID of the game: 4000

Tested on both beta branch x86-64 and on normal stable branch.

System Information

  • GPU: NVIDIA GeForce GTX 1650 SUPER

  • Driver/LLVM version: 515.48.07

  • Kernel version: 5.17.14-1-MANJARO 64-bit

  • Link to full system information report as Gist: https://gist.github.com/Fesiug/515fa93d2f6388c8e34b30516fe468f2

  • Proton version: 7.0-2

  • This is done on a BTRFS partition.

I confirm:

  • [ ] that I haven't found an existing compatibility report for this game.
  • [x] that I have checked whether there are updates for my system available. steam-4000.zip

Symptoms

Lua auto-refresh doesn't work, making development extremely lengthy and difficult. Editing a Lua file won't refresh the contents in it and requires a long map change.

Reproduction

Putting this file into the GarrysMod/garrysmod/lua/autorun/client directory and then modifying and saving it would change the output in the developer console in Windows versions. This is not done under Proton. TestFile.zip

Fesiug avatar Jun 12 '22 23:06 Fesiug

Chromium seems to be working on the x86-64 branch with Proton Experimental now.

Edit: Oddly enough it works on my Steam Deck but the menus still don't show up on my PC with an Nvidia card, both running Arch.

pongo1231 avatar Sep 21 '22 15:09 pongo1231

Even with Proton Experimental, Garry's Mod still wont show CEF menu on the x86-64 branch. Using Ryzen 5 2600 & AMD RX 5600 XT, Archlinux.

SoraBytes avatar Dec 04 '22 21:12 SoraBytes

[1216/205251.319:ERROR:sandbox_policy_base.cc(359)] Failed to add sandbox rule. 
error = 2, subsystem = 0, semantics = 0, pattern = 'Z:\home\david\.local\share\S
team\steamapps\common\GarrysMod/chromium.log'
[1216/205251.328:WARNING:gpu_process_host.cc(1262)] The GPU process has crashed 
1 time(s)

Based on a Google search, this is caused by symlinks on the command-line for CEF. If Proton makes extensive use of them in its sandbox, this could narrow it down and also explain why it works with normal Wine.

Cloudwalk9 avatar Dec 17 '22 02:12 Cloudwalk9

Thanks to the above comment. I've only done this once and my girlfriend also confirmed it, but I was able to get the CEF menu on x86-64 working in Proton Experimental. I've tried to type it out in a readable format.

Steps inside of steam are:

  1. Enable Proton (Experimental or 7.0)
  2. Choose BETA -> "x86-64"

Steps outside of steam are:

  1. cd /path/to/steam/compatdata/4000/pfx
  2. Move your entire game folder from /path/to/steamapps/common/GarrysMod to the new drive_c/GarrysMod (C:\GarrysMod)
  3. ln -s /path/to/steamapps/compatdata/4000/pfx/drive_c/GarrysMod /path/to/steamapps/common/GarrysMod The above creates a symlink from the steamapps/common/GarrysMod to the new drive_c/GarrysMod (C:\GarrysMod)

Edit - Removed unneeded steps, added step to enable Proton, cleaned up text

SoraBytes avatar Jan 17 '23 04:01 SoraBytes