Grim Dawn Linux Guide (Updated: 3/2/2016)

UPDATED 4-4-17

This game is much, MUCH simpler to run now.

First, you will want wine-staging 2.4 and winetricks
Open a terminal.
On arch linux you simply do:

sudo pacman -S wine-staging winetricks

next, create a prefix and set configurations:
WINEARCH=win32 WINEPREFIX=~/.grimdawn winecfg

Set to Windows 7
In staging, enable CSMT.

next, we need dependencies for steam and the game:
WINEARCH=win32 WINEPREFIX=~/.grimdawn winetricks vcrun2010 vcrun2012 xact xinput d3dx9

now we need to install steam for windows using this prefix if you havent yet. Download:
https://steamcdn-a.akamaihd.net/client/installer/SteamSetup.exe

cd /path/to/downloaded/steam/installer
WINEARCH=win32 WINEPREFIX=~/.grimdawn wine SteamSetup.exe

run the installer. it should place a steam icon on your desktop. double click it.
log into steam, install grim dawn. When it finishes installing, click play!

THAT’S IT!!!

It runs perfectly, runs with everything cranked up in the graphics settings.

TROUBLESHOOTING:
If you’re struggling with invisible characters, do the following:
WINEARCH=win32 WINEPREFIX=~/.grimdawn wine regedit
Navigate to:
HKEY_CURRENT_USER/Software/Wine/
Create a key named “Direct3D”
Inside it, create a string named “CheckFloatConstants”
Double click that string and type “enabled”, save, close, relaunch steam and the game.

If you are on NVIDIA and have tearing (not just grim dawn but in general):
Find your connected outputs with xrandr:
xrandr -q
it will say something like:
DVI-I-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary
DP-0 connected

if you’re using X:
if you’re using older xorg.conf:
sudo nano /etc/X11/xorg.conf
if you’re using newer xorg:
sudo nano /etc/X11/10-monitor.conf:

look for the section that starts like this:

Section “Screen”
Identifier “Screen0”
Device “Device0”

Add the following,change DP-0 and HDMI-0 to the devices connected listed from xrandr -q. I use one display port and one hdmi, my example is as follows:

Option “metamodes” “DP-0: 1920x1080_60 +0+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}, HDMI-0: 1920x1080_60 +1920+0 {ForceCompositionPipeline=On, ForceFullCompositionPipeline=On}”

60 is the refresh rate.

ctrl+O to save
ctrl+X to exit, restart your PC.

WARNING: if your PC fails to load a display, simply drop to tty with ctrl+alt+f2, then sudo nano /etc/X11/xorg.conf or /etc/X11/10-monitor.conf and remove the lines you added.

2 Likes

Hi, thnks for the update on the guide. Are you using native or propietary drivers? I have a geforce 960 and never used Gallium 9. Is this needed? Thanks!

proprietary, I don’t use nouveau because they just arent up to par performance wise as proprietary are. If you use nouveau gallium nine can help, but it is not needed. as far as Ive been able to see, gallium nine greatly helps amd users, but you also need to be running mesa with gallium nine patches. Mine runs great with just proprietary and staging

Just a heads up I’ve updated the guide for anyone wondering. got everything sorted with invisible parts, screen tearing, and vsync issues. the method I have listed above has some important parts. The final setup has “Allow flipping” enabled, with compton settings set that work properly. The game runs great with literally no jittering now. One key thing I did was removed the syncto_vblank option in the launch script as well. basically what ive done is set up a composition pipeline for nvidia that allows compton to take over and run super smooth vsync. ^^

Could any developer comment on whether there are plans for an actual Linux version of Grim Dawn ?

Considering Grim Dawn uses the Titan Quest engine and DirectX I highly doubt it. But there is hope for their next game.

Thanks for the guide, got GD working in Manjaro.

I’m a Linux noob and have an ATI card, so I only followed up to ‘get the game running.’

