somethinglikegames.de

Kategorien


Tags

Gaming on Linux

Als ich gerade die Datei für diesen Artikel anlegte, habe ich bemerkt, dass der letzte Artikel schon über 2 Monate her ist und ich frage mich gerade, wo die Zeit geblieben ist. Aber was soll’s, irgendwo wird sie schon geblieben sein 😉 Es hat sich in der Zwischenzeit einiges getan und ich musste feststellen, dass meine Anleitung zur Installation der Affinity Suite im letzten Artikel nicht mehr funktioniert und es mittlerweile einfachere Alternativen gibt, daher habe ich den entsprechenden Abschnitt nochmal überarbeitet. Aber genug der produktiven Themen. In diesem Artikel soll es schließlich endlich mal um das Thema 🕹️ Gaming 🎮 gehen.

Bevor es wirklich losgeht, hier wie gewohnt die Übersicht über alle bislang erschienen Artikel dieser Serie:

  1. Linux? Was zum Pinguin!?
  2. Grundlegende Installation der Linux Distribution
  3. Installation von nativer Linux-Software
  4. Installation von Windows-Software unter Linux
  5. Gaming unter Linux

Ein erster Überblick

Meine Geschichte mit Gaming unter Linux hat ungefähr Mitte der 2000er Jahre angefangen. Und in diesen zwei Dekaden hat sich eine Menge getan. Gaming unter Linux war noch nie so einfach und bequem, wie es aktuell ist und die Chancen stehen gut, dass es in Zukunft sogar noch besser wird. Laut der Steam-Hard & Softwareumfrage hat Linux mittlerweile einen Anteil von >3%, was nach nicht viel klingt, aber wenn man sich die letzten 7 Jahre anschaut, ist es ein großer Unterschied. Liam von GamingOnLinux ist immer wieder so freundlich, die jeweiligen Ergebnisse zu dokumentieren und mit weiteren Informationen zu versehen, sodass man direkt sehen kann, wann welches Steam Deck erschienen ist und wann der kostenlose Support für Windows 10 eingestellt wurde.

Wobei ich an dieser Stelle klarstellen möchte, dass Gaming unter Linux auch früher schon gut und bequem funktionierte, sofern es eine Linux-Version des Spiels gab. Ich kann mich noch gut daran erinnern, dass es von Neverwinter Nights und Quake 3 Arena Linux-Versionen gab. Aber ich kann mittlerweile auch verstehen, wenn Studios die Unterstützung auf die Betriebssysteme beschränken, die sie für marktrelevant halten und bin daher dankbar, dass Windows-Spiele mittlerweile überwiegend sehr gut unter Linux laufen.

Die nun folgende kurze Übersicht ist alles andere als vollständig. Neben den hier genannten Möglichkeiten, gibt es mindestens genauso viele weitere, die oft vermutlich ähnlich gut und manchmal sogar besser oder einfacher zu benutzen sind. Aber ich beschränke mich, wie sonst auch, auf die Tools, mit denen ich selbst bereits Erfahrungen gesammelt habe.

Steam

Steam ist mittlerweile der unangefochtene Marktführer unter den Spielevertriebsplattformen. Viele Verbesserungen, was das Gaming unter Linux betrifft, sind Valve, also dem Unternehmen hinter Steam, zu verdanken:

  • Seit 2013 gibt es eine native Linux-Version des Steam-Clients, während alternative Clients, wie GOG Galaxy oder der Epic Games Store, auch jetzt noch nichts Vergleichbares unter Linux anbieten. Das finde ich gerade bei GOG sehr schade, da ihre Mission “We make games last forever” und die DRM-Freiheit eigentlich so gut zu Linux passen würden. 🤷
  • Durch die Entwicklung von Proton wird die Unterstützung von Windows-Spielen unter Linux immer besser und auch Valve Anti-Cheat, BattlEye und Easy Anti-Cheat unterstützen Proton.
  • Durch den Erfolg des Steam Decks versuchen auch immer mehr Studios, ihre Spiele kompatibel mit Proton zu machen. Wenn 2026 die Steam Machine erscheint und vom Markt angenommen wird, wird dieser Trend auch zukünftig beibehalten werden.
  • Generell lässt sich auf ProtonDB sehr leicht überprüfen, wie gut bestimmte Steam-Spiele unter Linux laufen. Leider gilt dies nur für Spiele, die man auch auf Steam kaufen kann. 😞

