- World of Warcraft on Linux, performance improvements
- 1 Intro
- 2 Improving FPS
- 3 Improving Latency
- 4 Improving Disk Read Speed
- 5 Troubleshooting
- 6 Random stuff
"Speed" is generally considered to be three things:
- Frames Per Second (FPS)
- Latency ("Lag")
Loading Speed (Storage read speed)
Initial testing must be done with no addons loaded. Only once satisfied should addons be reintroduced into the equation. The wrong addon can dramatically reduce performance, and you want to keep things as simple as possible to begin with.
Improving FPS ∞
FPS is usually the benchmark for speed. Most of the time the actual number is completely irrelevant and it's an individual's perceptions which actually matter. At one point I had been playing quite well at something silly like 5 fps. 15 is very playable to me. Your perceptions will differ from mine.
Learning what FPS range is good for your gameplay experience is important. Don't worry that you're not getting fabled results like 60fps or even 30 if you can't even tell the difference between 20 and 30.
TODO - how to check fps (hotkey, addons I use) -
alt-f by default, I believe.
There are two forces fighting against oneanother.
- The supply from your graphics card and other computer resources.
The demand from your game settings, addons and other factors.
You can work to improve the situation of one side, the other side, or both at once.
1) The Supply
- 1a. CPU (sometimes)
- 1b. Memory (rarely)
- 1c. Updated Graphics Drivers (sometimes)
1d. Graphics Card (often)
2) The Demand
- 2a. Addons (rarely)
- 2b. Driver Settings (often)
2c. Game Settings (always)
It's certainly possible to have an underpowered CPU, but it's far more likely that your graphics card is an issue.
Linux: I have not done significant recent testing on low-end hardware with Wine. In the past, I didn't do a lot of work and simply concluded that it was impossible. Now I'm not so sure since I've had extraordinary success.
Windows XP: I do know that WoW can be made to run perfectly fine on a 1.4 GHz computer. Raiding was rough though, even 10s. 25s were nightmarish. I did have a low end video card back then too, so it's really hard to judge.
If you have an underpowered computer, you should not be running Windows 7. Windows 7 was designed to unnecessarily waste even more resources than Windows XP, requiring people to purchase a newer computer. Many complete systems were sold with Windows 7 and an option to upgrade to Windows XP. Take the upgrade if you can, but be aware that Microsoft has already or will eliminate support for XP. This means all those critical security flaws found every week that allow a remote attacker to completely control your computer will go un-fixed. Well, for even longer (forever) than they normally go unfixed.
TODO: AMD CPU speed setting trick.
Depending on your hardware and software, you may have power-saving or moderate CPU settings which can be changed for better gameplay.
If you have "lots" of memory, don't worry about memory! You can't improve performance with anything memory-related.
More memory does not actually equate to more speed. Get that straight.
How much is "lots". 1GB is probably fine. 2GB is definitely fine.
However, if you don't have much memory, your computer may be forced to take some of the less frequently used data from memory and write it out to your disk cache (swap file). When called for, that cache can be re-read back into memory for use.
This swapping process is incredibly retarded. If your computer needs to do it, then you're failing hard and need to address your low memory issue.
Addons take up memory, but it's a trivial amount. Addon memory usage should be dead last on your list of concerns unless you're desperately low on memory. Also, you need to complete all other speed improvements with all addons disabled before you even think about enabling addons and re-testing.
Resident software ∞
Only WoW should be running, and not other random crap. Check all of your startup programs.
Closing other programs is important. Their use of memory is usually not significant, but software running in the background may still demand some CPU time even if they are not in use.
If you have a fairly limited computer, you'd be surprised how important it is to understand what other things your computer may be trying to do. Perhaps listening for instant messages, checking for new email or software updates, rebuilding a search database, logging, backups, etc.
Updated Graphics Drivers ∞
Newer and improved graphics drivers may play nicer with your operating system or with WoW. Updating them may improve speed, but more often updating them actually fixes issues that were causing slowdowns. Keep in mind that graphics drivers have had a long history of being updated and then breaking under some circumstances, so always make sure you keep older copies of your drivers and otherwise know how to "roll back" your driver to something you know worked well-enough.
Always go directly to the manufacturer's website for drivers, and not to any other source. Not ever.
A New Graphics Card ∞
This is the first change people think of, but it's the last issue you should pursue. Even if you "know" that your graphics card "isn't good enough" I recommend that you work on all other things listed on this page first before considering an upgrade.
- Integrated, on-board - The video is a part of the motherboard. To upgrade it you would either have to buy a new video card or replace the whole motherboard (and maybe the CPU and memory as well!)
Discrete, card - A separate video card that can be removed and upgraded separately from the other parts in the computer.
If you have integrated video, it is very likely that your video is really terrible. Even if the model number seems good, it's always garbage compared to a discrete solution. So if you have a FooWidget 2000 XTQ integrated, a FooWidget 1000 XTQ discrete is probably better. Motherboard and video chip manufacturers are deceitful about integrated video.
If you decide to purchase a discrete video card, be sure to compare your current video card with possible upgrades. I rather like their GPU Hierarchy articles. As of this writing it's difficult to track down the latest one, but it's worth the time.
The final page of their reviews has a table that helps roughly compare video cards. Knowing where your current video card is on that list, and the general ranking of your proposed video card helps you plan better.
If you purchase a new video card, be certain you will get a large increase in performance. Don't guess. Don't go on model numbers or advertisements. Find reviews.
Lastly, spend the little bit of extra money on a video card. Often there is a small price difference and the lower price means something like half the memory or a lower rank of memory speed. Those differences are significant, and the money is well worth spending.
Still, be smart and don't grab after things just because they're more expensive. Know why there are price differences. Don't get caught by sales either. Sales usually try to unload lesser video card models. A small model number difference may mean a huge change in performance.
All testing should be done with no addons loaded. This is more important than you know. I've found a number of addons which were horrific on performance. You wouldn't think it to be possible, but it really is.
Yes it could be a bad addon that causes, but it's more likely the programming API was changed and the addon has not been updated.
If tests go well with no addons, and everything goes to hell with addons loaded, then you have no choice but to load one addon up after another until you learn which one addon or what combination of addons is causing trouble. I currently use TooManyAddons, but there are a number of solutions that help you enable and disable addons without needing to log out.
Yes this is a nightmare, but if you have issues with addons there is nothing else you can do. No you cannot look at memory usage. No you cannot look at load time. You might be able to look at CPU usage though. Check out OptionHouse and its CPU profiling option.
Game Settings ∞
Game settings comes in two parts.
- The in-game control panel
The hidden settings
The in-game settings are important, but it's the hidden settings that hide real speed improvement.
In-game Settings ∞
I don't know why Blizzard decided to create "what the fuck?" files. Maybe it's some kind of inside joke.
Keeping your settings ∞
Back up your Config.wtf file and overwrite it with that backup before every launch. Guarantee that the game won't try to revert your settings. This is extremely important, especially since sometimes you'll make changes in the game, and when the game exits it will overwrite and possibly screw up some of your hidden settings.
Improving Latency ∞
TODO: Explanation of what this is and how it can "help", in a sense.
a game setting for improved reactions, doesn't seem to matter on wine.
Leatrix Latency Fix is the tool to use. While I could go through all the settings and how to do things the old way, it's so much easier to just run a script and have it all done the right way automatically. Very highly recommended.
I don't know if port forwarding can help or not, but it's something to look into.
TODO - how to check your latency - addons I use.
- Latency considerations. Linux generally does things the right way, but it's possible there are things which can be done at the network level to help. I have no idea.
You're not running wireless are you? Don't.
Improving Disk Read Speed ∞
Random stuff ∞
- Disable as much as possible from your combat log filtering (you can still run
/combatlogto record raid info to post to wmo or wws since it is separate from your in-game filtering)
- Lagbuster (By Zone FPS (Not Latency) Adjuster)
- DynPerf - AWESOME!
- Improved texture management, edit
SET gxApi "d3d9ex"
disable display scaling on high DPI settings
A macro can turn settings way way down, even beyond the normal UI possibility? (unsure)
FIXME - link an archive: www.wow.com/2008/04/24/macro-for-a-prettier-wow/
/console overridefarclip 0 /console farclip 177 /console horizonfarclip 1305
gfxToggle2 - As far as I know, the only thing you need to do to make this work right is change a couple of occurrences of
GetFarclip() (which has finally been removed) to
GetCVar("farclip"). I patched my copy and I get no errors.