The Witcher 3 und die Nebenquest mit zwei Bugs.

Ein Apple-Silicon-Mac. Ein Steam-Start ins Leere. Eine alte Umleitung, ein Shader-Absturz und eine Windows-DLL aus der Mac-Werkstatt.

Fantasy-Werkbank mit einem Laptop mit schwarzem Bildschirm, gekreuzten Schwertern, Wolfsmedaillon und Reparaturwerkzeug
Zwei Bugs, eine Debugging-Nebenquest. Titelillustration.

Die kurze Antwort

In diesem Test scheiterte The Witcher 3 Remastered 5.01 unter CrossOver an zwei unterschiedlichen Startphasen. Zuerst führte eine Kompatibilitätsumleitung in ein fehlendes DX11-Verzeichnis. Nach der Umgehung dieses Hindernisses scheiterte eine Grafikpipeline im D3DMetal-Pfad. Ein lokal kompilierter Open-Source-Fix von tholtman1-del brachte den normalen Steam-Start bis zur sichtbaren Telemetrie-Abfrage.

Das ist der belegte Checkpoint. Längeres Gameplay, Leistung und vollständige Grafikdarstellung wurden nicht getestet. Die Screenshots und das Build-Protokoll stammen aus der tatsächlichen Untersuchung vom 10. Oktober 2026.

Ich hatte auf „Spielen“ geklickt, um Monster zu jagen. Steam verstand das offenbar als Wunsch, ausführbare Dateien aufzuspüren. Ein nachvollziehbares Missverständnis: In beiden Fällen folgt man Spuren an Orte, an die man besser eine Fackel mitgebracht hätte.

Die fehlende Tür

Steam wechselte kurz auf „Wird ausgeführt“ und dann zurück auf „Spielen“. Kein Spielfenster, keine hilfreiche Erklärung. Dieses Symptom lässt viel offen: Ein Launcher, eine fehlende Datei oder ein sehr früher Prozessfehler können in der Bibliothek gleich aussehen.

Der erste sinnvolle Schritt war deshalb eine Bestandsaufnahme: aktive Bottle, Steam-Bibliothek auf der externen SSD, Spiel-Build und tatsächlich gestartete Datei. Ein Ordner namens „The Witcher 3“ verrät noch nicht, ob eine ältere Fehlerbehebungsanleitung zu seinem Inhalt passt.

In dieser Installation lag die DX12-Datei unter bin/x64_dx12. CrossOver leitete ihren Start auf den älteren Pfad bin/x64 um. Dieses Verzeichnis fehlte. Die Anfrage stand vor dem richtigen Haus und folgte dann einem veralteten Schild zu einer abgerissenen Tür.

Startpfad · Schema der Diagnose
Requested:  bin/x64_dx12/witcher3.exe
Redirected: bin/x64/witcher3.exe
Missing:    bin/x64
Workaround: bin/x64 -> x64_dx12

Die Unterscheidung ist entscheidend: Ein DX12-Dateiname beweist noch nicht, dass die DX12-Initialisierung begonnen hat. Hier kam der Prozess gar nicht so weit. Schatteneinstellungen oder ein anderer Grafik-Backend konnten das fehlende Zielverzeichnis nicht herstellen.

Bei einer ähnlichen Untersuchung ist diese kleine, rein lesende Prüfung nützlicher als ein Nachmittag voller Schalter. Den Beispielpfad durch das tatsächliche Spielverzeichnis ersetzen:

Terminal · beide Verzeichnisse prüfen
TASK_GAME_DIR="/path/to/The Witcher 3"
ls -ld "$TASK_GAME_DIR/bin/x64" \
  "$TASK_GAME_DIR/bin/x64_dx12"

Der Community-Installer berücksichtigt die alte Umleitung mit bin/x64 → x64_dx12. Der erwartete Pfad führt dadurch zur vorhandenen DX12-Version. Ein DX11-Renderer entsteht dabei nicht. Auf Dateisystemen, die den Link nicht speichern können, verwendet das Skript stattdessen eine Verzeichniskopie. Ein Symlink ist deshalb nicht der einzige mögliche Installationszustand.

