protonscr

Soulworker

protonopen appid 1377580Game compatibility - Unofficial.NET
ValveSoftware/Proton#6709 · opened 2023-04-22 by tg-roshiroku · updated 2025-05-09 · 24 comments · github · game page · search this game
1 matching comments, n / p to jump
Ttg-roshiroku 2023-04-22 github

Compatibility Report

  • Name of the game with compatibility issues: Soulworker
  • Steam AppID of the game: 1377580

System Information

  • GPU: GTX 1080
  • Driver/LLVM version: mesa 23.0.2-2
  • Kernel version: linux-zen 6.2.12.zen-1
  • Link to full system information report as
  • Proton version: Proton Experimental or Proton 8.0-1 (Same result)

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

Proton Experimental:
Proton 8.0-1:

Server communication looks one sided (Server is getting my inputs, I'm not getting everything back from server). Meaning every guildmate sees me, can read my messages while i don't see any players nor npcs, my equipment, and things that i own (empty inventory)

After a while I'm getting "Disconnected from server"

Reproduction

  • Force Proton Experimental or Proton 8.0-1

  • Launch the game

  • Anti-cheat will be initialized (Xigncode3 xxd-0xem (alive whole time))

  • Pick server (it takes a while)

  • Pick character

  • Now we are in game, games works properly etc except we are missing server informations

  • After a while we will get

  • Game will be shut down

Iipr 2023-06-19 github

During tutorial with Proton 8.0 game works for a while. It exits with a dialog to send error information after having talked to one NPC and I think a door is about to open at that point.

Zzaps166 2023-07-07 github

Changes in ws2_32 in wine 6.12 caused this. Game is setting 0 which causes the issue. Reverting this fixes the issue:

diff a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -3204,6 +3204,11 @@
 
         case SO_RCVBUF:
             if (optlen < 0) optlen = 4;
+            if (*(const int *)optval < 2048)
+            {
+                WARN("SO_RCVBUF for %d bytes is too small: ignored\n", *(const int *)optval );
+                return 0;
+            }
             return server_setsockopt( s, IOCTL_AFD_WINE_SET_SO_RCVBUF, optval, optlen );
 
         case SO_RCVTIMEO:

@kisak-valve Could you look at this?


You can also try to set sudo sysctl net.core.rmem_max=50000000 before starting game, it may help without recompiling Proton.

Ggofman 2023-09-01 github

@zaps166 Thanks for your finding. I sent a bit different patch upstream (https://gitlab.winehq.org/wine/wine/-/merge_requests/3705) but the idea is about the same (small buffers work quite differently on Windows and Linux at least with async socket I/O, Linux drops network packets when Windows won't, and I think we'd really better not to lower receive buffer length below default). That patch is in the just updated Proton Experimental ([bleeding edge] beta branch).

Zzaps166 2023-09-01 github

@gofman Thanks, it's working! :slightly_smiling_face:

Zzaps166 2023-09-15 github

Networking is working correctly after the fix, but another issue is that game is freezing often on map loading screen. Freeze depends on randomness and PC - on my laptop is mostly working, on my PC is mostly not working. If the game loads first time, ti's working stable later.

As a workaround I can remove General.ini file - game starts properly, but loading is slower. After game restart, loading is faster, but it's freezeng on loading screen again (need to remove file and configure game every time).

Logs when game starts properly and when it's freezed loading screen (music is playing and animation is running, but nothing happens, can't load the map) - remove .txt suffix to unpack:

steam-1377580.log-ok.zst.txt
steam-1377580.log-bad.zst.txt

Ssimifor 2023-09-16 github

I dI tried this and I'm seeing the same, 6 out of 6 times I launched the game with General.ini already being present, the game would get stuck in a loading screen, deleting the file beforehand made it work.
steam-1377580.log

Zzaps166 2023-09-16 github

@simifor Could you check if game is loading without deleting config file if you choose Traditional Chinese language in game properties on Steam?

Ssimifor 2023-09-16 github

@zaps166 well, looks like I found a workaround. I don't know if it's the same in your general.ini file, but mine has this line: File Version=24 and that's what's making the game get stuck in my computer, you can remove it and the game will load normally, though the game will just add it back next boot. You can set the file to read only to prevent the game from adding it back but you also won't be able to change the settings while it's active.

Hopefully this will help someone actually find the root cause of this issue...

Edit: @zaps166 I wrote this message before your comment (and forgot to send it somehow). I have now tested tarditional chinese and it doesn't seem to have changed anything for me, it still gets stuck loading.

Zzaps166 2023-09-16 github

@simifor When I remove File Version=24 it behaves the same as deleting General.ini - game starts in small window and loading is slower (but stable).

I wrote this message before your comment (and forgot to send it somehow). I have now tested tarditional chinese and it doesn't seem to have changed anything for me, it still gets stuck loading.

It's a really strange issue, currently when I switched to Chinese, I can load normally. ~I'll edit this message when it stops loading :smile_cat:~ It also get stuck.


On PC when it loads with a General.ini workaround, I can use Polish characters on chat, but only two are displayed correctly (bad font, however it works on Windows).
I noticed when I change to Chinese, I can't write any of Polish characters (ąśżźćłóńę).
On my laptop the games loads in English language, but I also can't write Polish characters (EDIT: I can write them now (random?) and game still loads on laptop).

Maybe the problem is with input method or (again) region / comma separator? But LANG=C doesn't help.

Ssimifor 2023-09-16 github

the issue has behaved differently for both of us, at least from your wording it seems like sometimes you don't get the issue, even if general.ini is present. In my case, I was never able to go past the loading screen with File Version=24 being present. I wonder what could be causing this difference.

Zzaps166 2023-09-16 github

I have differences between my two PC's... Very weird.

Do you have a difference between removing File Version=24 line and deleting `General.ini' file? For me it behaves the same (both loads and both resets settings).

Ssimifor 2023-09-16 github

Both behave the same, I think that General.ini only causes problems because of the file version line

Zzaps166 2023-09-18 github

I think if you remove file version, game assumes this file is invalid and treats it same as empty or non-existent file. But it's a workaround for now, delete File Version line or make General.ini empty and make it read-only. However game is loading much slower with this, like very old version of the game.

I don't have idea, tried everything :smile: What flags are useful to debug weird game freezes? @kisak-valve

Zzaps166 2023-09-21 github

After today's game update I can load normally without workaround (so far). Could anybody confirm this?

Ssimifor 2023-09-21 github

Tested it, launched it twice with file version in, and both times it loaded, so it seems to be fixed now

Zzaps166 2023-10-06 github

@alasky17 This game doesn't ungrab cursor on exit on proton-experimental/BE.

Aalasky17 2023-10-06 github

@zaps166 I'm not seeing this behavior unfortunately. Could you get a video of the behavior so that I can see if I'm trying the right thing? If that is not possible, could you describe the exact steps I'd need to take to get the cursor grabbing on exit? Also - I'm assuming this is still with XFCE?

Zzaps166 2023-10-06 github

@alasky17 Yes, it's patched Xfwm4.

You have to choose server and click Settings button, then choose Borderless or Full screen and click OK:

Screenshot_20231006_211237

Or modify General.ini and set SCREENMODE=1 in [Screen] section.

Next click quit game button and confirm. The game closes many seconds - do alt-tab - the mouse is in still game and can't click anything.


Unrelated to mouse cursor, but this game has other issue with full screen mode (not borderless) and alt-tab. When you go back to game window, it looks like this :smile: :
Screenshot_20231006_211513

Aalasky17 2023-10-06 github

@zaps166 I tried both borderless windowed mode (non-native resolution) and fullscreen mode, and what I'm seeing with the cursor looks like "correct" behavior. The custom cursor shows up when the cursor is hovering over the game window as it is closing (which does take a long time), but if I lose focus or put the cursor outside of the game window, I get the system cursor and I am able to interact with other things while the game is closing. This does not look like a regression to me. The original problematic commit that was causing the cursor to stay grabbed was reverted (in BE only right now), and is now gated to one specific game (Return to Monkey Island).

Zzaps166 2023-10-06 github

@alasky17 That's strange. There's no issue when game is running windowed mode or borderless with non-native resolution (also windowed, but without title bar). Also can't reproduce with two monitors connected.

I can reproduce on borderless with native resolution or full screen modes with single monitor connected, so the borderless fill the entire screen and X11 compositor is bypassed. On this configuration, before the game closes, do alt-tab.

Reproducibility 100% on experimental-bleeding-edge-8.0-58518-20231006-pdf5240-w57c5732-d4d9746-v582226 on xfwm4 and openbox (compositor doesn't matter).
It's working correctly on newly released Proton 8.0-4 to me.

Aalasky17 2023-10-10 github

@zaps166 Thank you! I was testing with 2 monitors, and I think that is why I was missing the bug. When I tried with only one monitor, and with the game fullscreen, I saw exactly what you are describing on exit with the custom cursor sticking around until the game is fully exited.

Unfortunately, I am quite frequently getting a crash during the dev logo video that plays before the game window, and this is making it pretty much impossible to investigate further. Have you run into this and do you have any way around this?

I found similar behavior with a different game (Risen) that I was able to bisect, and I'm hopeful that this is all the same regression. I have a few builds uploaded here: https://www.codeweavers.com/xfer/alasky/Proton_testing/ with lock code "cursor". Would you mind trying all 3 builds and telling me which (if any) have the regressive behavior and which do not? You can test all the builds by:

  1. Dropping the builds into ~/.steam/steam/compatibilitytools.d (which you might need to create)
  2. Untarring builds
  3. Restart Steam, and builds should show up from Proton version drop-down menu.
Zzaps166 2023-10-10 github

@alasky17 Thanks for investigation!

Unfortunately, I am quite frequently getting a crash during the dev logo video that plays before the game window, and this is making it pretty much impossible to investigate further. Have you run into this and do you have any way around this?

In the past on 32-bit client I had to use PROTON_HEAP_DELAY_FREE=1 to not crash on various videos/cutscenes (id:630100 or other game versions), but now I don't need any workarounds - it's just working (on Proton 8.0-4 you need sudo sysctl net.core.rmem_max=50000000, on experimental it's working out of the box).

The only problems I have (except cursor grab on exit on experimental) comparing to Windows:

Would you mind trying all 3 builds and telling me which (if any) have the regressive behavior and which do not?

Yes, I tried all. experimental-8.0-20230706 - only this of all three builds is working correctly.

Aalasky17 2023-10-10 github

@zaps166 Thank you for trying the proton versions! That confirms my suspicion that the cursor behavior has the same root cause as a different game I found recently, so I've placed the "blame" on the correct patchset :) The dev who wrote the patchset is aware of the regression, although it may be some undetermined amount of time before it is fixed. There is a good reason why this patchset is only in experimental ... it is a WIP and the whole point is for us to find issues like this.

And thank you for the tips on Soulworker! I'll try those :)

Zzaps166 2023-10-10 github

@alasky17 Thanks for investigation!

Proton versions

Launch options