ValveSoftware / Proton

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

VRChat (438100) #1199

Open Goofybud16 opened 5 years ago

Goofybud16 commented 5 years ago

System Information Original System Information - Updated Jan 27, 2019

Problem: Was able to load into the hub successfully after going through tutorial, but most other player models did not render correctly, if at all. Upon restarting the game, it crashes upon loading into the hub. Mouse keeps pulling towards the bottom right. Game locked up on exit with a black screen.

All other behavior appeared to be correct.

bytefaux commented 5 years ago

I've found a couple workarounds for various issues listed here.

Crash on loading hub world: Setting launch option vrchat://launch?id= with another world id will load that world rather than the hub world. Been using wrld_8ef393c0-a985-4d7e-90f0-33ab10d41ee3:2822 here for the avatar testing world.

Mouse escape in windowed mode: Just set the -screen-fullscreen 1 -screen-width w -screen-height h launch options with the resolution of your screen as w and h.

Mouse sensitivity maxing out when opening/closing game menu: It's pretty annoying but it's fixed temporarily by switching focus from then back to the game by alt-tabbing or using a volume key so a popup showing the current volume quickly grabs and releases focus.

Game locks on exit: Just keep a command line open with killall VRChat.exe to bop the process after exiting :/

System: Ubuntu 18.04.1 LTS | Intel Pentium G3258 | GeForce GTX 750 Ti | Proton 3.7-7 Beta | VRChat 2018.3.1

kassindornelles commented 5 years ago

I have a problem with VRChat even with Stream Output support, the characters and everything on tutorial works fine but you can't load any map after that, the game just freezes.

Hardware/Software info: Proton 3.16-1 GTX: 750 2 GB Driver 396.54.09 CPU: Intel Core 2 Quad Q9550 RAM: 7 GB

Here is the proton log file: steam-438100.log.zip

owlboy commented 5 years ago

How have things changed with VRChat 2018.4.3? They just performed an engine upgrade along with upgrading various libraries they use.

bytefaux commented 5 years ago

@owlboy Not for the better unfortunately. VRChat 2018.4.3 segfaults now before even showing for me.

steam-438100.log

Edit 1: because this maybe related to my old cpu's lack of AVX support. Will update once try it on a supported cpu.

Edit 2: I upgraded to an i7 cpu with AVX support but had the same crashing issue until switching from proton 3.16-6 Beta to 3.16-4. Everything's back to working as well as it did before.

System: Ubuntu 18.04.1 LTS | Intel i7 4790 | GeForce GTX 750 Ti | Nvidia 396.54.09 | Proton 3.16-4 | VRChat 2018.4.4

prototype99 commented 5 years ago

3.16-6 beta works fine for me at home, the menu and at a 40mb room, but a 220 or so mb would not work, using the tv hangs it, certain characters cause hangs. some of the avatars at 'loli's world' seemed to break it as well (one of the top results for avatar worlds) oh! also -force-d3d11 allegedly helps. System: Gentoo 17.1 | AMD Ryzen 7 1800X | GeForce GTX 1070 | Nvidia 415.25 | Proton 3.16-6 | VRChat 2018.4.4

Goofybud16 commented 5 years ago

I just tested it with 3.16-6 beta and can confirm that it works to some extent now-- Turning on the TV hangs it though. Going through several avatar worlds, the game seems to work just fine. I did notice a lot of hangs-- the hangs would cause some nasty mouse wackyness. Except for the TV, however, none of the hangs lasted more than a few seconds and the game resumed working after that. The exit button does appear to hang the game, but I don't see that as a huge issue (it is the Exit button....)

prototype99 commented 5 years ago

ohhhh this reminds me of a few things i forgot to mention! yeah you have to externally end the process to exit. having any sort of controller plugged in seems to make the mouse 'stick'. however the hangs kept going for me. all hangs were related to certain avatars or to certain worlds (i reattempted the 220mb one A LOT and it always hanged seemingly permanently) i also have a terminal log, but i feel like there's not much useful info to obtain from it, the hangs don't SEEM to create any output vrchat-log.txt

