How can I improve my UI performance

Mystler/fpsguide.md

Where do FPS problems in WoW come from and what to try to do about them.

What is the problem?

WoW has developed strongly over the years, both the requirements of the game itself and the complexity of interface personalization with add-ons have become more extensive. In the game worlds, the progress of the assets (models, level design, animations, etc.) was faster with the times than the optimization of the engine. This can be seen in the large differences in the frame rate between old areas such as Mulgore compared to new, extensive areas such as Suramar.

(Simple example: view range at maximum and in Legion Dalaran look at the flight master for Suramar. Keep an eye on the frame rate and then turn away. Depending on the PC, you can see how the frame rate may double.)

But my computer is really good! Only 25% occupancy!

First off is WoW not a GPU-heavy game. A mistake that is often made is to upgrade the graphics card immediately, WoW runs properly even on fairly old cards or even onboard graphics. The The bottleneck is clearly the processor, because WoW primarily uses one processor core. 25% CPU utilization with 4 cores means that WoW is running at its limit. Faster and newer CPUs with convincing single-thread lines are the best setting screws in terms of hardware.

But since 8.1 everything is multithreaded!

Wrong or not read correctly. With 8.1 there were indeed optimizations. However, these do not affect everything and are far from being a panacea. What this is actually about Renderer improvementsthat mainly improve the process of communication with the graphics card, relying on multithreading. Tasks are distributed to several cores / threads of the CPU. These changes only affect DirectX 12 (i.e. this interface must be selected in the WoW settings and the graphics card must support it).

The 8.1 changes have potential and should, for example, reduce the burden of spell effects and particles. However, all code of the game logic and the interface still only run on one thread.

So the WoW engine is fully programmed!

Yes and no. The development of the WoW engine began in 1999. Blizzard's success has long been based on casual-friendly games that run smoothly even on mediocre hardware. So also WoW, which was considered a game with incredibly high-performance graphics when it was released.

However, as time progressed, the engine now has a few Signs of aging shows. It emerged not least at a time when multi-core processors were not really an option and each engine was running synchronously (on one thread).

Multithreading is still a relatively "new" and not entirely trivial science that poses its own challenges to programmers. The fact that WoW is taking steps in this direction with 8.1 is definitely a good sign.

The problem isn't just, maybe. least of all, an engine problem. As already indicated, part of the bottle necklace is the interface - especially add-ons.

LUA programming by WoW addons is an absolute optimization minigame if you want to get it right. Unfortunately, some addon developers have a "simple" attitude: If it works and looks good, it's ok. Although this leads to success, it can make life difficult for users on older hardware or in full raids.

A mistake that is often made with add-ons is to look at the memory consumption. "AAh, Addon X uses a lot of RAM". Memory consumption should not be greater than necessary, but the setting "Use more RAM than load the CPU" is a very good one. Add-on memory does not slow down a PC. Only "Garbage Colletion", an automatic memory clearing process of the LUA interface for add-ons, briefly consumes some CPU power at irregular intervals. Caching things in memory instead of querying or recomputing them every time can work wonders.

This is how we take action in Uganda!

Stop babbling history! What can I do now if I want my game to run a little better !?

I've already turned my settings down!

You can try to improve a little with Settings, but I can only give you a few tips, experimenting is recommended.

Many options in the menu mainly affect the graphics card and reducing them will only make the game imperceptibly faster if the CPU is the bottleneck.

  1. The environment options are the settings that actually mainly affect the CPU. Reducing this should help a little and also has only a minor impact on the "beauty" of the world.
  2. Projected textures should always be on, no matter what, because without this option you can not see some ground effects in raids / dungeons. This helps with "I don't see the mechanics at all" when playing on the lowest settings.
  3. I recommend setting sunshafts to off in the raid profile because they are the main factor why Rastakhan lagged so badly. Something must be wrong with the rays of the sun coming through the window in the boss room. Switching off helps.
  4. Reducing particle density can especially help melees that can no longer see anything after three spell effects from Frostmages and Warlocks.
  5. Depth effects See 4. Especially with Vectis, overlays of effects were blatant. E.g. the orb of Frost Mages had a strong refraction at higher settings that made it difficult to see dangerous ground effects.

Otherwise, unfortunately, I don't know any magic bullet when it comes to the settings. The main problem from here on are addons.