Wenn man ein Spiel auf Steam (gekauft) hat und dieses unter Linux entweder nativ oder mit Hilfe von Proton läuft, ist die Installation ähnlich einfach wie unter Windows.

Lutris

Lutris hatten wir uns kurz im letzten Artikel als Frontend für Wine angesehen. Aber Lutris bietet mehr, als “nur” ein grafisches Frontend für Wine zu sein. Es bietet:

  • die Möglichkeit, verschiedene Vertriebsplattformen (Steam, Epic Games Store, GOG, …) direkt einzubinden.
  • die Möglichkeit, unterschiedlichste “Laufzeitumgebungen” (Wine, Proton, ScummVM, …) zu benutzen.
  • über auf der Website fertige Skripts, bspw. für Battle.net, die die Installation und Konfiguration von Spielen vereinfachen, da man dann eigentlich nur noch dem angepassten Installationsprozess folgen muss.

Lutris bietet bei Bedarf viele Konfigurationsmöglichkeiten und Unterstützung für eine Vielzahl an Vertriebsplattformen und Laufzeitumgebungen. Wenn ein Spiel unter Linux lauffähig ist und man ein grafisches Frontend benutzen möchte, ist Lutris ein guter Launcher, auch in komplizierteren Fällen.

Heroic Games Launcher

Der Heroic Games Launcher ist ein betriebssystemübergreifender, leichtgewichtiger Launcher, der eine mögliche Alternative zum Epic Games Launcher und GOG Galaxy darstellen soll. Dementsprechend bietet er:

  • unter Linux Unterstützung verschiedener Laufzeitumgebungen (Wine, Proton, …).
  • die Einbindung vom Epic Games Store und von GOG, teilweise inkl. Cloud-Synchronisation von Speicherständen.
  • die Integration anderweitig installierter Spiele, um so als zentraler Launcher zu fungieren.

Wenn die Spiele ohne Konfigurationsanpassungen o. ä. unter Linux lauffähig sind, ist der Heroic Games Launcher eine einfache Click & Go Lösung für Spiele von Epic Games oder GOG.

Proton

Proton hatten wir uns auch bereits im letzten Artikel sehr kurz angeschaut. Da Proton heutzutage in der Regel die Basis für Gaming unter Linux ist, sofern keine native Linux-Version existiert, schauen wir es uns nun etwas genauer an.

Proton ist für mich Wine auf Steroiden mit einem klaren Fokus auf Gaming. Es kombiniert Wine mit weiteren Bibliotheken, um eine mit Windows vergleichbare Performance von 3D-Spielen zu ermöglichen. Erreicht wird das, indem abhängig von der eingesetzten DirectX-Version VKD3D bzw. DXVK verwendet wird, um die Direct3D-Befehle auf Vulkan-Befehle zu mappen. Aus Kompatiblitätsgründen kann auch OpenGL statt Vulkan genutzt werden, wo dann die Konvertierung durch WineD3D erfolgt.

Es ist so sogar möglich, neuere GPU-Funktionen wie FreeSync / G-Sync, Hardware-Raytracing, Resizable BAR/ Smart Access Memory oder Echtzeit-Upscaling, also AMD FSR, NVIDIA DLSS bzw. Intel XESS, zu nutzen. Somit hängt es überwiegend nur noch von der Qualität und der Optimierung der Treiber der einzelnen GPU-Hersteller ab, wie gut ein Spiel dann performancetechnisch unter Linux läuft. Bei einer Grafikkarte von AMD macht es eigentlich keinen Unterschied mehr, ob man unter Windows oder Linux spielt, da man wirklich vergleichbare Performance bekommt, während es bei NVIDIA leider aktuell noch einen Performance-Malus von >10% bei DirectX12 hat. Ich drücke uns allen die Daumen, dass NVIDIA sich vom eigenen proprietären Treiber löst und einen Schritt auf die OpenSource-Community zugeht, sodass es bald auch einen guten NVIDIA-Treiber auf Basis von Mesa3D gibt, ähnlich wie bei AMD und Intel. Alternativ könnten sie natürlich auch ihren proprietären Treiber verbessern, aber das kostet sicherlich nochmal deutlich mehr, als Freiwillige mit den notwendigen Informationen zu versorgen.