Now trying to get my dual monitor setup working (Intel + DVI Screen, AMD 7950 + DVI Screen) without much luck (2nd screen not detected), but GD works on the single AMD attached screen fairly well, other than slight stuttering.

Would love a dedicated Linux edition, as I look forward to dropping Windows altogether one day…

don’t upgrade to 1.9.6:

https://bugs.winehq.org/show_bug.cgi?id=40381

fixme:winediag:start_process Wine Staging 1.9.6 is a testing version containing experimental patches.
fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
fixme:module:load_library unsupported flag(s) used (flags: 0x00000800)
fixme:module:load_library unsupported flag(s) used (flags: 0x00000800)
fixme:module:load_library unsupported flag(s) used (flags: 0x00000800)
fixme:module:load_library unsupported flag(s) used (flags: 0x00000800)
fixme:module:load_library unsupported flag(s) used (flags: 0x00000800)
fixme:module:load_library unsupported flag(s) used (flags: 0x00000800)
fixme:module:load_library unsupported flag(s) used (flags: 0x00000800)
fixme:module:load_library unsupported flag(s) used (flags: 0x00000800)
fixme:ntdll:EtwEventRegister {5eec90ab-c022-44b2-a5dd-fd716a222a15}, 0x3b27f0, 0x3c0030, 0x3c0048
fixme:ntdll:EtwEventSetInformation 2, 0x3b2560, 43
Initializing Theora Playback Library (1.1)
  - libtheora version: Xiph.Org libtheora 1.2.0alpha 20100924 (Ptalarbvorm)
  - libvorbis version: Xiph.Org libVorbis 1.3.4
------------------------------------
fixme:msvcp:_Locinfo__Locinfo_ctor_cat_cstr (0x32fb38 1 C) semi-stub

runtime error R6025
fixme:msvcrt:__clean_type_info_names_internal (0x13d3d3c) stub
fixme:msvcrt:__clean_type_info_names_internal (0xc69d34) stub
fixme:msvcrt:__clean_type_info_names_internal (0x8844f4) stub
fixme:advapi:EventUnregister deadbeef: stub
fixme:msvcrt:__clean_type_info_names_internal (0x1000f41c) stub

bug fixed in git version of wine-staging.

Anyone managed to get GD working with Gallium on AMD?

I can get the Steam GD version running through wine (without Gallium) with some screen tearing and occasional fps drops, but can’t get the GoG version running at all (black screen) and if I try the Steam version with Gallium enabled I get “couldn’t initialize graphics engine.”

What extra Redists or libraries does Steam use that I’m missing for the GoG version?

I’ve used the guide in this thread, except the compton/Nvidia options.

I’ve installed Gallium through the wine-gaming-nine and wine-d3dadapter packages (AUR) without success.

how to download gd on steam if it says that the platform isnt supported? i tried steamcmd but the tutos shows how to install a csgo server only :rolleyes:

You need to download and install the Windows version of Steam -> go to steampowered.com -> Install Steam -> and click the Also available on Windows link. Wine should then start up to go through the installer. You’ll then have two desktop /app launcher icons for steam…

Then follow the guide here for GD :wink:

Got this working with xubuntu, wine 1.9.15, and Nvidia 361.42 with Optirun. Wine HEAD did not work, for whatever reason. Doesn’t seem to have a problem with HIDPI and overlay works fine. I did require the invisible character fix, and compton doesn’t seem required for as I don’t experience screen tearing or the like.

Thanks for the info!

Just another success story: the steam version runs fine on Mint 18 with the open-source radeon driver and wine staging (package winehq-staging from the official Wine PPA, currently at version 1.9.22).
The window manager is KWin without compositing (I haven’t tried it with compositing and don’t know if it makes a difference).

