Hello fellow D3ers
I see in alot of posts that people are having performance issues with this game. I was also having issues running this game. From constant odd stuttering issues(like a odd lag every few seconds) to grey screening on loading to CTD without any indication as to why to just general bad performance(missing sounds, input lag, bad FPS while in town). I haven’t been playing this game for long so I’m not sure if it’s normal but it definitely shouldn’t be.
I’m using an MSI GT722Qe Dominator Pro with 12GB DDR3 RAM, i7 4720HQ 2.6GHZ, GTX 980m 4GB. Game is installed on an internal SSD. I’m aware that it is old and not TOTL but it runs most things reasonably well so I figured Diablo 3 shouldn’t be an issue. Boy was I wrong.
After hours of trying multiple different things I finally found a solution that has worked for me. I am now getting an average of 60+ FPS with very little stuttering unless there is alot of stuff on screen. FPS in town is perfect, all sounds are present, no lag issues (once again as long as there isn’t too much crap on screen).
Here’s my workaround (It’s long but stay with me):
OS stuff
I read in an earlier thread that most of the issues have been related to FMOD. FMOD was throwing various errors and causing the system to lag/freeze/be choppy. I know I should have checked my own log to see if that was my issue, hindsight is 20/20 I guess. The poster stated that the problem was outdated MSVC++ files. They also provided a link to 2 updated MSVC++ files that he suspected were causing the FMOD problems. Sadly the links are now dead but I found a secondary solution that took a little bit more effort but works nonetheless
The 2 files in question are msvcp140.dll and vcruntime140.dll. Apparently diablo 3 is using a version from 2015 that isn’t playing well with modern FMOD
My solution was threefold:
- Search through my windows/sysWOW64 folder for the 2 files in question
-
Verify that they were the latest files(2019 or higher).
**to do this right click the file and choose properties, details. The section “Date modified” shows November 11 2020 - COPY them directly into the diablo3/x64 folder, overwriting the 2 files that were already there
I did these same steps using the 32bit DLL files as well just in case. I just found the 2 files in the system32 folder and copied them into the base diablo3 folder.
NVIDIA Settings
The Grey Screen problem
Sometimes issues like this can happen with my system when I play an older game. I have found that was the way the driver handles display scaling on my laptop is a little screwy. If I have it set to aspect ratio(which is my default) sometimes this issue will occur where FMVs will not play or sometimes the screen will not appear at all or just show a grey/black screen. I have read that the display scaling should be turned off for most games as the GPU will scale the display accordingly anyway and this was more of a way to control if the GPU or display itself was doing the scaling. I turned it off. It’s been 4 days and I haven’t had the grey screen lockup or full screen lockup. The grey screen still appears when I load the game but it doesn’t lock up and loads normally.
To turn off display scaling(on NVIDIA hardware) open the NVIDIA control panel, select Adjust desktop size and Position and click on No scaling
DIABLO 3 NVIDIA control panel specific settings
The settings in Manage 3d settings can have a huge effect on whether a game is playable or not. I have found a group of setting that works for me. No telling if they will work for you.
Turn off ambient occlusion
Set AA mode to app controlled
Set AA transparency to 4x super (personal preference)
Turn MFAA on (personal preference)
Set texture filtering to High quality (personal preference)
Turn ON VSYNC to ADAPTIVE(originally had it on fast)
IN GAME SETTINGS
There has been alot of debate on what works and what doesn’t and I’m just here to post what worked for me.
SET sound to 32. It was auto defaulting to 128 every time I loaded into the game for some reason but it seems to have stopped since I swapped DLL files.
Turn off any frame limiters. Max foreground and background fps as well as in game VSYNC. Since the driver is going to handle the VSYNC no need to turn it on in game or have any other frame limiter active since VSYNC will cap your framerate at your monitor refresh rate anyway.
I have all settings set to max with the exception of shadows(set to medium smooth).
EDIT:
I forgot to add a very crucial step.
Create a shortcut and add the -launch parameter. This will prevent battle.net from opening on start.
I get a buttery smooth 60 FPS with an occasional micro-stutter in town when I normally was getting anywhere between 20-40fps but never 60 consistently. Obviously less if there is more stuff on the screen.
Anyway thanks for taking the time to read this and I hope this can help someone out.