owlboy commented 5 years ago

VRChat has issues closing properly without hanging in some cases on its own on Windows. So that is not surprising.

Goofybud16 commented 5 years ago

Since there isn't an issue for the VRChat VR version, and I believe that they are the same App ID (correct me if I'm wrong), I'm gonna add this here:

Once I got SteamVR working and happy, I was able to play several hours of VRChat in VR with my Vive with almost zero issues. There were 1 or 2 models that didn't render correctly, but that was an issue in desktop as well. Performance is about what I would expect from playing some VR games on Windows ~a year ago (last time I booted into Windows). I DID have Direct Mode working, and everything seemed to "just work" other than the Exit button in VRChat. All of the other bugs I hit seem to be actual bugs in the game itself, and weren't the fault of Proton.

Since my initial report was ~5 months ago, here is a new System Info gist to reflect the software changes that have occurred in that time: System Info. I'll add this to the OP as well.

Worfhard commented 5 years ago

In desktop mode the map "The Great Pug" crashes after ~10 seconds after you join. Proton 3.16-6 Beta sysinfo.txt steam-438100.zip

Goofybud16 commented 5 years ago

I've had that issue with the same map as well. I thought it was an avatar, but the map makes more sense because I kept crashing after turning Safety all the way up to max.

In VR, however, the map seems to be fine.

UPDATE: After posting this, I've tried to go to The Great Pug a few times, and it now crashes the game in VR. I'm not really sure what changed, if anything.

Goofybud16 commented 5 years ago

I've put over 100 hours into the game at this point, and can say that it works pretty well. Since my last system specs post, I think I've bumped to Mesa 18.3.x, but that is about the only notable change.

So far the game has been working fine with Proton 3.16-7 Beta.

The only things I've found that consistently crashes me 100% of the time is the ingame embedded web player and some shader-heavy worlds. Any world that has an auto-activated web player will crash me within a minute, hitting the button to turn it on in any world where it must be activated will crash right away. Worlds with lots of really fancy shaders also seem to crash the game, but it could also just be something like shader (re)compilation taking so long that I think the game died.

The game hangs on exit 100% of the time. Sometimes when killing the game (clicking the X until KDE prompts to kill wine), it will completely or partially crash SteamVR. I've noticed this happens more when the game has locked up/crashed; however it handles it perfectly fine sometimes. Restarting SteamVR fixes the issue.

I've also noticed that opening and closing the SteamVR Dashboard overlay too many times too quickly can crash the game as well. I started noticing that with 1.2.10, but that could just be because I've spent many many more hours using 1.2.10 than using any other version.

Other than that, the only crashes I experience are usually things that crash other users as well (IE avatars with just insane shaders, lots of resource-intensive avatars in a small area). If anything I've found that I crash less than some other users who run on Windows, as the game seems to handle extremely resource-intensive avatar shaders "well" (The game drops to 1-2 FPS but keeps rendering which allows me to use the menu to leave the world). It isn't pleasant, but the game does survive.

I've also noticed an issue (although I don't know that I've seen it since Proton 3.16-7 Beta activated) where shaders or something seem to keep running. When avatars have really demanding shaders, if I leave the world to other (empty, decently optimized) worlds, I'll often keep having terrible performance. If I go to a world where I usually get 45 FPS, it will be consistently dropping below 30 despite me being the only person there. Restarting the game (and SteamVR, if SteamVR crashes) will fix this. I'll see if I can reproduce this with Proton 3.16-7 Beta; it may have been fixed.

Overall, I'd say that with decently powerful hardware (see my system specs), the game is absolutely playable and a pretty good experience. It isn't perfect (see above for the issues), but most of the issues are usually avoidable and manageable. I absolutely plan to keep playing the game for the foreseeable future, so long as it stays in the current state (or gets better).