Im Verlauf der Diagnose half auch eine umbenannte Testdatei, die vom ursprünglichen Dateinamen abhängige Umleitung zu umgehen. Das war ein Versuch zur Eingrenzung. Die beibehaltene Installation verwendete anschließend den Pfad-Workaround des Community-Fixes und den normalen Steam-Eintrag.

Die Belohnung für das erste gelöste Hindernis war ein Spielfenster. Es war schwarz. Der Quest-Designer hatte offenbar einen zweiten Gegner eingeplant.

Der Black-Screen-Boss

Der erste Fix öffnete ein Fenster. Der zweite Fehler steckte in der Shader-Übersetzung.

Tatsächliches schwarzes Witcher-3-Spielfenster nach der Umgehung der ursprünglichen Startumleitung
10. Oktober 2026, 20:32 Uhr: die echte Aufnahme des Spielfensters nach dem ersten Hindernis. Die schwarzen Pixel geben den sichtbaren Fortschritt leider ziemlich genau wieder.

Ein vorhandener Prozess und ein geöffnetes Fenster sind andere Meilensteine als eine gerenderte Oberfläche. Die Untersuchung musste nun von der Dateiauflösung zur Grafikinitialisierung wechseln. Diagnose und Community-Quellcode deuteten auf eine problematische Pipeline in Apples Shader-Konvertierung innerhalb von D3DMetal.

Das Community-Projekt beschreibt eine Stream-Output-Pipeline mit Geometry Shader und ohne Pixel Shader. Sein Proxy fängt den entsprechenden Aufruf zum Erzeugen der Grafikpipeline ab und weist diesen Fall zurück, bevor die Übersetzung ihn verarbeitet.

Der folgende Ausschnitt zeigt die Entscheidung aus der für den lokalen Build verwendeten Revision. gs und ps beschreiben Geometry- und Pixel-Shader-Bytecode; soEntries zählt Stream-Output-Deklarationen. Die Variablen stammen aus dem umgebenden Quellcode. Der Ausschnitt ist deshalb kein eigenständiges Programm.

ffxproxy.c · Ausschnitt unter MIT-Lizenz
if (gs->n && (soEntries || !ps->n)) {
    logmsg("  -> #%ld SKIPPED (stream output / GS without PS)", id);
    if (out) *out = NULL;
    return (long)0x80070057; /* E_INVALIDARG */
}
long hr = origGfx(dev, desc, riid, out);
Quellcode und Kontext

Zwei Fehler, zwei Ebenen

  1. Steambin/x64_dx12/witcher3.exe
  2. Alte CrossOver-Umleitungbin/x64/witcher3.exe
  3. Zielverzeichnis fehltStart endet vor dem Spielfenster
  4. Symlink führt zur DX12-Dateix64 → x64_dx12

Die Pfadkorrektur öffnete das Fenster. Danach wurde der zweite Fehler sichtbar.

  1. The Witcher 3Direct3D 12
  2. FidelityFX proxyamd_fidelityfx_loader_dx12.dll
  3. D3D12 pipeline callCreateGraphicsPipelineState
Problematische PipelineAbgewiesen
E_INVALIDARG · 0x80070057
Andere Pipeline-AufrufeAn die Originalfunktion weitergeleitet

Der Proxy lässt den problematischen Pfad aus. Das ist ein Workaround mit möglichem Verlust eines Grafikeffekts.

Die Bedingung liefert für den abgefangenen Fall E_INVALIDARG zurück. Andere Aufrufe zur Erstellung von Grafikpipelines werden an die ursprüngliche Funktion weitergegeben. In Microsofts D3D12-API liefert diese Funktion einen HRESULT. Der Proxy verändert die Antwort auf eine Anfrage, statt einen neuen Renderer zu implementieren.

