SteamVR-for-Linux icon indicating copy to clipboard operation
SteamVR-for-Linux copied to clipboard

[BUG] Half-Life: Alyx (native version) - Subtitles are missing

Open im-0 opened this issue 5 years ago • 6 comments
trafficstars

Describe the bug In-game subtitles are not displayed.

To Reproduce Steps to reproduce the behavior:

  1. Launch HL: Alyx (native Linux version)
  2. Open "Subtitles" menu
  3. Set "SUBTITLES ON"
  4. Set "SPECTATOR WINDOW ONLY: OFF"
  5. Start new game

Expected behavior Subtitles should be displayed in VR.

System Information (please complete the following information):

  • Distribution: Fedora 32 x86_64
  • SteamVR version: Beta 1.12.3
  • Steam client version: Built May 15 2020, at 03:04:21 / package versions: 1589513816
  • Opted into Steam client beta?: No
  • Graphics driver version: Mesa 20.1.0-rc3 (LLVM 10.0.0), with RADV_PERFTEST=aco
  • Gist for SteamVR System Information: https://gist.github.com/im-0/c57e3d927df050cea21b41039f1c5564
  • GPU: AMD Radeon VII

Screenshots N/A

Additional context

  • System locale: en_US.UTF-8
  • Steam interface language: English

im-0 avatar May 18 '20 04:05 im-0

I tried debugging this myself. First, I added strace to the Launch Options in Steam:

GAME_DEBUGGER="strace -f -s 4096 -o /tmp/hlvr.strace" %command%

GAME_DEBUGGER was hinted by the contents of ~/.local/share/Steam/steamapps/common/Half-Life Alyx/game/hlvr.sh. Game starts fine under strace, but crashes after loading the saved game when "Press Trigger" appears. Anyway, running up to the game menu is enough to get useful logs.

Second step:

$ grep -i subtitle /tmp/hlvr.strace
17712 openat(AT_FDCWD, "/home/im/.local/share/steam/steamapps/common/half-life alyx/game/hlvr/resource/subtitles/closecaption_english.dat", O_RDONLY) = -1 ENOENT (No such file or directory)
17712 openat(AT_FDCWD, "/home/im/.local/share/steam/steamapps/common/half-life alyx/game/core/resource/subtitles/closecaption_english.dat", O_RDONLY) = -1 ENOENT (No such file or directory)
...
17712 openat(AT_FDCWD, "/home/im/.local/share/Steam/steamapps/common/Half-Life Alyx/game/hlvr/resource/subtitles/closecaption_english.dat", O_RDONLY) = 407
17712 openat(AT_FDCWD, "/home/im/.local/share/steam/steamapps/common/half-life alyx/game/hlvr/resource/subtitles/closecaption_english.dat", O_RDONLY) = -1 ENOENT (No such file or directory)
17712 write(1, "Client: Failed to load caption file: /home/im/.local/share/steam/steamapps/common/half-life alyx/game/hlvr/resource/subtitles/closecaption_english.dat\n", 151) = 151
17712 openat(AT_FDCWD, "/home/im/.local/share/steam/steamapps/common/half-life alyx/game/core/resource/subtitles/closecaption_english.dat", O_RDONLY) = -1 ENOENT (No such file or directory)
17712 write(1, "Client: Failed to load caption file: /home/im/.local/share/steam/steamapps/common/half-life alyx/game/core/resource/subtitles/closecaption_english.dat\n", 151) = 151
...

It is clear that lower case/upper case in paths are messed up here. Interestingly, it managed to use the right path once, but after that only the wrong path is used.

Then I tried the obvious workaround:

ln -sv ./Steam ~/.local/share/steam
ln -sv ./Half-Life\ Alyx ~/.local/share/steam/steamapps/common/half-life\ alyx

and it worked! Now I have in-game subtitles.

im-0 avatar Jun 04 '20 14:06 im-0

I can confirm, that using the afformentioned workaround fixes the issue with the subtitles.

ttyborg avatar Jul 30 '20 11:07 ttyborg

Haven't quite got this to work. Here's the logic of how I figure the workaround should work, anyway, for those who are newer to Linux and are wondering what those commands do:

   ln - make links between files
   -s, --symbolic
          make symbolic links instead of hard links
   -v, --verbose
          print name of each linked file

So this is creating a symbolic link to their Steam folder at ~/.local/share/steam (the actual location is ~/.local/share/Steam, capitalized). Then they are creating a symbolic link to the Half-Life Alyx folder at ~/.local/share/steam/steamapps/common/half-life\ alyx. The -v option shows confirmation of what you did.

Creating these shortcut should mean things that are hard-coded for an incorrectly all-lowercase path (Linux is case-sensitive by default) will still land at the right place. Here are the commands I used (with absolute paths), and their output:

ln -sv /mnt/WDBlueSSD1/Steam/ /mnt/WDBlueSSD1/steam
'/mnt/WDBlueSSD1/steam' -> '/mnt/WDBlueSSD1/Steam/'

ln -sv /mnt/WDBlueSSD1/Steam/steamapps/common/Half-Life\ Alyx/ /mnt/WDBlueSSD1/steam/steamapps/common/half-life\ alyx
'/mnt/WDBlueSSD1/steam/steamapps/common/half-life alyx' -> '/mnt/WDBlueSSD1/Steam/steamapps/common/Half-Life Alyx/'

This didn't fix the issue, though... so I added where Steam itself is installed:

ln -sv ~/.local/share/Steam ~/.local/share/steam
'/home/chris/.local/share/steam' -> '/home/chris/.local/share/Steam'

Which didn't fix the issue either.

Anyone know what I could be doing wrong here?

yaomtc avatar Jan 19 '21 04:01 yaomtc

@yaomtc, it may be even more broken because you are using non-standard path for Steam library. I suspect that HL just tries to open subtitles using all-lowercase path, so try adding yet another symbolic link: /mnt/wdbluessd1 -> /mnt/WDBlueSSD1.

If that does not help: try to check HL's log (I do not recall how to do this, sorry) or try to run HL under strace as I did, and look for actual file paths there.

im-0 avatar Jan 19 '21 07:01 im-0

@im-0 That's it, thanks. Need to create a link for every directory along the path that uses capitals. Works now.

yaomtc avatar Jan 19 '21 16:01 yaomtc

i wish they would fix this already, i have it on a whole other gaming drive and trying to figure out what to rename is a NIGHTMARE

XDM-Inc avatar May 20 '24 02:05 XDM-Inc