Wine configuration:

  • clean 64-bit wineprefix configured as Windows XP
  • winetricks d3dx9 msxml3 vcrun2015
  • follow the instructions in this thread to add the registry entries with DllOverrides and VideoMemorySize
  • enable CSMT in winecfg, otherwise the text in the main window is garbled

Minor annoyance: steam wants to install .NET 4 Client Profile every time it runs Grim Dawn. The workaround is to add the following registry key:

[HKEY_LOCAL_MACHINE\Software\Valve\Steam\Apps\CommonRedist\.NET\4.0 Client Profile]
"4.0 Client Profile"=dword:00000001

Performance is a bit worse than on Windows, but the game is still playable at low settings on a laptop with Core i3 and Mobility Radeon 5650.

Hi, i revisited this site after someone asked me to check on grim dawn. I’m bumping because the guide has been updated. It is now MUCH easier

…what. That sounded way too easy so I didn’t get my hopes up.

THANK YOU! I can’t believe how well Grim Dawn is running (or how easy that was…). Thank you so much. <3

Would we be able to run this in 64-bit with wine 2.12? Or any other 64-bit wine engine. I’m pretty sure wine 2.12 has directx 11 support also.

limited DX 11 even with DXVK. DX11 support is getting better.

The Grim Dawn Devs could look in to creating an official wrapper to port it over. it wouldn’t be native but, it would save folks a whole lot of work with out having to re write all of the code and be able to include a linux version on steam/gog or what ever stores they sell it on.

EDIT:

If i install the gog version Grim Dawn i get errors:

  • Runtime error (at 54:786)
  • Runtime error (at 195:800)
    Out of Stack Range
  • Runtime error (at 195:806)
    Out of Stack Range
  • Out of global vars range

The GOG installer says that the install is successfull. If i start the game i get another errors. Can any one help me?

My procedure

  1. WINEARCH=win64 WINEPREFIX=~/.GrimDawn winecfg
  2. WINEARCH=win64 WINEPREFIX=~/.GrimDawn winetricks -q d3dx9 msxml3 vcrun2015
  3. WINEARCH=win64 WINEPREFIX=~/.GrimDawn winetricks regedit (to add a registry entry)
  4. WINEARCH=win64 WINEPREFIX=~/.GrimDawn wine GrimDawn.exe (to install)

Wine Version: 3.3-staging

Registry Entry:


[HKEY_CURRENT_USER\Software\Wine\DllOverrides]
"*msvcp140"="native"
"*msvcr140"="native"
"*ucrtbase"="native"
"*vcruntime140"="native"
"*vcomp140"="native"
"*api-ms-win-core-console-l1-1-0"="native"
"*api-ms-win-core-datetime-l1-1-0"="native"
"*api-ms-win-core-debug-l1-1-0"="native"
"*api-ms-win-core-errorhandling-l1-1-0"="native"
"*api-ms-win-core-file-l1-1-0"="native"
"*api-ms-win-core-file-l1-2-0"="native"
"*api-ms-win-core-file-l2-1-0"="native"
"*api-ms-win-core-handle-l1-1-0"="native"
"*api-ms-win-core-heap-l1-1-0"="native"
"*api-ms-win-core-interlocked-l1-1-0"="native"
"*api-ms-win-core-libraryloader-l1-1-0"="native"
"*api-ms-win-core-localization-l1-2-0"="native"
"*api-ms-win-core-memory-l1-1-0"="native"
"*api-ms-win-core-namedpipe-l1-1-0"="native"
"*api-ms-win-core-processenvironment-l1-1-0"="native"
"*api-ms-win-core-processthreads-l1-1-0"="native"
"*api-ms-win-core-processthreads-l1-1-1"="native"
"*api-ms-win-core-profile-l1-1-0"="native"
"*api-ms-win-core-rtlsupport-l1-1-0"="native"
"*api-ms-win-core-string-l1-1-0"="native"
"*api-ms-win-core-synch-l1-1-0"="native"
"*api-ms-win-core-synch-l1-2-0"="native"
"*api-ms-win-core-sysinfo-l1-1-0"="native"
"*api-ms-win-core-timezone-l1-1-0"="native"
"*api-ms-win-core-util-l1-1-0"="native"
"*api-ms-win-crt-conio-l1-1-0"="native"
"*api-ms-win-crt-convert-l1-1-0"="native"
"*api-ms-win-crt-environment-l1-1-0"="native"
"*api-ms-win-crt-filesystem-l1-1-0"="native"
"*api-ms-win-crt-heap-l1-1-0"="native"
"*api-ms-win-crt-locale-l1-1-0"="native"
"*api-ms-win-crt-math-l1-1-0"="native"
"*api-ms-win-crt-multibyte-l1-1-0"="native"
"*api-ms-win-crt-private-l1-1-0"="native"
"*api-ms-win-crt-process-l1-1-0"="native"
"*api-ms-win-crt-runtime-l1-1-0"="native"
"*api-ms-win-crt-stdio-l1-1-0"="native"
"*api-ms-win-crt-string-l1-1-0"="native"
"*api-ms-win-crt-time-l1-1-0"="native"
"*api-ms-win-crt-utility-l1-1-0"="native"