Goofybud16 commented 5 years ago

I may have found a fix for the video player crash (also fixes The Great Pug):

Browse to the VRChat folder in steamapps/common.

Browse to VRChat_Data, StreamingAssets, and rename youtube-dl.exe to something other than youtube-dl.exe (for example, youtube-dl.exe.no). This will disable the ingame streaming video player completely, but also fix the crashes. You won't be able to watch videos in maps anymore, but at least the game won't crash.

prototype99 commented 5 years ago

hmmm.... youtube-dl has a linux version, i wonder if it is possible to redirect it so it uses the native one. considering it's a command line application i imagine the commands are the same on both OSes

owlboy commented 5 years ago

youtube-dl requires Microsoft Visual C++ 2010 Redistributable Package (x86) per their homepage. https://www.microsoft.com/en-US/download/details.aspx?id=5555

https://rg3.github.io/youtube-dl/download.html

@Goofybud16 Can you confirm this is installed and available for youtube-dl?

owlboy commented 5 years ago

@Goofybud16 Here is a test world that has a Unity Video Player component in it, but it does not use any VRChat video scripts, so it should not call youtube-dl:

https://vrchat.com/home/world/wrld_f994e95a-8c0e-42b2-b894-f9cf6f1c6387

Upon loading, it should autoplay a video from a direct URL. This video should also loop.

If it could be used to test to see if this world also crashes VRChat under Proton, that might help confirm whether youtube-dl is specifically the issue or if it is the video player alone.

Thanks for continuing to test this.

Goofybud16 commented 5 years ago

youtube-dl requires Microsoft Visual C++ 2010 Redistributable Package (x86) per their homepage. https://www.microsoft.com/en-US/download/details.aspx?id=5555

@Goofybud16 Can you confirm this is installed and available for youtube-dl?

As far as what is installed: I just told Steam to use Proton 3.16-6 Beta (and now it uses 3.16-7 Beta after an auto update). I don't see anything for it in the Program Files or Program Files (x86) folders. Whatever Proton and VRChat installed as part of initial setup is all that is installed. What is the best way to install that/check for it?

@Goofybud16 Here is a test world that has a Unity Video Player component in it, but it does not use any VRChat video scripts, so it should not call youtube-dl:

https://vrchat.com/home/world/wrld_f994e95a-8c0e-42b2-b894-f9cf6f1c6387

Upon loading, it should autoplay a video from a direct URL. This video should also loop.

If it could be used to test to see if this world also crashes VRChat under Proton, that might help confirm whether youtube-dl is specifically the issue or if it is the video player alone.

Without Youtube-dl, that world doesn't crash, however it doesn't play a video either.

With Youtube-dl, the same exact thing happens. The video screen is just blank. In the console, I do get the line

Unloading 1 Unused Serialized files (Serialized files now loaded: 2)
UnloadTime: 1.459000 ms
WindowsVideoMedia error 0x80004001 while reading http://thegreatpug.com/video/other/dev_update-1.mp4

Context: Turning DXVA off
Error details: <Empty>
Track types:

(Filename:  Line: 2456)

Thanks for continuing to test this.

Not a problem. I'm just playing the game, most of the testing I've done comes as a result of trying to do something with friends and having it crash me.

As far as "what is the actual problem with the video subsystem", I suspect something on the VRChat side. The first time I go to The Great Pug after an update to the game/map (with youtube-dl), it works. However, all network connectivity outside of other player's movement and voice stops working. Portals don't load, avatars don't load, the menus are broken, and the game log gets filled with NullReferenceExceptions. Trying to Go Home will result in the game loading nothing forever. The second time I join the world, it will crash almost exactly at the 1 minute mark, hanging and maxing out 1 CPU core. Prior to hanging, the game breaks in pretty much the same way. I've had this in other worlds as well. In worlds without an auto-activated video player, the game seems to work fine until it gets turned on. Once it gets turned on, the game instantly hangs.

