====== Information ======
* Jagex Launcher ((https://www.jagex.com/en-GB/launcher))
* Old School RuneScape ((http://oldschool.runescape.com)) (for RuneScape/RS3, see [[games;linux;wine;runescape_nxt_jagex_launcher|these notes instead]])
* C++ Client
* This allows running the Jagex Launcher and the C++ OSRS clients through ''wine''
* Jagex Launcher can be closed after pressing ''Play'' and the OSRS client window appears ((the log-in session carries over through world switches and even log-outs; Jagex Launcher only needs to be re-opened if you close the OSRS client window))
===== Media =====
* [[https://www.youtube.com/watch?v=dThU5GKjNRo|Installation Video]]
===== Prerequisites =====
* [[linux;distros;opensuse_tumbleweed_gnome|openSUSE Tumbleweed (GNOME)]]
* [[linux:notes:wine|Wine]]
===== Notes =====
* On the first OSRS client launch, it may start an invisible game window; Close ''osclient.exe'' and re-launch it from Jagex Launcher ((on Windows this seems to manifests as a //visible// game window that doesn't appear in the taskbar; OSRS defies typical window-management logic :p presumably when it tries to define a default window position on first-launch))
* :!: When first launching OSRS after installation, at the lobby before pressing Play Now, allow OSRS to download its full data cache ((2024/04/29: It downloads around 500 KB/s and bandwidth can be observed through GNOME System Monitor; should be done within a few minutes))
====== Disable Legacy GNOME Tray ======
* :!: Jagex Launcher sometimes has issues with being interacted with from GNOME tray with the AppIndicator/KStatusNotifierItem support for GNOME Shell extension ((this automatically installs on Fedora through Steam as a dep, and is included out-the-box with Ubuntu 23.10))
* 2024/04: The Jagex Launcher tray icon was fine on Xfce and KDE Plasma 6, so presumably this only applies to GNOME
gnome-extensions disable 'appindicatorsupport@rgcjonas.gmail.com'
gnome-extensions disable 'ubuntu-appindicators@ubuntu.com'
====== Install ======
===== Initial =====
****
mkdir -p ~/'.wine' && WINEPREFIX=~/'.wine/Old School RuneScape' WINEARCH='win64' wineboot && WINEPREFIX=~/'.wine/Old School RuneScape' winetricks 'discord_game_sdk=disabled' && sync
===== Jagex Launcher =====
* :!: You'll need to supply ''Jagex Launcher'' files as the installer doesn't work ((install Jagex Launcher on a Windows machine first, and then the ''Jagex Launcher'' folder in ''Program Files'' can be copied over as-is to the Wine prefix or [[#manual|zipped to continue following these notes]]; you don't need to log-in but ideally run it once after installation for it to update to the latest version))
* See [[games;linux;wine;jagex_launcher|Jagex Launcher Installer]] notes for installer testing
==== Google Drive ====
* [[https://drive.google.com/file/d/1ycvSFHTCXNQ7kXnPTS8XHFg__qgfB2ti/view?usp=sharing|Google Drive]] link to a clean ''Jagex Launcher'' folder with SHA256
* Use this if at all unsure
sha256sum ~/'Downloads/20240509-Jagex-Launcher.zip' | grep 'bc143b9cafbf6d735193d64e486be5015d4a4e857c61329e1a49f7143987789d' > '/dev/null' && unzip -b -o -qq ~/'Downloads/20240509-Jagex-Launcher.zip' -d ~/'.wine/Old School RuneScape/drive_c/Program Files' && sync
==== Manual ====
* Expects something like ''~/Downloads/20240211-Jagex-Launcher.zip'' with any date
* The top-level of the archive should be the ''Jagex Launcher'' folder ((should have file contents like ''20240211-Jagex-Launcher.zip/Jagex Launcher/JagexLauncher.exe''))
unzip -b -o -qq ~/'Downloads/'*'Jagex'*'Launcher.zip' -d ~/'.wine/Old School RuneScape/drive_c/Program Files' && sync
gio open ~/'.wine/Old School RuneScape/drive_c/Program Files'
===== Old School RuneScape =====
* Update launcher if prompted, log-in, select OSRS -> New Official Client ((RuneLite nor any other options were tested with these notes)) -> Install
mkdir -p ~/'.wine/Old School RuneScape/dxvk_shader_cache' && cd ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher' && MESA_SHADER_CACHE_DIR=~/'.wine/Old School RuneScape' DXVK_STATE_CACHE_PATH=~/'.wine/Old School RuneScape/dxvk_shader_cache' WINEPREFIX=~/'.wine/Old School RuneScape' wine ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher/JagexLauncher.exe' --disable-gpu --disable-software-rasterizer
===== Clean Up =====
****
rm -f ~/'Downloads/Jagex Launcher Installer.exe' ~/'Downloads/'*'Jagex Launcher.zip' && cd ~ && sync
====== Settings ======
* 1080p, fullscreen, max draw distance, MSAA x4, W416, Nearest-neighbour UI scaling
* :!: If using Wayland, set ''FpsLimit'' to the screen's refresh rate to prevent uncapped framerates ((changing the in-game Framerate limit option to anything will overwrite whatever was specified, including going back to ''0'' with Unlimited))
* Last updated: 2024/01/31
mkdir -p ~/'.wine/Old School RuneScape/drive_c/users/'$USER'/AppData/Local/Jagex/Old School Runescape' && nano ~/'.wine/Old School RuneScape/drive_c/users/'$USER'/AppData/Local/Jagex/Old School Runescape/preferences_client.dat'
AntiAliasingSampleLevel 2
Brightness 0
DefaultWorldId 416
DisplayBuildInfo 0
DisplayFps 0
DrawDistance 90
FpsLimit 0
Fullscreen 1
HideUserName 0
LastWorldId 416
MasterVolume 100
TitleVolume 100
UIQuality 0
WindowHeight 1080
WindowMode 2
WindowTopmost 0
WindowWidth 1920
===== Steam =====
* ''preferences_client.dat'' if OSRS is installed through Steam and ran through Proton
mkdir -p ~/'.local/share/Steam/steamapps/compatdata/1343370/pfx/drive_c/users/steamuser/AppData/Local/Jagex/Old School Runescape' && nano ~/'.local/share/Steam/steamapps/compatdata/1343370/pfx/drive_c/users/steamuser/AppData/Local/Jagex/Old School Runescape/preferences_client.dat'
====== Desktop Launcher ======
* TODO: Kill and Cache clean-up is behind ''bash -c'' and presumably don't need ''CHANGEME''s; can be modernized like ''Exec''
rm -f ~/'.local/share/applications/wine/Programs/OSClient.desktop' && mkdir -p ~/'.local/share/applications/wine/Programs/Jagex' && ln --symbolic --force '/dev/null' ~/'.local/share/applications/wine/Programs/OSClient.desktop' && nano ~/'.local/share/applications/wine/Programs/Jagex/Old School RuneScape.desktop' && sed -i 's/'CHANGEME'/'$USER'/g' ~/'.local/share/applications/wine/Programs/Jagex/Old School RuneScape.desktop'
[Desktop Entry]
Name=Old School RuneScape
Categories=Game;AdventureGame;RolePlaying
Exec='/bin/bash' -c "cd ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher' && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Old School RuneScape' MESA_LOADER_DRIVER_OVERRIDE='zink' MESA_VK_WSI_PRESENT_MODE='immediate' WINEPREFIX=~/'.wine/Old School RuneScape' wine ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher/JagexLauncher.exe' --disable-gpu --disable-software-rasterizer"
Type=Application
StartupNotify=true
Icon=D0C9_osclient.0
StartupWMClass=osclient.exe
Actions=OpenGL;Cache;Kill;Notes;
[Desktop Action OpenGL]
Exec='/bin/bash' -c "cd ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher' && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Old School RuneScape' vblank_mode='3' mesa_glthread='true' MESA_NO_ERROR='1' WINEPREFIX=~/'.wine/Old School RuneScape' wine ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher/JagexLauncher.exe' --disable-gpu --disable-software-rasterizer"
Name=Launch without Zink
[Desktop Action Cache]
StartupNotify=false
Exec='/bin/bash' -c "rm -Rf '/home/CHANGEME/.wine/Old School RuneScape/drive_c/users/CHANGEME/AppData/Local/Jagex/Old School Runescape/'* '/home/CHANGEME/.wine/Old School RuneScape/drive_c/'*'.log' '/home/CHANGEME/.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher/JagexLauncher.dxvk-cache' '/home/CHANGEME/.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher/Games/Old School RuneScape/Client/osclient.dxvk-cache' '/home/CHANGEME/.wine/Old School RuneScape/drive_c/users/CHANGEME/AppData/Local/Jagex Launcher/logs/'* '/home/CHANGEME/.wine/Old School RuneScape/mesa_shader_cache'* && sync && notify-send 'The Old School RuneScape cache has been cleaned.'"
Name=Cache Cleanup
[Desktop Action Kill]
Exec='/bin/bash' -c "WINEPREFIX=~/'.wine/Old School RuneScape' wineserver --kill"
Name=Force-close
[Desktop Action Notes]
StartupNotify=false
Exec='/bin/bash' -c "gio open 'https://wiki.realmofespionage.xyz/games:wine:old_school_runescape_jagex_launcher_c'"
Name=Installation Notes
# End
===== Icon =====
* Requires ''wrestool''
mkdir -p ~/'.local/share/icons/hicolor/64x64/apps' && cd ~/'.local/share/icons/hicolor/64x64/apps' && wrestool --output='D0C9_osclient.0.png' --extract --type='14' ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher/Games/Old School RuneScape/Client/osclient.exe' && cd ~
====== Quick Commands ======
===== Winecfg =====
****
WINEPREFIX=~/'.wine/Old School RuneScape' winecfg
===== Winetricks =====
****
WINEPREFIX=~/'.wine/Old School RuneScape' winetricks
===== Registry Editor =====
****
WINEPREFIX=~/'.wine/Old School RuneScape' regedit
===== Kill =====
****
WINEPREFIX=~/'.wine/Old School RuneScape' wineserver --kill
===== Execute =====
* TODO: OSRS can technically be launched directly and accept username/password logins; separate Jagex Launcher methods and add a direct OSRS one
==== Jagex Launcher ====
* ''PULSE_LATENCY_MSEC=400'' [[https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1769#note_1146786|source]] ((required to fix audio glitches present in music even on Fedora 38+ where PipeWire is used))
* This has no enforced Vsync nor Zink usage
cd ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher' && PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Old School RuneScape' DXVK_STATE_CACHE_PATH=~/'.wine/Old School RuneScape/dxvk_shader_cache' WINEDEBUG='' WINEPREFIX=~/'.wine/Old School RuneScape' wine ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher/JagexLauncher.exe' --disable-gpu --disable-software-rasterizer
==== Forced Vsync ====
* Sets ''vblank_mode=3'', ''mesa_glthread=true'', and ''MESA_NO_ERROR=1''
cd ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher' && vblank_mode='3' mesa_glthread='true' MESA_NO_ERROR='1' PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Old School RuneScape' DXVK_STATE_CACHE_PATH=~/'.wine/Old School RuneScape/dxvk_shader_cache' WINEDEBUG='' WINEPREFIX=~/'.wine/Old School RuneScape' wine ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher/JagexLauncher.exe' --disable-gpu --disable-software-rasterizer
==== Zink ====
* Sets ''MESA_LOADER_DRIVER_OVERRIDE=zink'' and ''MESA_VK_WSI_PRESENT_MODE=immediate''
* :!: This is required for GNOME on Wayland with Intel UHD 630 in order to workaround an odd 50 FPS limit ((TODO: Figure out what this is about and if it affects other GPU vendors; this is also reproducible with [[games;linux;wine;diablo_2|Diablo II non-Resurrected]] when ran through a Glide-to-OpenGL wrapper))
cd ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher' && MESA_LOADER_DRIVER_OVERRIDE='zink' MESA_VK_WSI_PRESENT_MODE='immediate' PULSE_LATENCY_MSEC='400' MESA_SHADER_CACHE_DIR=~/'.wine/Old School RuneScape' DXVK_STATE_CACHE_PATH=~/'.wine/Old School RuneScape/dxvk_shader_cache' WINEDEBUG='' WINEPREFIX=~/'.wine/Old School RuneScape' wine ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher/JagexLauncher.exe' --disable-gpu --disable-software-rasterizer
==== Troubleshooting ====
* Wine's virtual desktop may be necessary with certain desktop/window managers and with Wayland
explorer /desktop='Jagex-Launcher','1280x720'
===== File Manager =====
==== Jagex Launcher ====
****
gio open ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher/'
==== Old School RuneScape ====
****
gio open ~/'.wine/Old School RuneScape/drive_c/Program Files/Jagex Launcher/Games/Old School RuneScape/Client/'