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?
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.
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?
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.
You can just add the exe to steam and it’ll take care of setting everything up for you.
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.
what if I regret installing the thing and want to remove it? is it easy or would I be having to track files down?
Steam puts everything into one folder that you can just delete if you want to.
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.
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_Overridesfor 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 ofcd /path/to/directory && wine game.exe
Edit: some typos, and I just want to note that the && aren’t supposed to include the
amp;
partsIf 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!
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.
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 maybeWINEDLLOVERRIDES="ribbon=n,b"
since it’s called ribbon.dllSome 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.
Amazing, I’ll give all this a shot!
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
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.
Lutris should do the trick!
@Gamey @cyclohexane this can’t play Alan wake. Get errors.
@Privatepower42 @Gamey @cyclohexane maybe try #bottles or #heroicgameslauncher ?
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.
How does Bottles know to install VC redistributable or .Net and other stuff kind that?
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.
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.
@cyclohexane Why don’t you just let help you with #Lutris, #Bottles or #heroicgameslauncher ?
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!
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.
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)
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 onwinetricks.log
for simplicity.The first time Winetricks installs the
dxvk
verb, which takes the latest DXVK release at the time you run it, it writesdxvk
to thewinetricks.log
file. When a new version of DXVK is released, and you runWINEPREFIX=~/.local/share/wineprefixes/whatever winetricks dxvk
, it will hitwinetricks_is_installed
and read~/.local/share/wineprefixes/whatever/winetricks.log
to see if DXVK is already is installed. It will see thatdxvk
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 thedxvk
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 bypasseswinetricks_is_installed
and installs the latest version of DXVK. Guide has been updated accordingly; thank you for making me look into this again!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 gamesWhen 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.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 thedxvk
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
withwinetricks
. More info here: https://wiki.comfysnug.space/doku.php?id=visualnovel:problems#japanese_characters_aren_t_displaying_properlyAnd 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)
Installing the fake japanese font did the trick 👍
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.
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)
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.
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.