ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
22.89k stars 1k 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.

JulianGro commented 4 years ago

Apparently this issue doesn't have much to do with VRChat: https://devtalk.nvidia.com/default/topic/1051300/linux/inconsistent-but-frequent-freeze-caused-by-steamvr

JulianGro commented 4 years ago

Updating to 418.52.07 fixed this issue for me. https://devtalk.nvidia.com/default/topic/1051300/linux/inconsistent-but-frequent-freeze-caused-by-steamvr/post/5342522/#5342522

kisak-valve commented 4 years ago

VRChat avatars with >1 skinned meshes render only the first mesh (the one named "Body" in Unity), and not others

Issue transferred from https://github.com/ValveSoftware/Proton/issues/2764. @Icekhaos posted on 2019-06-01T20:39:29:

Compatibility Report

System Information

I confirm:

steam-438100.log

Symptoms

Player models with more than one skinned mesh (confirmed secondhand by an Unity avatar creator) do not render any skinned meshes besides the only one required by the game, that is, the one named "Body".

Here is the list of meshes, the first group (Mishe) is the unoptimized avatar that does not render properly, and the latter one (MisheOptimized) is an optimized avatar that correctly renders. UnityMisheOpti

Here is what Mishe looks like: unknown (1)

Here is what MisheOptimized looks like: unknown

Reproduction

1: Launch VRChat 2: Enter a hub world 3: Wait for an avatar with multiple skinned meshes 4: Compare screenshots

Icekhaos commented 4 years ago

VRChat avatars with >1 skinned meshes render only the first mesh (the one named "Body" in Unity), and not others

Issue transferred from https://github.com/ValveSoftware/Proton/issues/2764. @Icekhaos posted on 2019-06-01T20:39:29:

Compatibility Report

System Information

I confirm:

steam-438100.log

Symptoms

Player models with more than one skinned mesh (confirmed secondhand by an Unity avatar creator) do not render any skinned meshes besides the only one required by the game, that is, the one named "Body".

Here is the list of meshes, the first group (Mishe) is the unoptimized avatar that does not render properly, and the latter one (MisheOptimized) is an optimized avatar that correctly renders. UnityMisheOpti

Here is what Mishe looks like: unknown (1)

Here is what MisheOptimized looks like: unknown

Reproduction

1: Launch VRChat 2: Enter a hub world 3: Wait for an avatar with multiple skinned meshes 4: Compare screenshots


Originally reported by me, thanks for moving.

JulianGro commented 4 years ago

This happenes on Nvidia if you don't use dxvk (e.g. use just wine instead of proton).

I would definetly take the drivers into scrope, as Vulkan is a fairly new technology and Amd and Nvidia had problems with it in their drivers until just recently (or apparently maybe still).

JulianGro commented 4 years ago

Actually, if that is cubed shader, you might want to try if the problem occurs with a different shader, as there has been a bug in the AMD graphics drivers in the past where cubed's shader turned invisible (not looking exaclty like these screenshots).

Jordyb97 commented 4 years ago

Actually, if that is cubed shader, you might want to try if the problem occurs with a different shader, as there has been a bug in the AMD graphics drivers in the past where cubed's shader turned invisible (not looking exaclty like these screenshots).

I used arktoon shader(That was my unity project, and helped out) https://gyazo.com/1f798002e30cb0228176b13edd65e317

Icekhaos commented 4 years ago

We originally thought it was the rimlighting or shaders, but he excluded those afaict.

Icekhaos commented 4 years ago

Oh; I have shaders disabled for random people, and those are exhibitng this problem as well. Hope this helps.

Goofybud16 commented 4 years ago

I have about 750 hours on VRChat at this point. Other than random graphical corruption issues (which are solved by restarting the game), I haven't noticed any issues like this.

