Jump to content
Dante Unbound: Share Bug Reports and Feedback Here! ×

Question to developers regarding steam's new "Steam Play" on linux!


GloriousEggroll
 Share

Recommended Posts

6 minutes ago, GloriousEggroll said:

They responded officially once already but the person who requested the response read it completely wrong...
 

The way he read this is completely wrong. DXVK is -NOT- expressly forbidden because it does not alter any of Warframe's libraries or any official game content what so ever.


Here's the actual response from DE that he referred to:


https://forums.warframe.com/topic/41660-guide-warframe-on-linux-with-wine/?page=21#comment-9812901

 

 


Let me clarify:
"The long and the short version is that if you are changing .dll files within your computer for your own purposes, there will not be any backlash at all. The time this becomes an issue is if .dll files are changes in the Warframe library"

DXVK and WINE do not modify -any- of Warframe's official files. At all. DXVK translates DirectX calls to Vulkan. WINED3D (The graphics engine used in WINE) translates DirectX calls to OpenGL. None of this happens anywhere near Warframe's game files.

Oh that makes me feel much better. Now I can install linux without worry. Thanks for clarifying this for me.

Link to comment
Share on other sites

Not sure if you're gonna get any response here, GD forum doesn't really get a lot of developer engagement. might be better off for you to post this on Reddit or Tweet to a DE developer. it will at least catch the eye of the community managers there.

The easier it is for everyone to play Warframe the better it is for the game, so I'm all for it.  Just don't think the issue will get fixed if it remains on the General discussion forum since from experience, it doesn't seem like any DE employees actually read it.

Link to comment
Share on other sites

On 2018-08-21 at 10:26 PM, GloriousEggroll said:

Hi guys. So back at GuardianCon I approached a few people at the Digital Extremes booth to express that I'd written a bash script that gets Warframe working on linux with DXVK. They informed me to try making a post on the forums. Today, Steam announced Steam Play (https://steamcommunity.com/games/221410#announcements/detail/1696055855739350561), which uses DXVK. The game itself runs beautifully in DXVK, but the problem is not the game, but the launcher, which is what my script handles.

Here are the the bash scripts I created which get the game working easily on linux, with DXVK, without touching the official launcher:
https://gitlab.com/GloriousEggroll/warframe-linux

The problem with the official launcher in linux is when you launch it, it tries to update itself, then fails to remove the old version, resulting in the launcher re-launching itself in a never ending loop.

If you fix this. JUST THIS. The game will be compatible with Steam Play. Will you try to fix this to allow Steam Play support?

My script does in bash what the official one does as far as updating the game goes, minus the extra launch options. It also checks the cache by default. You can see step by step details on the script here:
https://gitlab.com/GloriousEggroll/warframe-linux/blob/master/updater.sh

Here is a video of one of my recent streams, which has me running Warframe at max settings on a Vega 64 in linux.  (please excuse my language and general banter). Later in the video I was trying to get Warframe running in Steam (but failing). Neither version works in linux with the official launcher due to the above mentioned bug:

 

 

Update:
After some tinkering, I've managed to modify my script, and made steam think my launcher was the Launcher.exe, so now steam warframe is working for me with full tennogen access!

Would of course be nice to use DE's official method 😜CoQWuaf.jpg

What exactly did you do to get the steam version running anyway?

Link to comment
Share on other sites

2 hours ago, JimmieTheApe said:

What exactly did you do to get the steam version running anyway?

I made a wrapper bash script that launches my modified Launcher.sh script, renamed warframe's Launcher.exe, then named my wrapper Launcher.exe in order for steam to run it. There's still some changes I need to make to it, but basically you can open my Launcher.exe in notepad and see its just a script that launches Launcher.sh:

https://gitlab.com/GloriousEggroll/warframe-linux/tree/wine-steam

Link to comment
Share on other sites

4 minutes ago, tychondus said:

Just run games under kvm with gpu-passthrough. You'll get near bare-metal performance is ANY game. No need for fancy software emulation that kill performance. 

except that it performs better than a vm now...

^coming from a guy thats been playing it in a qemu vfio vm with gpu passthrough the last 3 months until recently.

 

seriously. in vfio with a vega 64 and 6c/12t passed through and memory correctly configured, I could get maybe 50ish-60ish fps with vsync on at 1080p - with tesselation off, with txaa off, with volumetric lighting off

