Wednesday, 16 April 2025

Linux VTubing

So today, it seems like I got everything ready for VTubing on Linux. I would also like to go through what I have done for every step to detail how it was done. I went from using VSeeFace with VTuberPlus to using VNyan as it is an all-in-one solution for VTubing, especially as of late with support for OpenXR support. This was before fully switching to Linux, so I hoped everything would go smoothly.

VNyan under Linux

VNyan does not offer a Linux-native version, so you have to use a compatibility layer. I could try and get it working through Wine running directly on my system, but instead I went through Bottles. Bottles is a Flatpak and also allows containerizing Windows-based programs. It was a pain in the butt to get working, but for me, the following got it to work. This is the settings I use:

  • Components
    • Runner
      • Soda
        • 9.0
    • DXVK
      • 2.4
    • VKD3D
      • Proton
        • 2.13
    • LatencyFleX
      • Off
  • Display
    • FidelityFX Super Resolution
      • Off
    • Discrete Graphics
      • On
    • Post-Processing Effects
      • Off
    • Gamescope
      • Off
    • Advanced Display Settings
      • Virtual Desktop
        • Off
      • Fullscreen Mouse Capture
        • Off
      • Take Focus
        • Off
      • Mouse Wrap
        • On
      • Window Manager Decoration
        • On
      • Screen Scaling
        • 96
      • Renderer
        • GL
  • Performance
    • Synchronization
      • Fsync
    • Monitor Performance
      • Off
    • Feral GameMode
      • Off
    • Preload Game Files
      • Off
    • OBS Game Capture
      • On
      • Make sure to install the Flatpak version of vkcapture
  • Compatibility
    • Windows Version
      • Windows 11
    • Language
      • English
    • Steam Runtime
      • On
    • Working Directory
      • Default
    • DLL Overrides
      • None
    • Environment Variables
      • None

Here is a list of libraries that needs to be downloaded under the dependencies section:

  • arial32
  • times32
  • courie32
  • mono
  • gecko
  • vcredist2015
  • georgi32
  • consolas
  • comic32
  • cjkfonts
  • andale32
  • arialb32
  • impack32
  • tahoma32
  • trebuc32
  • verdan32
  • webdin32
  • allfonts
  • vcredist2019
  • dotnet40
  • dotnet45
  • dotnet46
  • dotnet461
  • dotnet462
  • vcredist2022
  • xinput
  • d3dx9
  • d3dcompiler_43
  • d3dcompiler_47
  • msls31
  • dotnet48
  • webview2

After all that, VNyan works 90% of the way there. There is, however, one issue that is quite major. It can no longer track using a Leap Motion device or through a webcam. New solution is to use XR Animator for tracking, as this enables tracking for VNyan through VMC. In XR Animator, you should see an option at the bottom for VMC. Going into there and enabling it, plus making sure that it is set for VNyan means that it is all ready. Just gotta go through the settings of XR Animator and fine tune everything so it looks good in VNyan. At this point, all you need to do is have your VSF or VRM file loaded into VNyan, and now you are on your way with VTubing in Linux.

But what is VTubing without being able to stream/record it? That is where the vkCapture comes in, and you need to install the Flatpak version if you are using Bottles from Flatpak (the recommended way). Then in OBS, you should see a Game Capture option. You should also see VNyan listed under the list of captured programs. Select VNyan and check "Allow Transparency", as this will enable OBS to grab the render with the alpha. So now you have a cutout of your avatar in OBS. Happy VTubing with this information!

Lastly, as a heads-up, if you experience any issues with getting VNyan running, try the following. Try changing the runner to Wine-GE, Proton, or Proton-GE. On top of that, check the logs to see what is going on in terms where it is crashing. Main thing is to experiment around, I would also recommend enabling snapshotting so that way if you have a working version, you can restore back to that one if you end up breaking something.

An unhandled error has occurred. Reload 🗙