SubnauticaModding / QModManager

Config based patch management for Subnautica and Subnautica: Below Zero
https://discord.gg/UpWuWwq
Other
141 stars 51 forks source link

Add information for installing QMods on Linux with Steam Play Proton #173

Closed waterlubber closed 2 years ago

waterlubber commented 4 years ago

Modding Subnautica & Subnautica: Below Zero is very much possible and can be achieved with very little work! follow the instructions below on how to properly setup a modded environment.

Installing QMods on Linux with Proton

  1. Right click on Subnautica, select Manage then Browse local files
  2. Manually download the ZIP archive of QModManager from here: https://www.nexusmods.com/subnautica/mods/201?tab=files
  3. Extract the files directly to the folder opened in step 1 - if you've done it correctly you should see a file called winhttp.dll
  4. Right click on Subnautica in your library, select Properties and add this to the launch options:
    WINEDLLOVERRIDES='winhttp.dll=n,b' %command%
  5. Now you should have a QMods folder in your Subnautica folder. Simply put your mods in that folder and they will load to the game!

Troubleshooting:

Credits to @szszoke for writing this simple version of the required instructions.

Dasonic commented 4 years ago

This worked for me, although I had to install dotnet40 instead of 35.

BodhiChiron commented 3 years ago

Thanks!! It worked for me. Used dotnet40 as well. Got a lot of warnings because of using x64 wine but works nonetheless. Did take more than an hour of trying things out..

Installing Dotnet40 was necessary so install winetricks and protontricks and use protontricks: protontricks --gui choose "select the default wineprefix", now choose "install a windows dll or component", choose dotnet40 press ok for several 64bit warnings (i counted 6!) and wait a bit while it downloads and installs Now you should get the microsoft dotnet 4.0 installer, continue..

saxyomega90125 commented 3 years ago

I needed an extra step - after I ran the QmodManager installer and did the winecfg thing Qmods' stuff still wouldn't show in-game - but I did get it working. If you're having problems, try this. First, you need dotnet40, not dotnet35. As BodhiChiron said, lots of errors and warnings about 64-bit architecture, and I also get two warnings about run32dll.exe or some such every time I open up Subnautica's Wine prefix, but it seems to work fine. The other bit about adding dll overrides in winecfg is important - that was not mentioned in the Linux installation guide on QMM's Nexus Mods page, which is why I'm here! As I said, that still failed though, so in my troubleshooting I found that BepInEx never generated a config so I believe it never initialized. I went and got BepInEx from its Github distribution (url in OP - you need x64 Windows, not the Unix-like version), and I extracted it and overwrote the BepInEx components that shipped with QModManager. That got Qmods working. Cyclops Near Field Sonar and Prawnsuit Volumetric Lights both fail to initialize, even alone, I am guessing because they include source code (why do modders do that...?). But all the other mods I have tried seem to work properly, including the all-important More Quick Slots and Prawn Lightswitch. I'm running Kubuntu 20.04, and Steam installed from their own Debian installer. I initially used Proton 5.0-10, but 5.13-1 also works, and the game doesn't seem to care either way.

BodhiChiron commented 3 years ago

I tried to install QmodManager for Below Zero but initially failed. I got quite far but QmodManager gives an initialising error on booting Below Zero. Will edit this comment with any further findings. Some of these more precise instructions could help somebody installing QmodManager for Subnautica, which I did succeed in :-D

First off, regarding wineprefix: the pfx for Below Zero is 848450 (protontricks will recognize this) So the pfx path on my ubuntu 20.10 is: ~/.steam/debian-installation/steamapps/compatdata/848450/pfx - this has all the wine & proton stuff in it. And then there's the actual game folder with the game files (where you need to direct QMod installer to), in my case: ~/.steam/debian-installation/steamapps/common/SubnauticaZero

