====== Information ======
* Battle.net App ((http://us.battle.net/en/app))
* Diablo II: Resurrected ((https://diablo2.blizzard.com))
* 64-bit
* [[https://www.youtube.com/watch?v=07pNpFbNlEg|Gameplay Video]]
===== Prerequisites =====
* [[distros:fedora_workstation_gnome|Fedora Workstation]]
* [[notes:wine|Wine]]
===== Notes =====
* This is the modern client that has enhanced graphics and requires the Battle.net client; see [[games;linux;wine;diablo_2|Diablo II]] for the original version
* 2023/09/14: Resurrected graphics has too-low of FPS on Intel UHD 630; switch to Legacy graphics in-game ((actual in-game and not main menu)) by pressing ''G''
* :!: Using a game controller requires the hardware specs to run Resurrected graphics at reasonable framerates, even if switched to Legacy graphics ((presumably Resurrected assets need to be running for the controller mappings and UI being done by the game engine))
* :!: When directly-launching ''D2R.exe'' with ''-username'' and ''-password'', if the Battle.net account or the system flags you for captchas, log-in isn't possible
====== Install ======
===== Battle.net App =====
* Install to default directory when prompted ((C:/Program Files (x86)/Battle.net))
* Log-in
* Change Battle.net App settings ((don't auto-start, exit on game launch))
* Close
mkdir -p ~/'.wine' && wget 'https://us.battle.net/download/getInstaller?os=win&installer=Battle.net-Setup.exe&id=undefined' -O ~/'Downloads/Battle.net-Setup.exe' && WINEPREFIX=~/'.wine/Diablo II Resurrected' WINEARCH='win64' wine ~/'Downloads/Battle.net-Setup.exe'
===== Restore Data =====
****
mv ~/'Downloads/Diablo II Resurrected' ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)' && sync
===== Diablo II Resurrected =====
* Install Diablo II Resurrected ((Locate the game may not work; the install process will detect the existing data files, fail, and install with the Update process))
* TODO: Test if Locate game works; this seems to have been improved on Windows
cd ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Battle.net' && WINEPREFIX=~/'.wine/Diablo II Resurrected' wine ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exe'
===== Clean Up =====
****
rm -f ~/'Downloads/Battle.net-Setup.exe' ~/'Desktop/Battle.net.desktop' ~/'Desktop/Diablo II Resurrected.desktop' && cd ~ && sync
====== Libraries ======
===== DXVK =====
* https://github.com/doitsujin/dxvk/actions ((need to be signed into GitHub, and select the latest ''master'' artifacts package))
* Provides DXGI for ''vkd3d-proton''
* Since D2R can only use D3D12 and thus ''vkd3d-proton'', there's no need for DXVK's cache folder
* TODO: Add DXVK's cache folder as the Battle.net client probably uses it anyway
ls ~/'Downloads/dxvk-master-'*'.zip' && rm -Rf '/tmp/dxvk-master' && mkdir -p '/tmp/dxvk-master' && unzip ~/'Downloads/dxvk-master-'*'.zip' -d '/tmp/dxvk-master/' && cp --backup '/tmp/dxvk-master/x64/'*'.dll' ~/'.wine/Diablo II Resurrected/drive_c/windows/system32/' && cp --backup '/tmp/dxvk-master/x32/'*'.dll' ~/'.wine/Diablo II Resurrected/drive_c/windows/syswow64/' && WINEPREFIX=~/'.wine/Diablo II Resurrected' winetricks 'd3d9=native' 'd3d10core=native' 'd3d11=native' 'dxgi=native' && sync
===== vkd3d-proton =====
* https://github.com/HansKristian-Work/vkd3d-proton ((need to be signed into GitHub, and select the latest ''master'' artifacts package))
* D3D12 to Vulkan
ls ~/'Downloads/vkd3d-proton-master-'*'.zip' && rm -Rf '/tmp/vkd3d-proton-master' && mkdir -p '/tmp/vkd3d-proton-master' && unzip ~/'Downloads/vkd3d-proton-master-'*'.zip' -d '/tmp/vkd3d-proton-master/' && cp --backup '/tmp/vkd3d-proton-master/x64/'*'.dll' ~/'.wine/Diablo II Resurrected/drive_c/windows/system32/' && cp --backup '/tmp/vkd3d-proton-master/x86/'*'.dll' ~/'.wine/Diablo II Resurrected/drive_c/windows/syswow64/' && WINEPREFIX=~/'.wine/Diablo II Resurrected' winetricks 'd3d12=native' 'd3d12core=native' && mkdir -p ~/'.wine/Diablo II Resurrected/vkd3d_shader_cache' && sync
====== Desktop Launcher ======
===== Initial =====
****
rm -Rf ~/'.local/share/applications/wine/Programs/Battle.net' ~/'.local/share/applications/wine/Programs/Diablo II Resurrected' && mkdir -p ~/'.local/share/applications/wine/Programs/Diablo II Resurrected'
===== Diablo II Resurrected (Battle.net App) =====
* :!: The direct-launch option requires modifying and specifying a Battle.net account email and password
* TODO: Check for offline flag(s) and add separate direct launch option ([[https://d2mods.info/forum/viewtopic.php?f=217&t=67329&p=503731#p503731|source 1]], [[https://old.reddit.com/r/Diablo/comments/qb6ife/psa_you_can_enable_infinite_respecs_in_offline/hhd1g38/|source 2]])
nano ~/'.local/share/applications/wine/Programs/Diablo II Resurrected/Diablo II Resurrected.desktop'
[Desktop Entry]
Name=Diablo II: Resurrected
Categories=Game;AdventureGame;RolePlaying
Exec='/bin/bash' -c "cd ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Diablo II Resurrected' && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II Resurrected' VKD3D_SHADER_CACHE_PATH=~/'.wine/Diablo II Resurrected/vkd3d_shader_cache' WINEPREFIX=~/'.wine/Diablo II Resurrected' wine ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Diablo II Resurrected/Diablo II Resurrected Launcher.exe'"
Type=Application
StartupNotify=true
Icon=B271_Diablo II Resurrected Launcher.0
StartupWMClass=d2r.exe
Actions=Cache;Kill;Notes;Direct;
[Desktop Action Cache]
Exec='/bin/bash' -c "rm -Rf ~/'.wine/Diablo II Resurrected/mesa_shader_cache/'* ~/'.wine/Diablo II Resurrected/vkd3d_shader_cache/'* && sync && notify-send 'The Diablo II Resurrected cache has been cleaned.'"
Name=Cache Cleanup
[Desktop Action Kill]
Exec='/bin/bash' -c "WINEPREFIX=~/'.wine/Diablo II Resurrected' wineserver --kill"
Name=Force-close
[Desktop Action Notes]
StartupNotify=false
Exec='/bin/bash' -c "gio open 'https://wiki.realmofespionage.xyz/games:wine:diablo_2_resurrected'"
Name=Installation Notes
[Desktop Action Direct]
StartupNotify=false
Exec='/bin/bash' -c "cd ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Diablo II Resurrected' && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II Resurrected' VKD3D_SHADER_CACHE_PATH=~/'.wine/Diablo II Resurrected/vkd3d_shader_cache' WINEPREFIX=~/'.wine/Diablo II Resurrected' wine ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Diablo II Resurrected/D2R.exe' -username espionage724@x -password x"
Name=Launch D2R without Battle.net
# End
====== Quick Commands ======
===== Winecfg =====
****
WINEPREFIX=~/'.wine/Diablo II Resurrected' winecfg
===== Winetricks =====
****
WINEPREFIX=~/'.wine/Diablo II Resurrected' winetricks
===== Registry Editor =====
****
WINEPREFIX=~/'.wine/Diablo II Resurrected' regedit
===== Kill =====
****
WINEPREFIX=~/'.wine/Diablo II Resurrected' wineserver --kill
===== Execute =====
==== Battle.net App ====
* ''Battle.net Launcher.exe''
cd ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Battle.net' && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II Resurrected' VKD3D_SHADER_CACHE_PATH=~/'.wine/Diablo II Resurrected/vkd3d_shader_cache' WINEPREFIX=~/'.wine/Diablo II Resurrected' WINEDEBUG='' wine ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Battle.net/Battle.net Launcher.exe'
==== Diablo II Resurrected (Battle.net App) ====
* ''Diablo II Resurrected Launcher.exe''
cd ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Diablo II Resurrected' && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II Resurrected' VKD3D_SHADER_CACHE_PATH=~/'.wine/Diablo II Resurrected/vkd3d_shader_cache' WINEPREFIX=~/'.wine/Diablo II Resurrected' WINEDEBUG='' wine ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Diablo II Resurrected/Diablo II Resurrected Launcher.exe'
==== Diablo II Resurrected ====
* ''D2R.exe''
* Useful for quick graphical testing as this bypasses Battle.net launcher and boots D2R directly
* :!: This may fail to load online characters occasionally
* TODO: ''-username'', ''-password'', and other options ([[https://d2mods.info/forum/viewtopic.php?f=217&t=67329&p=503731#p503731|source 1]], [[https://old.reddit.com/r/Diablo/comments/qb6ife/psa_you_can_enable_infinite_respecs_in_offline/hhd1g38/|source 2]])
cd ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Diablo II Resurrected' && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Diablo II Resurrected' VKD3D_SHADER_CACHE_PATH=~/'.wine/Diablo II Resurrected/vkd3d_shader_cache' WINEPREFIX=~/'.wine/Diablo II Resurrected' WINEDEBUG='' wine ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Diablo II Resurrected/D2R.exe'
===== File Manager =====
==== Root ====
****
gio open ~/'.wine/Diablo II Resurrected/drive_c/Program Files (x86)/Diablo II Resurrected'
==== Saves ====
****
gio open ~/'.wine/Diablo II Resurrected/drive_c/users/'$USER'/Saved Games/Diablo II Resurrected'