in linux with dxvk I get a solid 60 with vsync with everything completely maxed including fov and txaa and particles. it's a huge change.

Edited by GloriousEggroll
Link to comment
Share on other sites

5 minutes ago, GloriousEggroll said:

except that it performs better than a vm now...

^coming from a guy thats been playing it in a qemu vfio vm with gpu passthrough the last 3 months until recently.

That may be so. I have not tried it. All i can say is between native windows and kvm with gpu-passthrough, i see absolutely no difference in gaming performance. Furthermore, this solution is available now. It could take (many) years (assuming DE can even be bothered) to add support for DXVK.

Edited by tychondus
Link to comment
Share on other sites

2 minutes ago, tychondus said:

That may be so. I have not tried it. All i can say is between native windows and kvm with gpu-passthrough, i see absolutely no difference in gaming performance. Furthermore, this solution is available now. It could take (many) years (assuming DE can even be bothered) to add support for DXVK.

what in the world?? did you watch my video.. I'm USING. dxvk. It already works. DE does not have to "add support" to anything in the game. I don't think you understand how any of this works.. i suggest reading through the thread as it's been explained.

Edited by GloriousEggroll
Link to comment
Share on other sites

1 minute ago, tychondus said:

That may be so. I have not tried it. All i can say is between native windows and kvm with gpu-passthrough, i see absolutely no difference in gaming performance. Furthermore, this solution is available now. It could take (many) years (assuming DE can even be bothered) to add support for DXVK.

Considering eggroll already did the work for them, it's probably just a simple implementation either on DE's part or valves.

Link to comment
Share on other sites

18 minutes ago, GloriousEggroll said:

what in the world?? did you watch my video.. I'm USING. dxvk. It already works. DE does not have to "add support" to anything in the game. I don't think you understand how any of this works.. i suggest reading through the thread as it's been explained.

Oh, you're facing an updater issue. Well, hopefully they will do something about it. Still early days for Steam Play they only recently announced it.

Link to comment
Share on other sites

So, it might be an obvious question/problem, but:

I'm trying to replicate running steam/proton/warframe on my rig, so I did the following:

- Enable beta/steamplay/proton in steam

- Install warframe from steam

- Grab the Installer.exe and Installer.sh from https://gitlab.com/GloriousEggroll/warframe-linux/tree/steamplay-proton

- Backup Installer.exe "cp .local/share/Steam/steamapps/common/Warframe/Tools/Installer.exe .local/share/Steam/steamapps/common/Warframe/Tools/Installer.exe.cp"

- Put Installer.exe and Installer.sh in ~/.local/share/Steam/steamapps/common/Warframe/Tools

- Run the game in Steam. It opens a terminal, updates (yay, I guess), but then it closes and does nothing.

 

In my syslog, I get errors/stacktraces, with "ERROR: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored."

What am I missing? It looks like it's trying to load my 64bits system libraries from a 32bits executable - is there a step I'm missing to tell it to use 64bits?

 

EDIT: Ubuntu 18.04 (amd64), latest steam

Edited by Tribaalrog
Added distro
Link to comment
Share on other sites

1 hour ago, Tribaalrog said:

So, it might be an obvious question/problem, but:

I'm trying to replicate running steam/proton/warframe on my rig, so I did the following:

- Enable beta/steamplay/proton in steam

- Install warframe from steam

- Grab the Installer.exe and Installer.sh from https://gitlab.com/GloriousEggroll/warframe-linux/tree/steamplay-proton

- Backup Installer.exe "cp .local/share/Steam/steamapps/common/Warframe/Tools/Installer.exe .local/share/Steam/steamapps/common/Warframe/Tools/Installer.exe.cp"

- Put Installer.exe and Installer.sh in ~/.local/share/Steam/steamapps/common/Warframe/Tools

- Run the game in Steam. It opens a terminal, updates (yay, I guess), but then it closes and does nothing.

 

In my syslog, I get errors/stacktraces, with "ERROR: ld.so: object 'libgtk3-nocsd.so.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored."

What am I missing? It looks like it's trying to load my 64bits system libraries from a 32bits executable - is there a step I'm missing to tell it to use 64bits?

 

