Wow client bugs when changing aspect ratios

I have an external 16:9 4k monitor which I connect to via eGPU, when off the eGPU my laptops monitor is 16:10. when I move from one to the other, I have to manually go into the settings and reset the monitor resolution. Is there any way to resolve this?

I don’t think there’s a way to make this work better than your current workaround currently. The client currently respects whatever is in your config file. This was the result of some people wanting to play at a non-standard aspect ratio (like people want to play 4:3 stretched on a 16:9 monitor). The way things work currently pretty much assumes there’s one monitor you play on. It doesn’t really work well if there are two different monitor set ups you switch between frequently.

There’s a few different things we can probably do to make this work for you in the future. I’ll look into what it would take to have an “auto” resolution option and/or have the client save resolution settings per monitor.

1 Like

Just to follow up on this, in the 9.0 client, there should be an additional resolution option of “Default” which will use the resolution we auto-detect the monitor to (generally the maximum size supported). If you leave your resolution set to “Default”, then the client should automatically switch sizes when you switch from your laptop monitor to your eGPU monitor. Hopefully that helps things out.

This doesn’t seem to work properly on retina displays. I have a 2020 iMac and Default picks 2560x1440 instead of 5120x2880. It took me a few minutes to figure out why everything was blurrier than usual!

Yeah, most macs with a retina display default to 1440p due to it being rather expensive to render to the full monitor resolution.

I went ahead and made a config setting to force the default resolution to be the maximum size of the monitor if you want it to do that.

Add
SET ForceResolutionDefaultToMaxSize "1"
to your config file in WTF/Config.wtf

2 Likes

I wonder if the game is defaulting to both the Retina scaled 1440p resolution and 50% render scale at the same time. At 100% render scale using the default Retina resolution, it shouldn’t be blurry. In fact it should be nearly as crisp as the native resolution would be.

I believe the client currently always default to 100% render scale. We switched defaults from using render scale to using final resolution because on a lot of low end hardware, the bottleneck was with bandwidth dealing with large framebuffers, even if we’re only rendering the UI at full resolution.

As for retina stuff, Apple refers to a lot of stuff in “Points”. On macOS retina display modes, pixels to points is 2:1, so for example, on a 5k iMac, if the Apple UI says “Looks like” 2560x1440, it’s talking about “Points” and the real pixel size under the hood that you’re rendering to is 5120x2880. There’s potentially another scaling mode after that if the pixel size doesn’t match the monitor size. If the mode is “looks like” 3200x1800, then in pixels that framebuffer is 6400x3600 and then that final result is scaled down to 5120x2880 to fit the monitor.

WoW’s UI is always talking about what Apple retina terminology would be “Pixels” not “Points”. It’s also worth noting “Pixels” are potentially different from pixels due to that final scaling that could happen to make the virtual desktop size fit on the actual monitor. So it would be expected that WoW at 2560x1440 would be “blurrier” than what Apple would call “Looks Like” 2560x1440, because that’s really 5120x2880.

It’s worth noting that Metal has a fast path if the game is fullscreen. As long as the game window covers the monitor, the framebuffer the game renders to will skip desktop composition and be passed directly to the monitor. So if WoW renders at a specific resolution in fullscreen, that will be passed directly to the monitor (or the hardware upscaler in some cases), skipping all of the desktop composition stuff of rendering to the desktop “Pixel” resolution and then potentially scaling back down.

Quick question on this - does this apply to both borderless windowed (what most call “fake fullscreen”) and exclusive fullscreen mode, or just one of the two?

Not that it will help me since EFS mode was removed, and is needed by me (and probably a fair number of others using third party software to control the mouse), but at least I’d learn a new thing. :slight_smile:

So macOS doesn’t have an exclusive fullscreen API. What the old Fullscreen option did (in addition to what fullscreen windowed does) was:

  • Set the window order value very high, higher than things like desktop notification and the cmd+tab UI use so the game window would stay on top of notifications
  • Draw black on the other windows
  • Change the desktop display mode, if the requested size is different

None of that would affect the Metal fullscreen fast path either way.

The window order trick was the source of some issues. It’s very hacky and can get the system into a practically hung state in some cases, like if the game hangs and the user is also using the disable OS shortcuts feature, they could get into a state where they were stuck in the game with no easy way to get out.

The change display mode API isn’t really geared towards temporary or per application changes. There were edge cases with the game saving or restoring the wrong mode due to the mode being changed from the sys prefs while the game is running, conflicting with other applications also trying to change the mode, the game crashing etc.

By use the mouse, you mean leveraging the fact changing the desktop display mode changes the relative mouse speed right?

