World of Warcraft
World of Warcraft (WoW) is a Massively Multiplayer Online Role-Playing Game (MMORPG) by Blizzard Entertainment taking place in the fictional world of Azeroth, the world that previous Blizzard titles in the Realtime Stategy (RTS) Warcraft series. For more information about the game itself, visit the Official World of Warcraft website.
This article will describe how install and run in on Arch Linux using Wine.
Some of this information was provided by http://wowpedia.org/World_of_Warcraft_functionality_on_Wine which is the best general source of information on WoW on Wine.
- 1 Installing Wine
- 2 Installing the game
- 3 Configuration
- 4 Performance tweaks
- 5 Links
Installing the game
Install the Battle.net client, as described in Battle.net. You can then install World of Warcraft from within the client.
Using an existing installation
After installing the Battle.net client, you can choose "Locate the game" in the bottom of the screen, and point to the existing install location. You can also point to an installation on a mounted Windows drive.
New installation from DVD
mount -t iso9660 -o ro,unhide /dev/cdrom /media/cdrom/
Insert first the DVD. If it will be mounted automatically - just unmount.
# umount /media/dvd
Now mount manually
# mount -t iso9660 /dev/dvd0 /mnt/dvd
Now you will find the Install.exe on the DVD
~ wine /mnt/dvd/Installer.exe
The World of Warcraft configuration file is located at
World of Warcraft\WTF\Config.wtf.
Add the following line which makes WoW run in OpenGL instead of DirectX Mode. Doing so though will result in lower quality graphics as it appears the OpenGL renderer isn't updated as frequently. D3D9 has more graphical features (like stencil shadows, liquid water, sunshafts) and higher shader model.
SET gxApi "opengl"
If you run Intel/AMD on the open source Mesa drivers and the game crashes on launch due to an access violation, you may need to force WoW to use OpenGL 3.3. Add this to your startup script:
Resolution and colour depth
You can change the following two lines to set the default WoW resolution. I have a 19" Monitor so I can use the following.
SET gxColorBits "24" SET gxResolution "1440x900"
You can run in a Window by setting this, which is confirmed to work in Wine.
SET gxWindow "1"
Black textures issue
If you're using an Intel graphics card and you can see black textures in the game (or the game crashes in OpenGL mode), you should enable S3TC texture compression support. It can be enabled throughor by installing .
Configuring the buffer
If the sound makes a horrendous racket with squeaks and white noise try :
SET SoundOutputSystem "1" SET SoundBufferSize "100"
Disable OpenGL Vertex Buffer Object
1. Here is a performance tweak that can boost your FPS significantly (everything without quotes):
- Open Wine's version of the registry editor by running "regedit" - Navigate to HKEY_CURRENT_USER\Software\Wine\ - Select the "Wine" folder, right-click onto the folder symbol and select New-> Key and rename it to "OpenGL" - Select the OpenGL-Key, then right-click into the right-hand pane, chose New-> String Value and hit enter - Rename "New Value #1" to "DisabledExtensions" - Double-Click on the renamed Key and enter "GL_ARB_vertex_buffer_object" into the "value" field
That was it, close the registry editor again, your changes will be saved automatically.
2. If you are finding it annoying that turning your character by let us say 90 degree takes n seconds normally, but n+m seconds in pupolated areas (in other words: that the polygon count of your surroundings affects the camera turning speed), apply something to "GL_ARB_vertex_buffer_object", like let us say a "2", so it looks like this: "GL_ARB_vertex_buffer_object2". You will still have the performance boost of the above tweak, but with a smoother feeling.
For Nvidia users
As of version 310.14 of the NVIDIA driver, an option exists for threaded OpenGL performance optimization. WoW benefits greatly from utilizing this.
(Sidenote: this makes the 'RGL' patch/library/hack redundant for Nvidia users)
Exporting __GL_THREADED_OPTIMIZATIONS=1 enables the optimizations. Example of launching WoW with these optimizations:
__GL_THREADED_OPTIMIZATIONS=1 wine Wow.exe -opengl
Once you've confirmed the game works well for you (applies to any game, not just WoW) you can turn off debugging output to potentially improve performance further:
WINEDEBUG=-all __GL_THREADED_OPTIMIZATIONS=1 wine Wow.exe -opengl $> /dev/null
If running the game in Direct3D mode, in conjunction with the above optimization, compiling Wine with the "Use glBufferSubDataARB for dynamic buffer uploads" patch should yield a further performance increase. This patch does not appear to increase performance in OpenGL mode, though OpenGL mode generally results in higher framerates anyway... albeit at the cost of the game's more advanced Direct3D eye candy.
WINEDEBUG=-all __GL_THREADED_OPTIMIZATIONS=1 wine Wow.exe
On 64 bit systems, if you're using bumblebee and using optirun to run game with Nvidia graphic card on your system, you will encounter this error:
X Error of failed request: GLXUnsupportedPrivateRequest
In most cases installing bbswill solve this problem.
AMD CPU users
As WoW significant benefits from L3-Cache you should check if your Processor/Bios has a L3-allocation Option available, BSP-Only allocation is what worked for me pretty well. By switching from all-cores allocation to BSP-only the FPS on my system did jump from ~70 outdoors to over 120+. This was done on a II X4 640 with Nvidia Graphics Card(proprietary driver) using -opengl and the thread optimization.
You can greatly increase World of Warcraft performance by choosing the right schedulers for your machine. Currently, the most-recent version of wine in the official repositories is not configured to fully take advantage of the linux-ck kernel. Instead, it is recommended that wine gamers use the CFS scheduler. Also, World of Warcraft runs better with the deadline I/O scheduler (as opposed to noop, cfq, bfq, etc). You can check if you will benefit from switching I/O schedulers first by determining which I/O scheduler you are using on your drive:
# fdisk -l *to determine the hard drive arch is installed on* # cat /sys/block/sdX/queue/scheduler *Where X is the letter of the drive fdisk reports* # echo deadline > /sys/block/sdX/queue/scheduler
This is a temporary fix (it does not set deadline permanently), but you may gain an additional 5-30fps, by enabling deadline as the I/O scheduler. Moreover, feel free to play around with other schedulers to pick the one which runs best on your machine, especially if you have an SSD