I've got an R9 Fury, and I'm running on Mesa 18.3.4 with Proton 4.2-5 (although I've been playing regularly since Mesa 18.2.x + Proton 3.16 betas).

@Icekhaos Can you try using one of the Mesa PPAs to install a newer version of Mesa (eg 18.3.x or 19.x) and see if that resolves the issue?

Icekhaos commented 4 years ago

Any PPAs you recommend? Does Oibaf's work?

Goofybud16 commented 4 years ago

I'd recommend Padoka Stable over Obiaf because Obiaf seems to build git latest mesa instead of stable. Sometimes git latest mesa has bugs that don't make it to a release.

If you have the time, it wouldn't hurt to test both though.

Icekhaos commented 4 years ago

19.0 fixed it. I wonder why that happened though...

Goofybud16 commented 4 years ago

19.0 fixed it. I wonder why that happened though...

Likely a bug in Mesa 18.2.x that is fixed in 18.x.3 and newer.

JulianGro commented 4 years ago

Does anyone know how to get asian characters working?

Goofybud16 commented 4 years ago

Does anyone know how to get asian characters working?

I've noticed non-ASCII characters not rendering as well.

I suspect it is a missing font issue because I've heard reports from some of my friends on Windows that they have the same problem.

Icekhaos commented 4 years ago

Cyrillic (Russian) characters are working fine. So there are at least some other fonts that work.

JulianGro commented 4 years ago

So apparently some of the fonts are "missing": https://wiki.winehq.org/Font_Replacements https://bugs.winehq.org/show_bug.cgi?id=13829 https://wiki.winehq.org/Useful_Registry_Keys

According to these resources, wine needs to have font replacements set, for some of the fonts to work. Proton seems to not have these set. These resources also state the fedora and ubuntu versions of wine, as well as crossover have these replacements in place. So a fairly easy way to test if VRChat is actualy affected by this, would be to run it in wine or crossover and check if japanese characters are showing there. Apparently you can set these replacements using regedit. To run regedit in proton, just replace its path in the following startup settings: "/mnt/e7b6ce9b-f952-4ee7-9061-34b5f3f5e028/SteamLibrary/steamapps/common/Proton 4.2/proton" waitforexitandrun regedit && echo %command% >/dev/null

I feel like the easiest way to get the right replacements, would be to just copy them from the version of wine that comes from the systems repository.

Beanow commented 4 years ago

I've tried to figure out the fonts issue, here's what I learned so far. VRC uses the fonts BankGothic (nameplates) and Dosis (menus). Which indeed are missing lots of international glyphs. Running notepad with proton in the same environment as the game, you can see this happening.

See a sample ![image](https://user-images.githubusercontent.com/497556/60685062-656bd600-9ea1-11e9-8626-022e727b89f9.png) To try it for yourself ``` English: Rome is a beautiful city Italian: Roma è una bella città Arabic: روما مدينة جميلة Chinese (Simplified): 罗马是一座美丽的城市 Chinese (Traditional): 羅馬是一座美麗的城市 Czech: Řím je krásné město Greek: Ρώμη είναι μια πανέμορφη πόλη Hebrew: רומא היא עיר יפה Hindi: रोम एक सुंदर शहर है German: Rom ist eine schöne Stadt Japanese: ローマの美しい街です Korean: 로마는 아름다운 도시입니다 Russian: Рим очень красивый город Thai: โรมเป็นเมืองที่สวยงาม Turkish: Roma güzel bir şehir olduğunu Ukrainian: Рим дуже красиве місто Vietnamese: Rome là một thành phố xinh đẹp - by Andrea Denzler for Wine ```

I found that following the guide on font replacements and the bugreport can resolve the issue in notepad. But the game does not reflect this.

I've tried to link both core fonts (arial, courier, times, etc.) and the fonts used (BankGothic, Dosis) to use TakaoPGothic and DroidSansFallbackFull as fallbacks. Again works fine in notepad to show Japanese text, but no change in the game.

My thinking is that the Unity engine handles fonts differently from regular windows applications. As this https://docs.unity3d.com/Manual/class-Font.html seems to reflect.

For good measure I also tried winetricks corefonts and cjkfonts. So far haven't found a fix.

h1z1 commented 4 years ago

Re Windows Media Foundation support see #1464

JulianGro commented 4 years ago

Opened a feature request for the fonts issue. https://vrchat.canny.io/feature-requests/p/add-font-fallbacks-for-compatiblity Also the Dosis font is actually available on linux. At least it is in the ubuntu package repository "fonts-dosis".

JulianGro commented 4 years ago

Does anyone know a way to make Steam not override the youtube-dl.exe with every VRChat update? Even when root doesn't have rights to modify the file, Steam still overrides it..

JulianGro commented 4 years ago

Also the Font issue is gone for me. I don't know if it was a Proton update, a VRChat update, or whatever, but I can see japanese names fine now.

Beanow commented 4 years ago

It's fixed in Proton 4.11-3. https://github.com/ValveSoftware/Proton/releases/tag/proton-4.11-3

Add missing Chinese, Japanese, and Korean language font.

It looks like though, my method of manually adding it before was possibly incomplete then.

Beanow commented 4 years ago

Some world do freeze up when trying to load for me though. Can you try for example https://www.vrchat.net/home/launch?worldId=wrld_06021428-e14b-4c02-9f57-f5c28f6d6efe

It hangs on a black screen just when loading in the world. Then eventually ubuntu asks me if I want to force kill it.

jzengc commented 4 years ago

Hi,

Some world do freeze up when trying to load for me though. Can you try for example https://www.vrchat.net/home/launch?worldId=wrld_06021428-e14b-4c02-9f57-f5c28f6d6efe

It hangs on a black screen just when loading in the world. Then eventually ubuntu asks me if I want to force kill it.

Does it also hang on an older version of Proton? Or it is a regression of Proton 4.11-3? Could you test it with an older Proton, such as 4.11-2? Thanks.

Beanow commented 4 years ago

Hey @jzengc I've run through the options available through the steam settings.

TL;DR all of them don't work. So it isn't a regression between these.

I did the following:

_Pre-populate cache and user login by logging in and attempting to join a cushy instance._

  1. Start VRChat (in windowed, desktop mode) and load to the default home world.
  2. Open menu and search for "cushy" in the worlds tab. Then join a public instance.
  3. Loading screen appears, press "Go" when ready.
  4. Now either freezes on black screen or loads into the world.

proton-vrchat-1199-logs.zip

I've attached the VRChat logs of each of these runs, including just the 4 steps (not the cache pre-populating part). For each proton version and windows. You can find these in:

The logs are not super detailed, but what I found interesting isn't what's there in the proton ones. But what's not there compared to the windows one.

All of the proton logs end at the same point (trimming some whitespace for clarity):

...
2019.09.10 11:57:56 Log - [VRCFlowManagerVRC] Switching active scene:  => megs house
2019.09.10 11:57:56 Log - [VRCFlowManagerVRC] Instantiating VRC_OBJECTS
2019.09.10 11:57:56 Log - [VRCFlowManagerVRC] Hard max is 40

EOF

While the windows version continues like so:

...
2019.09.10 12:07:01 Log - [VRCFlowManagerVRC] Switching active scene:  => megs house
2019.09.10 12:07:01 Log - [VRCFlowManagerVRC] Instantiating VRC_OBJECTS
2019.09.10 12:07:01 Log - [VRCFlowManagerVRC] Hard max is 40
2019.09.10 12:07:02 Log - LoadLevelAsync took 1.531513s
2019.09.10 12:07:02 Log - Loaded asset bundle: megs house
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Room instantiate took 22.35867s
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Spent 0.06311417s initializing VRC Objects and level
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Doing some house-keeping.
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Assigning IDs to scene
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Spent 0.004928589s assigning network IDs.
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Processing scene objects
2019.09.10 12:07:02 Log - [Always] Loading scene's render settings.
2019.09.10 12:07:02 Log - [Always] Creating Scene Dynamic Bone Controller.
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Spent 0.09152603s processing scene objects.
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Fixing materials
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Spent 0.0006790161s fixing materials.
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Finalizing scene
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Spent 0.01531219s finalizing scene.
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Entering world
2019.09.10 12:07:02 Log - [RoomManager] Entering Room: Cushy
2019.09.10 12:07:02 Log - [RoomManager] Joining wrld_06021428-e14b-4c02-9f57-f5c28f6d6efe:82696
2019.09.10 12:07:02 Log - [RoomManager] Joining or Creating Room: Cushy
2019.09.10 12:07:02 Log - [RoomManager] Successfully joined room
2019.09.10 12:07:02 Log - [VRCFlowManagerVRC] Spent 4.959106E-05s entering world.
...

This seems to suggest we're pretty early on in the loading process and it's this LoadLevelAsync function that freezes.

JulianGro commented 4 years ago

Some world do freeze up when trying to load for me though. Can you try for example https://www.vrchat.net/home/launch?worldId=wrld_06021428-e14b-4c02-9f57-f5c28f6d6efe

It hangs on a black screen just when loading in the world. Then eventually ubuntu asks me if I want to force kill it.

Have you tried replacing youtube-dl.exe with an empty file? VRChat currently freezes, when a video player gets loaded (like a lot of worlds do). Replacing youtube-dl.exe "fixes" that. Keep in mind that Steam overrides the file on every update; Apparently even if it is read only.

Beanow commented 4 years ago

I've not yet @jug007 and I can test later. Bit caught up with other work atm. Perhaps you can test the world I linked and see if the youtube-dl workaround fixes it for you?

Beanow commented 4 years ago

@jug007 youtube-dl file was indeed the problem. Something along these lines let's me load into the world.

#!/usr/bin/env sh
# blank out youtube-dl.exe for VRChat

# Set this to where you've installed VRC.
game_steam_library=${GAME_STEAM_LIBRARY:-"$HOME/.steam/steam"}

ytdl_dir="$game_steam_library/steamapps/common/VRChat/VRChat_Data/StreamingAssets"
mv $ytdl_dir/youtube-dl.exe $ytdl_dir/youtube-dl.exe.bak
echo "" > $ytdl_dir/youtube-dl.exe
Icekhaos commented 4 years ago

I am myself encountering an issue with my mouse. KDE workspaces and some swapping between them can bug out the mouse in a fashion that, when it moves, it will not reset its relative positioning to where it was; this means that, on one frame, it moves, say, 5X and 5Y. If you move the mouse the same amount on the next frame, then, instead of 5:5, it is now 10:10. Move it 25 in the opposite direction, and it becomes -15:-15.

On 4.2, you can reset this by opening and closing the menu. This no longer works in 4.11, but it does go away when the menu is open.

Beanow commented 4 years ago

Same mouse issue with Gnome after switching windows in any fashion. I think when regaining focus VRChat is supposed to "capture" the mouse so it will actually be centred. Moving up or to the sides enough after losing focus once, will move you outside the VRChat window. While normally that should only be possible when you have the menu open.

jzengc commented 4 years ago

Hey @jzengc I've run through the options available through the steam settings.

* [ ]  Proton 3.7-8

* [ ]  Proton 3.16-9

* [ ]  Proton 4.2-9

* [ ]  Proton 4.11-3

* [x]  Windows

Thanks for testing! I can reproduce this bug, too. It should be an issue of Python 3.4 on Wine at first. It can be reproduced by running this .py script on Python 3.4 with Wine: No, this is another Wine issue.

import ssl

ssl.create_default_context(ssl.Purpose.SERVER_AUTH)

I will take a look at it.

tunanachos commented 4 years ago

Hi there, I am having an issue on VRChat (my microphone while working with other games, is not listed in settings).

My experience with GitHub is limited and I don't want to risk making a thread if this is a sort of 'unofficial' support page (similarly I don't want to post on this thread and it be off-topic, so I'm sorry if it is).

here is a screenshot of the two options I have for my microphone, neither of which work;

https://imgur.com/a/jCNJFSt

If anyone can point me in the right direction, or even offer some practical advice on how to fix such issue I would be very grateful.

Beanow commented 4 years ago

@jzengc

Thanks for testing! I can reproduce this bug, too. ~It should be an issue of Python 3.4 on Wine at first. It can be reproduced by running this .py script on Python 3.4 with Wine:~ No, this is another Wine issue.

The script you ran doesn't look like anything that would be specific to python. Although youtube-dl is built from that. As I doubt python has a custom SSL implementation and probably defers to openssl. Maybe it's an issue with something like obtaining root CA certificates from the emulated environment? Although I'd expect that sort of issue to cause trouble all over the place.

Beanow commented 4 years ago

@tunanachos, the screenshot you linked shows the options are both "Pulseaudio". Pulseaudio in a sense is a very general purpose mixer running on your host machine.

Have you tried configuring pulseaudio to use your mic? Using for example Ubuntu's sound options if you're on Ubuntu. Or a utility like pavucontrol? Note: pulseaudio is also the only available option for me, in spite of having a couple of different mics. And I too need to set them in some pulseaudio control panel.

Beanow commented 4 years ago

On a recent OS reinstall, I'm getting:

Failed to initialize graphics.
Make sure you have DirectX 11 installed, have up to date
drivers for your graphics card and have not disabled
3D acceleration in display settings.
InitializeEngineGraphics failed

I wonder if this is a recent change or me just missing some dependency.

Edit I tried the previous OS again with the same VRChat and proton version, which runs fine. Wonder what the problem is. I've tried having steam reinstall the game and proton without success.

Edit2: Aaand that dependency turned out to be vulkan.

sudo apt install libvulkan1 mesa-vulkan-drivers vulkan-utils
tunanachos commented 4 years ago

@tunanachos, the screenshot you linked shows the options are both "Pulseaudio". Pulseaudio in a sense is a very general purpose mixer running on your host machine.

Have you tried configuring pulseaudio to use your mic? Using for example Ubuntu's sound options if you're on Ubuntu. Or a utility like pavucontrol? Note: pulseaudio is also the only available option for me, in spite of having a couple of different mics. And I too need to set them in some pulseaudio control panel.

Hi there, @Beanow thanks for taking time to help me and reply.

If you look closely they are both 'different' (at least, there are two different options)

While checking PulseAudio I can see my microphone bounce up and down when I talk, so why VRChat isn't picking it up is beyond me (as mentioned, other games don't have this issue; CS:S, CS:GO, TF2 etc)

Is there a path or somewhere the microphone inputs are set for this game? It's hopeless being able to use this without communication lol :-)

Thanks again for your time and reply, hopefully it'll be solved soon.

Beanow commented 4 years ago

@tunanachos I have the same two options. The difference is that one of them is "Default", meaning it will use "Windows" default recording device. Which will point to pulseaudio as it's the only device. Then there's just Pulseaudio, which is to manually select it (regardless of "Windows" recording device settings).

The only additional routing of audio it does is the in-game settings. You can try cranking up your mic volume everywhere and messing with the mute / push-to-talk V button.

tunanachos commented 4 years ago

I see, thank-you for clarifying that for me.

While I do enjoy having Linux as my OS almost always it goes over my head when trying to understand it's workings so I'm grateful.

I will give it another go, admittedly I've only played it for an hour or two and it would be hilarious if this whole time I wasn't doing something right.

I'll give it a go soon, turn everything up and see if I can't deafen a few people while asking if my microphone is working or not >:-)