1 Like

The way it seems to work with the mouse software is that it is able to detect the change to the specified app (WoW in this case) and adjusts the acceleration curve and sensitivity to the parameters defined in the configuration set by the user (me). This is a pretty easy concept to grasp.

The issue that comes into play happens when the app loses focus, for any reason. That means ALT-TAB/CMD-TAB, switching display modes (fullscreen to any other mode), or an outside interruption such as notifications or random interference from the dock from say, a badge icon update or just the dock itself doing whatever random stuff it does.

When app focus is lost, the hook used by the mouse software is lost. Normally you’d think just switching back to the app and/or restoring proper fullscreen mode would also restore the user defined curves, but that isn’t the case. Once control is lost, it’s lost until the target app is exited and restarted. It is the same in Windows.

An example of this happening in Windows would be when I’m playing Star Ocean 4, which has a fullscreen mode (though it’s just borderless windowed since Square Enix likes to fudge things up - check out Special K / Kaldeian on Steam on how users get around Squeenix’s shortcomings) and the game app loses focus. Once focus is lost, controller input is broken entirely. No amount of ALT-TABing back into the game or restoring fullscreen will fix it. The only way to fix it is by getting to a save point, if you’re lucky enough to be close to one, shutting down the game, and then restarting it.

With WoW that gets more troublesome as it isn’t a single player game. When you’re in a group, you’re screwed if you have to exit and re-enter the game in most circumstances. They won’t wait for you, and even if they do, there’s a significant chance the logout and login process leaves you auto-ejected from the group anyway. But even during single player play such as world quests it can get you killed. You can’t logout during combat, only force quit the game and hope for the best on returning to the game world. Usually you’re dead by then.

The point here is that with the removel of EFS (Windows) and what we new as Fullscreen (OS X), the app is no longer able to guarantee focus, and when it’s lost, it’s lost. EFS/Fullscreen prevented that and allowed players like myself to play the game without interruptions or issues. In my case I used a controller + mouse setup. Oddly enough, controller input wasn’t lost permanently on focus loss, but mouse sensitivity and curve was, despite the same software controlling both (USB Overdrive).

Unfortunately in my case, I’m a clicker by necessity and I need that fine tuned acceleration and sensitivity curve to move between buttons without constant over/undershoot. I had set the curves up in conjunction with my mouse’s DPI settings (which had to be set from within Windows as the G9x mouse has no Logitech support in OS X) to counteract the lesser motor control I have in my deformed arm. It worked well, all the way from the 2003 FaF alpha right up until the pre-expansion 8.0 patch removed proper fullscreen. And as the removal of EFS and its OS X equivalent eliminted either platform as an answer, there went the game for me.

Yes, controller support was baked into Shadowlands. But without a way to prevent the game app from losing focus, the mouse side of the equation is left broken. I’m sure it isn’t easy for you to really firmly grasp just what little details like this can do to those with disabilities if you don’t have those disabilities yourself, but trust me, the little things do matter.

If I read this right, then you were basically doing the equivalent of playing a trick on the OS using strata level. I can definitely see how that makes it hacky, and even detrimental when you factor in the “Disable OS shortcuts” feature. I suppose one way to counter that would be to disallow enabling of the disable OS shortcuts feature if one selects “Fullscreen” from the menu (speaking as if it were put back in of course). Given that the absolute necessity of Fullscreen is going to be somewhat “niche” (e.g. people with disabilities using external control software to aid in being able to play the game like I do), you could always bring this back as a hidden CVAR if you wanted to. Either way, the app needs to retain focus in order to not break things folks with disabilities need to play.

It sounds like we could likely add a CVAR to help with this case. If I’m following this correctly, it sounds like you want the game to never lose focus right? This 3rd party software works on launch and then breaks if you tab out or lose focus from some other cases right?

It would be helpful to have some steps to set up and reproduce this issue. By that, I mean what software to install, how to configure it with settings extreme enough that it’s obvious when it is and isn’t working and then steps to make it break (such as making a notification pop up, if that does break it). From that point, I’m hopeful making some setting that aggressively prevents focus loss would help prevent these issues.

It also sounds like the problem could be solved with enough mouse speed and acceleration curve controls. That’s probably a lot more work to get right though.

Does this issue happen with other games? If this issue is WoW specific (or blizzard specific), it’s possible there’s just some bad interaction between that 3rd party software and WoW’s in game mouse speed settings. Being able to reproduce the issue would help debug if that’s true too.

Essentially yes, this is the gist of it. Apps that never lose focus never lose curve control. That’s why D3 is still playable for me but WoW is not.

