somethinglikegames.de
Bluesky Logo

Kategorien


Tags

Gaming on Linux

Ich hatte die große Freude, vor wenigen Tagen auf den diesjährigen GermanDevDays in Frankfurt am Main darüber reden zu dürfen, wie gut sich Linux aktuell für die Spieleentwicklung eignet. Ich habe ja auch in der Vergangenheit schon den einen oder anderen Artikel über Linux geschrieben, aber bislang noch nicht konzentriert auf Spieleentwicklung zusammengefasst. Als ich dann nach dem Vortrag gefragt wurde, ob ich die Folien zur Verfügung stellen könnte, ist mir die Idee für diesen Artikel gekommen.
Vielleicht hätte es auch ausgereicht, einfach die Folien zum Download anzubieten, aber ich bin der Meinung, dass Vortragsfolien alleine in der Regel nicht aussagekräftig sind. Es fehlt schließlich die Tonspur. Also dachte ich mir, dass ich die Inhalte etwas ausformuliere und dadurch verständlicher zur Verfügung stelle. Als kleiner Nebeneffekt entsteht so auch eine englische Version. Ich hatte auch eine englische Version des Vortrags für die diesjährige gamescom dev eingereicht, aber leider bekam ich 2 Stunden nach meinem Vortrag auf den GermanDevDays die Absage dafür 😥

Allen, für die Linux ein komplett neues Thema ist, kann ich empfehlen, sich vorher mal meinen Artikel Linux? Was zum Pinguin!? durchzulesen, da ich dort ein wenig auf die Geschichte eingehe und die grundlegenden Begriffe erkläre.

Linux ist überall

In der heutigen Zeit finden wir Linux fast überall. Sehr viele Menschen nutzen Linux, auch wenn es ihnen nicht bewusst ist:

  • 🧮 Alle Supercomputer der Top 500 laufen mit Linux
  • 🌐 Ein Großteil der Server im Internet läuft mit Linux
  • ☁️ Ein Großteil der “Cloud” läuft mit Linux
  • ☎️ Ein Großteil der Smartphones läuft mit Linux (Android)
  • 📖 Viele Ebook-Reader laufen mit Linux (Amazon Kindle, Tolino, …)
  • 🕸️ Viele Router laufen mit Linux (AVM Fritz!Box, ASUS RT, Netgear, TP-Link, OpenWRT, …)

Selbst Microsoft hat 2024 bekanntgegeben, dass Linux beeindruckende 60% Anteil der auf ihrer eigenen Cloudplattform Azure laufenden Systeme hält. Mittlerweile bietet Microsoft mit Microsoft Azure Linux sogar eine eigene Linux-Distribution an.

Linux und die Spieleentwicklung

Um einen etwas besseren Überblick zu bekommen, was Linux im Bereich Spieleentwicklung zu bieten hat bzw. welche Software unter Linux läuft, habe ich versucht, die verschiedenen Gesichtspunkte im Bereich Spieleentwicklung entsprechend zu kategorisieren.

Stabiles Fundament / Linux-Distribution

Distrowatch führt 467 verschiedene Linux-Distributionen. Und wenn man sich die Linux Distribution Timeline auf Wikipedia anschaut, wird es dadurch nicht gerade übersichtlicher. Daher habe ich mir ein paar Abwägungen überlegt, die meiner Meinung nach für den professionellen / beruflichen Einsatz beachtet werden sollten (YMMV):

  • Stabilität ist wichtiger als die letzten Prozent an Performance
  • Optimierter Wartungsaufwand ist eingesparte Zeit und dadurch bares Geld, d.h.
    • Lange Supportzeiträume => lange Zeit Sicherheitsupdates => weniger Betriebssystem-Upgrades notwendig
  • Gute offizielle Unterstützung von Anbietern relevanter kommerzieller Produkte ist wünschenswert

Daher ist meine Empfehlung Rocky Linux in Kombination mit Extra Packages for Enterprise Linux (EPEL). Rocky Linux bietet für Hauptversionen in der Regel 5 Jahre vollen Support (inkl. 2 Unterversionen pro Jahr / Service Packs) und anschließend nochmals für weitere 5 Jahre Sicherheitsupdates. Dazu kommt, dass kommerzielle Anbieter, die offizielle Linux-Versionen ihrer Software anbieten, Rocky Linux in den meisten Fällen unterstützen.

Wem Rocky Linux wiederum zu konservativ ist (was ich persönlich voll und ganz nachvollziehen kann), dem würde ich zu Fedora raten. Fedora und Rocky Linux haben die gleichen Wurzeln, Fedora ist aber bei den Updates nicht ganz so konservativ wie Rocky Linux, sodass man im Schnitt 1x pro Jahr ein Upgrade durchführen müsste. Aber da das einkalkuliert ist, ist dieses Upgrade in der Regel auch schnell und problemlos möglich.

Jeder, der auch meine anderen Linux-Artikel kennt oder sich mit mir schon mal über Linux-Distributionen unterhalten hat, könnte wissen, dass ich seit bald 20 Jahren Arch Linux oder darauf basierende Distributionen privat für mich nutze. Ich mag es, aber ich habe mittlerweile auch eine Menge Erfahrung und setze mich in der Regel oft auch mehr mit Betriebssystemen in meiner Freizeit auseinander, als es viele andere tun. Wenn ich aber die Verantwortung für eine Vielzahl an PCs übernehmen müsste, bei dem jeder Ausfall teuer wird, da der einen Person das Arbeitsgerät fehlt und eine zweite Person dringend dann die Probleme beseitigen muss und es zusätzlich noch Zeitpläne gibt, die eingehalten werden müssen, würde ich meine Prioritäten auch so setzen, wie ich es weiter oben beschrieben habe.

Tools

In die Kategorie Tools zähle ich all die Software, die vermutlich jeder irgendwie im Arbeitsalltag nutzt bzw. nutzen könnte. Und wenn man sich die nun folgende Auflistung ansieht, kann man vielleicht erkennen, dass man dort die üblichen Verdächtigen findet, die man vielleicht auch schon von Windows kennt.

Versionsverwaltung
Build & Deployment
Weitere Tools

Game Engines

Es gibt große Unterschiede in der Unterstützung von Linux als Entwicklungsplattform. Es gibt zwei generelle Einschränkungen, die für alle Game Engines gelten:

  • Es gibt kein DirectX unter Linux, daher nutzen moderne Game Engines in der Regel Vulkan unter Linux.
  • Konsolenhersteller bieten ihre SDKs aktuell vermutlich nicht für Linux an. Aber ganz sicher darf darüber niemand sprechen, da diese Information der NDA der Konsolenhersteller unterliegt 😉

Godot hat annähernd vollen Support von Linux als Entwicklungsplattform. Ich nutze Godot selbst mehrfach pro Woche ohne Schwierigkeiten unter Linux, und meines Wissen benutzen viele der Projekt-Maintainer selbst Linux als Standardbetriebssystem.

Unity bietet auch einen großen Funktionsumfang unter Linux. Es ist bspw. auch CrossCompile für Windows dabei, wobei die Einschränkung gilt, dass weder UWP und noch IL2CPP für Windows unterstützt werden.
Meine eigenen Erfahrungen mit Unity liegen schon 6 Jahre zurück und ich kann bestätigen, dass CrossCompile damals relativ problemlos funktioniert hat.

UnrealEngine bietet aktuell einen sehr eingeschränkten Funktionsumfang unter Linux. Es wird momentan nativ keinerlei CrossCompile-Funktionalität unterstützt, sodass es bei Unreal unter Linux nicht möglich ist, eine Windows-Version von Projekten zu erstellen. Zumindest wird seit der UE 5 eine vorkompilierte Version angeboten, sodass man sie für einen ersten Einstieg nicht direkt selbst kompilieren muss. Ansonsten gibt es, je nach Setup, mit neueren UE 5 Versionen teilweise ein paar Kompatibilitätsprobleme unter Linux. Falls ihr mehr darüber wissen wollt, das Thema habe ich in der Vergangenheit schon mal genauer beleuchtet: Die Unreal Engine unter Linux
Meine persönliche Erfahrung ist, dass der UnrealEditor soweit stabil unter Linux funktioniert und ich nur wenige Schwierigkeiten hatte, als ich ihn im letzten halben Jahr bspw. im Rahmen meiner Vorlesung eingesetzt hatte.

Ansonsten habe ich durch angenehme und interessante Gespräche mit Entwicklern verschiedener Studios gelernt, dass es auch Linux-Versionen diverser Custom Engines gibt, auch wenn die Spiele offiziell nie eine native Linux-Version bekommen. Der Aufwand wird oftmals gescheut, da es gerade für kleinere Studios einfacher ist, die Kompatibilität zu Proton sicherzustellen.

Programmier-, Debugging- und Profiling-Tools

In dieser Kategorie gibt es eigentlich nur wenig Grund zu meckern.

IDEs
Natürlich existieren auch Vim oder GNU Emacs, die mit passenden Plugins sehr mächtig werden können. Aber da ich davon ausgehe, dass Menschen, die mit Vim oder Emacs umgehen können, keine Auflistung von Tools von mir benötigen, habe ich sie einfach mal ignoriert.
Debugging und Profiling

2D-Assets

Im 2D-Bereich haben wir ein differenziertes Bild. Die vermutlich größte Einschränkung bzw. Umstellung für viele professionelle 2D-Artists besteht darin, dass es keine Adobe Cloud unter Linux gibt. Somit stehen weder Adobe Photoshop noch Adobe Illustrator zur Verfügung. Dafür gibt es mit Fog Panther einen interessanten neuen Photoshop-Konkurrenten. Mit der aktuellen Version 0.8.1 wird es vermutlich noch dauern, bis es einen ähnlichen Funktionsumfang hat, aber soweit ich bislang mitbekommen habe, orientiert sich Fog Panther, im Gegensatz zu anderen Alternativen, an den Photoshop-Workflows, was einen möglichen Wechsel deutlich erleichtert.

Pixel Art
Illustration
Vektorgraphiken
2D-Animation