Beanow commented 4 years ago

@tunanachos to be safe, you can look for the VRChat mic indicator lighting up first :smile:

tunanachos commented 4 years ago

Just quickly, should it be red or translucent when you're talking? I press V (I think) and it turns red, I try and talk but nobody seems to hear me. (this is going from memory, I wan't to make sure I wasn't muting myself the entire time lol).

Beanow commented 4 years ago

When red it's muted. When translucent the mic should be open. When speaking you can see the translucent one get more opaque when there's enough sound for voice activation.

image Muted

image Open, no voice activation

image Open, voice activated

tunanachos commented 4 years ago

Okay, so I'm really quite sure something weird is going on..

I jumped on and went to a hub? There were a group of people not doing much, I asked them "Can anyone hear me?" several times with the volume on the pavcontrol and in-game on microphone up to 100% and got no answer.

however when they were talking to themselves (and they seemed pleasant enough) they complained "Why can I hear myself??" several times when I was pushing down V to talk at the same time.

I don't know why, how or why again, but I really think for some reason it's picking up and using my output and my input? It's the only thing I can think as to why that would be happening....

Beanow commented 4 years ago

Well, so far I don't think it's a problem with Proton + VRChat compatibility. Just a matter of getting your Pulseaudio configuration right.

The other games you mentioned CS:S, CS:GO, TF2 have a native Linux build from what I can tell. So their configuration is probably easier. Unless you're running their windows versions through Proton for some reason.

