this post was submitted on 25 Sep 2023
37 points (97.4% liked)

Linux Gaming

15825 readers
54 users here now

Gaming on the GNU/Linux operating system.

Recommended news sources:

Related chat:

Related Communities:

Please be nice to other members. Anyone not being nice will be banned. Keep it fun, respectful and just be awesome to each other.

founded 4 years ago
MODERATORS
 

From my understanding, at least one other necessary component is dxvk, and that wine is not enough.

If I dont use lutris or some other manager, how can I game on linux? do I have to configure dxvk? do I need soemthing else too? vulkan?

Is there a guide that explains it?

top 33 comments
sorted by: hot top controversial new old
[–] [email protected] 15 points 1 year ago* (last edited 1 year ago) (1 children)

You really want to be using a separate prefix for each game, to keep any game-specific tweaks and settings separate.

Managing that without something like lutris or bottles IS A HUGE PAIN IN THE ASS, DO NOT EVEN TRY IT. Literally no-one does this. You will not find a guide.

But if you insist, yes, you'll need a version of wine, as well as dxvk. Both you can install yourself.

Vulkan you should have already on most distros.

Then there's a litany of optional windows dependencies that you can/have to install within a prefix, using winetricks, some of which will be necessary to run some things, while others will break other things.

But seriously. If you want to fiddle with the details, while not going insane with tedious prefix management, just use Bottles.

[–] [email protected] 4 points 1 year ago (1 children)

My issue with lutris is that when I used it before and something didn't work, or used to work but broke, I was completely at a loss, because I did not understand what all it is doing exactly. It just felt that what lutris is doing is a bit too obfuscated or unclear to me.

Is bottles any better on that front?

[–] [email protected] 5 points 1 year ago* (last edited 1 year ago)

Yes. I find prefixes in bottles much easier to configure. It's all the same stuff, but the UI is simply better IMO.

But if that's the problem you were having, setting off to manage wine yourself will only make it worse. You would be massively increasing the amount of legwork you'd have to do, not decreasing it.

Also grab protonup while you're at it. It can download specific proton/wine versions for you and put the files in all the right places for the extra versions to be selectable in bottles/steam.

[–] [email protected] 10 points 1 year ago (2 children)

You can just add the exe to steam and it'll take care of setting everything up for you.

[–] [email protected] 3 points 1 year ago

This what I do and it works pretty flawlessly. I've never used Bottles or Lutris since I started adding the games to Steam. It also takes care of controller support.

[–] [email protected] 1 points 1 year ago (1 children)

what if I regret installing the thing and want to remove it? is it easy or would I be having to track files down?

[–] [email protected] 2 points 1 year ago

Steam puts everything into one folder that you can just delete if you want to.

[–] [email protected] 7 points 1 year ago

I made a guide a while back explaining everything. It's easier than it looks, you'll just use a manager like Lutris or Heroic and download the newest version of Wine-GE, then your games should work.

[–] [email protected] 6 points 1 year ago* (last edited 1 year ago) (2 children)

From my understanding, at least one other necessary component is dxvk, and that wine is not enough.

