Linux

From the RuneScape Wiki, the wiki for all things RuneScape
Jump to: navigation, search

This is a general guide for installing the official RuneScape NXT client on a Linux operating system. It currently expects BASH and a desktop environment compliant with the XDG Desktop Entry specification (most mainstream Linux distributions).

This guide will not cater to every set-up possible, but will hopefully help as a base for adaptation to other set-ups. Most of these notes are currently taken and adapted from a personal wiki page[1], in hopes of it being useful to others and without warranty or guarantee, so use at your own risk.

Flatpak[edit | edit source]

Information[edit | edit source]

  • There is an unofficial Flatpak for the RuneScape client on Flathub.
  • This can be used for easy installation on Linux distributions with access to Flatpaks.
  • You will need to add the Flathub repository in order to download the RuneScape client.
  • If you wish to install RuneScape natively without Flathub, skip this section.

Set-up[edit | edit source]

  • The website above provides quick-setup instructions for popular Linux distributions.
  • The process typically involves installing flatpak and then adding the Flathub repository.

RuneScape[edit | edit source]

  • Once you've installed flatpak and added the Flathub repo, you can install the RuneScape Flatpak.
  • You can click the Install button provided on the above website, or you can use the following command:
flatpak install 'flathub' 'com.jagex.RuneScape'

Environment variables[edit | edit source]

  • The RuneScape client from Flatpak can be executed from command-line with environment variables.
  • You can use multiple --env= flags for each environment variable you want.
  • The following syntax for this is shown below:
flatpak run --env='PULSE_LATENCY_MSEC=100' --env='vblank_mode=0' --env='MESA_GL_VERSION_OVERRIDE=4.5FC' 'com.jagex.RuneScape'

Snap[edit | edit source]

Information[edit | edit source]

  • There is an unofficial Snap for the RuneScape client on Snapcraft.
  • This can be used for easy installation on Linux distributions with access to Snaps.
  • If you wish to install RuneScape natively, skip this section.

Set-up[edit | edit source]

RuneScape[edit | edit source]

  • Once you've followed the above snapd guide to allow your system to install and use Snaps, you can visit the above link to install the RuneScape Snap, or use the following command:
sudo snap install 'runescape'

Environment variables[edit | edit source]

  • The snap will inherit environmental variables, including environment variables set via Bash.
  • For example, to reduce the Pulseaudio latency
    export PULSE_LATENCY_MSEC='100'
    snap run runescape.rs3
    
  • Exports can be made permament by placing the equivilent Bash expression into the file ~/snap/runescape/current/rs3-user-config - the snap will read this file prior to execution for RS3 whether invoked by CLI or GUI, allowing you to override any environmental variables for the snap alone each launch. For example, to clear any existing data in the file and set the Pulseaudio latency to be used in all subsequent client executions:
    echo "export PULSE_LATENCY_MSEC='100'" > ~/snap/runescape/current/rs3-user-config
    
  • Certain environmental variables can be overridden with parameters to the snap run command, these can be listed with:
    snap run runescape.rs3 -h
    


Debian, Ubuntu[edit | edit source]

Information[edit | edit source]

  • Jagex provides an official Debian-packaged installer (.deb) for the RuneScape client.
  • This can be installed as-is on Debian and Debian-based distributions such as Ubuntu.

RuneScape[edit | edit source]

  • You can proceed one of a few ways.
  • You can copy and paste the text Jagex provides as-is to install the package.
  • You can run the commands Jagex provides one-by-one.
  • You can run a different syntax of commands.
  • All provided methods accomplish the same thing.

Official[edit | edit source]

  • Open a Terminal window and copy, paste all of the text in the following text block as-is, and press Enter.
sudo -s -- << EOF
wget -O - https://content.runescape.com/downloads/ubuntu/runescape.gpg.key | apt-key add -
mkdir -p /etc/apt/sources.list.d
echo "deb https://content.runescape.com/downloads/ubuntu trusty non-free" > /etc/apt/sources.list.d/runescape.list
apt-get update
apt-get install -y runescape-launcher
EOF
Individual commands[edit | edit source]
  • Same commands from the text block above, only with explanation and individually presented.
  • First, we enter a root shell:
sudo -s
  • Second, we add the Jagex-provided GPG key to ensure the package manager can validate the packages from the repo:
wget -O - https://content.runescape.com/downloads/ubuntu/runescape.gpg.key | apt-key add -
  • Third, we create a directory to store repo data for additional repos:
mkdir -p /etc/apt/sources.list.d
  • Fourth, we add the location of the RuneScape repo to a repo file in the above directory
echo "deb https://content.runescape.com/downloads/ubuntu trusty non-free" > /etc/apt/sources.list.d/runescape.list
  • Fifth, we tell the package manager to refresh its software sources
apt-get update
  • And finally, we install the RuneScape client:
apt-get install -y runescape-launcher

Custom[edit | edit source]

  • This is a slightly different method to the official instructions but may be a cleaner implementation of it.
  • Uses the same GPG key source and repo location as the official instructions
  • Reloads software sources and installs the runescape-launcher at the end
wget -O '/tmp/runescape-gpg.key' 'https://content.runescape.com/downloads/ubuntu/runescape.gpg.key' && sudo apt-key add '/tmp/runescape-gpg.key' && echo 'deb https://content.runescape.com/downloads/ubuntu trusty non-free' | sudo tee '/etc/apt/sources.list.d/runescape.list' > '/dev/null' && cat '/etc/apt/sources.list.d/runescape.list' && rm -f '/tmp/runescape-gpg.key' && sudo apt update && sudo apt install 'runescape-launcher' && sync

Other distributions[edit | edit source]

Information[edit | edit source]

  • The following commands extract the RuneScape client from the officially-provided .deb installer.
  • You will also create a hardware-tailored launcher for the RuneScape client.
  • You'll also get a multi-function integrated Desktop Launcher.
  • These commands can also be used on Debian and other Debian-based distros if you prefer.

Dependencies[edit | edit source]

  • wget is used to download the .deb installer
  • unar is being used in order to extract the necessary files from the .deb installer
  • truncate is used to erase the contents of runescape-launcher
  • rm, cp, ls, and sync are used later for the management of files

Other dependencies[edit | edit source]

  • Prior to client 2.2.5, older versions of libpng12 and libGLEW were required.
  • With client 2.2.5, a specific version of OpenSSL libraries were required.
  • As of client 2.2.6, no additional dependencies are needed on Fedora 31 and likely other distributions.

All-in-one[edit | edit source]

Please note that as of writing this, we use wget to fetch the 2.2.9 release of the launcher and that version number is a string within the URL address.

In case you get an error like below, it's likely that a new release of the launcher is available thus rendering the URL used on this page useless.

HTTP request sent, awaiting response... 404 Not found

2021-04-30 07:53:15 ERROR 404: Not found.

You can try to increment the version number in the URL address by one, re-run the command and increment by one once again if faced with the same error.

  • The following command is provided for convenience.
  • This entire text block is intended to be copied and pasted directly into a Terminal window.
  • For the individual commands and explanation, go to the following section.
cd ~ && rm -Rf ~/'.runescape' ~/'Jagex/launcher' ~/'Jagex/updater' ~/'Jagex/mesa_shader_cache' ~/'Jagex/GLCache' ~/'Jagex/RuneScape/GlobalSettings.jcache' ~/'Jagex/RuneScape/Settings.jcache' ~/'Jagex/RuneScape/ShaderManager.jcache' ~/'Jagex/RuneScape/ObjCache.jcache' ~/'.local/share/icons/hicolor/'*'/apps/runescape.png' ~/'.local/share/applications/RuneScape.desktop' '/tmp/runescape' && mkdir -p ~/'Jagex/updater' '/tmp/runescape' && wget -O '/tmp/runescape/runescape-launcher-amd64.deb' 'https://content.runescape.com/downloads/ubuntu/pool/non-free/r/runescape-launcher/runescape-launcher_2.2.9_amd64.deb' && unar -o '/tmp/runescape' '/tmp/runescape/runescape-launcher-amd64.deb' && unar -o '/tmp/runescape' '/tmp/runescape/runescape-launcher-amd64/data.tar.xz' && cp '/tmp/runescape/data/usr/bin/runescape-launcher' '/tmp/runescape/data/usr/share/games/runescape-launcher/runescape' ~/'Jagex/updater' && cp -R '/tmp/runescape/data/usr/share/icons' ~/'.local/share' && ls ~/'Jagex/updater/runescape' ~/'Jagex/updater/runescape-launcher' > '/dev/null' && rm -Rf '/tmp/runescape' && sync

Individual commands[edit | edit source]

  • First, we clean-up any potentially-lingering files in order to do a clean installation:
cd ~ && rm -Rf ~/'.runescape' ~/'Jagex/launcher' ~/'Jagex/updater' ~/'Jagex/RuneScape/GlobalSettings.jcache' ~/'Jagex/RuneScape/Settings.jcache' ~/'Jagex/RuneScape/ShaderManager.jcache' ~/'.local/share/icons/hicolor/'*'/apps/runescape.png' ~/'.local/share/applications/RuneScape.desktop' '/tmp/runescape'
  • Second, we create the necessary folders to temporarily extract the client to and a folder to install it to:
mkdir -p ~/'Jagex/updater' '/tmp/runescape'
  • Third, we download the latest .deb client:
wget -O '/tmp/runescape/runescape-launcher-amd64.deb' 'https://content.runescape.com/downloads/ubuntu/pool/non-free/r/runescape-launcher/runescape-launcher_2.2.9_amd64.deb'
  • Fourth, we extract the .deb client to a temporary folder:
unar -o '/tmp/runescape' '/tmp/runescape/runescape-launcher-amd64.deb' && unar -o '/tmp/runescape' '/tmp/runescape/runescape-launcher-amd64/data.tar.xz'
  • Fifth, we copy the client files over from the temporary folder into the actual install location:
cp '/tmp/runescape/data/usr/bin/runescape-launcher' '/tmp/runescape/data/usr/share/games/runescape-launcher/runescape' ~/'Jagex/updater'
  • Sixth, we also copy over the official icons from the temporary folder into the current user's Icon folder:
cp -R '/tmp/runescape/data/usr/share/icons' ~/'.local/share'
  • Seventh, we check for the presence of the RuneScape launcher files to make sure they got moved properly:
ls ~/'Jagex/updater/runescape' ~/'Jagex/updater/runescape-launcher' > '/dev/null'
  • And finally, we clean-up the temporary files:
rm -Rf '/tmp/runescape' '/tmp/runescape/runescape-launcher-amd64.deb' && sync

Launcher[edit | edit source]

  • This is the launcher script used by the RuneScape client
  • The following steps will implement GPU-specific environment variables for the best experience

Editing the launcher[edit | edit source]

  • This series of commands erases the contents of runescape-launcher via the truncate command, and opens it with your default text editor allowing you to copy and paste the following content below
  • gio open can be replaced with a command-line text editor like vim or nano if you want
truncate --size='0' ~/'Jagex/updater/runescape-launcher' && gio open ~/'Jagex/updater/runescape-launcher'

Launcher content[edit | edit source]

  • This is mostly the same contents as the official launcher.
  • Notice the Generic Environment Variables section; this is where you can add GPU-tailored environment variables, some of which are presented later on this page.
  • This can be used as-is without additional tailoring.
#!/bin/sh

if [ -z $1 ]; then
    configURI=http://www.runescape.com/k=5/l=\$\(Language:0\)/jav_config.ws
else
    configURI=$1
    shift
fi

export PULSE_PROP_OVERRIDE="application.name='RuneScape' application.icon_name='runescape' media.role='game'"
export SDL_VIDEO_X11_WMCLASS="RuneScape"

