Skip to content

Instantly share code, notes, and snippets.

@tjayr
Last active December 30, 2020 15:55
Show Gist options
  • Save tjayr/8d0427376eb4192670f2256922727f8b to your computer and use it in GitHub Desktop.
Save tjayr/8d0427376eb4192670f2256922727f8b to your computer and use it in GitHub Desktop.
Observations on running Borderlands 3 on Steam with Linux / Protondb

Introduction

I got this working with some significant effort using Proton 5.0-10. Pretty unlikely someone will casually go to all of this effort. It took a few days to figure this all out.

For reference this is my setup:

Distro:Ubuntu 20.04.1 LTS
Kernel:5.4.0-58-generic
RAM:32 GB
GPU Driver:NVIDIA 450.80.02
GPU:NVIDIA GeForce GTX 1660
CPU:Intel Core i7-4770K @ 3.50GHz

General Notes

My general observation from reading the ProtonDB reports seems to be if you have an Nvidia graphics cards its going to require a lot of extra configuration to get this working, for AMD cards it appears to work well out of the box. Naturally I have an nVidia card and so for me setting all this up was a very time consuming process. I've documented what I did and the errors I encountered. People often say "Simply install X or Y library and it was fine" - problem is those libraries often have configuration of their own you have to figure out for your setup or take a really long time to install.

Watch Monitor Bug and how to fix

The "Watch Monitor" bug. I had seen this mentioned in other reports, but I misundertood what it was. I had assumed it was a Steam issue like some sort of file locking monitor. Its not. "Watch Monitor" is a task you have to complete in one of the early in game missions. Theres a screen you have to watch a video on - only the video never shows on the screen, so you can't complete the task.

The fix for this is the install of the Media Foundation DLL, mf-install . The intructions for this I thought were quite confusing, so it took a while to figure this out, but this is what I did:

You have to clone the 2 git repositories https://github.com/z0z0z/mf-install and https://github.com/z0z0z/mf-installcab. You also need have to find the steam directory of the game, which is something like: /home/<username>/.steam/steam/steamapps/compatdata/397540/pfx

Note: you need python2 installed on Ubuntu for this to work - its not installed by default on Ubuntu 20

Then in a terminal change into the git directoy you cloned for mf-install and run the following command, passing the value of the pfx directory to the WINEPREFIX variable e.g.

$ WINEPREFIX="/home/<user>/.steam/steam/steamapps/compatdata/397540/pfx" ./mf-install.sh

For me this took about 25 minutes to complete - it will prompt you to install missing Wine dependencies like, Mono, Gecko etc and you may have to Ok them.

Then repeat the process for the mf-installcab repo

$ WINEPREFIX="/home/<user>/.steam/steam/steamapps/compatdata/397540/pfx" ./install-mf-64.sh

Word of warning - this part was chronically slow for me, it took over an hour to download a file called windows6.1-KB976932-X64.exe from microsoft.com.

Once you do this copy the mfplat.dll from the git project folder to the same folder as the Borderlands3.exe file, for me it was in here : /home/<user>/.steam/steam/steamapps/common/Borderlands 3/OakGame/Binaries/Win64 (and it took a while to find it)

Playing on 5.0-10

On the inital launch from Steam, it brought up the usual Processing Vulkan Shaders dialog and it took well over an hour to progress through this - I just checked in periodically on its progress, 2 hours after I had launched the game, I found it had gotten to game menu - so I can't say exactly how long it took.

Playing through the initial areas of the game seemed to run quite well, but the frame rates drop way down when 3-4 or enemies appear to battle - it will balance out after a few seconds, but fps can drop down from 60+ to 5.

After the 1st launch, I exited the game to try and fix this by adjusting some of the settings listed in the ProtonDB reports submitted by others. However, I discovered the game would no longer start - The Borderlands 3 splash screen would appear and then an ugly "The UE4-OakGame has crashed" dialog box appears with an error message containing the text - D3DCommandQueue -> GetClockCailibration failed and a path to the C++ file D3D12DirectCommandListManager.cpp:320

After some searching, I guessed this was something to do with DirectX 11 vs 12..

The fix for this was to modify the PreferredGraphicsAPI setting in GameUserSettings.ini found at:

/home/<User>/.steam/steam/steamapps/compatdata/397540/pfx/drive_c/users/steamuser/My Documents/My Games/Borderlands 3/Saved/Config/WindowsNoEditor/GameUserSettings.ini

Change the value of PreferredGraphicsAPI from DX12 to DX11.

What appears to happen is the game sets itself up to use DX12 during the 1st launch of a playthrough - but once you exit you can no longer launch the game from steam because of the DX12 setting.

Graphic Performance