dxvk is not necessary but it massively improves game performance on a lot of games, also keep in mind some games will actually not run if you use dxvk, so you sometimes (very rarely) have to use OpenGL instead and the only way I really found to do that was to have a wine prefix without dxvk. (I might've just been stupid though)

for the record only games that I had to use open GL for so far was Starcraft 2's Galaxy Editor (although the actual game itself runs fine with dxvk) and I had some problems with alt tabbing in really old versions of Warcraft 3 (1.27 and older)

 

Anyway, for a time I used Lutris a bit but now I always run wine through terminal because Lutris was great when it worked but there were seemingly no solutions for when it didn't (while running wine directly has never given me a problem).

And what's great with running wine directly through the terminal is that either it will run and you're good or you'll get some error messages saying that some .dll or whatever is missing (usually .net, visual studio, msvcr100+.dll, mscvcp100+.dll, ms*.dll, etc.) and you just use winetricks and go through the list until you find what you need.

 

One more thing that took a while for me to learn was that some games (if you're using mods) will need to be run along with WINEDLLOVERRIDES environment variable https://wiki.winehq.org/Wine_User's_Guide#WINEDLLOVERRIDES.3DDLL_Overrides

for example when I play Need For Speed Most Wanted 2005 I start it with this command: WINEDLLOVERRIDES="dinput8=n,b" wine speed.exe

another thing is sometimes you want to run games with some arguments, for instance before I got XCOM 2 on Steam and used AML I used to run it with this: wine XCom2.exe -noRedScreens -review


 

Now here's a pretty big caveat, which is that I use FISH instead of Bash which adds some big QoL improvements (in this case it's mainly about tab completion).

If I actually had to manually type in the commands or spend minutes going through history file every time I would never do it.

Although I suppose you could make an alias for each game.

 

Oh yeah and always run the games from the same directory as their .exe file is located in, more often than not it won't work if you just do wine /path/to/directory/game.exe instead of cd /path/to/directory && wine game.exe

 

Edit: some typos, and I just want to note that the && aren't supposed to include the amp; parts

[–] [email protected] 1 points 1 year ago (2 children)

If you don't mind me asking, how would one go about diagnosing why a game/mod doesn't work?

Specifically im working on nitrox for subnautica, which does some DLL funkery - but has reports of users getting it working on older editions, and radio silence for the later. I figured out from a reddit post that a ribbon.DLL was needed, to even boo the launcher (and the error code was pretty descriptive about it). Once it's added the launcher doesn't ever actually launch the game though, and the console is pretty radio silent about it all.

Again ignore all this if youre unsure/busy, but any tips are appreciated!

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago) (1 children)

Why a game (unmodded) doesn't work will usually be pretty obvious just from the errors you get

I might've just been lucky, but so far the only time I had to look up a fix was for battle.net launcher, which ever since a while back has to be done after every update.

https://old.reddit.com/r/linux_gaming/comments/yairmz/battlenet_fails_to_start_with_this_application/ituht4u/

The problem is in a hidden flag that's set on the qwindows.dll file in lastest B.net version which makes it hidden from the app.

The fix is relatively easy, simply run this inside the Program Files (x86)/Battle.net/Battle.net.13801/platforms directory:

setfattr -x user.DOSATTRIB qwindows.dll

After this Battle.net will work again.

 

But when it comes to mods it can be a lot trickier, and I don't really have a general purpose solution. Hopefully the game is popular enough that someone else has a guide on what to do.

I've never played subnautica so I don't know, but if the mods have their own modified DLLs then you're probably supposed to use DLLOVERRIDES, so maybe WINEDLLOVERRIDES="ribbon=n,b" since it's called ribbon.dll

 

Some other issues I've had with modding is that the mod might expect the game to be in a certain directory or for directories to have certain names or there might be some problem because Windows isn't case sensitive while Linux is.

Honestly the mods are generally not causing issues from my experience, it's the mod loaders and what not.

[–] [email protected] 1 points 1 year ago

Amazing, I'll give all this a shot!

[–] [email protected] 1 points 1 year ago

I don't have a lot of experience with this, but if you want more logs, you can try upping the WINEDEBUG debug channel: https://wiki.winehq.org/Debug_Channels

[–] [email protected] 1 points 1 year ago

I had some problems with alt tabbing in really old versions of Warcraft 3 (1.27 and older)

Have you tried Gamescope? I experienced similar issues with a lot of older visual novels. Gamescope was the cure-all for windowing issues like this. That said, if WineD3D works better than DXVK for the game, there's not much reason to look into it.

[–] [email protected] 4 points 1 year ago (1 children)

Lutris should do the trick!

[–] [email protected] 3 points 1 year ago* (last edited 1 year ago)

Don't use vanilla wine, use Wine-GE, which is basically Proton-GE, but designed for non-Steam launchers like Lutris.

Wine-GE (and Proton-GE) already includes DXVK and VKD3D btw.

You may also need to install proprietary codecs. Look up how to install the full ffmpeg and gstreamer plugins, or just "codecs" for your distro.

As to what else you require specifically, that really depends on your distro, graphics card, and how you're launching your games.

The Arch Wiki covers some of this stuff, but note that some of it may not be applicable to you if you're not using Arch (or an Arch-based distro). In saying that, a lot of it is applicable, but the package names may be different in your distro so you'll need to look that up on your own.

Alternatively, you wouldn't need to worry about any of this stuff if you go for a distro that's optimised for gaming, such as Nobara.

[–] [email protected] 3 points 1 year ago