owlboy commented 5 years ago

@Goofybud16 Here is a build of a very basic Unity scene that has a video player configured as it is in my test world in VRC and is playing the same video. The version of Unity used is the same that VRC currently uses. No VRChat code or youtube-dl is involved in this build. I tested on Windows 10 in VMware to confirm the build runs and plays the video as expected.

http://thegreatpug.com/share/test_video_player.zip

(This has Windows, and macOS builds in it. But no Linux build as I don't have the package installed in Unity right now)

owlboy commented 5 years ago

Re: How to install Microsoft Visual C++ 2010 Redistributable Package (x86) for a Proton install.

I am not sure. I actually don't have a Linux box running Proton, and I have never used Proton myself. I am just interested in VRChat, and it running on other platforms. And am trying to help the best I can.

Goofybud16 commented 5 years ago

@Goofybud16 Here is a build of a very basic Unity scene that has a video player configured as it is in my test world in VRC and is playing the same video. The version of Unity used is the same that VRC currently uses. No VRChat code or youtube-dl is involved in this build. I tested on Windows 10 in VMware to confirm the build runs and plays the video as expected.

http://thegreatpug.com/share/test_video_player.zip

(This has Windows, and macOS builds in it. But no Linux build as I don't have the package installed in Unity right now)

I temporarily replaced VRChat with Test Video Player (to replicate as close as possible the environment in use [same wine prefix]) and while it does load up, the video never plays. The video player just stays solid white. If I run with konsole -e %command% (to get a debug log) there isn't really any useful info in the output.

I suspect the problem is that Proton is missing some Windows Media components (or maybe has a bug in some implementation?), and that causes the video to fail to play, which VRChat does not handle well causing it to lock up as it tries to sync playback or something with a video player that isn't playing.

JulianGro commented 5 years ago

If we could figure out how to make and exe that is called by vrchat (youtube-dl.exe) to run a native linux application, we could have that just redirect the command to native youtube-dl. I have tinkered a little bit with that, but unforunately just renaming an sh script to youtube-dl.exe and making it executeable doesn't work. In my case i tried putting cmd /c start /unix /usr/bin/glxgears in to see if glxgears would run instead of youtube-dl.

On the other hand, looking at the proton logs when running owlboys testworld and the test_video_player shows that "mfplat.dll" is being loaded. "mfplat.dll" is part of the windows media feature pack. I tried replacing the builtin mfplat.dll with a windows native mfplat.dll from the windows media feature pack for windows 7. Unforutnately it fails to load.

h1z1 commented 5 years ago

Could very well be VRChat embeds some config in their exe? I don't have a windows build environment atm. Testing in proton with a local file I get:

Z:\home\vrvm2\.local\share\Steam\steamapps\common\VRChat\VRChat_Data\Syoutube-dl --print-traffic asdf.mp4
Traceback (most recent call last):
  File "__main__.py", line 19, in <module>
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpcs52imf5\build\youtube_dl\__init__.py", line 472, in main
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpcs52imf5\build\youtube_dl\__init__.py", line 439, in _real_main
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpcs52imf5\build\youtube_dl\YoutubeDL.py", line 416, in __init__
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpcs52imf5\build\youtube_dl\YoutubeDL.py", line 2332, in _setup_opener
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmpcs52imf5\build\youtube_dl\utils.py", line 700, in make_HTTPS_handler
  File "C:\Python\Python34\lib\ssl.py", line 439, in create_default_context
  File "C:\Python\Python34\lib\ssl.py", line 390, in load_default_certs
  File "C:\Python\Python34\lib\ssl.py", line 382, in _load_windows_store_certs
ValueError: Empty certificate data

Semi related, appears to be a bug upstream in Python itself:

if sys.platform == "win32":
    from _ssl import enum_certificates, enum_crls

[...]

def _load_windows_store_certs(self, storename, purpose):
        certs = bytearray()
        for cert, encoding, trust in enum_certificates(storename):
            # CA certs are never PKCS#7 encoded
Casuallynoted commented 5 years ago

I'm having an issue where it just kind of lingers at the login screen. Currently using Proton 4.2-2, has anyone experienced this before?

kisak-valve commented 5 years ago

Hello @Casuallynoted, please add PROTON_LOG=1 %command% to the game's launch options and drag and drop the generated $HOME/steam-$APPID.log into the comment box.

Casuallynoted commented 5 years ago

Oh wait! I left it running in the background and it seems to have done it. I've had this issue once on windows with the latest update so maybe it's a VRChat thing! Nevermind!

Casuallynoted commented 5 years ago

Tried it again now after a break, so... I was correct that it did load me into a world but everything else is taking centuries to load, including my avatar, social menu, and eventually the app does crash before loading anything aside from the home world. Logs included:

steam-438100.log

Goofybud16 commented 5 years ago

After upgrading to 4-2.2, I haven't had any issues playing VRChat in VR. I haven't tested desktop mode yet.

Casuallynoted commented 5 years ago

After upgrading to 4-2.2, I haven't had any issues playing VRChat in VR. I haven't tested desktop mode yet.

That's really good to hear, are the video panel issues also resolved?

This is what I'm looking at atm, for some reason things don't load and inevitably hang. I can say I use VRC on the windows side of my PC and it's quite fast in terms of loading content. Screenshot from 2019-04-03 23-49-27

Goofybud16 commented 5 years ago

I guess I should clarify that I have seen no new issues in 4.2-2. I have not tested a video panel, I will try that.

Earlier I was able to load into both new worlds and worlds I had already loaded into in addition to loading new and existing avatars.

Update: Tried a world with a video player, immediately crashed me when I had the youtube-dl exe in place.

JulianGro commented 5 years ago

After upgrading to 4-2.2, I haven't had any issues playing VRChat in VR. I haven't tested desktop mode yet.

That's really good to hear, are the video panel issues also resolved?

This is what I'm looking at atm, for some reason things don't load and inevitably hang. I can say I use VRC on the windows side of my PC and it's quite fast in terms of loading content. Screenshot from 2019-04-03 23-49-27

VRChat saves a log in AppData. Maybe that shows something useful (even if I doubt it).

Goofybud16 commented 5 years ago

I just tested Desktop and was successfully able to load into a world and talk with someone. It seems to work fine for me.

Try disabling the video player (remove the youtube-dl executable) as your issues sound similar to mine when I had the video player enabled.

If anything, the mouse input issues I've had in the past appear to be fixed (which I believe was actually part of some Wine version between 3.16 and 4.2)

Casuallynoted commented 5 years ago

I just tested Desktop and was successfully able to load into a world and talk with someone. It seems to work fine for me.

Try disabling the video player (remove the youtube-dl executable) as your issues sound similar to mine when I had the video player enabled.

Disabled video player and it worked for eliminating the crashing! However, everything was still slow to load so I realized my linux machine was connected to both wifi and ethernet. I disconnected from Wifi and now everything loads as it should. I'm wondering if somehow the game gets confused when two internet connections are present. Either way, this looks fantastic so far. I want to hopefully help see if we can't find a solution for Youtube-DL because if so, for all intents and purposes VRChat has a Linux port.

Screenshot from 2019-04-04 10-31-14

JulianGro commented 5 years ago

There is still a good amount of worlds that crash the game. At least on nvidia.

Casuallynoted commented 5 years ago

Oh no :O What are some examples of worlds that crash? Maybe I can get some logs and post them

Sent with GitHawk

Goofybud16 commented 5 years ago

I suspect the video player related crashes may be related to Windows Media Player issues in Wine. When I was doing testing earlier in the thread, I did notice Windows Media Player errors. I wonder if installing Windows Media Player or DLLs in the Proton instance would fix the crashes related to the video player?

Casuallynoted commented 5 years ago

I suspect the video player related crashes may be related to Windows Media Player issues in Wine. When I was doing testing earlier in the thread, I did notice Windows Media Player errors. I wonder if installing Windows Media Player or DLLs in the Proton instance would fix the crashes related to the video player?

@Goofybud16 That’s a really good question! Do you happen to have the windows media player errors on hand? I’m away from my PC atm but I can try to see if I can do anything. :)

Sent with GitHawk

Goofybud16 commented 5 years ago

Do you happen to have the windows media player errors on hand? I’m away from my PC atm but I can try to see if I can do anything. :)