Außerdem leitet die DLL die FidelityFX-Einstiegspunkte an den gesicherten Original-Loader weiter. Sie sitzt damit an einer nützlichen Stelle der Startkette: Der problematische Aufruf lässt sich beobachten und beeinflussen, während die ursprüngliche Bibliothek beteiligt bleibt.

Es handelt sich um einen anwendungsspezifischen Workaround. Annahmen über Datenlayouts und die Device-Hooks gehören zu der Umgebung, für die der Quellcode geschrieben wurde. Ein erfolgreicher Start kann mit einem fehlenden Grafikeffekt einhergehen. Auch „FidelityFX“ im Dateinamen belegt für sich noch keine geprüfte Skalierung oder Frame Generation.

Eine Windows-DLL auf dem Mac schmieden

Der nächste Schritt war eine überraschend kleine Crafting-Rezeptur: eine C-Datei, ein Windows-Ziel und ein Compiler auf macOS. Ein Windows-Desktop wurde für diesen Build nicht benötigt.

Zig unterstützt Cross-Compilation. Das dokumentierte Ziel war x86_64-windows-gnu: Die Ausgabe musste zum Windows-x86-64-Prozess in CrossOver passen, obwohl der Mac Apple Silicon verwendet. Host-Architektur und Ausgabe-Architektur sind zwei getrennte Entscheidungen.

Für den damaligen Build kamen Community-Commit 436de811fcc8784dd0dfb6c9666077b34ca53d31 und die dokumentierte ziglang-Version 0.17.0 zum Einsatz. Die folgende Befehlsfolge macht diese Eingaben ausdrücklich. Sie baut die DLL; sie installiert noch nichts im Spiel.

Terminal · Community-Quellcode bauen
git clone https://github.com/tholtman1-del/witcher3-crossover-fix.git
cd witcher3-crossover-fix
git checkout 436de811fcc8784dd0dfb6c9666077b34ca53d31

python3 -m venv .venv
.venv/bin/python -m pip install ziglang==0.17.0
.venv/bin/python -m ziglang cc \
  -target x86_64-windows-gnu \
  -shared -O2 \
  -o amd_fidelityfx_loader_dx12.dll \
  ffxproxy.c

shasum -a 256 amd_fidelityfx_loader_dx12.dll
Quellcode und Kontext

-target wählt die Windows-Zielplattform, -shared erzeugt eine DLL und -O2 aktiviert Optimierungen. Der letzte Befehl erfasst den SHA-256-Fingerabdruck. Der Hash des lokalen Ergebnisses steht im herunterladbaren Build-Protokoll.

Ein Hash identifiziert bestimmte Bytes. Er beweist weder die Vertrauenswürdigkeit einer Datei noch muss eine andere Compiler-Umgebung aus demselben Quellcode denselben Hash erzeugen. Quellrevision, Compiler, Ausgabeziel und Testergebnis zusammen festzuhalten macht den Build später nachvollziehbarer.

Bei der Installation eine Adresse und einen Rückweg mitnehmen

Die Steam-Bibliothek lag auf einem externen Laufwerk. Die aktive Bottle war außerdem nicht das erste Verzeichnis, das eine Vermutung über Standardpfade nahelegte. Das geprüfte Spielverzeichnis direkt zu übergeben ersparte eine Suche durch sämtliche Bottles und Volumes.

Nach dem Beenden des Spiels ersetzte der Projekt-Installer den Loader durch den Proxy, sicherte das Original als amd_fidelityfx_loader_dx12_orig.dll und ergänzte den Pfad-Workaround:

Terminal · aus dem Quellcode-Verzeichnis installieren
TASK_GAME_DIR="/path/to/The Witcher 3"
zsh ./install.command "$TASK_GAME_DIR"
Quellcode und Kontext

