GTA IV via Steam unter Linux spielen (via Proton 3.7)

Ich habe mich dank Proton-Vulkan-Unterstützung in Steam dazu entschlossen, mir GTA IV zuzulegen. Wollte ich schon die vergangenen 10 Jahre lang, aber hatte nie eine passende Plattform bzw. Lust, so viel Geld auszugeben. Nun gibt es in der ProtonDB gute Ratings, doch das Spiel zum Laufen zu bringen braucht etwas Arbeit. Deshalb mal einen Auszug von Pastebin, was fehlt, um GTA IV lauffähig zu machen. Übrigens: Das gilt für zwei von drei Teilen auch für die Windows-Version ;c)

###Necessary steps for Installation of 

1. Install GTA IV through Steam.

2. Get additional dlls needed for GTA IV and put them in the right place...
Download https://dl.winehq.org/wine-builds/ubuntu/pool/main/wine-staging-i386_3.13.0-2~bionic_i386.deb and https://dl.winehq.org/wine-builds/ubuntu/pool/main/wine-staging-amd64_3.14.0~bionic_amd64.deb for 32bin and 64bit libs respectively.
No need to install them. Just open them with your archive manager of choice and extract the nvapi files to their respective folder:
(archive)/opt/wine-staging/lib64/wine/nvapi64.dll.so -> ~/.local/share/Steam/steamapps/common/Proton\ 3.7/dist/lib64/wine/nvapi64.dll.so
(archive)/opt/wine-staging/lib64/wine/fakedlls/nvapi64.dll -> ~/.local/share/Steam/steamapps/common/Proton\ 3.7/dist/lib64/wine/fakedlls/nvapi64.dll
(archive)/opt/wine-staging/lib/wine/nvapi.dll.so -> ~/.local/share/Steam/steamapps/common/Proton\ 3.7/dist/lib/wine/nvapi.dll.so
(archive)/opt/wine-staging/lib/wine/fakedlls/nvapi.dll -> ~/.local/share/Steam/steamapps/common/Proton\ 3.7/dist/lib/wine/fakedlls/nvapi.dll

3. Download the xlive.dll 
(https://github.com/AccountOneOff/lutris_files/raw/master/xlive.dll)
and put it in GTA's install folder: 
"~/.local/share/Steam/steamapps/common/Grand Theft Auto IV/GTAIV/"

4. Add the following line to your /etc/hosts file (this redirects the 
connection to rockstar's servers to localhost, effectively blocking the
connection which is necessary for the game to work):
127.0.0.1 tv.rockstargames.com

###Optional Enhancements

Right click game in steam library, add launch options ():
-width 1920 -height 1080 -nomemrestrict -norestrictions -percentvidmem 100 -availablevidmem 2048 -noprecache -novblank
Explanation: -width and -height are your Monitor's resolution and -vidmem the available GPU vram. These values may differ for your PC. The other options give more memory and disable v-sync.

The bullet spread .asi fix puts bullet spread back in the game.
(https://github.com/Crspy/IV-RecoilFix/releases/)
Download, extract it and put in the GTA game directory.
I'd reccomend it. The dead accurate aim with mouse+keyboard controls feels unnatural and makes the game far too easy.

Let the game use 4 GB of RAM, instead of two. Apparently 4 is the max that GTA IV can utilize...
Change the following contents in this file 
(~/.local/share/Steam/steamapps/common/Grand Theft Auto IV/GTAIV/pc/stream.ini)
to the following values:
virtual 409600
physical 409600
virtual_optimised 409600
physical_optimised 409600

Skip intro video:
https://pcgamingwiki.com/wiki/Grand_Theft_Auto_IV#Skip_intro_videos


###Things not to do

Do not rename paul.dll, or the game won't start.
PC gaming wiki claims that this can help, but it doesn't.

You will see for example on PC gaming wiki that there is a .asi called colaccel
that will supposedly improve your loading times.
For me it lowered performance and made the game crash whenever I died or got arrested by police.
Avoid this .asi file.

###Credit

https://github.com/ValveSoftware/Proton/issues/350
https://pcgamingwiki.com/wiki/Grand_Theft_Auto_IV

Thanks to everyone who helped figuring this stuff out!

---

###Report
This worked for me with GTA IV v. 1.0.8 and Steamplay Proton 3.7
OS: Arch Linux 64-bit
GPU: Nvidia Geforce GT 640M

Performance: I got low framerates with high settings, but with low settings (everything lowest, except medium textures, 16x anisotropic filtering, resolution 720p) the game ran smooth enough
and I played through the main story with only one real issue: during the bank heist mission,
the walls in the inside of the bank went completely transparent, making it difficult to complete.

Graphical issues (maybe these are generally an issue with the game though): 
- Water reflections are very flickery, even when turned off
- Sometimes the lighting on buildings in the distance flickers

Overall though, perfectly playable to me, but I don't have high standards...
I'd give it a high silver rating. Mostly because the multiplayer doesn't work.
If it was only about the singleplayer, I'd still give it gold.
Another thing to take into consideration is that this game also seems plagued by issues in windows.

Kudos bzw. der passende Thread auf Github.

Toshiba AccuPoint Scrolling – Mausrad-Emulation unter Ubuntu

Wie bereits vormals erwähnt besitze ich seit kurzem ein Toshiba Portege Z30A, welches als Toshiba Business Laptop mit einem dieser kleinen, lustigen Gumminippel zwischen B-, G-, und H-Taste ausgestattet ist. Mögen muss man diese Trackpoints, Sticks, oder (bei Toshiba) AccuPoint genannten runden Dinger nicht, aber sie sind doch ein sehr zuverlässiger Mausersatz, wenn man mal eben die Hände nicht von der Tastatur nehmen möchte. Dies trifft genau dann zu, wenn man viel im Browser oder der Wordprocessing-Software arbeitet und gerade jetzt viel scrollen möchte. Da wünscht man sich sein Mausrad, weil der Weg zum tiefliegenden Touchpad einfach zu weit ist.

Bei der einschlägigen Konkurrenz (Lenovo/IBM, HP etc.) gibt es hierfür extra eine zusätzliche Maustaste, die ich gleichzeitig drücke, während ich den Trackpoint führe und damit ein Scrollen erreiche. Doch Toshiba spart sich diese zusätzliche Taste. Wie komme ich nun also zum gewünschten Ziel? (Hier vergingen mehrere Stunden meiner Lebenszeit, echt schade!)

Ich orientiere mich am ArchLinux-Wiki, welches sich mal wieder als großer Schatz herausgestellt hat, und nutzen just folgenden Befehl mit entsprechender Anpassung an unseren Trackpointnamen:

Two-button trackpoints

On two-button trackpoints, using xf86-input-libinput, the scroll button can be set to right-click button without removing functionality.

Replacing device with the device name from xinput:

$ xinput set-prop "device" "libinput Button Scrolling Button" 3

Mal sehen, ob ich das ganze nach jedem Reboot erneut ausführen muss oder ob es sich persistent verhält.

Update: Um das ganze Prozeder auch nach einem Reboot zu erhalten, reicht es aus, eine Datei mit dem Namen .xsessionrc im User-Home anzulegen (“nano ~/.xsessionrc”) und die angepasste Codezeile dort zu hinterlegen und zu speichern. Danke Askubuntu 🙂

Zusätzlich habe ich meine gesammelten Informationen flugs bei ubuntuusers.de eingepflegt.

Ubuntu: Bildschirmhelligkeit nach Standby nicht mehr steuerbar

Bei meinem Toshiba Portégé Z30A konnte ich nach einem Standby in den Ram die Bildschirmhelligkeit nicht mehr steuern. Das ist schon blöd, weil ich das Gerät öfter gern einfach zuklappe, um etwas Energie zu sparen, wenn es Arbeitsphasen in der Uni gibt, in welcher ich meine Schreibmaschine schlicht nicht sofort brauche. Aber was schafft da Abhilfe und womit habe ich es eigentlich zu tun?

Auf jeden Fall ist es nicht unbedingt Ubuntu-spezifisch, obgleich die Lösung bei Askubuntu.com auftaucht:

Erstellt und öffnet eine Datei im Texteditor

sudo gedit /usr/share/X11/xorg.conf.d/20-intel.conf

und fügt folgenden Inhalt ein:

Section "Device"
        Identifier  "card0"
        Driver      "intel"
        Option      "Backlight"  "intel_backlight"
        BusID       "PCI:0:2:0"

EndSection

Einmal ab- und wieder anmelden und die Sache läuft wieder rund!

Linux, Intel CPU, Notebook, Laptop, Ultrabook und laute CPU nach dem Aufwachen?

Manchmal gönnt man sich etwas. Nachdem ich zehn Jahre lang meinen eeePC 901 als digitale Schreibmaschine für die Uni eingesetzt habe, war es leistungstechnisch höchste Eisenbahn, aufzurüsten. Das habe ich getan mit einem hübschen Gebrauchtgerät von notebooksbilliger.de: Ein Toshiba Protégé Z30A aus dem Jahr 2014 mit Intel core i5-4310U (vPro), 8 GB Ram, 128 GB SSD auf 13,3 Zoll. Schönes, neues Schreibmaschinchen.

Doch was ist das? Nachdem ich Kubuntu 17.10 aufgespielt und eingerichtet habe und nahezu alles funktioniert (Keyboardhotkeys sind etwas gemein und auch das Einrichten des Touchpads erfordert Geduld) ist mir aufgefallen, dass manchmal, nach dem Aufwachen aus dem Standby (resume from suspend to ram, S3) der Lüfter (mein gröter Fan) auf Höchsttouren lief. Ein Heruntertakten der Geschwindigkeit hat nicht eingesetzt. Einfachste Lösung: Schlafen legen, wieder wecken und gut. Aber warum?

Das ganze geht wohl auf einen Kernel Bug aus dem Jahre 2013 zurück, der zwischenzeitlich angeblich gelöst war, dann wieder nicht … und letztlich alle Linux-Derivate betreffen kann. Gelöst werden kann das ganze wiederum über ein praktisches Skript von franz-knipp, welches derart aussehen muss und von hier stammt:

#!/bin/sh
#
# Reset fan speeds after resume, otherwise they blow at maximum speed
#
# Used as work-around for ACPI kernel bug 58301
# https://bugzilla.kernel.org/show_bug.cgi?id=58301
#
# The idea for this fix was taken from
# http://ubuntuforums.org/showthread.php?t=1761370
#
# Author: franz@qnipp.com
#
# To be saved as /etc/pm/sleep.d/11_fan_3.11.0

case “$1” in
thaw|resume)
for i in /sys/class/thermal/cooling_device* ; do
type=`cat $i/type`
if [ “$type” = “Fan” ] ; then
echo 0 > $i/cur_state
fi
done
;;
esac

Das ganze als root (also bspw. aus dem Terminal als “sudo nano /etc/pm/sleep.d/11_fan_3.11.0“) unter /etc/pm/sleep.d/11_fan_3.11.0 anlegen, speichern und beim nächsten Suspend wird es aufgeführt. Simple Lösung für ein nerviges Problem, sehr schön und danke Franz! 😉

LVM2-Partitionen einer Dateisystemprüfung unterziehen

Seit jeher scheue ich mich vor Logical Volume Management oder Software-RAID-Systemen im Privatgebrauch, weil ich über die komplexere Administration weiß. Und einmal nicht aufgepasst und auf die Standardinstallation einer Debian-Umgebung (Skolelinux) keinen großen Wert gelegt, stehe ich nun vor einem zu spiegelnden System, welches LVM2 nutzt und die einzelnen Partitionen also schwer wartbar macht.

Doch Internet sei Dank gibt es hilfreiche Anleitungen, wie man auf die Schnelle doch fix die Volumes mittels fsck auf Fehler überprüfen kann. Das ganze findet sich hier.

Anschließend stellt sich noch die Frage, wie man so ein Konstrukt spiegelt, also ein Image erstellt. Und da das Internet hier nicht ganz so nett zu mir war, wähle ich den bewährten, einfachen Weg einer Bytekopie, also einer 1:1-Kopie der gesamten Festplatte. Mag nicht in jedem Fall praktikabel sein, aber in meinem klappt es. Natürlich hat man hier nicht den Luxus einer Kompression, aber den könnte man ja hinterher mittels tar oder anderem erreichen. Das geht dann also wie folgt:

Zuerst boote ich den Computer von einer Live-Distribution von USB-Stick oder CD und hänge meine externe Festplatte im Dateimanager ein. Dann ein:

sudo mount -l

Hiermit sehen wir, auf welchen Mountpunkten die Laufwerke liegen.Ich meinem Fall ist das /media/data.

Meine Platte mit den LVM-Partitionen ist übrigens die einzige verbaute, ergo /dev/sda

sudo dcfldd if=/dev/sda of=/media/data/dateiname

Der Befehl dcfldd (muss ggf. vorher installiert werden) gibt mir beim Kopieren eine Fortschrittsanzeige aus und kopiert nun byteweise von der ersten verbauten Festplatte in die Datei “dateiname” auf der eingebundenen USB-Festplatte.