Game Porting Toolkit: Wie Apple Windows-Spiele auf MacOS bringen will
Wenige Stunden nach Bereitstellung der Werkzeuge laufen Diablo 4 und Cyberpunk auf MacOS. Apple zeigt, dass Ports schneller gehen könnten, als viele erwarten.
Auf seiner Haus- und Entwicklermesse WWDC hat Apple sein Game Porting Toolkit offiziell vorgestellt. Zu der Technik, die Apple grob als Teil seiner Grafikschnittstelle Metal einordnet, heißt es: "Mit dem Toolkit für die Spieleportierung können Sie sich monatelange Vorarbeiten sparen und schon vor dem Schreiben des Codes beurteilen, wie gut Ihr Spiel auf dem Mac laufen könnte."
Grundlage dafür sind Eigenarbeiten von Apple wie etwa ein Shader-Compiler sowie ein riesiger Wine-Fork. Direkt zum Spielen für Endnutzer gedacht ist all das aber nicht, wie sich aus der Beschreibung von Apple ergibt.
Schon in der Vorstellung hieß es, das Game Porting Toolkit diene nur zur Evaluierung und, wie der Namen schon sagt, dazu, einen nativen Port auf MacOS zu ermöglichen. Apple beschreibt einen prinzipiellen Ablauf zur Nutzung der Werkzeuge: So sollen zunächst die HLSL-Shader aus DirectX für Metal und Apples GPUs kompiliert werden. Mithilfe von Wine könnten viele Spiele dann schon vergleichsweise einfach zum Laufen gebracht werden.
Die Spieleentwickler sollen anschließend ihre genutzte Middleware wie etwa für Eingaben, Audio-Ausgaben, Dateisystemzugriffe, Netzwerk und Ähnliches schrittweise portieren können. Am Ende soll ein nativer Port stehen, der ohne Wine auskommt.
Shader-Compiler und DirectX12 dank Microsoft
Die wohl wichtigste Einzelkomponente des Game Porting Toolkit ist der Shader Compiler. Mithilfe der Shader können 3D-Effekte programmiert werden, diese sind aber plattformabhängig. Microsoft nutzt in DirectX12 dafür die Sprache HLSL. Apple setzt dagegen auf die Metal Shading Language (MSL). Die Shader von Spielen können vor Programmstart oder auch zur Laufzeit kompiliert und dann nativ auf GPUs ausgeführt werden.
Für Apple ergibt sich ein großer Open-Source-Vorteil. Denn sowohl Apples MSL-Compiler als auch der DirectX-Shader-Compiler (DXC) von Microsoft basieren auf dem Compilerbaukasten LLVM.
Hinzu kommt, dass Microsoft DXC seit Jahren als Open Source entwickelt und im vergangenen Jahr eine enge Zusammenarbeit mit der LLVM-Community angekündigt hat. Dank des modularen Aufbaus von LLVM dürfte es vergleichsweise leicht für Apple sein, DXC als Frontend zu verwenden und mit seinem Compiler-Backend für die Apple-Silicon-GPU zu verbinden.
Dass Apple tatsächlich so vorgeht, ergibt sich direkt aus den Dateien und dazugehörigen Lizenzhinweisen des Game Porting Toolkits, das neben DXC auch die DirectX-Header-Dateien, die offiziellen Spezifikationen oder DirektX-Vulkan aufführt. Darüber hinaus hat Apple die DirectX12-API direkt als Schicht auf Metal umgesetzt und stellt dies als System-Framework bereit, das entsprechende Aufrufe übersetzt.
Stark angepasste Wine-Version
Apple nennt dies in seinen öffentlichen Ankündigungen oft nur Emulationsschicht oder Ausführumgebung. Klar ist jedoch, dass es sich dabei letztlich um Wine handelt, das Windows-Spiele auf Unix-artigen Systemen ausführbar macht und seit Jahren für MacOS bereitsteht. In der Read-Me-Datei des Game Porting Toolkits nennt Apple dann auch Wine und erklärt, dass dieses per Homebrew über ein Apple-Repository installiert werden solle.
Der Code dazu findet sich auf Github. Die Homebrew-Anweisungen zeigen, dass Apple auf die kommerzielle Wine-Version Crossover von Codeweavers setzt und diese um mehr als 20.000 Zeilen eigenen Code erweitert. Apples Wine-Verbesserungen finden sich lediglich in einer riesigen Datei aus Diff-Anweisungen als Teil der Homebrew-Formula zur Installation.
Codeweavers zeigte sich in einem Blogpost erfreut, dass Apple sich für den Wine-Code des Unternehmens als Grundlage entschieden hat. Dazu heißt es aber auch: "Wir haben nicht mit Apple an diesem Tool gearbeitet, aber wir würden uns freuen, mit allen Spieleentwicklern zusammenzuarbeiten, die das Game Porting Toolkit ausprobieren und das enorme Potenzial von Wine erkennen." Ein klarer Seitenhieb gegen die nicht Community-orientierte Open-Source-Entwicklung von Apple.
Sichtbar wird die fehlende Zusammenarbeit an der Umsetzung von DirectX12 für MacOS, an der Codeweavers ebenfalls arbeitet. Der Wine-Sponsor setzt aber auf die Übersetzungsschicht MoltenVK, wodurch Vulkan als Schicht zwischen DirectX12 und Metal dient, während Apple einen direkten Weg geht.
Diese Grundbausteine, kompilierte Shader und Wine, reichen offenbar, um schnell bekannte und aufwendig produzierte Spiele lauffähig zu machen. Apple reicht das aber nicht.