Installing Dotnet40 froze on an error loop so I tried without installing dotnet40. Discovered it was already installed (proton 5.10 and wine-devel 5.22) and QMod installer (4.0.3 beta) ran but gave error that this windows version is not compatible. For some reason the default in winecfg was Windows XP, so I changed that to Windows 7, like this: protontricks --gui choose "select the default wineprefix", next choose "Run winecfg", on the opening tab at the bottom you can choose the windows version, so choose 7 or 10 and press ok.

Next hurdle was directing the Qmod installer to the game files. Windows uses \ in path names whereas linux uses / The installer runs in wine, in the pfx environment, so you need to direct it to your linux filesystem, using Z:\ For example: Z:\home\bodhi.steam\debian-installation\steamapps\common\SubnauticaZero

Update: loading my save file after the Qmodmanager error, the game didn't respond, I couldn't move Robin or open PDA or even game menu to quit. So verified game files in steam and went back into winecfg to remove exceptions to winhttp and version dlls. Now Qmodmanager is ignored and game works again. I don't think I'll try modding again until the game gets out of early access. I just don't have enough experience with wine/proton or modding to troubleshoot..

Update: silly me, qmodmanager is broken for everybody because of relics of the past update. Will try next version of QModManager when it comes out of beta..

Update: was impatient and tried QmodManager 4.0.3 beta and it works. So far i've tried map, advanced storage and more quickslots, they work! :-D

PS unlike for saxyomega90125, BepInEx worked out of the box..

hlriffel commented 3 years ago

I was able to get QModManager installed and trying to load the mods when starting the game after installing dotnet40 and overriding the winhttp DLL. However, everytime QMod tries to load any of the mods, I get a BadImageFormatException referring to the mod's DLL (QMods/Modding Helper/SMLHelper.dll, for example). I'm using Manjaro KDE and Proton GE 6.5-2.

This is the log if anyone is facing the same issue: https://pastebin.com/XgyVUnDi

Unfortunately, I haven't found any solution yet.

wilbowma commented 3 years ago

I was able to get QModManager installed and trying to load the mods when starting the game after installing dotnet40 and overriding the winhttp DLL. However, everytime QMod tries to load any of the mods, I get a BadImageFormatException referring to the mod's DLL (QMods/Modding Helper/SMLHelper.dll, for example). I'm using Manjaro KDE and Proton GE 6.5-2.

This is the log if anyone is facing the same issue: https://pastebin.com/XgyVUnDi

Unfortunately, I haven't found any solution yet.

I had this problem and solved it.

When opening some mods zip files in Ark, there was no folder. Instead, the files were named something like Modding Helper\mod.json, Modding Helper\SMLHelper.dll. That is, the folder name seemed to get turned into part of the file name.

The solution was to manually create the folder in QMods, move the files there, and rename the files to remove everything before the backslash.

hlriffel commented 3 years ago

I was able to get QModManager installed and trying to load the mods when starting the game after installing dotnet40 and overriding the winhttp DLL. However, everytime QMod tries to load any of the mods, I get a BadImageFormatException referring to the mod's DLL (QMods/Modding Helper/SMLHelper.dll, for example). I'm using Manjaro KDE and Proton GE 6.5-2. This is the log if anyone is facing the same issue: https://pastebin.com/XgyVUnDi Unfortunately, I haven't found any solution yet.

I had this problem and solved it.

When opening some mods zip files in Ark, there was no folder. Instead, the files were named something like Modding Helper\mod.json, Modding Helper\SMLHelper.dll. That is, the folder name seemed to get turned into part of the file name.

The solution was to manually create the folder in QMods, move the files there, and rename the files to remove everything before the backslash.

I was finally able to solve this issue as well. Apparently the issue was indeed related to Ark, but the problem was a little bit deeper than just the file names. It seems that, when unzipping the files using Ark, it was somehow altering the contents of the DLLs, which later caused them to be in a bad format, hence the BadImageFormatException. Unzipping the mods using unzip fixed all the issues for me.

I am so happy to finally be able to play this awesome game with mods. Thank you all for writing this info on how to make it work on Linux :slightly_smiling_face:

kiven7e commented 3 years ago

when i ran "WINEPREFIX=~/.local/share/Steam/steamapps/compatdata/848450/pfx/ wine /home/kiven/Downloads/QModManager.exe" in the terminal i got a bunch of errors https://pastebin.com/DPvH2CVh on Debian bullseye

lordcirth commented 3 years ago

While I got this working a year or so ago, I can't get it to work now. I'm on NixOS. I installed dotnet40 (after many false starts) and ran the installer, and it created an empty QMods directory. The installer did look pretty janky, and when selecting the Subnautica game directory, I got an error popup saying "Could not call proc". But it seemed to complete fine after that.

But, starting Subnautica, there is no Mods tab under Settings. I don't know what is wrong or where to look. I don't see any logs. Tried PROTON_LOG=1 (with grep -v "RtlGrowFunctionTable", as that spam was the bulk of it).

SubnauticaProton.log

Thanks. @hlriffel @wilbowma

hlriffel commented 3 years ago

While I got this working a year or so ago, I can't get it to work now. I'm on NixOS. I installed dotnet40 (after many false starts) and ran the installer, and it created an empty QMods directory. The installer did look pretty janky, and when selecting the Subnautica game directory, I got an error popup saying "Could not call proc". But it seemed to complete fine after that.

But, starting Subnautica, there is no Mods tab under Settings. I don't know what is wrong or where to look. I don't see any logs. Tried PROTON_LOG=1 (with grep -v "RtlGrowFunctionTable", as that spam was the bulk of it).

SubnauticaProton.log

Thanks. @hlriffel @wilbowma

@lordcirth

Have you executed winecfg and added winhttp as an overridden library?

lordcirth commented 3 years ago

@hlriffel Yes, I overrode winhttp and version

Termuellinator commented 3 years ago

I'm currently trying to get things to work, but with no luck - i was able to install QMM with dotnet40 (hat to use WINE=$(which wine) protontricks 264710 dotnet40 to get it to install without an error), win7, winhttp + version overrides, the QMods and BepInEx folders are created in the gamefolder, but when i load the game i see no sign of the mods being active, neither in settings menu nor ingame :/

Edit: Nevermind, i just did winecfg to do the overrides in the wrong prefix :facepalm:

RobertLSnead commented 2 years ago

it fails to install no matter what I try, looks like it's checking for a windows environment when trying to run the new installer. qmodinstaller will just not work with the current steps posted. anyone have any updated instructions?

also the new instructions are here: https://github.com/BepInEx/bepinex-docs/blob/master/articles/advanced/steam_interop.md

Error Log: https://pastebin.com/SgmwBmn7

Edit: Was able to get it to work, had to follow the lastest steps listed above as well as download the zip file for the qmod and copy and paste into the game directory, I then also launch the game with run_bepinex.sh and everything worked just fine.

RobertLSnead commented 2 years ago

when i ran "WINEPREFIX=~/.local/share/Steam/steamapps/compatdata/848450/pfx/ wine /home/kiven/Downloads/QModManager.exe" in the terminal i got a bunch of errors https://pastebin.com/DPvH2CVh on Debian bullseye

Same issue on my end, nothing works for me

Nyloseth commented 2 years ago

Thank you for this, it still works when following the directions to a T.

sparky8251 commented 2 years ago

Same for me. Wish this was easier to find as it was several days of on and off searching until I found this.

szszoke commented 2 years ago

There is a much simpler way to do this than what is described in the issue:

  1. Right click on Subnautica, select Manage then Browse local files
  2. Manually download the ZIP archive of QModManager from here: https://www.nexusmods.com/subnautica/mods/201?tab=files
  3. Extract the files directly to the folder opened in step 1 - if you've done it correctly you should see a file called winhttp.dll
  4. Right click on Subnautica in your library, select Properties and add this to the launch options:
    WINEDLLOVERRIDES='winhttp.dll=n,b' %command%

There should be a folder called QMods in the folder that you opened in step 1. That is where you put your mods. Create one if it is missing.