Didn't use Wine much lately, but when I do i use usually 2 prefixes; one for 32, one for 64 bit. Winetricks is often helpful; so is the appdb on WineHQ.

Have fun!

[–] [email protected] 3 points 1 year ago (1 children)

If you want to play visual novels, you should watch out for games encumbered by DRM.

It's possible to play non-Steam games without Lutris, Bottles, or Heroic Games Launcher, though it's a little more annoying. The easiest way to install DXVK in a Wineprefix is using Winetricks. Just run WINEPREFIX=~/.local/share/wineprefixes/name winetricks dxvk.

The problem is Winetricks doesn't support updating DXVK. Lutris makes managing DXVK a lot easier; you can turn it on or off and it will update DXVK and other compatibility components automatically.

Vulkan support is of course required for DXVK to work, but DXVK isn't your only option for Direct3D translation. You can also use Wine's OpenGL translation layer, WineD3D, which requires no setup. The downside is that WineD3D's compatibility and performance is generally not as good as DXVK for the same versions of the Direct3D APIs. However, if your GPU doesn't support Vulkan, then you need to use WineD3D.

On the other hand, if your GPU does support Vulkan, Lutris' documentation provides a good place to start on installing Vulkan support for your distribution: https://github.com/lutris/docs/blob/master/InstallingDrivers.md

I wrote a guide explaining how the various components of Wine work to make games compatible. That might help you understand what exactly you need to do if you're not using a Wine manager. And, if you want to make things easier when working in the terminal, you can try these Quick-Access Shell Functions the Winetricks wiki provides.

[–] [email protected] 1 points 1 year ago (1 children)

The problem is Winetricks doesn’t support updating DXVK.

Are you sure about that? Every time I run winetricks (once in a blue moon) it always says I have DXVK (Latest)

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago) (1 children)