I use USB Overdrive. That part is easy as far as setup goes since its sliders offer simplistic adjustments. The bigger problem for you will be the “how do I tell if it isn’t working” part. I guess for that you could set an extreme curve that nobody in their right mind would use (super fast) and try to break it. Once broken, the more mundane and appropriate speed (for you) would return, signaling a break.

For me it’s a different story, as just a slight variation causes issues with my right arm. Remember, it’s deformed - the ulna bone is curved, causing the arm and hand (when the two are aligned) to point to the 11 o’clock position if extending the rear portion of the arm straight out in front of me. The radius (inner bone) is rotated nearly 90 degrees. As a result, just typing is uncomfortable, and due to the curved nature of my arm, requires that for keybinds on the keyboard that I limit myself to the lower left corner of the keyboard to avoid pain. That’s why I use a controller in my left hand and the mouse in my right hand and just use spacebar to jump occasionally. It worked for fifteen years…

I also have less fine motor control in that arm as well, which is why I’m left handed in everything except throwing a baseball and using a knife (though I have to be careful with the knives due to my arm being curved). That’s the primary reason for the finely tuned curves. I also have spasms when gripping a mouse, and only a mouse (for some reason). I think it’s due to having a half-strength grip for that purpose, as I never spasm with a strong grip or when my arm is completely relaxed.

The curves I set in USB Overdrive do not work on their own. They also work in conjunction with the DPI setting(s) in the mouse itself. Since the Logitech G9x, one of the few mice that fits my tiny hands that stopped growing when I was ten years old, has no OS X software support, I have to set the DPI breakpoints in Windows and then reboot to OS X to tune the curve bit by bit. Every major OS change (10.major.minor) required this tuning. And it often took a couple of weeks for me to nail down the new curve due to the nature of having to dual boot back and forth to test DPI + curve combinations.

It happens with any mouse driven game, at least in OS X, though currently the only ones I use the mouse with are Blizzard games. That will change though once Path of Exile is released for OS X this week. In Windows it affects all games, though to varying degrees. Blizzard games would be the same as in OS X. But a game like Star Ocean 4 that I mentioned earlier could lose controller input as well. The result of disruptions varies by game and are wildly erratic as a result. But the trigger is always the same: app focus loss.

If app focus can be locked in, the only remaining issue I’d have would be inside WoW, which would ultimately require the developers to acquiesce and give players the option to choose Modern or Classic UI layouts baseline. As a clicker, when addons taint, those action bars are almost always the first thing to lock up in combat, preventing me from doing anything. But that isn’t on you, that’s on the developers for refusing to listen to players’ needs. For the record, the primary issue I have UI-wise is the bags being all the way on the right on my blind side. It requires turning my head quite far to the right to see them now, as opposed to just barely moving it before. Again, little changes have big impacts for people with disabilities, something none of the Blizzard devs have paid any real attention to yet (Overwatch, for example still lacks full-bore controller customization, and instead forces strafe to be bound to the left analog stick, a control method I cannot use). The grand irony in all of this is that WoW got an accessibility boost in the one area that wasn’t impacted for me - I’ve had controller support working since…forever. Ain’t that a kick in the lugnuts?

I’ll see what I can do to get something in to help with this use case.

I’ve got a couple more questions:

  • How many profiles in USB Overdrive do you have? Is it just one profile you want for everything, or are there different profiles for desktop use vs WoW use etc? If so, how does it switch to the WoW profile?
  • When it breaks, is it switching to the wrong profile or into some OS default state as if USB Overdrive wasn’t running at all?
  • Is “Enable Mouse Sensitivity” enabled in game (Interface > Mouse > Enable Mouse Sensitivity)? If so, does turning that off change/fix anything?

I haven’t been able to replicate this issue so far, but I went ahead and made a new feature controlled by the CVar ExclusiveWindowMode based on what you’ve said. It should show up in a future 9.0.1 build.

You can set ExclusiveWindowMode to "1" in your config file. You should also be able to change it on the fly using /console ExclusiveWindowMode 0 and /console ExclusiveWindowMode 1

That mode does everything I can think of to make the game keep focus. I believe all shortcuts (such as cmd + tab and cmd + space) won’t work in that mode. I special cased hiding and minimizing the game to work (such as using cmd + h). I think that’s the only way you can lose game focus when in that mode.

I’m hopeful this helps your use case. Be sure to let me know how it goes!

1 Like

I’ll have to give it a try. Granted for now I’ll only be able to try via PTR, but I don’t need a sub for the PTR at least, assuming this makes PTR and isn’t a beta specific build.