Wer tiefgreifendere Informationen zu Proton haben möchte, dem kann ich das folgende Video von Thomas Crider a.k.a. GloriousEggroll empfehlen:

GE-Proton

GE-Proton ist eine angepasste Version von Proton, die von Thomas Crider a.k.a. GloriousEggroll verantwortet wird. Thomas Crider arbeitet hauptberuflich bei Red Hat und wartet nicht nur GE-Proton, sondern ist auch der Hauptverantwortliche für Nobara Linux. GE-Proton ist der offiziellen Proton-Version meist etwas voraus, sodass die eingesetzten Versionen der Bibliotheken oft neuer sind, und GloriousEggroll implementiert bzw. inkludiert teilweise spezielle Anpassungen für einzelne Spiele. Dieses Aktualität kann auch zu Kompatiblitätsproblemen führen, daher kann es passieren, dass Spiele manchmal mit der offiziellen Proton-Version stabiler laufen als mit GE-Proton. Dafür bekommt man mit GE-Proton teilweise etwas mehr Performance und etwas bessere Kompatibilität bei neueren Spielen. Die jeweiligen Anpassungen lassen sich im Release-Log nachlesen.

Ich verwalte meine installierten Versionen von GE-Proton manuell, aber wem das zu aufwendig ist, der kann sich mal ProtonPlus oder ProtonUp-Qt anschauen.

In die Praxis

So, genug der grauen Theorie und Hintergrundinformationen. Setzen wir das bislang Gelernte nun endlich in die Praxis um.

Die Installation sollte bei jeder der drei Applikationen über offizielle distributionseigene Pakete erfolgen können. CachyOS bietet dafür das Meta-Paket cachyos-gaming-applications an, welches Steam, Lutris und den Heroic Games Launcher enthält. Die Installation kann entweder über die Konsole mit dem Befehl paru -S cachyos-gaming-applications erfolgen oder aber über das Programm CachyOS Hello. Dort wählt man dann unter Apps/Tweak Install Gaming packages aus. CachyOS Hello installiert dann direkt das Meta-Paket cachyos-gaming-meta mit, welches allerlei weiterer nützlicher Software und Bibliotheken beinhaltet.

Steam

Im Großen und Ganzen ist der Steam-Client unter Linux identisch zum Windows-Client. Mir fallen zwei Einstellungen ein, die es so unter Windows nicht gibt. Einerseits gibt es in den Steam Einstellungen unterhalb von Downloads eine Rubrik Shader Pre-Chaching, was das Thema Shader-Kompilierung etwas beschleunigen soll und andererseits gibt es einen eigenen Reiter Kompatibilität, über den man die verwendete Proton-Version global einstellen kann.

Die verwendete Proton-Version lässt sich zusätzlich nochmal für jedes Spiel einzeln konfigurieren. Dafür gibt es auch bei den Spieleinstellungen einen Reiter Kompatibilität. Ein weiterer Punkt in den Spieleeinstellungen, der teilweise interessant sein könnte, sind die Startoptionen. Denn darüber lassen sich die Spiele mit bestimmten Umgebungsvariablen starten, sodass erweiterte Konfigurationen für Proton darüber gesteuert werden können. Beispielsweise wird es mit der Umgebungsvariable PROTON_DLSS_UPGRADE=1 bei der Nutzung von GE-Proton möglich, GE-Proton anzuweisen, automatisch die neueste Version von DLSS zu nutzen. Sollte man die Startoptionen nutzen wollen, muss man auch noch %command% anhängen, damit auch das eigentlich Spiel gestartet wird, d.h. die gesamte Zeile für die Startoptionen in diesem Fall würde lauten:

PROTON_DLSS_UPGRADE=1 %command%

Es gibt natürlich noch viele weitere Umgebungsvariablen, die man setzen kann. Eine Übersicht findet man:

Damit Steam auch inoffizielle Proton-Versionen, bspw. GE-Proton, finden kann, müssen diese unterhalb von ~/.local/share/Steam/compatibilitytools.d entpackt liegen. Steam überprüft diesen Ordner immer beim Start, d.h. sollte man dort eine neue Version entpacken, während Steam läuft, wird diese Version erst nach einem Neustart von Steam zur Verfügung stehen.

Lutris

Lutris lässt sich am einfachsten benutzen, wenn es ein passendes Skript gibt. Einen Großteil der verfügbaren Skripte findet man auf der offiziellen Seite. Für die Installation eines Spiels klickt man einfach auf das + in der linken oberen Ecke des Lutris-Fensters, wählt in dem sich öffnenden Dialog den passenden Eintrag aus und folgt den Anweisungen. Nach der Installation kann man weitere Einstellungen vornehmen bzw. verändern, indem man per Rechtsklick auf dem entsprechenden Spiel den Eintrag Konfigurieren auswählt. Spätestens wenn man in der rechten oberen Ecke Advanced aktiviert, sollte man ausreichend Optionen haben, um alles nach Belieben konfigurieren zu können. Bei mir beschränkt es sich in den meisten Fällen darauf, im Reiter Optionen des Starters eine andere Wine-Version auszuwählen.

Um die installierten Wine-Versionen zu verwalten, hovert man mit der Maus im Hauptfenster über den Eintrag Wine unterhalb von Starter und klickt auf das kleine geöffnete Paket 📦, welches dann erscheint. Klickt man stattdessen auf das Zahnrad ⚙️, kann man die globalen Einstellungen für Wine anpassen.

Wenn man eigene Versionen der Starter hinterlegen möchte, kann man diese unterhalb von ~/.local/share/lutris/runners/<starter> ablegen, also bei einer eigenen Wine-Version entsprechend unterhalb von ~/.local/share/lutris/runners/wine.

Heroic Games Launcher

Der Heroic Games Launcher versucht, mit Benutzerkomfort anstatt Funktionalität zu überzeugen. Nach dem Start sollte man sich zuerst bei einer der unterstützten Vertriebsplattformen über den Heroic Games Launcher anmelden. Anschließend bekommt man unterhalb von Library alle verfügbaren Spiele angezeigt. Alle Spiele-Cover sind in Graustufen dargestellt, weil sie noch nicht installiert sind. Sobald ein Spiel installiert ist, wird das Cover auch farbig dargestellt. Im Gegensatz zum offiziellen Client des Epic Games Stores wirkt der Heroic Games Launcher deutlich schneller, sodass er vielleicht auch eine gute Alternative unter Windows darstellt.

Nachdem man sich für ein Spiel entschieden hat und auf den kleinen Pfeil nach unten auf dem Cover geklickt hat, öffnet sich der Installationsdialog, in welchem man, neben dem Installationsort, auch Wine-Einstellungen vornehmen kann. Praktischerweise stehen dort auch die für Steam installierten Proton-Versionen zur Auswahl. Nach der Installation wird das Cover farbig und generell vor den nicht installierten Einträgen in der Bibliothek einsortiert. Dort gibt es nun einen Knopf für weitere Einstellungen und einen, um das Spiel zu starten.

In den generellen Einstellungen des Heroic Games Launchers gibt es noch die interessante Option Download GE-Proton to Steam directory, wodurch man den Heroic Games Launcher auch als grafisches Frontend zur Verwaltung von GE-Proton für Steam nutzen kann. Die sonstigen Einstellungen sind vermutlich soweit selbsterklärend. Möchte man eine bestimmte Version von GE-Proton nutzen, so lässt sich die Installation über den Wine Manager triggern.

Der Heroic Games Launcher ist, sofern man keine aufwendige Konfiguration benötigt, vermutlich der benutzerfreundlichste Weg, Spiele von dem Epic Games Store, GOG oder Amazon zu installieren.

Tipps & Tricks

Ich habe zwar vor, irgendwann einmal einen kompletten Braindump von mir zu erzeugen, was Tipps & Tricks unter Linux betrifft, aber bis dahin helfen hoffentlich diese kleineren “Brain-Dumplings” 🥟

Es gilt, wie sonst auch, dass ich die Weisheit nicht mit Löffeln gefressen habe. Meine Aussagen basieren auf meinen Erfahrungen und es kann gut sein, dass ein Teil der Informationen nicht immer unbedingt unter jeder Distribution funktioniert. Es ist natürlich auch möglich, dass es bequemere Lösungswege gibt, vielleicht sogar grafische, aber mir persönlich sind die Terminal-Tools lieber, da sie auch dann noch helfen können, wenn die grafische Oberfläche vorübergehend nicht mehr funktioniert und man gezwungen ist, in eine TTY zu wechseln.

In der Regel liefern Kommandozeilenprogramme unter Linux digitale Handbücher mit, die man sich über man <CMD> anzeigen lassen kann. So kann man Anwendungszwecke, Optionen etc. jederzeit nachlesen und muss nicht unbedingt immer danach googlen. Manchmal findet man so sogar Optionen heraus, die man über das Internet nicht gefunden hat, da auch Programme sich weiterentwickeln und teilweise neue Optionen bekommen.

Laufende Prozesse

Das klassische Programm, um sich laufende Prozesse unter Linux im Terminal anzeigen zu lassen, ist das Programm bzw. der Befehl ps. Standardmäßig zeigt es nur die Prozesse an, die dem ausführenden Benutzer gehören und im gleichen Terminal laufen, aus dem der Aufruf erfolgte. Das hilft in der Praxis aber nur selten, sodass man in der Regel oft die Option -e nutzt, um sich alle laufenden Prozesse anzeigen zu lassen. Möchte man dann auch noch mehr Informationen sehen können, also bspw. alle Aufrufparameter oder den Benutzer des Prozesses, erweitert man den Aufruf um die Option -f. Es gibt noch eine Vielzahl anderer Optionen, die man über man ps einsehen kann. Ich verwende in der Regel ps -ef. Weil die Auflistung in der Regel aber sehr lang ist und ich dann doch meist nach bestimmten Prozessen suche, nutze ich als weiteres Tool das Programm / den Befehl grep, um die Ausgabe von ps -ef zu filtern. Um Befehle miteinander zu verketten, sodass die Ausgabe des ersten Befehls als Eingabe des zweiten Befehls fungiert, gibt es das Steuerzeichen |. Möchte man also alle laufenden Prozesse finden, die irgendwo die Zeichenkette wine enthalten, kann man den Aufruf ps -ef | grep wine verwenden.

So ist es bspw. möglich, bei einem Absturz eines Spiels den Prozess dazu herauszufinden, um diesen anschließend mit Hilfe des Programms / des Befehls kill zu beenden. kill klingt im ersten Moment sehr blutrünstig, ist aber nur ein Programm, um Signale an einen Prozess zu senden. Führt man den Befehl kill <PID> aus, so wird das Signal TERM geschickt, also die Aufforderung an den Prozess, sich zu terminieren. Darauf kann prozessseitig auch reagiert werden, sodass Programme die Möglichkeit bekommen, sich ordentlich zu beenden. Falls das nicht wirkt, so kann man mit kill -9 <PID> das Signal KILL senden. Das beendet den Prozess garantiert und so kann man auch komplett abgestürzte Programme beenden.

HW-Auslastung

