ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.62k stars 1.07k forks source link

Summer Funland (780280) #3292

Open frostworx opened 4 years ago

frostworx commented 4 years ago

Compatibility Report

System Information

I confirm:

steam-780280.log

Symptoms

The game refuses to start when SteamVR is enabled and the hmd (Valve Index, but same with previous HTC Vive) is ready and crashes with useless UE4 Error requester,

When SteamVR is disabled the game starts normally on the desktop and can be controlled a bit with mouse and space. It is a VR only game. Just in case it is useful, here's the log of the game started without SteamVR: steam-780280-withoutVR.log

Reproduction

see above

frostworx commented 4 years ago

not sure if this helps but I disabled the initial installation of vcredist2015 and and directx by editing their "Steamworks" Shared installscript.vdf and chattr +i on them, so they couldn't recreate. on that way it was possible to use faudio with a fresh WINEPREFIX. I installed a self rolled debug faudio and launched the game with following options: PROTON_LOG=1 FAUDIO_LOG_WARNINGS=1 FAUDIO_LOG_ERRORS=1 FAUDIO_LOG_INFO=1 FAUDIO_LOG_LOGTHREADID=1 FAUDIO_LOG_LOGFILELINE=1 FAUDIO_LOG_LOGFUNCTIONNAME=1 %command%

the only faudio related part in the generated log looks like this: --- snip ---- 1465.427:0043:0044:trace:loaddll:load_so_dll Loaded L"C:\windows\system32\XAudio2_7.dll" at 0x7f35653e0000: builtin INFO: 0x7f360c6c8bc0 /media/wdblu4/sources/19/12/FAudio/src/FAudio.c:259 FAudio_CreateSourceVoice {wFormatTag: 0x1 PCM, nChannels: 1, nSamplesPerSec: 44100, wBitsPerSample: 16, nBlockAlign: 2, SubFormat: N/A} INFO: 0x7f360c6c8bc0 /media/wdblu4/sources/19/12/FAudio/src/FAudio.c:502 FAudio_CreateSourceVoice INFO: -> 0x5f1e850 INFO: 0x7f360c6c8bc0 /media/wdblu4/sources/19/12/FAudio/src/FAudio.c:2271 FAudioSourceVoice_SubmitSourceBuffer INFO: 0x5f1e850: {Flags: 0x0, AudioBytes: 128, pAudioData: 0x172a5480, Play: 0 + 0, Loop: 0 + 0 x 255} INFO: 0x7f360c6c8bc0 /media/wdblu4/sources/19/12/FAudio/src/FAudio.c:2419 FAudioSourceVoice_SubmitSourceBuffer INFO: 0x5f1e850: appended buffer 0x5f20220 INFO: 0x1a7c3700 /media/wdblu4/sources/19/12/FAudio/src/FAudio_internal.c:411 FAudio_INTERNAL_DecodeBuffers INFO: Voice 0x5f1e850, buffer 0x5f20220, decoded 64 samples from [0,64) INFO: 0x1a7c3700 /media/wdblu4/sources/19/12/FAudio/src/FAudio_internal.c:411 FAudio_INTERNAL_DecodeBuffers INFO: Voice 0x5f1e850, buffer 0x5f20220, decoded 64 samples from [0,64) ---snip ---- (the FAudio_INTERNAL_DecodeBuffers line repeated 1000x times)

frostworx commented 4 years ago

it looks like the game forcefully tries to launch SteamVR, no matter if it is already open or not. 1) when it is already running correctly when launching the game it "exists with the UE Error requester" because it wasn't able to init its own SteamVR instance 2) when SteamVR is not running when launching the game it fails to start its own SteamVR - zombie processes running from [Web Thread] [vrcompositor] [vrmonitor] but the parent process "Summer Funland\Game/Binaries/Win64/Game-Win64-Shipping.exe Game" keeps on working correctly and the game starts in a desktop window. Any hint on what I could try to help fix this would be great, this game is the only reason why I use my wifes windows machine ;)

frostworx commented 4 years ago

command line option "-onethread" fixes this issue, but the game jitters unplayable then.

frostworx commented 4 years ago

still not working. pretty sure it is either wine or vrclient_x64 related. with a custom proton build I found this difference from logs:

with a normal game launch with vr enabled: 2322.700:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_CreateOverlay 0xad93a0 2322.700:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_HideOverlay 0xad93a0 2322.700:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_SetOverlayTextureBounds 0xad93a0 2322.700:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_SetOverlayWidthInMeters 0xad93a0 2322.700:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_SetOverlayTexelAspect 0xad93a0 2322.700:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_SetOverlaySortOrder 0xad93a0 2322.700:0048:0049:trace:vrclient:winIVRCompositor_IVRCompositor_022_GetTrackingSpace 0xa352b0 2322.700:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_SetOverlayTransformAbsolute 0xad93a0 2324.559:0048:0092:trace:vrclient:winIVRCompositor_IVRCompositor_022_Submit 0xa352b0 2324.559:0048:0092:trace:vrclient:ivrcompositor_submit 0x7f4e24e93e9c, 0, 0x1065fab0, 0x1065fac0, 0 2324.559:0048:0092:trace:vrclient:ivrcompositor_submit D3D11

with vr enabled and command line -onethread:

3573.511:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_CreateOverlay 0xa961e0 3573.511:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_HideOverlay 0xa961e0 3573.511:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_SetOverlayTextureBounds 0xa961e0 3573.511:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_SetOverlayWidthInMeters 0xa961e0 3573.511:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_SetOverlayTexelAspect 0xa961e0 3573.511:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_SetOverlaySortOrder 0xa961e0 3573.511:0048:0049:trace:vrclient:winIVRCompositor_IVRCompositor_022_GetTrackingSpace 0xb2560 3573.547:0048:0049:trace:vrclient:winIVROverlay_IVROverlay_019_SetOverlayTransformAbsolute 0xa961e0 3576.217:0048:0049:trace:vrclient:winIVRClientCore_IVRClientCore_003_GetGenericInterface 0x73190 3576.217:0048:0049:trace:vrclient:ivrclientcore_get_generic_interface 0x7f696d10c140, 0x14241a5e8, 0x5feb74 3576.217:0048:0049:trace:vrclient:create_win_interface trying to create IVRExtendedDisplay_001

so after "winIVROverlay_IVROverlay_019_SetOverlayTransformAbsolute" it behaves differently.

I also extracted the log parts from WINEDEBUG=all logs starting from the last vrclient line which matches on both logs (so "winIVROverlay_IVROverlay_019_SetOverlayTransformAbsolute") until the next line from above sniplets (one 21MB and one 30MB file). as one is single threaded I'm not sure if I caught the bug with those greps though. I'm not really sure how to proceed now, so any useful feedback would be welcome. this is a really nice game, which deserves to work on linux.

(with vrclient_x64.dll.so copied from proton 3.x the game starts in a desktop window with steamvr enabled and audio coming from the hmd. btw, so different behavior)

frostworx commented 4 years ago

proton-5.0.5 which fixed https://github.com/ValveSoftware/Proton/issues/3652 unfortunately didn't fix this bug, which seems to have a broken openvr initialization as well.

frostworx commented 4 years ago

for the records. point 2 above "when SteamVR is not running when launching the game it fails to start its own SteamVR" very likely is this bug: https://github.com/ValveSoftware/SteamVR-for-Linux/issues/209

frostworx commented 4 years ago

my (pending) protondb update: "-onethread" commandline option required to get the game even working. previously (under nvidia rtx 2080) the game was unplayable with just one thread enabled. I switched to amdgpu (radeon vii) recently and the game is very good playable (onethread still required). not everything full fps but still a very enjoyable game!"

Distro:Arch Linux Kernel:5.7.2-zen1-1-zen RAM:16 GB GPU-Treiber:4.6 Mesa 20.2.0-devel (git-356be07ce2) GPU:AMD Radeon VII CPU:Intel Core i7-8700K @ 3.70GHz

frostworx commented 4 years ago

This patch fixes the game: https://github.com/ValveSoftware/Proton/pull/4163

frostworx commented 4 years ago

The game works with proton-5.13-2-rc1

https://github.com/ValveSoftware/Proton/issues/4360 https://github.com/ValveSoftware/Proton/releases/tag/proton-5.13-2-rc1