So, like all games these days, Diablo IV (and any other Blizzard game) requires the use of an unnecessary crappy launcher that is apparently truly unnecessary, as one of its settings is to close on game launch. This makes my brain twitch. Blizzard’s launcher is doubly annoying in that it cannot be running on more than one machine. You will see why this is an issue in a moment.
Wouldn’t it be nice if you could simply double-click the Diablo IV icon, and start playing the game? Well, you can’t. Not without some ugly hacks. If the launcher is already running, there is a single command/shortcut that will run it. But if it is not, the same command simply takes you to the launcher page for the game, where you then have to click on “Play”. This is not a huge deal in the scheme of things, but the sheer stupidity of the design really irks me every time I have to do it, especially on the Steam Deck or the RoG Ally.
To make things even more comical, if you look in the Battle.net folder, there is a launcher for the launcher. <twitch twitch> And inside the game, there is another launcher that the launcher launches. So seriously, the load sequence for Blizzard games is Battle.net Launcher.exe-->Battle.net-->Diablo IV Launcher.exe-->Diablo IV.exe. I just don’t have the words to express…
I have been digging around the net, and found the command that will launch the game if Battle.net is already running:
"C:\Program Files (x86)\Battle.net\Battle.net.exe" --exec="launch Fen"
This can be put in a shortcut, or added as a non-Steam game in Steam to launch things. However, once again, if you don’t have Battle.net running, it doesn’t work as a rational person would expect it to. But, this got me thinking; if it has to be running, then I can load it. Then run the same command AGAIN to make it actually play the game. Now the launcher returns immediately, so you have no feedback or ability to know when it has actually finished launching, but the process is usually only a few seconds. So I expanded on this idea and created a DiabloIV.bat file, and launch that from my shortcut. It contains:
"C:\Program Files (x86)\Battle.net\Battle.net Launcher.exe" --exec="launch Fen"
timeout /t 10 /nobreak
"C:\Program Files (x86)\Battle.net\Battle.net Launcher.exe" --exec="launch Fen"
This will run Battle.net, wait 10 seconds, then run the same Battle.net command again, which will then run the game.
In the Battle.net settings, I changed it so that Battle.net would disconnect as soon as possible:
- On Game Launch –> “Exit Battle.net completely”
- When Clicking X (Close Window) –> Exit Battle.net completely
- Uncheck: Launch Battle.net when I start my computer
So now, I add the batch file created earlier as a non-Steam game. You can choose the Diablo IV Launcher for the Icon by clicking on the icon, and choosing the .exe file from wherever you installed it.
This is an ugly hack to compensate for bad software design, but it works so you can run a game like you would expect it to run.
Warning: On the Asus RoG Ally, you cannot use this technique to launch directly from Steam. Their Armory Crate SE launcher conflicts with Steam’s launcher, and causes two problems. The built in controller will wig out and the “A” button will randomly alternate between fire and opening chat. I have no idea why, but I confirmed it wasn’t just me in the forums, and the only option is to quit Steam to make the controller work as expected. Also, if you launch the batch file from Steam, it de-couples the running game, so external controllers may or may not work, depending on whether you did the right voodoo dance, and slaughtered the correct livestock.
THANK YOU! I was trying to figure this out, and your method worked like a charm. Wish blizzard didn’t have us jump through hoops just to play a game.
Thank you so much! This was driving me up the wall.
For anyone landing here looking for how to do this through Lutris (Steam Deck users, for example!), you can follow the below instructions.
I went down a whole rabbit hole for a handful of hours trying to figure it out and I finally got it!
I’ll leave links to guides to how to get Lutris and Battle.net set up at the bottom if you’re not sure how to do that!
1) Right-click on your entry for the game inside Lutris and go to Configure>Game Options, click the little folder icon next to the “Target” field.
2) Create your batch file here, but the code will be *slightly* different as the timeout/sleep/etc commands aren’t supported by wine, so instead, we’ll do this:
“C:\Program Files (x86)\Battle.net\Battle.net Launcher.exe” –exec=”launch Fen”
“ping 127.0.0.1 -n 11 > nul
“C:\Program Files (x86)\Battle.net\Battle.net Launcher.exe” –exec=”launch Fen”
This will call the Ping command and tell it to send 11 requests, delaying the script.
2a) You can adjust the number after -n, starting from 1 and increasing by 1 until you have a reliable, stable launch every time (I used 11 because my Steam Deck is SLOW to start battle.net and I just wanted to make sure this method actually worked. I’ll probably lower it after experimenting more.)
3) Back inside Lutris, change the “Target” line from:
/home/deck/Games/battlenet/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exe
to
/home/deck/Games/battlenet/drive_c/Program Files (x86)/Battle.net/DiabloIV.bat
(This is assuming default path on a Steam Deck. Yours may vary, so please double-check your username/folder names etc. in your path!)
4) Right-click in an empty space inside the folder your DiabloIV.bat is in, select Open Terminal Here (You can also do this via opening the terminal through its shortcut and typing cd “/home/deck/Games/battlenet/drive_c/Program Files (x86)/Battle.net/”
chmod +x ./DiabloIV.bat
5) Click save, try launching the game!
If it doesn’t work, try increasing your ping request value (-n #)
If it does…
Tada!๐ You can do the thing! Enjoy!!