Diese Befehle setzen voraus, dass Quellcode und frisch gebaute DLL zusammenliegen und der Beispielpfad durch das Spielverzeichnis ersetzt wurde. Die Sicherung wurde mit dem Original abgeglichen. Anschließend ging es zurück zum gewöhnlichen Steam-Start: Genau diesen Ablauf wollten wir reparieren.

Für den späteren Rückweg das Spiel beenden und den zugehörigen Uninstaller aus demselben Quellcode-Verzeichnis starten:

Terminal · Originalinstallation wiederherstellen
TASK_GAME_DIR="/path/to/The Witcher 3"
zsh ./uninstall.command "$TASK_GAME_DIR"
Quellcode und Kontext

Updates können den Gegner neu spawnen

Ein Spielupdate oder Steams Dateiprüfung kann den Proxy wieder durch den ausgelieferten Loader ersetzen. Wenn das Symptom zurückkehrt, zuerst den Installationszustand und die Eignung des Fixes für den neuen Build prüfen. Eine am 10. Oktober passende Reparatur passt nicht automatisch nach dem nächsten Patch.

Deshalb gehört das Build-Protokoll zum Artikel. Mein zukünftiges Ich sollte eine Karte bekommen und keinen Zettel mit „Ich habe hier irgendwas geändert, und einmal ging es“.

Checkpoint erreicht. Kampagne noch ungetestet.

Die nach dem Community-Workaround und lokalen DLL-Build erfolgreich angezeigte Telemetrie-Abfrage von The Witcher 3
Telemetrie-Abfrage beim ersten Start · normaler Steam-Start · Version 5.01 · 10. Oktober 2026, 20:39 Uhr. Echte Aufnahme, keine Aussage über Gameplay-Leistung.

Was der Test belegt

Normaler Start über Steam
Bestanden
Spieloberfläche sichtbar
Bestanden
Original-DLL gesichert
Bestanden
Längere Gameplay-Sitzung
Nicht getestet

Die ehrliche Quest-Belohnung: ein funktionierender Start, eine gesicherte DLL und ein Rückweg.

Der normale Start erreichte eine sichtbare Spieloberfläche. Im dokumentierten Proxy-Test wurde außerdem Pipeline Nr. 15 übersprungen; spätere Pipelines wurden erstellt. Der Original-Loader blieb erhalten, und die Sicherung stimmte mit dem Original überein.

Es gab keinen längeren Gameplay-Test, keinen FPS-Benchmark und keine Prüfung sämtlicher Grafikeffekte. „Wir haben den Checkpoint erreicht“ beschreibt das Ergebnis richtig. „Die komplette Kampagne läuft fehlerfrei“ würde eine weitere Abenteuerreise verlangen.

Was ich in die nächste Debugging-Quest mitnehmen würde

Zuerst die fehlerhafte Phase lokalisieren. Die Rückkehr zu „Spielen“, ein schwarzes Fenster und eine kaputte Szene sind drei Beobachtungen mit möglicherweise unterschiedlichen Ursachen. Setup festhalten, einen Teil der Kette verändern und prüfen, welcher Meilenstein sich bewegt. Ein neuer Fehler nach einem Fix kann bedeuten, dass der erste Blocker beseitigt wurde.

Die Erkenntnis reicht weit über Spiele hinaus. Eine Web-App kann ihre Route auflösen und trotzdem beim Laden der Daten scheitern. Ein Dienst kann starten und weiterhin seine Datenbank nicht erreichen. Ein Compiler kann fertig werden und ein Ergebnis erzeugen, das bei der ersten echten Aufgabe scheitert. Die hilfreiche Frage lautet immer: Was hat dieser Test tatsächlich belegt?

Mit der spielerischen Seite von Oberflächen habe ich mich auch beim 3D-Terrarium-Planer im Browser beschäftigt. Diesmal kam die Nebenquest ungefragt. Ihr wertvollster Loot war ein klareres Bild des Systems.

Fragen vom schwarzen Brett

Warum startet Witcher 3 in Steam kurz und springt dann zurück auf „Spielen“?