https://github.com/ValveSoftware/Proton/issues/1199#issuecomment-468069940

Check the second half of that comment. That was really the only useful log output I got IIRC

Casuallynoted commented 5 years ago

Do you happen to have the windows media player errors on hand? I’m away from my PC atm but I can try to see if I can do anything. :) ...

@Goofybud16

Sweet! Thank you so much, did some research and it appears the same error occurred for the game listed here when loaded in Proton: https://github.com/ValveSoftware/Proton/issues/1102#issuecomment-419660570

Wondering if perhaps their solution may work here as well. May have to contact the person who got it working and get a general idea as to how they did it :)

Sent with GitHawk

Goofybud16 commented 5 years ago

I wasn't able to get it to work. Here is what I tried to do:

Copy

mf.dll
mferror.dll
mfplat.dll
mfreadwrite.dll
msmpeg2adec.dll
msmpeg2vdec.dll
sqmapi.dll

from a Windows 7 install from System32 and SysWOW64 to the respective locations in the Wine Prefix.

Export the entire HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Media Foundation from a Windows install registry to a file called wmf.reg.

Put

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Wine\LicenseInformation]
"msmpeg2adec-AACDecoderV2AddInEnable"=dword:00000001
"msmpeg2adec-AACDecoderV2InSKU"=dword:00000001
"msmpeg2adec-DolbyDigitalDecoderV2AddInEnable"=dword:00000001
"msmpeg2adec-DolbyDigitalDecoderV2InSKU"=dword:00000001
"msmpeg2vdec-H264VideoDecoderV2AddInEnable"=dword:00000001
"msmpeg2vdec-H264VideoDecoderV2InSKU"=dword:00000001
"msmpeg2vdec-MPEG2VideoDecoderV2AddInEnable"=dword:00000001
"msmpeg2vdec-MPEG2VideoDecoderV2InSKU"=dword:00000001

