Path of Exile on Wine
Guide to install PoE on Wine under PlayOnLinux to fix memory leaks, crashes and FPS drops
Current for Path of Exile 2.2 Ascendancy
Originally posted by Sovyn on the official Path of Exile forums, here. Now maintained and updated by Sovyn only here on the Path of Exile Wiki.
First, my system is:
Ubuntu Linux 15.10 64-bit
4 GB RAM
Video Card: Nvidia GeForce GTX 750 Ti with 2GB memory
Nvidia proprietary driver 361.28
Screen Resolution: 1920x1080 (1080p), PoE runs in full screen mode
If your system is different, this guide may or may not solve every little issue but it should get you up and running without memory leak issues or crashes. Different distributions of Linux may have bugs with their packages that I am unable to reproduce.
Step 1) This step involves preparing your system.
If you haven't yet installed a basic Wine distribution on your system, please do so. For example in Debian and derivatives (such as Ubuntu): sudo apt-get install wine at a terminal. Or, you can use the default package manager, often called something like Software Center to search for Wine and install it from there. If the system cannot find the Wine package, you need to enable the universe repository. In order to do this in Ubuntu Linux for example, you would open your System Settings -> Software & Updates -> Other Software tab, and then check the box next to Canonical Partners. The sources list will then update and you can install Wine.
Make sure you have the latest version of Winetricks installed. I just edited my copy which was located at /usr/bin and cleared the file, pasted in the latest Winetricks code (20160219 as of this writing) from the link above, then saved the file. In a system terminal on e.g. Ubuntu you would type: sudo gedit /usr/bin/winetricks
The next thing to do if you are running a 64-bit flavor of Linux is to make certain that your proprietary video driver has the 32-bit libraries installed. Sometimes during the installation, the Nvidia proprietary driver will not install the 32-bit libraries on your 64-bit operating system unless certain packages are already installed on the system. Installing Wine as above usually resolves this issue as the necessary packages are installed as part of the Wine installation process. You can then re-install your proprietary driver and it should now install the 32-bit libraries. If you don't want to re-install for now you can wait until later and simply keep this information in mind if you experience an error when launching the game.
Next, if you don't yet have PlayOnLinux, go get it. It's free and makes it easy to manage different versions of Wine. There are precompiled packages available. For installation of the .deb package on Ubuntu Linux for example, simply open your home/downloads folder or wherever you saved the file and double click on it. The Software Center will open up and you can conveniently install from there.
Step 2) Launch PlayOnLinux. In the menu, click Tools / Manage Wine Versions. In this window, you will select a version of Wine for installation. Go to the Wine Versions (amd64) tab. I recommend version 1.9.4 as I have tested this and verified that it is working well. Other versions of Wine may have issues, for example, black screens, flickering or missing borders, blank life bars or buff icons, or frame rate slowdowns. Currently the game runs only on amd64 versions of Wine. After selecting your version, press the right arrow in the window and follow the simple prompts to install Wine. After that finishes, close the Wine Versions Manager window.
Step 3) Back in the main PlayOnLinux window, click the Configure button. Click the New button. In the virtual drive creator wizard, select 64 bits windows installation, then select the same Wine version that you installed in step 2, name the drive (PoE, for example).
Still in the PlayOnLinux configuration window, click on the name of the virtual drive that we made (PoE). Next, go to the Miscellaneous tab. Click "Open a shell." From the console prompt, type: winetricks -q vcrun2015 riched20 usp10
This command will install Microsoft Visual C++ Runtime 2015, a library required for the launcher window to appear correctly, and a library to fix unicode symbols like the newlines not displaying correctly. When it's done, close the console window.
For step 4, you have a choice. Option a is a fresh installation. Option b, save time and bandwidth if you have the game folder already installed elsewhere by simply copying the files rather than downloading everything again. Option c, install through Steam (I haven't personally tested option c).
Step 4a) New installation method Download PathOfExileInstaller.msi from the official site. Back in PlayOnLinux, after completing the virtual drive creator wizard per the previous step, click the name of the new virtual drive you created (PoE) in the PlayOnLinux configuration screen. Go to the Miscellaneous tab. Click 'Run a .exe in this virtual drive.' Browse to the location where you saved PathOfExileInstaller.msi, such as your desktop or home/downloads. Select PathOfExileInstaller.msi and click the 'open' button. Follow the installation wizard. The default path is fine. Click finish and the installer will exit. The Path of Exile installer sets up both the game and DirectX on your virtual drive. The game data files will download the first time you launch the game. For now, go to step 5.
Step 4b) Copy game files method After completing the virtual drive creator wizard, click the name of the new virtual drive you created (PoE). Go to the Miscellaneous tab. Click "Open virtual drive's directory." You are now looking at a file manager window. Open the folder drive_c, then Program Files (x86). In the manner you typically do, open a new file manager window and navigate to wherever you currently have Path of Exile installed. You will now be looking at two file manager windows side-by-side. Right click the Grinding Gear Games folder and left click "Cut". In the other window, right click in the empty white space in the window, and left click "Paste." You have now moved your game over to the new PlayOnLinux virtual drive. Close both file manager windows. Basically, in this step we are getting a fully working Path of Exile install from somewhere and pasting it into the new virtual drive's programs directory. It does not matter where you get it from - a Windows partition, a different PlayOnLinux virtual drive, your .wine folder, bring it over from a friend's on your thumb drive, etc.
Back in the PlayOnLinux configuration window again, click the name of your new Path of Exile virtual drive (PoE in this example). Go to the Miscellaneous tab. Click "Open a shell." From the console prompt, type: winetricks -q directx9
This command will install the required DirectX components to run Path of Exile.
Follow the on screen prompts.
You will see a few lines of output reported in the console window. Don't be alarmed if there are what appears to be a few error messages sprinkled in. When it's done, close the console window.
Go to step 5.
Step 4c) Steam installation method If you have a Steam account and you want your Path of Exile playtime and achievements to show up on your account, then you can install the Steam-based version of Path of Exile. If you do not care about linking your game progress to a Steam account then there is no advantage to using this method. The Steam Community cannot be accessed in-game due to Wine bug 35361. You may see a harmless PlayOnLinux error dialog on each run of the game when using this method.
If you are running older Wine version than 1.7.49 then you will need this bugfix for invisible Steam text (https://bugs.winehq.org/show_bug.cgi?id=31374).
After completing the virtual drive creator wizard, click the name of the new virtual drive you created (PoE). Go to the Wine tab. Click Configure Wine. After a moment, the Wine configuration window will open. (Do not change the Windows Version at this time -- it must be left as Windows XP for now due to Wine bug 24516.) Go to the Libraries tab. Under "New override for library", enter "dwrite" and click "Add". Then select "dwrite" under "Existing overrides", click Edit, select "Disable", click OK to confirm, and then click OK to close the Wine configuration dialog.
Next, go to the "Install components" tab. Scroll down to steam, select it, and click Install. Accept all of the defaults in the installer, but uncheck the checkbox for "Run Steam" at the end.
Next, go to the "General" tab. Click "Make a new shortcut from this virtual drive". Follow the wizard to make a shortcut for Steam.exe. It may show as one of the options on the choose a shortcut screen -- if not, select 'Browse' and click next, then click the Browse button and navigate to Program Files/Steam, single click Steam.exe and then click Open, and Steam.exe will now show below the Browse button -- click Next. You will need to name the shortcut, e.g. "Steam for Path of Exile". The wizard will ask you if you want to make another shortcut, select "I don't want to make another shortcut". When the shortcut wizard is done, close the configuration window and then select and run the new "Steam for Path of Exile" shortcut. It will download and install a Steam update on the first run.
When the Steam update installation is complete, the Steam login screen will be displayed. You may see a harmless PlayOnLinux error dialog pop up at the same time -- just click Next to close it. Log-in to your Steam account as normal. Then go to the Store, search for "Path of Exile", open the page for it, and click Play Now to open the install dialog. Accept all of the defaults to start downloading Path of Exile to the Wine virtual drive. While it downloads, go to your Library, right-click on Path of Exile, open Properties, de-select "Enable the Steam Overlay while in-game", and click Close. Now wait for the download to complete, but do not start the game. Instead, exit Steam and proceed with the rest of the instructions as normal with one exception: in step 7, the program name is PathOfExileSteam.exe instead of PathOfExile.exe and it is located in Program Files/Steam/steamapps/common/Path of Exile.
(Setting the Windows Version to 8 in step 6 is still recommended for Path of Exile, but it will prevent the Steam browser from working thereafter. If you need to use the Steam browser again for some reason, you can temporarily change the version back to XP.)
Step 5) If it is not already open, open up the PlayOnLinux configuration window again, click on the name of the virtual drive that we made (PoE).
- Click the "Display" tab.
- Select "disabled" in the drop-down box next to "GLSL Support". (This setting may only work on Nvidia cards.)
- Select your video memory size (in my case, 2048, which is equivalent to 2GB) in the drop-down box next to "Video memory size".
Step 6) Now, click the Wine tab. Click "configure wine." After a moment, the Wine configuration window will open. Select "Windows 8" from the Windows Version dropdown menu. Click OK to close this window.
Step 7) Lastly, click the General tab. Click "Make a new shortcut from this virtual drive". Follow the wizard to make a shortcut for PathOfExile.exe. It may show as one of the options on the choose a shortcut screen -- if not, select 'Browse' and click next, then click the Browse button and navigate to Program Files (x86)/Grinding Gear Games/Path of Exile, single click PathOfExile.exe and then click Open, and PathofExile.exe will now show below the Browse button -- click Next. You will need to name the shortcut, I named it Path of Exile. The wizard will ask you if you want to make another shortcut, select "I don't want to make another shortcut".
Step 8) You can now run the game from the PlayOnLinux main window or via the shortcut icon we made in the previous step.
Please note that the very first time that you run the game it may complain about failing to install the redistributable (VC++) and it will close. Simply run the game once again as VC++ was already installed via Winetricks in step 3. The game will find the VC++ installation the second time you run Path of Exile and you won't see the error message again.
Run Path of Exile and let it load all the way to the login screen for the first time. Click the exit button. The game has now written a configuration file that you can edit. Open the file (home folder)/Documents/My Games/Path of Exile/production_Config.ini in your favorite text editor. Scroll down to the [DISPLAY] section. The critical thing is to set fullscreen=true and enter your monitor's resolution (This prevents an "Failed Resetting Direct3D device objects" error). Also, setting antialiasing off (antialias_mode=0) and disabling post processing (post_processing=false) can help with some gamma issues with certain Wine versions. For example, here is my [DISPLAY] section, which should be fairly standard:
Save and close the file, run the game and enjoy.
That's it for the main guide, other tweaks that may or may not help you are found below.
Run PoE in a Window - Handy if you like to multitask. In PlayOnLinux configuration, click the name of your virtual drive. On the Wine tab, click Configure Wine. After a moment, the Wine Configuration window appears. Click the Graphics tab. Tick the checkbox next to "automatically capture the mouse in full-screen windows" (this will save you a few deaths in-game as without this setting you may end up dragging the window instead of your intended action). Also tick "Emulate a virtual desktop." Desktop size: Here you will enter your screen resolution minus some pixels to account for the height of the bar at the top of the screen. In my case, with a common 1920x1080 resolution, I enter 1920 x 1028 here. Click OK and close the configuration window. Finally, edit your "(home folder)/My Games/Path of Exile/production_Config.ini" file and change "resolution_height" to the same value you chose for the desktop size, above. In my case once again, I entered 1028 here. Everything else is the same as in Step 8 of the guide. Save and close the file.
Tweak to Slightly Improve Readability of Certain Corrupted In-Game Fonts - (Removed as this issue was fixed in Path of Exile version 1.3.1b. Just make sure to install usp10 in step 3.)
For ATI/AMD Graphics Card Owners only - I recommend that you buy, beg, or borrow a decent Nvidia card, but if you must, here is a possible improvement for the extreme FPS drop issues on AMD/ATI graphics cards, at least on my test system (Ubuntu Linux 12.04.1 LTS AMD64, ATI HD 4770, 4 GB ram, Samsung SSD).
First, I removed the AMD proprietary drivers (FGLRX), if present. In a system terminal:
sudo apt-get remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev*
I then rebooted just in case.
In a system terminal:
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
Then I went to the Update Manager as I wanted to see exactly what packages were being updated.
I installed everything suggested.
Then I rebooted again.
In a system terminal:
glxinfo | grep "OpenGL version"
....Now reads Mesa 9.0 instead of 8.x.
Basically this mini guide reverts from the proprietary driver back to the free open source (FOSS) driver, and then updates the FOSS driver to a newer version than available from the default sources.
The average FPS is not super, but I think overall the game is more playable than with the 'faster' proprietary driver with its more extreme hesitations in PoE.
Intel Graphics Owners - Intel Sandy Bridge/Ivy Bridge graphics (HDxx00) needs the latest Linux kernel for best performance. Older Intel graphics chipsets (GMA series) are too problematic and/or slow for PoE to be playable.
Possible fix for the LONG Allocating Space issue Credit to FeepingCreature and Drakier
I'm running a Debian based 64-bit system so I had to "apt-get install eatmydata:i386" from a terminal (since wine is 32-bit, you need the 32-bit version of the lib). Normal users on 32-bit installations should be able to "apt-get install eatmydata" (or whatever the relevant command is for your distro - for example it would be "emerge libeatmydata" on Gentoo).
Once that was done, I had to track down where it put the lib, which I found on my system at the following location: /usr/lib/libeatmydata/libeatmydata.so
I then went into PlayOnLinux and clicked Configure on the Path of Exile shortcut, then under the Miscellaneous tab the bottom box is a command to exec before running the program, and I put in there export LD_PRELOAD=/usr/lib/libeatmydata/libeatmydata.so
I closed the dialog. Then to test it, I renamed my old Content.ggpk to a backup and launched the Path of Exile shortcut. Allocating Space took only a few minutes rather than the HOURS it was before.
OpenAL libraries are required. Not having the appropriate openal libraries may prevent PoE from starting at all.