Frame rate drops to <10 for a few seconds when:

  • entering a new area of the map
  • multiple enemies spawn in new areas
  • when activating characters action skill (Moze entering Iron bear - black screen for 5 seconds)
  • when accessing ammo/health vending machines
  • opening the catch a ride menu

It does recover after a few seconds, but its noticeable and annoying.

Driving a vehicle has been the worst - doesn't go above 15 fps. Its awful.

UPDATE:

To try and mitigate this I modified:

/home/<USER>/.steam/steam/steamapps/compatdata/397540/pfx/drive_c/users/steamuser/My Documents/My Games/Borderlands 3/Saved/Config/WindowsNoEditor/GameUserSettings.ini

with the following settings: (note: only relevant parts are included, theres a lot more in this file)

[ScalabilityGroups]
sg.ResolutionQuality=100.000000
sg.ViewDistanceQuality=1
sg.AntiAliasingQuality=3
sg.ShadowQuality=1
sg.PostProcessQuality=3
sg.TextureQuality=1
sg.EffectsQuality=3
sg.FoliageQuality=1

[/Script/OakGame.OakGameUserSettings]
ResolutionScale=Scale_75
FrameRateLimitMode=Capped60FPS
CustomFrameRateLimit=144
bEnableCameraMotionBlur=False
bEnablePerObjectMotionBlur=False
bEnableCAS=False
GraphicsQualityMode=Medium
RecommendedGraphicsQualityMode=Medium
TextureStreamingQuality=Medium
MaterialQuality=Medium
AntiAliasingModeIndex=1
AnisotropicFilteringMode=TwoX
ShadowQualityMode=Medium
PerformanceStatsLevel=0
DrawDistanceMode=Medium
EnvironmentDetailMode=Medium
TerrainMode=Medium
FoliageMode=Medium
VolumetricFogMode=Off
ScreenSpaceReflectionsMode=Medium
CharacterDetailMode=Medium
AmbientOcclusionQualityMode=Medium
PreferredGraphicsAPI=DX11

I'm going to continue tweaking these settings, but i'm not sure if they frame rate drops are ultimately solveable as I have tried some of them on low / off and it doesn't really improve things.

The FrameRateLimitMode=Capped60FPS. Have tried this with limits and unlimited. When its unlimited, frame rates are all over the place it will go from 100 down to 10 and back again for no appearent reason like just turning around in an empty area with no enemies or npc's present.

Crashes and Stability

I find if I edit the Visual options from the in-game menu the game crashes, so I just make edits to /home/<USER>/.steam/steam/steamapps/compatdata/397540/pfx/drive_c/users/steamuser/My Documents/My Games/Borderlands 3/Saved/Config/WindowsNoEditor/GameUserSettings.ini instead.

I do find random freezes will occur, most likely when entering FFYL or when theres a big explosion on screen. The game will freeze for maybe 30 seconds and then recover.

I'm 50/50 now, whether this qualifies as playable after putting a few hours of play into it. When it works, its perfectly fine, its just very unstable - I'll probably struggle on a bit more, given the amount of time I've invested in trying to get it this far, but I suspect if I was reading this report written by someone else - I wouldn't bother with this game.

Update: The 2 most helpful things I found for stabalising the stutter and frame rate and made the game at least playable:

  • Disconnecting from the internet during play
  • ResolutionScale=Scale_75

Ealier Attempts

My first efforts were with Proton 5.13-4 and 5.21-GE-1 GloriousEggroll

I tried the GE version as it claims to have the fix for the Watch Monitor bug built in, but I could get the game launch with it. No error dialog boxes, just nothing happening when you press Play.

I'm documenting the 5.13-4 errors I enountered here in case they help someone else.

Proton 5.13-4 Vulkan Shaders - ARGGGH!

My first attempt was running with Proton 5.13-4. This didn't work at all.

When first attempting to run with 5.13-4, it will install the Steam Linux Runtime - Soldier (SLR-S, from here on) (presumably if you have it already it wont do this).

The Processing vulkan shaders took 50 minutes to reach 99% in the progress bar, then just sat there. After waiting another hour I clicked "Skip", after a few minutes the progress bar closes. Then pressing Play nothing would happen. I rebooted the computer at this point.

After restart, when pressing Play there was an error with the SLR-S. It wouldn't launch anything.

I uninstalled and reinstalled the SLR-S and tried to launch again - this time the Vulkan shader processing was a bit quicker, 20 minutes to get to 99% and then the same hanging as in the previous attempt. Waited for an hour before clicking skip again, then tried to launch via Play button, nothing at all happened, just refused to start, no dialog and no SLR errors this time .

At this point, after reading here some more on Proton DB, I decided to try with Proton 5.0-10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment