User:Irunarchbtw/Osu!
From the osu! wiki:
- a free-to-win rhythm game developed by peppy with four game modes: osu!standard, a circle clicking simulator; osu!taiko, a drumming emulator; osu!catch, a fruit salad catcher; and osu!mania, a key smashing synthesizer.
Currently, the game is being rewritten in C# with better Linux support, but in the meanwhile, a solution with Wine has to be established. This article will provide instructions on setting up osu! and provide various tricks to achieve performance up to par (if not better) than on its main intended platform.
Prerequisites
Video drivers
It is recommended to run the game under Xorg. If Wayland is used, the game still needs to be ran through XWayland by lack of support from Wine, which may have a performance hit.
Empirically with regards to performance, when using an AMD video card, the open source drivers are preferred. When it comes to Nvidia, the proprietary drivers are preferred. For Intel integrated graphics, the drivers which come with the kernel tend to suffice.
To check if your driver is properly accelerating graphics, consult:
glxinfo | grep render
- For further information, see Hardware video acceleration and Xorg#Driver installation
Furthermore, be sure your refresh rate is set to the most optimal setting using a display configuration utility such as xrandr.
Graphics tablet
- For further information, see Wacom tablet. Touchscreen users may wish to review this page as well.
The most common input pointing device used by more involved players is the graphics tablet.
xsetwacom
The Linux Wacom Project provides excellent support for the majority of tablets, including many non-Wacom tablets. Conveniently, the Arch kernel includes said driver and your tablet should be recognized and work right out of the box. Though, to fine-tune the properties of the tablet such as its area or button configuration, it is desired to install the X driver xf86-input-wacom which provides the xsetwacom
utility. If you sport KDE, install kcm-wacomtablet and reboot for a graphical interface and easy configuration of the settings.
A quick overview of the steps needed to perform with xsetwacom to get up and running:
1. Get the ID of your stylus
xsetwacom list devices | grep STYLUS | awk -F":" '{print $2}' | awk '{print $1}'
2. Get the absolute area. This will yield points in the form of x0 y0 y1 y2
with the origin in the top-left corner. By default, the full area of the tablet is mapped onto your screen, regardless of aspect ratio.
xsetwacom get $ID area
3. Given the aspect ratio and the physical dimensions of your tablet, perform affine matrix transformation on these coordinates (or work it out on paper) to get the desired area.
4. Apply new coordinates
xsetwacom set $ID area $x0 $y0 $x1 $y1
Mapping tablet to specific monitor
1. Get the identifier of your monitor
- Use your display configuration tool of choice, preferably xrandr or with the GUI arandr. E.g.
DVI-0
.
2. Use xinput to map your tablet by its ID (see above).
xinput map-to-output $ID $MONITOR
Alternatives for more obscure tablets
If you are using an obscure tablet which does not enjoy full support, there is a chance it is supported by the DIGImend project.
Mouse
- For further information, see Mouse acceleration and Mouse polling rate to fully configure your mouse.
The most important setting is to disable mouse acceleration:
xset m 0 0
Installing Wine and other components
You can either:
1. Use a patched dated version of wine specifically for osu! (recommended).
- A custom Wine package specifically for osu! has been created with specific latency patches, see #Wine latency patches.
2. Use wine or wine-staging
- This is the default way of running Windows applications on Arch. If wine is already installed, you may wish to keep this package instead as wine-staging is not exactly necessary.
Install the following packages, as these are necessary anyhow:
winetricks, libpng and lib32-libpng.
Configuring Wine
~/osu-wine/
Create the prefix and install necessary packages:
env WINEPREFIX=~/osu-wine WINEARCH=win32 winetricks -q dotnet462 cjkfonts gdiplus
Installing the game
Download the game and install it using the prefix we made prior:
curl -O https://m1.ppy.sh/r/osu!install.exe env WINEPREFIX=~/osu-wine WINEARCH=win32 wine ./osu\!install.exe
The installer tends to install the game under the directory C:\Users\youruser\Local Settings\Application Data\osu!
. Pay proper attention to the installation directory before the installation takes place.
Tips and tricks
Hooking onto an existing install
If the skins and songs folders are already populated in an existing install elsewhere, you can symlink those directories for easy access and to save space. Take note:
- You already have the drivers to perform i/o on the drive the folders reside on (in case it's on a different partition)
- The permissions are properly defined (either at mount-time or on a per-file basis)
- The link is persistent, i.e. consistent path
Troubleshooting
If above instructions have been followed, the following issues are common problems which may occur.
Odd font rendering
Use font smoothing:
env WINEPREFIX=~/osu-wine WINEARCH=win32 winetricks settings fontsmooth=rgb
Refer to Microsoft fonts if you are still dissatisfied with the result.
Sound latency
You can achieve slightly less delay by surpassing Pulse and interfacing directly to ALSA:
env WINEPREFIX=~/osu-wine WINEARCH=win32 winetricks sound=alsa
A small tweak can also be applied to the registry:
cat > dsound.reg << "EOF" Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\DirectSound] "HelBuflen"="512" "SndQueueMax"="3" EOF env WINEPREFIX=~/osu-wine WINEARCH=win32 wine regedit dsound.reg
Wine latency patches
Wine can be configured to provide less sound latency. A dedicated member of this game community maintains a dated version of Wine with some applied patches.
You can either:
- Install wine-osuAUR. The compilation takes about 10-15 minutes on a high-end 2014 machine with
-j8
. If it fails halfway through, try using clang instead:
export CC=clang export CXX=clang export CFLAGS="-std=gnu89 -g"
- Install a binary version of the same version of Wine by adding in a package repository.
When installed, apply the sound latency tricks explained above and now you can run osu! at near-perfect latency.
env WINEPREFIX="$HOME/.wine_osu" WINEARCH=win32 /opt/wine-osu/bin/wine ~/osu-wine/osu\!.exe
Choppy approach circles
Limit your maximum frame rate in your user config file osu!.user.cfg
such that it has the highest value your computer can handle stably, e.g.
CustomFrameLimit = 1000