One really quick note that I forgot to mention before: If any OS nag dialogue comes up prior to the game starting, the client (currently) starts in a blank window w/ the WoW cursor, but isn’t actually in the foreground. It’s the same as trying to tab out of and back into Apple’s DVD Player when it’s in their obnoxious version of fullscreen. Tabbing out works, but back in does not. It’s a blank window with the DVD audio playing, exactly how WoW works on startup if that OS nag screen appears and interrupts the transition into the game. If this occurs, it’s the same as not having any hook at all and boom, I’m back at square one.

I can get as high (I hope) as 10.13.6 since I have a 1080 Ti in my hackintosh here, but no higher. Yay for Apple backstabbing nVidia for its own petty whims.

If there’s any way I can avoid that nag dialogue, I need to do so, or else I end up in the same situation as I’m in now. Aren’t you glad you specialized in Mac dev? :wink:

Yeah, the change should show up on the PTR and Beta.

I believe 10.13.6 shouldn’t nag, but if you do need to suppress that nag message if it does pop up in the future, you can suppress it by running

defaults write com.blizzard.worldofwarcraft DisableOSVersionCheck YES

In Terminal.app

Oooh, thank you for that nag suppression tip. That will hopefully stop the instant death interruption so I can give things a whirl. :slight_smile:

Although you’ve already put in some work to address the issues I outlined, I’ll answer these anyway as I somehow missed the edit before. I have multiple profiles in USB OD. One for the OS that is comfortable to use (i.e. fast enough, but with a less aggressive curve) and usually one for each game I need the mouse in. For Blizzard’s games that is Diablo 3 and WoW. They each have slightly different curves since I don’t need an absolute linear curve in Diablo 3 since most movements are sweeping rather than pinpoint, whereas in WoW I have the curve set up so that mouse movement is as linear as possible, which helps tremendously in combating both the spasms in my right arm and its lesser motor control. It isn’t perfect, but it’s quite workable. I’ll likely have to redo the WoW curve once I fire up the “accessible” WoW you enabled with the CVAR.

It does one of two things. It will either switch back to the OS profile, since that is usually where the focus is sent, or on very very rare occasions USB OD won’t pick up the proper change and respond as if it were disabled. The latter only occurs something like once every couple thousand drops, so it’s extremely rare.

It’s been a while since I’ve been inside WoW obviously, but if this is the rawMouseEnable CVAR, that is set to “1”, meaning WoW does not control mouse sensitivity. I tried that before and the less than granular control worsened the problem, which is why I tend to disable mouse sensitivity in any app and just use my own curve if in-app controls aren’t granular. WoW uses a singular control for sensitivity that affects both acceleration and curve. I have two distinct configurations for those, respectively.

Late night edit: This window/strata level trick you’re using here in OS X - are you also able to do this in Windows when using the DX12 API, and if so, would you still be able to make use of Microsoft’s Fullscreen Optimizations? If yes to both of those (or even just the first), would you be willing to make this CVAR able to be activated via a toggle in the Accessibility pane in the game on both sides? It’d be a massive accessibility boost.

So far on the PTR I haven’t lost control, though I’ve yet to tab out and there are still first launch quirks since the PTR without an existing WTF folder will bring up a dialogue window at the same point prior to the game opening that the OS nag window would appear, which obviously breaks proper curve control on that launch (but does not happen in subsequent launches after the config.wtf file is made or updated).

I do wish I could skip that really in your face control tutorial more easily though. Guess I need to delve into the bowels of the myriad preferences and disable that (I couldn’t get past the keyboard control part until I used the keyboard to move since a controller with keyboard mapping doesn’t trigger proper key input for the tutorial for some reason).

I would like to have this in every single game please.

Just tried the current PTR and was able to tab out and use all shortcuts even with the EWM CVAR in place, so I guess that hasn’t been added yet. Will keep an eye out for it. At least my external controller support still works. Guess I’ll spend this time updating addons to the latest I can get. I really wish I could get the old UI layout without having to resort to addons though - taint is a killer in combat if you’re forced to be a clicker like me. :slight_smile:

Yeah, those changes aren’t anywhere public yet. I believe they’ll be in any 9.0.1 client with a build number 35946 or greater.

I believe you need GamePadEnable set to 1 for the built in controller stuff to work.

Also, for what it’s worth, rawMouseEnable is controlling a windows feature and does nothing on mac. The mouse sensitivity control I was mentioning earlier I could see having some bad interactions with 3rd party mouse speed programs.

I’ll have to think about if I can get some of these focus changes working on windows. It likely could be added to the Accessibility UI, but not in time for 9.0.1/9.0.2.