My System


System:    Host: obi8-pc Kernel: 4.14.24-1-MANJARO x86_64 bits: 64 gcc: 7.3.0
           Desktop: KDE Plasma 5.12.2 (Qt 5.10.1) Distro: Manjaro Linux
Machine:   Device: laptop System: LENOVO product: 23497L4 v: ThinkPad T430 serial: N/A
           Mobo: LENOVO model: 23497L4 serial: N/A UEFI [Legacy]: LENOVO v: G1ETB4WW (2.74 ) date: 09/25/2017
Battery    BAT0: charge: 22.7 Wh 96.4% condition: 23.6/56.2 Wh (42%) model: SANYO 45N1001 status: N/A
CPU:       Quad core Intel Core i7-3632QM (-MT-MCP-) arch: Ivy Bridge rev.9 cache: 6144 KB
           flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) bmips: 17566
           clock speeds: max: 3200 MHz 1: 3000 MHz 2: 2919 MHz 3: 2869 MHz 4: 2844 MHz 5: 2781 MHz 6: 2908 MHz
           7: 2874 MHz 8: 2912 MHz
Graphics:  Card-1: Intel 3rd Gen Core processor Graphics Controller bus-ID: 00:02.0
           Card-2: NVIDIA GF108M [NVS 5400M] bus-ID: 01:00.0
           Display Server: x11 (X.Org 1.19.6 ) driver: intel Resolution: [email protected]
           OpenGL: renderer: Mesa DRI Intel Ivybridge Mobile version: 4.2 Mesa 17.3.6 Direct Render: Yes
Network:   Card-1: Intel 82579LM Gigabit Network Connection (Lewisville)
           driver: e1000e v: 3.2.6-k port: 7080 bus-ID: 00:19.0
           IF: enp0s25 state: down mac: 28:d2:44:25:96:11
           Card-2: Intel Centrino Ultimate-N 6300 driver: iwlwifi bus-ID: 03:00.0
           IF: wlp3s0 state: up mac: 3c:a9:f4:54:a9:3c
Drives:    HDD Total Size: 1250.3GB (13.0% used)
           ID-1: model: TOSHIBA_MK1059GS
           ID-2: model: Samsung_SSD_850
Info:      Processes: 225 Uptime: 4:54 Memory: 2381.2/7681.9MB Init: systemd Gcc sys: 7.3.0
           Client: Shell (bash 4.4.191) inxi: 2.3.56 

@obi8:

Dunno about GoG because i have the Steam version myself but i use PlayOnLinux to install the game, and use this guide to do it.

I do have a question for you, though: how did you manage to get Wine 3.3 staging? I thought staging only went up to 2.21, which is what i’m using myself.