Fuck, which add-on is now to blame?

Good question! We come to the keyword "Profiling", i.e. measuring how much time the CPU needs for certain sections of code. There are various add-ons to profile add-ons. Personally, I use AddOns CPU Usage for this and I want to briefly explain how to use it.

If the add-on is installed, it can be opened via the minimap button, among other things. The window is empty and help is available when hovering over the question mark.

WoW must first be explicitly put into profiling mode. When you click on "Start Profiler", the interface is reloaded for a short time.

The recommendation is to run this now with a raid boss. That's where the biggest problems are likely to be. If you play an encounter, an evaluation window should open automatically after the end of the fight.

In my example, however, I switched it on on the dummy. This can be done via command to start and stop.

The result is a list of add-ons and their consumption.

  1. Average: The average time that all addons need together.
  2. Cpu Score: A key figure for the performance of the CPU. The higher the better.
  3. Milliseconds: The average time an addon takes.
  4. Peak: The maximum time that an add-on required for a frame during the measurement.
  5. Show Graphic: Switches to a diagram for the selected add-ons.

I see 2 addons as stronger consumers, Aurora and WeakAuras. With Aurora, appearances are easily deceiving, because only once before the start of the dummy fight of my measurement had a high peak that raises the cut a bit, the same with AdiBags. (You can see it in the graph, but don't have a screenshot of it.) With WeakAuras, the graph is more constant and Peak is closer to the average, i.e. WeakAuras consume a little more consistently.

Here is another example of Cusacki's list:

He also noticed weak auras (with a significantly higher cut than mine, although he has a lot fewer weak auras). Add to that crass ElvUI (which is known to have not been programmed particularly optimally, sorry to all ElvUI users). These two add-ons alone consume 80% of the total add-on performance.

If you have such results, you can now consider how to deal with it. Is it worth switching from add-ons such as ElvUI, Plater, TidyPlates, Bartender, etc. to better lightweight alternatives? Is it worth it to you?

WeakAuras are of course a special case. Simply deleting the add-on does not make you happy and the principle of WAs are individual auras or groups. Unfortunately, WeakAuras has a few basic "bugs" that will hopefully be improved. Rather, there are "bad" auras with custom code that were simply developed without regard to performance.

So delete all WeakAuras?

Good news! WeakAuren can also be profiled and you can see whether there are any conspicuous offenders that attack the frame rate.

To do this, just start the WA Profiler before the start of the fight (preferably also in a raid and for a few minutes, but technically no matter where). Then stop after the measurement.

Now you can open a result window with (and close it again with Esc). This first shows measurement data such as the measured time period and how much of it was on WeakAuras, then the consumption of certain WA mechanisms.

If you scroll down a little further you get a list of the actual auras.

For each WA, you can see the time spent by the aura (of the total time, i.e. more the longer the measurement goes) and the proportion in percent.

My values ​​are relatively balanced with a slight outlier upwards, a WA that I have already heavily optimized. The "STT Animate" things are marginal for what they do with me and I should probably tweak it or replace their group.

In comparison, with a similar measuring length on the dummy, an excerpt from Cusacki:

Here 2 of his auras alone are clearly in advance and in over 40% of all WAs. I've looked at them and both are custom codes that make the same complex queries and calculations every frame (i.e. at 30fps 30 times per second). This is often slowed down unnecessarily. It is worth looking for alternatives here.

In general, custom code WAs with "Every Frame" setting can be problematic if not well thought out. Such profiling can help to evaluate and sort them out.

There are also basic WA mechanisms that are not optimal. Energy-text auras are noticeably stressful, unfortunately usually nothing you want to do without. One problem that can be addressed, however, is bar smoothing. With Progress Bars or Progress Textures, the display has the "Smooth Progress" setting, which animates the bar more fluidly when changes are made. Deactivating this option may make the display a little less "pretty" depending on your view, but it also helps.

Conclusion

I hope I was able to clarify a few questions and clear up any misunderstandings. Perhaps my examples will help to identify weak points in the interface so that one can assess and try to eliminate them. As I said, it doesn't have to be a panacea, but depending on the system, you may be able to tease out a few FPS for 30-man raids.

Bonus: "Approved Addon List"

In a private chat, TC colleague Koji pinned a list of add-ons that have been tested and found to be good, which I can certainly attach.