# Generic Environment Variables
export PULSE_LATENCY_MSEC='100'
export MESA_GLSL_CACHE_DIR=~/'Jagex'
export __GL_SHADER_DISK_CACHE_PATH=~/'Jagex'

unset XMODIFIERS
./runescape --configURI $configURI [email protected]

Desktop launcher[edit | edit source]

  • The following command creates the RuneScape.desktop desktop launcher file and opens it with your default text editor
  • Run this in a Terminal window:
truncate --size='0' ~/'.local/share/applications/RuneScape.desktop' && gio open ~/'.local/share/applications/RuneScape.desktop'
  • Add the following contents to the file once your text editor opens:
[Desktop Entry]
Name=RuneScape
Comment=A unique MMO set in the vast, fantasy world of Gielinor, brimming with diverse races, guilds and ancient gods battling for dominion. RuneScape now features more ways to play, brand new skills and over 200 gripping story-driven quests.
Categories=Game;AdventureGame;RolePlaying
Exec='/home/CHANGEME/Jagex/updater/runescape-launcher'
Type=Application
StartupNotify=false
Path=/home/CHANGEME/Jagex/updater
Icon=runescape
StartupWMClass=RuneScape
Actions=iGPU;Kill;Cache;

[Desktop Action iGPU]
Exec='/home/CHANGEME/Jagex/updater/runescape-launcher-igpu'
Name=Use Integrated GPU (power-saving)

[Desktop Action Kill]
Exec='/bin/killall' -9 'rs2client' 'runescape' 'runescape-launcher'
Name=Force-close

[Desktop Action Cache]
Exec='/bin/bash' -c "rm -Rf ~/'.runescape' ~/'Jagex/mesa_shader_cache' ~/'Jagex'/GLCache' ~/'Jagex/launcher/instance.lock' ~/'Jagex/RuneScape/ShaderManager.jcache' '/tmp/runescape' && sync && notify-send 'The RuneScape cache has been cleaned.'"
Name=Cache Clean-up
  • And finally, run this command in order to correctly set the file paths in the desktop launcher to the current user's folder:
sed -i 's/'CHANGEME'/'$USER'/g' ~/'.local/share/applications/RuneScape.desktop'
  • You'll now be able to launch RuneScape from your desktop environment's Application launcher!
  • If you have a dual-graphics laptop and wish to use the iGPU option, see the Optimus notes below (this is also applicable to AMD dual-graphics laptops)

Direct launch[edit | edit source]

  • You can execute the runescape-launcher script directly without a desktop launcher.
  • This is useful for debugging purposes.
cd ~/'Jagex/updater' && ~/'Jagex/updater/runescape-launcher'

Steam client[edit | edit source]

  • If you wish to have RuneScape accessible from the Steam client, you can add runescape-launcher as a non-Steam game
  • You must show all files in the Browse section (change from the default .desktop Applications in File Type), and find runescape-launcher in the Jagex/updater folder from your Home folder
  • This will allow you to launch RuneScape from Steam, and allow you to access the in-game overlay
  • May be useful for users of game controllers (such as the Steam Controller) who wish to use them with RuneScape

Other resources[edit | edit source]

World ping[edit | edit source]

  • Create and execute '/tmp/rs3-ping.sh':
nano ~/rs3-ping.sh && chmod +x ~/rs3-ping.sh && ~/rs3-ping.sh'
  • With the following contents:
#!/bin/bash

min=1000
min_world=0
for world in {1..141}; do
	if ping -q world${world}.runescape.com -c 1 >/dev/null 2>&1; then
		res=$(ping world${world}.runescape.com -c 1 2>&0 | grep "time=" | cut -d' ' -f 8,9 | cut -d'=' -f 2)
		echo World ${world}: ${res}

		ms=$(echo $res | sed -r 's/\s+ms//g')

		if [[ $(echo "$ms < $min" | bc) == 1 ]]; then
			min=$ms
			min_world=$world
		fi

	fi