Reasonably sure, but willing to be corrected. See this section of the Winetricks code (it's just shellscript):

        # Don't install if already installed
        if test "${WINETRICKS_FORCE}" != 1 && winetricks_is_installed "$1"; then
            echo "$1 already installed, skipping"
            return "${TRUE}"
        fi

Followed by:

winetricks_is_installed()
{
    unset _W_file _W_file_unix
    if test "${installed_exe1}"; then
        _W_file="${installed_exe1}"
    elif test "${installed_file1}"; then
        _W_file="${installed_file1}"
    else
        return "${FALSE}"  # not installed
    fi

    # Test if the verb has been executed before
    if ! grep -qw "$1" "${WINEPREFIX}/winetricks.log" 2>/dev/null; then
        unset _W_file
        return "${FALSE}"  # not installed
    fi

Winetricks determines whether a verb has been installed by writing and reading to a winetricks.log file found in the root directory of the Wineprefix you're working with. It also tests if the file actually exists too, but let's just focus on winetricks.log for simplicity.

The first time Winetricks installs the dxvk verb, which takes the latest DXVK release at the time you run it, it writes dxvk to the winetricks.log file. When a new version of DXVK is released, and you run WINEPREFIX=~/.local/share/wineprefixes/whatever winetricks dxvk, it will hit winetricks_is_installed and read ~/.local/share/wineprefixes/whatever/winetricks.log to see if DXVK is already is installed. It will see that dxvk is in the log file and give up.

When I was writing the Visual Novels on GNU/Linux guide, I did a lot of experimentation with Winetricks. I installed dxvk in a Wineprefix a few months ago and haven't touched it since then. A new version of DXVK was released three weeks ago. When executing the dxvk verb in that Wineprefix again, I get:

Executing w_do_call dxvk
dxvk already installed, skipping

Years ago, Winetricks would write a new verb definition for every new DXVK release. Presumably when it was much less stable. You can see remnants of that with the 100+ verbs for installing particular DXVK versions. Now it just takes the latest stable release. Yay for the maintainers, because that's a lot less work. As a side effect, Winetricks doesn't have a way of updating it normally.

Why doesn't Winetricks have the ability to update verbs? Well, you're often installing very specific versions of a native DLL to override the builtin Wine component. You don't want that changing on you randomly. The w_get_github_latest_release function, which extracts the latest release, was created purely for and only used for DXVK. DXVK is the only component that really works like this in Winetricks.

There is an easy way of updating DXVK anyway. Just run Winetricks with --force:

WINEPREFIX=~/.local/share/wineprefixes/whatever winetricks --force dxvk

Now, admittedly, I misspoke about Winetricks "not supporting updating DXVK". I learned this option exists just now. So you can force-update it with --force, which bypasses winetricks_is_installed and installs the latest version of DXVK. Guide has been updated accordingly; thank you for making me look into this again!

[–] [email protected] 1 points 1 year ago* (last edited 1 year ago) (1 children)

Years ago, Winetricks would write a new verb definition for every new DXVK release. Presumably when it was much less stable. You can see remnants of that with the 100+ verbs for installing particular DXVK versions. Now it just takes the latest stable release. Yay for the maintainers, because that’s a lot less work. As a side effect, Winetricks doesn’t have a way of updating it normally.

Oh does it not add new entries for every new DXVK release anymore? In that case I guess my DXVK version is probably a year old by now even though it says DXVK (Latest) and that it's from year 2023: https://i.imgur.com/lNaqTPG.png

 

There is an easy way of updating DXVK anyway. Just run Winetricks with --force:

WINEPREFIX=~/.local/share/wineprefixes/whatever winetricks --force dxvk

Now, admittedly, I misspoke about Winetricks “not supporting updating DXVK”. I learned this option exists just now. So you can force-update it with --force, which bypasses winetricks_is_installed and installs the latest version of DXVK. Guide has been updated accordingly; thank you for making me look into this again!

Oh I had no idea about this, and I normally just use winetrick's GUI while using it so I would've had to look up how to update dxvk if not for you explaining it.

 

Although as a side note I've got the winetricks-git AUR package, not winetricks so maybe there's some fix for it somewhere already, I'll have to look into it. So far I haven't had an issue with DXVK being too old, but I mostly play older games

 

When I was writing the Visual Novels on GNU/Linux guide, I did a lot of experimentation with Winetricks.

Unrelated but I'll check that guide out, I've had trouble playing VNs that are in Japanese, as without LANG="ja_JP.UTF-8" wine /path/to/game.exe they won't even run but even with it the fonts don't work and are shown as empty boxes.

[–] [email protected] 2 points 1 year ago (1 children)

Oh does it not add new entries for every new DXVK release anymore?

Looks like the last time a verb for a new DXVK version was added was dxvk2010 or DXVK 2.1, in February this year. We're up to DXVK 2.3 now. Because the Winetricks codebase is around 20,000 lines of shellscript and I'm not the best at reading shellscript...I don't think the dxvk verb updates the Wineprefix's DXVK version based on what the newest version is. I think that's just an alternate way of installing DXVK; you can pull the latest stable release, or you can install a particular version.

I think executing a particular verb for a DXVK version would override whatever DXVK dlls you currently have installed in that prefix, too. I have no idea how to check what DXVK version is installed a particular Wineprefix, though.

even though it says DXVK (Latest) and that it’s from year 2023

That's based on the verb metadata; not what version of DXVK you currently have installed. A contributor bumped the year for the dxvk verb from 2017 to 2023 in a commit in February this year.

Oh I had no idea about this, and I normally just use winetrick’s GUI while using it so I would’ve had to look up how to update dxvk if not for you explaining it.

Happy if it helps. I've never used the GUI, but it's awesome that they managed to create a functioning GUI frontend with shellscript. Insane, really. God I hate shellscript...

So far I haven’t had an issue with DXVK being too old, but I mostly play older games

You probably won't get an issue with DXVK being "too old", but newer versions of DXVK implement more features (particularly for D3D12) and include bug fixes to improve compatibility or performance. From the 2.3 release notes:

Fixed a minor issue with D3D9 feedback loop tracking.

Test Drive Unlimited 2: Fixed shadows on grass.

Tomb Raider Anniversary: Improved performance.

So you want to be running the latest version for better compatibility. That said, I mostly play visual novels. My biggest problems are still DRM and media playback, which DXVK has very little to do with.

Unrelated but I’ll check that guide out, I’ve had trouble playing VNs that are in Japanese, as without LANG="ja_JP.UTF-8" wine /path/to/game.exe they won’t even run but even with it the fonts don’t work and are shown as empty boxes.

You're the exact person this guide was written for! This sounds like an issue that's easily fixed by installing fakejapanese with winetricks. More info here: https://wiki.comfysnug.space/doku.php?id=visualnovel:problems#japanese_characters_aren_t_displaying_properly

And if you have .txt files in the game directory (like documentation or whatever) with garbled text, that's probably because they're encoded in Shift JIS. There's an easy fix to make them readable: https://wiki.comfysnug.space/doku.php?id=visualnovel:problems#text_files_with_garbled_text

(That last one had me scratching my head for a very long time)

[–] [email protected] 2 points 1 year ago

Installing the fake japanese font did the trick 👍

[–] [email protected] 3 points 1 year ago

@cyclohexane Why don't you just let help you with #Lutris, #Bottles or #heroicgameslauncher ?

[–] [email protected] 3 points 1 year ago (1 children)

The classic way of using Wine is as simple as running any Windows binary using Wine program loader. If you've got Wine installed, you can likely just "Open with" in the Dolphin explorer, or simply wine program.exe in terminal. That is not a good idea however, because you just have a single Wine prefix (which by default is in ~/.wine and is controllable with env variable WINEPREFIX`) and also you will likely miss at least some dependencies for your game.

Dependencies required for launching a game will be different depending on what that game was built with in what period. If the game uses Vulkan or OpenGL natively, you don't need any translators, but it still might need .NET Runtime, VC Redistributables, some other Windows libraries that are not (and cannot be due to legality) shipped with stock Wine. If it's DX 9/10/11 game, you need DXVK. if it's DX12 you nees VKD3D-Proton. You can install these using Winetricks.

To automate and ease all of that, I recommend Bottles. The app is focused on providing you with generic way to run Windows software instead of collecting scripts, it manages prefixes, install most needed dependences automatically and provide a way to manually install everything else.

I think this is also a good idea to mess with native way pf running things with Wine if you just want to learn more on how it works.

[–] [email protected] 2 points 1 year ago (1 children)

How does Bottles know to install VC redistributable or .Net and other stuff kind that?

[–] [email protected] 1 points 1 year ago

While creating a Bottle, you choose a profile for "Application" or "Gaming". It then createa a prefix with most common dependencies for that purpose. It might not install all you need though, but it has menu to install whatever you need manually within few clicks.

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago)

I used to manually port games to macOS using wine/wine tricks/wine bottler, and honestly it’s not that bad. Especially if using GUI versions of all of those. Yes it takes fiddling and tweaking and a decent amount of failure, but I found it worth it once I succeeded in doing it once. That was almost a decade ago, and while I haven’t tried it since (I rely mostly on steam at the moment) I have a few games from say GoG and other places I’m planning to manually port. Ignore the haters, and just go for. Read/watch a tutorial, fail miserably for a while, and eventually you’ll tweak enough parameters and change enough values you’ll find what works. Once you do that for one game all the others will be easier. Every game is a bit different, but the freedom and knowledge you’ll gain is great. If my 13 year old ass could do it on a school issue MacBook to share Skyrim to all my friends you can definitely do it with more modern tooling.

EDIT: I think at one point I ported the windows version of steam, and then could use the “add non steam game” option and then could simply hit run. Didn’t work for everything, but there was a handful of games that was a quick and dirty work around for.

[–] [email protected] 2 points 1 year ago* (last edited 1 year ago) (1 children)

dxvk is available through the distro, if you're on an ubuntu or debian-based distro just run sudo apt install dxvk. vulkan should come pre-installed on any modern distro.

i'd highly recommend using some kind of manager, if you don't want lutris than use playonlinux which is more minimal. this keeps things organized and lets you use different wine versions and tweaks for each game. for example, some newer games need proton-experimental or an otherwise very recent version to run, but you may not want to replace your system wine with this.

[–] [email protected] 1 points 1 year ago

afaik you need dxvk in the actual wine prefix, just having it on your system doesn't do anything.

I had installed dxvk from AUR and didn't get why it wasn't doing anything, turns out the point of having dxvk on your system is for symlinking it into your wine prefixes so you don't have to get a dxvk installation for each prefix individually.

when I found that out I just removed dxvk package and got installed dxvk directly to the my prefix with winetricks, because I only use two wine prefixes anyway (one for vulkan and another for games that have to use opengl)

[–] [email protected] 1 points 1 year ago

Like others have posted, I use Lutris. I usually have to supplement it with game posts on the protondb website so I know what fixes might be needed. Often they have some environment variables that might be useful or they list certain items that need to be installed via winetricks(or in steam's case protontricks). Some games just don't run but you can usually get a lot of them to run.