Perhaps you can test your setup some more, or try running the windows version of Audacity using Wine and/or Proton to get a better idea of what's going on. But to avoid spamming everyone else in this thread, please try to isolate whether the problem is with Proton :]

tunanachos commented 4 years ago

That's a fair point to make and I'm totally not disagreeing it could be something with me.. It's just I've never had this issue before - in fact I recall playing MW2 and the voice working, I'm sure I've played other non-linux games (either through wine or with Steam+Proton) and not had the same issue.

With that said and at risk of repeating myself I absolutely agree there is something I could be doing wrong.. I'm just lost as to what and how to address the issue.

I am sorry to both you and anyone else suffering email notification spam - didn't even cross my mind until you mentioned it.

With all that said, is there anywhere I could post elsewhere I might be able to get help? As I originally said I don't want to post in the wrong place or waste peoples time, just want to have fun but I'm totally lost on where or how to start :-)

Thanks and sorry again. I won't reply or post again unless it's something more pertinent.

Goofybud16 commented 4 years ago

Seems the Open Beta [for Unity 2018] instantly crashes upon startup.

Renders a few frames and then crashes.

Managed to capture the game log and a Proton log.

output_log_8-55-55_PM.txt

steam-438100.log

Not sure if it's a VRC issue [it is the beta, although the beta should be the release... soon], a Proton issue, SteamVR, etc. Seems to explode when the game log is writing SteamVR stuff.

JulianGro commented 4 years ago

Okay, so I'm really quite sure something weird is going on..

I jumped on and went to a hub? There were a group of people not doing much, I asked them "Can anyone hear me?" several times with the volume on the pavcontrol and in-game on microphone up to 100% and got no answer.

however when they were talking to themselves (and they seemed pleasant enough) they complained "Why can I hear myself??" several times when I was pushing down V to talk at the same time.

I don't know why, how or why again, but I really think for some reason it's picking up and using my output and my input? It's the only thing I can think as to why that would be happening....

There is also a bug in vrchat that makes avatars repeat your microphone input. No idea how they got that happening, but if people say "why can i hear myself" it could be that. Pulseaudio doesn't just use your output as input if you don't tell it to. Or rather it cannot even do that until you enable that.

Goofybud16 commented 4 years ago

Just tested the open beta again, and wanted to report that it works now. The game successfully loads into a world.

JulianGro commented 4 years ago

So there is a new mmd dance map called "MMD DANCE STAGE(PV) 0․3A" that crashes the client when you try to play a promotional video. It doesn't seem to use youtube-dl.exe but just an internal video. Because of this the client still crashes, even with youtube-dl.exe removed. Normally it writes an error message about Media Foundation missing to the proton log. I have tried mf-install, but that only makes it crash in a different way..

Edit: Just made a bug report. Maybe they will do something eventually ¯_(ツ)_/¯ https://vrchat.canny.io/bug-reports/p/client-closes-with-missing-media-foundation