Im dokumentierten Setup leitete CrossOver den Start in ein fehlendes bin/x64-Verzeichnis um. Das erklärt diesen konkreten Fall. Andere Installationen können andere Ursachen haben. Vor demselben Workaround deshalb Startziel und Spielversion prüfen.

Warum blieb nach der Pfadkorrektur ein schwarzer Bildschirm?

Die Datei konnte nun starten. Dadurch wurde ein zweiter Fehler in der Grafikinitialisierung sichtbar. Der Community-Proxy wies den problematischen Pipeline-Aufruf zurück. Beide Hindernisse lagen hintereinander und brauchten getrennte Diagnosen.

Kann ich einfach DirectX 11 auswählen?

Die ältere DX11-Datei fehlte in der getesteten Remastered-Installation. Ihr Verzeichnis auf die vorhandene DX12-Version umzuleiten macht daraus keine DX11-Version. Tipps für ältere Editionen können an dieser Stelle deshalb in die falsche Richtung führen.

Warum kann ein Update den Fix entfernen?

Steams Dateiprüfung und Spielupdates können die originale Loader-DLL wiederherstellen. Vor einer erneuten Installation Spiel-Build und aktuelle Community-Anleitung prüfen. Original-Sicherung und Änderungsprotokoll aufbewahren.

Beweist der Test, dass das Spiel auf einem M1 Max perfekt läuft?

Nein. Er belegt, dass der normale Steam-Start im dokumentierten Setup die Telemetrie-Abfrage erreichte. Längeres Gameplay, Leistung, Upscaling, Raytracing und vollständige Grafikdarstellung wurden in dieser Sitzung nicht geprüft.

Wer hat den Fix geschrieben, und wo liegt der Quellcode?

tholtman1-del hat den Fix unter der MIT-Lizenz veröffentlicht. Die Quellcode-Links im Artikel führen zur für den lokalen Build verwendeten Revision. Unser Beitrag ist die Diagnose, lokale Kompilierung, Überprüfung und dokumentierte Übergabe.

Quellen, Credits und die Akte

Andere Abenteurer vor derselben Tür

Die Community folgt ähnlichen Spuren. Diese Reddit-Diskussionen ergänzen den Fallbericht mit eigenen Rechnern, Spielversionen und Testbedingungen:

  • Witcher 3 Remastered auf Apple Silicon mit Sikarugir — ein Wine/D3DMetal-Bericht über einen fehlenden Startpfad und den anschließenden Black-Screen-Fehler mit demselben Community-Projekt. Die Installationsschritte beziehen sich auf Sikarugir, nicht auf unsere CrossOver-Bottle.
  • The Witcher 3 Remastered startet nicht — Berichte anderer Mac-Nutzer, darunter ein CrossOver-26.2-Setup und ein Absturz mit schwarzem Bildschirm.
  • M1 Pro, CrossOver 26.1 und D3DMetal — eine separate Diskussion über Setup und Einstellungen. Sie liefert Kontext für einen späteren Gameplay-Test, keinen Benchmark des Rechners aus diesem Artikel.

Die Screenshots wurden während des lokalen Tests am 10. Oktober 2026 aufgenommen. Die Spielgrafik gehört CD PROJEKT RED. Der Artikel dokumentiert einen unabhängigen Community-Workaround; er ist kein offizieller Patch und behauptet keine Verbindung zu den Herstellern. Das Titelbild ist eine redaktionelle Illustration; die technischen Abbildungen sind echte Aufnahmen und direkt in HTML/CSS dargestellte Diagramme.

  • #CrossOver
  • #Wine
  • #D3DMetal
  • #Debugging
  • #Zig
  • #Open Source
Teilen LinkedIn X
Ein blaues Wesen entspannt im Liegestuhl mit einem Drink

Bereit loszulegen?

Erzähl mir, was du bauen oder an einer bestehenden Website verbessern möchtest.