done

echo
echo "Minimum ping was world $min_world: $min ms"
  • World ping latencies will be presented in the active Terminal window.
  • World numbers in the Terminal directly correlate with their number on the in-game world select menu.

GPU-specific environment variables[edit | edit source]

Information[edit | edit source]

  • These can be added to the Desktop Launcher.
  • Some of these environment variables contain unstable options that may improve performance at the cost of stability in rare cases.

Generic[edit | edit source]

  • If you use open-source graphics drivers with a modern GPU and either don't require additional environment variables or are at all unsure:
# Generic
export MESA_NO_ERROR='1'
export PULSE_LATENCY_MSEC='100'
export MESA_GLSL_CACHE_DIR=~/'Jagex'
  • The 4.5FC version can be increased if your Mesa stack and driver supports a higher OpenGL level.

NVIDIA[edit | edit source]

  • If you use a NVIDIA graphics card in a typical single-GPU set-up along with their proprietary drivers:
# Generic
export PULSE_LATENCY_MSEC='100'

# NVIDIA Proprietary
export __GL_SHADER_DISK_CACHE_PATH=~/'Jagex'
export __GL_THREADED_OPTIMIZATIONS='1'
Optimus[edit | edit source]
  • If you use an NVIDIA graphics card in a laptop with a Hybrid/Optimus set-up and are using the NVIDIA proprietary drivers with PRIME Render Offload:
# Generic
export PULSE_LATENCY_MSEC='100'

# NVIDIA Proprietary
export __GL_SHADER_DISK_CACHE_PATH=~/'Jagex'
export __GL_THREADED_OPTIMIZATIONS='1'

# NVIDIA Proprietary Optimus
export __NV_PRIME_RENDER_OFFLOAD='1'
export __GLX_VENDOR_LIBRARY_NAME='nvidia'
Desktop launcher[edit | edit source]
  • Allows selecting the integrated Intel GPU for when increased battery life is desired over performance.
  • This was tested with an Intel integrated GPU but can be adapted for AMD dual-graphics laptops as well or used as-is.
nano ~/'Jagex/updater/runescape-launcher-igpu' && chmod +x ~/'Jagex/updater/runescape-launcher-igpu'
#!/bin/sh

if [ -z $1 ]; then
    configURI=http://www.runescape.com/k=5/l=\$\(Language:0\)/jav_config.ws
else
    configURI=$1
    shift
fi

export PULSE_PROP_OVERRIDE="application.name='RuneScape' application.icon_name='runescape' media.role='game'"
export SDL_VIDEO_X11_WMCLASS="RuneScape"

# Generic
export MESA_NO_ERROR='1'
export PULSE_LATENCY_MSEC='100'
export MESA_GLSL_CACHE_DIR=~/'Jagex'

# Modern Intel Graphics
export MESA_GL_VERSION_OVERRIDE='4.5FC'

unset XMODIFIERS
./runescape --configURI $configURI [email protected]

Modern AMD[edit | edit source]

  • If you use an AMD graphics card:
# Generic
export MESA_NO_ERROR='1'
export PULSE_LATENCY_MSEC='100'
export MESA_GLSL_CACHE_DIR=~/'Jagex'

# Modern AMD Graphics
export NIR_VALIDATE='0'
export MESA_GL_VERSION_OVERRIDE='4.5FC'
export AMD_DEBUG='unsafemath,sisched,gisel,nir'

Old/unsupported[edit | edit source]

  • If you use an Intel graphics chip where RuneScape crashes on-startup or doesn't support OpenGL 2.0:
# Generic
export PULSE_LATENCY_MSEC='100'
export MESA_GLSL_CACHE_DIR=~/'Jagex'

# Old Intel Graphics
export MESA_GLSL_VERSION_OVERRIDE='130'
export MESA_GL_VERSION_OVERRIDE='2.0'
  • Or use these flags if using the Flatpak:
flatpak run --env='MESA_GLSL_VERSION_OVERRIDE=130' --env='MESA_GL_VERSION_OVERRIDE=2.0' 'com.jagex.RuneScape'
  • This is likely required for Intel graphics chips that pre-date Sandybridge.
  • If RuneScape crashes on start-up without any error message, you'll likely need this.

Troubleshooting[edit | edit source]

Ping isn't shown for worlds[edit | edit source]

  • This is presumably a bug with the NXT client on Linux.
  • See World Ping if you want to verify worlds with the lowest ping via a script.

Can't open developer console[edit | edit source]

  • If using GNOME, the key combination to open the developer console is also bound by GNOME for another function. To unbind it:
gsettings set 'org.gnome.desktop.wm.keybindings' 'switch-group' "['disabled']"
  • And to rebind it back to GNOME/reset it:
gsettings reset 'org.gnome.desktop.wm.keybindings' 'switch-group'

Volume is lower than expected[edit | edit source]

  • If using PulseAudio, you can increase the volume of RuneScape beyond 100%.
  • First, have nothing else playing audio, start the RuneScape client, and have it playing audio (can be the log-in screen music).
  • Second, find the sink for the RuneScape client with the following command:
pactl list sink-inputs | grep '#'
  • Third, set that sink to have higher than 100% volume (change x to increased volume percentage wanted):
pactl set-sink-input-volume 'x' '135%'

Random black-screens[edit | edit source]

  • Sometimes, the in-game world on-screen will turn to black, and only the UI will be shown.
  • This has been seen to happen at random on AMD GPUs (notably GCN/SI+ GPUs and not R600) using the open-source Mesa stack.
  • Using nir with AMD GPUs seems to reduce the chance of the black-screens from occurring
  • See the Modern AMD desktop launcher snippet to add this to your desktop launcher.
  • It is not known why this occurs, and it's possible this was fixed in newer versions of the RuneScape client and/or Mesa stack.

Flatpak[edit | edit source]

  • If using the Flatpak, use this to launch the client with the nir environment variable:
flatpak run --env='AMD_DEBUG=nir' 'com.jagex.RuneScape'

Client crashes without error when loading[edit | edit source]

  • This is likely because an unsupported graphics stack being used.
  • Notably an issue when using pre-Sandybridge Intel graphics and likely other GPUs that don't advertise OpenGL 2.0 or 3.0
  • A potential fix is to spoof the required OpenGL level of at least 2.0 and the minimal required GLSL version of 1.30 using two environment variables.
  • The NXT client runs on graphics stacks with as low as OpenGL 2.0, but the renderer developer console command doesn't report any OpenGL extensions unless the version is 3.0.
  • It is possible that this will cause unexpected crashes and rendering issues if your graphics stack does not actually support the required OpenGL extensions.
  • This requires the open-source Mesa graphics stack.
  • See the Old/Unsupported desktop launcher snippet to add this to your desktop launcher.
  • See Issue #31 on the RuneScape Flatpak issue tracker also if you have anything to add to the discussion there.
  • This can also occur if you're missing a required dependency. See Direct Launch in order to launch the client through the Terminal, and observe any errors related to .so files.
MESA_GLSL_VERSION_OVERRIDE='130' MESA_GL_VERSION_OVERRIDE='3.0'

Flatpak[edit | edit source]

  • If using the Flatpak, use this to launch the client with the spoofing environment variables:
flatpak run --env='MESA_GLSL_VERSION_OVERRIDE=130' --env='MESA_GL_VERSION_OVERRIDE=3.0' 'com.jagex.RuneScape'

Audio is glitchy or sounds odd[edit | edit source]

  • This can be an issue with PulseAudio.
  • This may only happen for a short period of time when starting the client up, or it may continue on beyond the lobby for a longer period.
  • Try adjusting the latency with the PULSE_LATENCY_MSEC environment variable, or removing it altogether.
  • Check the PulseAudio/Troubleshooting page on Arch Wiki for additional things you can try.

References[edit | edit source]

Additional resources[edit | edit source]