User:Irunarchbtw/Osu!

From ArchWiki
Note: This article resides in my private namespace because it's about getting a Windows program to run, not belonging in the Wiki. Despite that, feel free to improve this article while it resides here! But keep in mind, the scope of this article is limited to just Arch Linux, though you can benefit from the information below.

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

Install xorg-xinput.

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

Note: For the remainder of this article, it is assumed you install osu! in ~/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"

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