Um generell einen Überblick über alle laufenden Prozesse / Programme zu bekommen, gibt es für das Terminal das Programm top (lässt sich mit q wieder beenden). Etwas komfortabler, bunter und interaktiver geht es mit dem Programm htop. Das muss man meist noch nachinstallieren, doch dies lohnt sich meiner Meinung nach sehr. Man kann in htop nicht nur aktiv sortieren und filtern, sondern bekommt sogar die Möglichkeit, Prozessen Signale zu schicken, um sie bspw. zu beenden. htop ist somit ein interaktiver Taskmanager für die Konsole.

Bei htop sieht man im oberen Bereich eine generelle Übersicht über die Systemauslastung, angefangen mit den CPU-Kernen über den Arbeitsspeicher bis hin zum Swap-Speicher. Man bekommt auch die Anzahl laufender Prozesse, Threads etc. mitgeteilt und mit der Load average auch eine grobe Aussage zur Gesamtauslastung. Bei der Last ist es so, dass die Zahl 1 bedeutet, dass ein CPU-Kern 100% ausgelastet wäre, was zur Folge hat, dass ein PC mit 8 CPU-Kernen auch Werte von > 7 annehmen kann, ohne das der PC überlastet ist.

GPU-Auslastung

Man bekommt über top bzw. htop allerlei Informationen über die Systemauslastung. Aber man bekommt keinerlei Informationen zur GPU-Auslastung. Um dazu ebenfalls Informationen zu bekommen, gibt es für jeden GPU-Hersteller eigene Tools. Für GPUs von NVIDIA, wird nvidia-smi direkt mit dem Paket nvidia-tools mitgeliefert. Bei AMD gibt es rocm-smi, sofern man ROCm-Stack verwendet. Alternativ gibt es aber auch OpenSource-Tools wie bspw. radeontop, um an die passenden Informationen bei AMD-GPUs zu kommen.

CPU drosseln

Jetzt könnte man sich fragen, warum man auf die Idee kommen sollte, seine CPU-Leistung zu drosseln. In der Regel versucht man doch, möglichst viel Leistung aus der Hardware herauszuholen. Jedoch lohnt sich das nur in den Fällen, in denen man auch mehr Performance dadurch bekommt. Ich spiele manchmal ein “uraltes” MMORPG, was mittlerweile schon über 25 Jahre alt ist. Dieses Spiel läuft stabil mit Wine unter Linux, hat aber die unangenehme Eigenschaft, einen CPU-Kern zu 100% auszulasten. Dies hat zur Folge, dass der Lüfter meines CPU-Kühlers ebenfalls anfängt, auf Hochtouren zu laufen. Dabei ist die Leistung und die dadurch erzeugte Abwärme für dieses Spiel gar nicht notwendig, da es aus einer Zeit stammt, in der gerade die 1 GHz-Marke geknackt wurde. Daher beschränke ich in der Regel meine CPU während des Spielens, um so die Abwärme und damit auch die Lüftergeräusche zu reduzieren, ohne einen Unterschied im Spielerlebnis zu bemerken.

Es gibt auch hierfür wieder verschiedene Programme. Ich verwende bspw. cpupower und wenn ich die Maximalfrequenz aller CPU-Kerne auf 3 GHz beschränken möchte, nutze ich den Aufruf sudo cpupower frequency-set -d 600MHz -u 3000MHz. Mit der Option -d wird die niedrigste Frequenz angegeben und mit -u die höchste. Die Angabe der Einheit ist wichtig, da das Programm ansonsten KHz annimmt. Wenn man nur einen bestimmten CPU-Kern verändern möchte, so kann man den konkreten CPU-Kern mit der Option -c angeben.

Fazit & Ausblick

Ich hoffe, dieser kurze Einblick hilft euch dabei, euer Spielerlebnis unter Linux zu verbessern. Ich habe mit Absicht versucht, es kurz zu halten. Ich hoffe, so die richtige Informationstiefe zu erreichen, um technisch weniger interessierte Menschen nicht abzuschrecken und technisch interessierten Menschen ausreichend Grundlagen zu liefern, um tiefer in die jeweiligen Themen einsteigen zu können.

Im nächsten Artikel wird es dann um die UnrealEngine unter Linux gehen.