*) Affinity bietet aktuell zwar keine native Linux-Version, dafür gibt es mittlerweile komfortable Lösungen, es mit Hilfe von Wine zum laufen zu bringen. Ich habe darüber auch schon mal in einem früheren Artikel geschrieben.

3D-Assets

Im 3D-Bereich sieht die Welt wieder etwas besser aus, zumindest solange man das Thema Sculpting ausklammert. Sowohl Blender als auch 3D Coat bieten Sculpting an, und Nomad Sculpt ist wohl mit Hilfe von Wine bzw. Proton lauffähig. Bisher schwört eigentlich jeder, den ich kennengelernt habe, der professionelle Ansprüche im Bereich Sculpting hat, auf ZBrush, was momentan leider noch keine Linux-Version anbietet.
Auch wenn es die Adobe Cloud unter Linux nicht gibt, muss man nicht auf Substance-Produkte verzichten, da man diese über Steam beziehen kann und das sogar mit nativen Linux-Versionen. Es funktioniert nicht immer alles einwandfrei, aber das Team dahinter bei Adobe ist bemüht, die Probleme zu beheben, und in den Community-Diskussionen findet man auch entsprechende Hilfen. Besonders interessant dabei finde ich diesen Thread, da dort teilweise Lösungen für Probleme geliefert werden, die Adobe selbst noch nicht gelöst hat 🤯

Hier nun aber endlich die Liste möglicher Software für den 3D-Asset-Bereich:

Modelling
Baking und Texturing
Simulation

*) Marmoset Toolbag 5 läuft überraschend gut mit Hilfe von Wine. Die genauen Schritte dafür hatte ich hier beschrieben.

Audio

Audio ist der einzige Teilbereich hier, von dem ich kaum bis keine Ahnung habe. Daher kann es wirklich gut sein, dass es in dem Bereich Möglichkeiten gibt, von denen ich nichts weiß.

Audioerstellung
Audioverwaltung

Warum überhaupt Linux?

Es gibt eine Menge Gründe, die für Linux sprechen, und es ist sehr einfach, dabei emotional zu werden. Da Emotionalität aber teilweise dazu verleitet, logische Argumente zu ignorieren, biete ich diese nüchternen Argumente:

  • Dateisystem- & Build-Performance
    • Typische Dateisysteme unter Linux (ext4, Btrfs) bieten bei großen Repositories und Asset-Ordnerstrukturen spürbar schnellere Dateizugriffe im Vergleich zu NTFS
    • Linux bietet durch angepasste Scheduler effizienteres Multithreading bei CPU-intensiven Kompilierungsvorgängen
  • Minimale Ressourcenbelegung
    • Ein schlankes Betriebssystem bedeutet, dass mehr RAM, VRAM und CPU-Zyklen für Engine, IDE und Grafiktools übrig bleiben
    • Es gibt keine künstlichen Hardwaresperren, bspw. wird TPM 2.0 nicht zwingend vorausgesetzt
  • Volle Systemkontrolle
    • Keine erzwungenen Updates oder Reboots mitten in langen Renderings, Bakes oder Build-Prozessen
    • Keine Bloatware oder aufgezwungene Cloud-Dienste im Hintergrund
  • CI/CD-Symmetrie
    • Da viele Build-Server auf Linux laufen, können lokale Entwicklungsumgebungen identisch zu denen auf den Build-Servern aufgesetzt werden
    • Keine “works on my machine”-Probleme bei Build-Skripten mehr

Fazit

Ist Linux in 2026 ein geeignetes Betriebssystem, um damit Spiele zu entwickeln? Die Antwort ist, wie so oft: Kommt drauf an.

Es gibt kein perfektes Betriebssystem, daher geht man bei Linux auch bewusste Kompromisse ein. Doch man geht mit Windows ebenfalls Kompromisse ein, auch wenn diese anders sind. Vielen sind diese Kompromissen aber nicht ganz so bewusst, da sie teilweise bereits damit aufgewachsen sind und es nicht anders kennen. Anderen hat man über die Jahre anfangs zähneknirschend, mangels sichtbarer Alternativen, zugestimmt und nimmt sie mittlerweile auch nicht mehr wahr. So kann es einem unter Linux ebenfalls gehen. Die Welt hat auch hier nicht einfach nur 1 Bit Farbtiefe, sie ist also nicht einfach schwarz oder weiß, sondern setzt sich aus einer Vielzahl an Graustufen zusammen.

Moderne Toolchains erlauben generell auch, dass Teammitglieder das Betriebsystem nutzen, das ihren individuellen Workflow am besten unterstützen kann. Entscheidend dabei ist, dass man dies möglichst bei Projektbeginn bereits bedenken sollte, damit man bspw. einfach direkt mit Vulkan statt DirectX arbeitet, um so auch auf Linux problemlos mitarbeiten zu können und um die Reibungsverluste möglichst kleinzuhalten.

Es gibt aktuell aus meiner Sicht nur einen harten Blocker: Konsolen-Ports. Möchte man auch auf Konsolen releasen, muss man momentan wohl mindestens ein Windows-System haben. Aber dank Dual-Boot, muss es ja nicht täglich genutzt werden 😉