EDIT: Ubuntu 18.04 (amd64), latest steam

 

First line in the readme..
"STATUS:
Currently the game does not launch in Steam Play/Proton because it thinks it's offline and is unable to download the Cache Manifest. My launcher is able to update and launch the game as needed, just waiting on this to be fixed in proton."


It currently only works in wine using wine steam, with this branch of my updater:
https://gitlab.com/GloriousEggroll/warframe-linux/tree/wine-steam

also, as I stated, it's not finished.

Regardless, this thread is not for tech support on my branch, which is why I did not link it to begin with. I want this topic to stay on point.

Edited by GloriousEggroll
Link to comment
Share on other sites

12 minutes ago, xGinOkamix said:

Oooh this is exciting, I hope DE can take a look at the launcher problems. Will there be a video or tutorial explaining how to set this up?

There is a README in each branch with instructions, however it is not ready to be used by any means. I just created it a few days ago and am still heavily modifying it.

Edited by GloriousEggroll
  • Like 1
Link to comment
Share on other sites

1 hour ago, GloriousEggroll said:

There is a README in each branch with instructions, however it is not ready to be used by any means. I just created it a few days ago and am still heavily modifying it.

Looking forward to testing in the future then!

Link to comment
Share on other sites

Well, this could get very interesting. Valve made a bold move, let's see how DE acknowledges that. In the meantime, here is my own script I use to launch Warframe on my machine. It's much more simple (forcefully updates Launcher.exe only and then allows it to update the rest of game files) and works well enough for me, I just change envvars as needed. (Note: it makes a few assumptions about location of the bottle or availability of tools like wget, awk or lzcat)

Quote

#!/usr/bin/env bash

set -euo pipefail

export WINEDEBUG="${WINEDEBUG:--all}"
export WINEPREFIX="${WINEPREFIX:-${HOME:?}/.warframe}"

export WINEESYNC=1

#export PBA_DISABLE=1
export __PBA_GEO_HEAP=2048

export DXVK_HUD="${DXVK_HUD:-version}"

export MESA_GLTHREAD=TRUE
export PULSE_LATENCY_MSEC=60
export __GL_SHADER_DISK_CACHE=1
export __GL_SHADER_DISK_CACHE_PATH="${WINEPREFIX}"
export __GL_THREADED_OPTIMIZATIONS=1

cd "${WINEPREFIX:?}/drive_c/users/${USER:?}/Local Settings/Application Data/Warframe/Downloaded/Public/Tools"
wget -O "Launcher.exe.lzma" "http://content.warframe.com$(wget -O - http://content.warframe.com/index.txt.lzma | lzcat | awk -F, '$1 ~ /^\/Tools\/Launcher\.exe/ { print $1 }')"
unlzma -f "Launcher.exe.lzma"
exec wine "Launcher.exe"

Btw how do you deal with this bug? It affects all(?) 64-bit games using native xaudio2_7 and causes them to crash sooner or later due to truncated pointers. Right now I'm using 32-bit Warframe with native override because Wine's builtin implementation seems buggy, but FAudio patchset looks very promising.

Link to comment
Share on other sites

9 minutes ago, Saancreed said:

Well, this could get very interesting. Valve made a bold move, let's see how DE acknowledges that. In the meantime, here is my own script I use to launch Warframe on my machine. It's much more simple (forcefully updates Launcher.exe only and then allows it to update the rest of game files) and works well enough for me, I just change envvars as needed. (Note: it makes a few assumptions about location of the bottle or availability of tools like wget, awk or lzcat)

Btw how do you deal with this bug? It affects all(?) 64-bit games using native xaudio2_7 and causes them to crash sooner or later due to truncated pointers. Right now I'm using 32-bit Warframe with native override because Wine's builtin implementation seems buggy, but FAudio patchset looks very promising.

I thought about doing it your way initially but the launcher is picky with DirectX being installed and Steam doesnt allow you to change the exe used, so upon update, Launcher.exe gets replaced. Of course you can name the bash script whatever you want, but launching from steam requires a Launcher.exe - which of course if you're using a wrapper for Launcher.exe to launch a bash script.. will get replaced on every update. I'm currently having to do this bs to get around it:

 

