Skip to content

Linux Guide

Dreomite edited this page Oct 6, 2021 · 2 revisions

Linux Guide

Running Vermintide Mod Builder on Linux requires Steam Proton to be installed in your Steam client.

Building

Prerequisites: nodejs, npm.

Linux support resides in a separate branch (linux_support). In order to use it, you should

  1. Clone this repository:
    git clone https://github.com/Vermintide-Mod-Framework/Vermintide-Mod-Builder.git
  2. Switch to linux_support branch:
    cd ./Vermintide-Mod-Builder
    git checkout linux_support

Then you have 3 ways of running VMB.

  1. Run it directly through npm:

    npm run vmb [opts]
  2. Compile the binary.

    npm run setup
    npm rub build

    This should create ./vmb executable. You can call it directly or put it somewhere in your $PATH.

  3. Install VMB as a global package. While considered bad practice, it's the easiest way to get everything going.

    sudo npm install -g .

    This will make vmb command to be instantly available in your shell.
    Note: It will symlink VMB project to a bunch of places. This means you shouldn't (re)move cloned VMB directory, otherwise vmb will stop working.

Linux-specific issues

  • Steam Workshop tools are supported for Vermintide 1 only

    The way ugc_tool.exe concatenate paths is very convoluted. I simply couldn't find a way to get it working for VT2. So, for now, all the VT2 Workshop operations can be performed only inside Windows.

  • Compiling mod with 8+ resource files (lua scripts, textures, etc.) throws an error

    If there are 8+ resource files, stingray compiler spawns additional worker threads to balance the load, but only the files processed by the last thread will be compiled. It is a bug in Proton. Usually, the solution is as simple as running vmb build multiple times, until all the compiled files are cached.

    But if your mod is very simple with no inner dependencies (for example, it consists of only lua files), the cache will not be utilized, making Stingray recompile the same files over and over, making complete compilation impossible. To fix this, you need to create some dummy resource file to create an inner dependency. For example, you can put linux_compilation_fix.material in the root of your mod with the following contents:

    linux_compilation_fix = {
      shader = "gui:DIFFUSE_MAP"
      textures = {
        diffuse_map = "this/non-existent/path/creates/dependency"
      }
    }

    You can check if cache is utilized by checking if $CACHE_DIR/compile/dependency_database.db exists.

Q&A

  • VMB config location?

    ~/.vmbrc

  • How do I make VMB work with Proton?

    1. Figure out Steam ID of the Proton version you have installed. You can use https://steamdb.info/. For example, Proton 6.3's Steam ID is 1580130.
    2. Open your config and put it alongside proton_id key. If there's none, create one.
  • Why Steam Proton instead of Wine?

    Wine lacks Steam runtime, thus it cannot run ugc_tool.exe (SDK Steam Workshop uploader). Also, Steam Proton is required to play Vermintide so it is most likely already installed in your system.

  • Is WSL supported?

    No.

TODO

  • Figure out templating status.
  • Make it work with VT2 workshop. Not sure if possible.
  • Make discovering Proton automatic. Hopefully, after Steam Deck release, Proton's SteamID stabilises.
  • Proton fallback folder for folks using GE / TKG editions.
Clone this wiki locally