[HKEY_CLASSES_ROOT\CLSID\{271C3902-6095-4c45-A22F-20091816EE9E}]
@="MPEG4 Byte Stream Handler"

[HKEY_CLASSES_ROOT\CLSID\{271C3902-6095-4c45-A22F-20091816EE9E}\InprocServer32]
@="mf.dll"
"ThreadingModel"="Both"

[HKEY_CLASSES_ROOT\CLSID\{477EC299-1421-4bdd-971F-7CCB933F21AD}]
@="File Scheme Handler"

[HKEY_CLASSES_ROOT\CLSID\{477EC299-1421-4bdd-971F-7CCB933F21AD}\InprocServer32]
@="mf.dll"
"ThreadingModel"="Both"

[HKEY_CLASSES_ROOT\CLSID\{48e2ed0f-98c2-4a37-bed5-166312ddd83f}]
@="MFReadWrite Class Factory"

[HKEY_CLASSES_ROOT\CLSID\{48e2ed0f-98c2-4a37-bed5-166312ddd83f}\InprocServer32]
@="mfreadwrite.dll"
"ThreadingModel"="Both"

into a file called mf.reg.

Then, run the following:

export WINEPREFIX=/path/to/SteamLibrary/steamapps/compatdata/438100/pfx
wine start regedit.exe mf.reg
wine64 start regedit.exe mf.reg
wine start regedit.exe wmf.reg
wine64 start regedit.exe wmf.reg
wine regsvr32 msmpeg2vdec.dll
wine regsvr32 msmpeg2adec.dll
wine64 regsvr32 msmpeg2vdec.dll
wine64 regsvr32 msmpeg2adec.dll