Quote

    # run warframe internal updater
    cp Launcher.exe Launcher-lutris.exe
    "$WINE" cmd /C start /b /wait "" "Z:$EXEPREFIX$WARFRAME_EXE" -silent -log:/Preprocessing.log -dx10:1 -dx11:1 -threadedworker:1 -cluster:public -language:en -applet:/EE/Types/Framework/ContentUpdate -registry:Steam
    rm Launcher.exe.bak
    mv Launcher.exe Launcher.exe.bak
    mv Launcher-lutris.exe Launcher.exe



the 64 bit bug can be gotten around by manually installing Direct X 9 as winetricks directx9 is not enough. That being said, manually installing Direct X 9 is the only thing the game needs.

If you prefer not to install the entire directx9 package, the 32 bit exe runs fine with just winetricks xact, no other winetricks are needed and no other overrides either. At least in wine 3.14

Edited by GloriousEggroll
Link to comment
Share on other sites

1 minute ago, GloriousEggroll said:

I thought about doing it your way initially but the launcher is picky with DirectX being installed and Steam doesnt allow you to change the exe used, so upon update, Launcher.exe gets replaced. Of course you can name the bash script whatever you want, but launching from steam requires a Launcher.exe

the 64 bit bug can be gotten around by manually installing Direct X 9 as winetricks directx9 is not enough

Yea, I mostly did that to avoid having Windows version of Steam Client installed in the bottle as well, but when Proton integration is done, I'll switch to that setup I think.

And I would have never guessed that manually installing DirectX 9 fixes xaudio issue. In a DX11 game of all things. What the heck is this sorcery? I shall do some testing soon™.

Link to comment
Share on other sites

17 minutes ago, Saancreed said:

Yea, I mostly did that to avoid having Windows version of Steam Client installed in the bottle as well, but when Proton integration is done, I'll switch to that setup I think.

And I would have never guessed that manually installing DirectX 9 fixes xaudio issue. In a DX11 game of all things. What the heck is this sorcery? I shall do some testing soon™.

yeah but using standalone version of course exempts you from access to tennogen 😜

Link to comment
Share on other sites

As a long time Veteran to this game, I would be Elated if DE were to introduce Linux support, as this is one of the final games on Windows that are tying me down from using Linux as my main system. You've got my thumbs up. 👍 

Link to comment
Share on other sites

14 minutes ago, Volt said:

As a long time Veteran to this game, I would be Elated if DE were to introduce Linux support, as this is one of the final games on Windows that are tying me down from using Linux as my main system. You've got my thumbs up. 👍 

I've been working non stop on getting this working. My launcher script works, and I've ironed out the bugs (and fixes) and reported them to the proton devs:
https://github.com/ValveSoftware/Proton/issues/167

 

the only major issue is xaudio2_7 needs to be fixed on proton/wine's end. the other minor bugs already have patches that can be pulled from wine-staging. a workaround for xaudio2_7 is to use Direct X's native xaudio2_7. The rest is easy peasy. My launcher bash script works well as a workaround, but itd be nice if we had an official one by DE.

Edited by GloriousEggroll
Link to comment
Share on other sites

5 minutes ago, GloriousEggroll said:

I've been working non stop on getting this working. My launcher script works, and I've ironed out the bugs (and fixes) and reported them to the proton devs:
https://github.com/ValveSoftware/Proton/issues/167

 

the only major issue is xaudio2_7 needs to be fixed on proton/wine's end. the other minor bugs already have patches that can be pulled from wine-staging. a workaround for xaudio2_7 is to use Direct X's native xaudio2_7. The rest is easy peasy. My launcher bash script works well as a workaround, but itd be nice if we had an official one by DE.

If you want to add to your eventual sourceforge page for this project that this launcher is endorsed by nerds on the Warframe forums, go for it. 😀

Link to comment
Share on other sites

Decided to have a go at a Wine-friendlier launcher as well, so wrote a simple one in C++ just to avoid having any issues prop up due to switching between bash scripts and PE applications when run with Wine/Proton.

https://github.com/ananace/wf_proton_launcher

 

Some issues remain, mainly my lack of actually being able to test it on Linux, something's broken with my Wine setup and I haven't quite gotten down to figuring that one out yet.

But as it works as intended in my Windows VM, I'm going to go ahead and release it like this for now.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...