I tested this on a Steam Deck in Desltop Mode, where I had no access to winecfg and doing anything in the terminal was just annoying.

Perodactyl commented 2 years ago

This works for me (QmodLoader is clearly running) but I immediately get a red popup saying that every mod is failing with some "harmony" extenssion file or simething from bepinex (I don't really understand it) Pastebin: https://pastebin.com/raw/AV3X0VLV EDIT: That file (hopefully) wasn't the problem, I just realized I forgot SMLHelper

szszoke commented 2 years ago

Indeed there many log entries complaining about SMLHelper missing.

I in the meantime successfully tested my method with Below Zero. Just make sure to download the correct edition of QModManager.

Metious commented 2 years ago

There's also the Running games on Steam article provided by BepInEx which also has the instructions on how to setup Unity games to run mods. Follow them after extracting QModManager to your game root folder and let me know if they're more straight forward.

@szszoke's instructions also look promising. Unfortunately at the meantime none of QModManager devs have a Linux machine so we cant confirm the best method to do this. We are however, looking for the most successful method to update this issue with.

METDeath commented 2 years ago

There is a much simpler way to do this than what is described in the issue:

  1. Right click on Subnautica, select Manage then Browse local files
  2. Manually download the ZIP archive of QModManager from here: https://www.nexusmods.com/subnautica/mods/201?tab=files
  3. Extract the files directly to the folder opened in step 1 - if you've done it correctly you should see a file called winhttp.dll
  4. Right click on Subnautica in your library, select Properties and add this to the launch options:
WINEDLLOVERRIDES='winhttp.dll=n,b' %command%

There should be a folder called QMods in the folder that you opened in step 1. That is where you put your mods. Create one if it is missing.

I tested this on a Steam Deck in Desltop Mode, where I had no access to winecfg and doing anything in the terminal was just annoying.

THANK YOU!!!

Metious commented 2 years ago

I can confirm that @szszoke's instructions work consistently. Updated this issue to point to your instructions. Thank you for sharing it!

PrimeSonic commented 2 years ago

Found that Lutris also has a runner to install the game with mod support. https://lutris.net/games/subnautica/

zyxer commented 2 years ago

I'm trying to run Subnautica Below Zero on a brand new Steam Deck with mods (Map mod) using instructions provided by @szszoke. I got no luck, the game freezes on the warning screen with the main menu sounds in the background. In qmodmanager_log-SubnauticaZero.txt I see two errors: 1) System.TypeLoadException: Could not load type SentrySdk, Assembly-CSharp-firstpass, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null while decoding custom attribute: (null) 2) InvalidOperationException: Steamworks is not initialized.

Not sure which one is critical. Here's a link to the full log: https://pastebin.com/paYxpvcz

Metious commented 2 years ago

I'm trying to run Subnautica Below Zero on a brand new Steam Deck with mods (Map mod) using instructions provided by @szszoke. I got no luck, the game freezes on the warning screen with the main menu sounds in the background. In qmodmanager_log-SubnauticaZero.txt I see two errors:

  1. System.TypeLoadException: Could not load type SentrySdk, Assembly-CSharp-firstpass, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null while decoding custom attribute: (null)
  2. InvalidOperationException: Steamworks is not initialized.

Not sure which one is critical. Here's a link to the full log: https://pastebin.com/paYxpvcz

This is due to the latest Below Zero "What The Dock Update", which broke QModManager and isn't related to the linux instructions.

Join the Subnautica Modding Discord Server and you can find the fixed builds there.

desperationfighter commented 2 years ago

We are aware of this issue and and it is not related to Steam Deck. As can see on the Commits and Pull request we already in action to fix everything related to the last BZ Update that was just puiblished only some hours ago. That also means we have already a available BETA ready to test.

https://discord.gg/UpWuWwq Join here and visit the Modding news channel. if you have still issues with the beta visit the help channels there thats faster and easier than github.

ok Metious was just seconds faster...