This did seem to eliminate the DXVA errors, but the game still doesn't work. When I put a video in the video player in Room of the Rain, it seemed like it wanted to work, but eventually crashed.

The only relevant log section I could see with an error was:

2019.04.07 11:54:39 Log        -  [Network Processing] RPC invoked _SendOnSpawn on SceneEventHandlerAndInstantiator for goofybud

2019.04.07 11:54:39 Exception  -  NullReferenceException: Object reference not set to an instance of an object
VideoSpeaker+PICMIJKCDDD.MoveNext ()
UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress)

2019.04.07 11:54:39 Warning    -  [VRC_TriggerInternal] SpawnVideo (Dynamic Clone 1312513:100003) deferred event Unnamed type OnSpawn because ScreenAnchor to ready
TheLastRar commented 5 years ago

Issues relating to lack of Media Foundation support appears to be tracked here https://github.com/ValveSoftware/Proton/issues/1464 (The issue focused on wmv support, but issues with other video formats are also tracked)

Also, worth noting that the dlls from windows 7 dosn't support all of the MF features required by VRChat, see http://help.vrchat.com/kb/article/21-video-players-arent-working/ (Not sure how many worlds this effects), but is seems proton might not support the newer versions, based on https://github.com/ValveSoftware/Proton/issues/1102#issuecomment-421484508

Casuallynoted commented 5 years ago

Really appreciate your insight TheLastRar! Man that’s a shame, so ultimately it comes down to supporting not only Media Foundation but also the latest Media Foundation from Win10.

TheLastRar commented 5 years ago

I have a friend that plays VRChat using windows 7, and most(?) video panels seem work for them, but they have crashed in the "Back to the Future The Ride" map in the past (which says it needs win10).

So the windows 7 version does provide a good amount of support, But yeah, support of the for latest version seems to be required for everything VRChat can do.

Goofybud16 commented 5 years ago

Issues relating to lack of Media Foundation support appears to be tracked here #1464 (The issue focused on wmv support, but issues with other video formats are also tracked)

Also, worth noting that the dlls from windows 7 dosn't support all of the MF features required by VRChat, see http://help.vrchat.com/kb/article/21-video-players-arent-working/ (Not sure how many worlds this effects), but is seems proton might not support the newer versions, based on #1102 (comment)

I tried the DLLs from Windows 8.1 originally and they didn't work, so I went back and got the ones from Windows 7, which also didn't appear to work.

TheLastRar commented 5 years ago

I used process explore to see what dlls are loaded by unity to see if any where missed in the workarounds (I used the test scene posted earlier)

These dlls seem Media foundation related, so might be worth looking into (I'm using windows 10, Windows 7 might not have/need all of these)

TheLastRar commented 5 years ago

Looking further at the test scene, (using a ubuntu VM and wine 4.5)

Adding the following to the mf.reg now has the video player display grey (after 1-2 seconds) instead of white

[HKEY_CLASSES_ROOT\CLSID\{2EEEED04-0908-4cdb-AF8F-AC5B768A34C9}]
@="Drm Scheme Handler"

[HKEY_CLASSES_ROOT\CLSID\{2EEEED04-0908-4cdb-AF8F-AC5B768A34C9}\InprocServer32]
@="mf.dll"
"ThreadingModel"="Both"

[HKEY_CLASSES_ROOT\CLSID\{37A61C8B-7F8E-4d08-B12B-248D73E9AB4F}]
@="Secure Http Scheme Handler"

[HKEY_CLASSES_ROOT\CLSID\{37A61C8B-7F8E-4d08-B12B-248D73E9AB4F}\InprocServer32]
@="mf.dll"
"ThreadingModel"="Both"

[HKEY_CLASSES_ROOT\CLSID\{44CB442B-9DA9-49df-B3FD-023777B16E50}]
@="Http Scheme Handler"

[HKEY_CLASSES_ROOT\CLSID\{44CB442B-9DA9-49df-B3FD-023777B16E50}]
@="Http Scheme Handler"

[HKEY_CLASSES_ROOT\CLSID\{44CB442B-9DA9-49df-B3FD-023777B16E50}\InprocServer32]
@="mf.dll"
"ThreadingModel"="Both"

[HKEY_CLASSES_ROOT\CLSID\{477EC299-1421-4bdd-971F-7CCB933F21AD}]
@="File Scheme Handler"

[HKEY_CLASSES_ROOT\CLSID\{477EC299-1421-4bdd-971F-7CCB933F21AD}\InprocServer32]
@="mf.dll"
"ThreadingModel"="Both"

[HKEY_CLASSES_ROOT\CLSID\{9EC4B4F9-3029-45ad-947B-344DE2A249E2}]
@="Urlmon Scheme Handler"

[HKEY_CLASSES_ROOT\CLSID\{9EC4B4F9-3029-45ad-947B-344DE2A249E2}\InprocServer32]
@="mf.dll"
"ThreadingModel"="Both"

[HKEY_CLASSES_ROOT\CLSID\{E9F4EBAB-D97B-463e-A2B1-C54EE3F9414D}]
@="Net Scheme Handler"

[HKEY_CLASSES_ROOT\CLSID\{E9F4EBAB-D97B-463e-A2B1-C54EE3F9414D}\InprocServer32]
@="mf.dll"
"ThreadingModel"="Both"

The video fails to play further, showing the following error in the console

0050:fixme:urlmon:InternetBindInfo_GetBindString not supported string type 20
0050:fixme:urlmon:ProtocolStream_Seek no cache file, not supported

So it seems that even the windows 7 dlls can run into unimplemented functions

Casuallynoted commented 5 years ago

Omg hell yeah!! A grey screen is better than a crash!

Sent with GitHawk

JulianGro commented 4 years ago

So the crashes when joining maps have been gone for a while now for me. My game only crashes from vrchat bugs now and somewhat often when a new avatar gets loaded. Anyone else experiencing this? It feels like my graphics card hangs. The game freezes, and my whole system is EXTREMELY slow, until VRChat, SteamVR and Steam get terminated. This only happens to me in VR. I have used multiple Nvidia graphics driver versions and use 430 right now, with this happening.

owlboy commented 4 years ago

@jug007 It would be interesting to know what avatars cause this. I know that will be hard to track down though. I do know that avatars with high res textures or a lot of large resources cause a hitch still on Windows, so there is a chance it's related to that stress.

If you could collect the Output logs when these crashes happen, they might by chance have an error output in them that would at least point in the right direction.

On Windows they are located here: C:\Program Files (x86)\Steam\steamapps\common\VRChat

JulianGro commented 4 years ago

The crashes don't seem to be linked to specific avatars. It seems like the game doesn't "crash" if I have it load one person at a time rather than enabling two people's avatars at once. Also people changing avatars also doesn't seem to "crash" it. Only enabling avatars of people that are disabled by the safety settings seems to cause this fairly reliably. Though loading a ton of avatars, because the safety settings allow it also seems to crash the game fairly often.

I think the idea about this being stress related might be somewhat of a thing. Proton seems to amplify already existing bugs in VRChat in some cases. Like VRChat never exiting properly, where as it sometimes exits properly on windows.

JulianGro commented 4 years ago

Made a thread on the Nvidia forums for the "crashes"/hangs I am experiencing. https://forums.geforce.com/default/topic/1118701/geforce-drivers/-driver-430-14-system-sometimes-hangs-when-playing-vrchat-with-proton-on-linux-mint-64bit/