OpenXRay

Bild des Benutzers meldrian

Eine verbesserte, quelloffene Version der aus den S.T.A.L.K.E.R-Teilen von GSC Game World bekannten X-Ray-Engine.

Die Engine

OpenXRay ist der Ansatz einer Portierung der auf Funktionen von DirectX basierenden X-Ray-Engine der S.T.A.L.K.E.R-Spiele nach openGL. Seit 2019 existiert eine Kompilieranleitung für ausführbare Dateien unter Linux, was (bislang lediglich) Besitzer des Teils "Call of Prypjat" in den Genuss bringt, das Spiel nativ ohne die Verwendung von Proton, PlayOnLinux oder (grundlegend) wine unter Linux auszuführen. Die Funktionalität wird im Juli 2019 für besagten dritten Teil der Serie als 'sehr gut' deklariert. Für den Vorgängerteil "Clear Sky" besteht im Moment noch Betastatus. Der erste Teil der Serie S.T.A.L.K.E.R.: Shadow of Chernobyl ist (derzeit noch) nicht mit Hilfe der OpenXRay unter Linux spielbar, allerdings wird dieser Teil offiziell von Proton unterstützt, was eine sehr gutes bis zu gleichwertiges Spielerlebnis der Windowsversion unter Linux garantiert.

Die Installation

Diese Schritte entsprechen dem Stand der von den Entwickler zur Verfügung gestellten Anleitung zum Kompilieren unter Linux, Stand Juli 2019. Es fand lediglich eine Übersetzung statt. Die originäre Anleitung findet sich hier. Prinzipiell redundante Schritte wurden ausgespart und teilweise wurde um eigene Informationen ergänzt.

Die eingesetzte Distribution muss über die installierten Pakete git, cmake, GLEW, FreeImage, FreeImagePlus, Lockfile, OpenAL, TBB, Crypto++, Theora, Ogg, SDL2, LZO und Jpeg verfügen. Distributionen mit apt-get können dies über den nachfolgenden Befehl realisieren

sudo apt install git cmake libglew-dev libfreeimage-dev libfreeimageplus-dev liblockfile-dev libopenal-dev libtbb-dev libcrypto++-dev libogg-dev libtheora-dev libvorbis-dev libsdl2-dev liblzo2-dev libjpeg-dev libreadline-dev

Für Distributionen die das rpm-basierte dnf benutzen sieht der Befehl vermutlich folgendermaßen aus:

sudo dnf install git cmake glew-devel freeimage-devel freeimage-plus-devel liblockfile-devel openal-devel tbb-devel cryptopp-devel libogg-devel libtheora-devel libvorbis-devel SDL2-devel lzo-devel libjpeg-turbo-devel readline-devel

Als nächstes klont man den aktuellen Stand des OpenXRay Repository mit

Ist der Prozess abgeschlossen, erhält man ein neues Unterverzeichnis mit dem Namen "xray-16". Anschließend legt man via

cd xray-16 && mkdir bin && cd bin

darin einen Ordner "bin" an und navigiert in diesen. Anschließend startet man mit

cmake ..

einen Vorabtest, ob alle Abhängigkeiten auf dem System zum Bau gegeben sind oder nicht. Achtet hier auf eventuelle Fehlermeldungen und agiert beim Auftreten eben dieser entsprechend.
Ergänzung: Sollten Probleme bezüglich der gcc-Version (>8 erforderlich) auftreten, prüft ob eine entsprechend hohe Version installiert und als Standard hinterlegt ist

sudo update-alternatives --config cc

Sollte bereits ein Fehlversuch voran gegangen sein, kann es notwendig werden vorangegangene Altlasten vor einem neuen Versuch zu entfernen, um nicht in den gleichen, aus dem Log erneut eingeleseenen Fehler zu rennen.
Wer möchte, kann das Paket alternativ über clang bauen. Statt des obigen Befehls cmake .. gibt man dann das nachfolgende ein:

CC=clang CXX=clang++ cmake ..

Außerdem wird im Howto davon gesprochen, dass man alternativ mit "optimizations for your machine" gebaut werden kann. Das sähe dann so aus und müsste alternativ zu obigen 'cmake .. eingegeben werden.

CFLAGS="-march=native" CXXFLAGS="-march=native" cmake ..

Ist einer der drei obigen Befehle (also nicht alle drei hintereinander sondern einer der drei) ohne Fehler durchlaufen, kann man nun den Baubefehl absetzen, wobei das große "X" der Anzahl der Prozessorkerne entsprechen, beispielsweise 4 bei einem Quadcore-Prozessor sollte.

make -j4
[(/code]
 
Wer, erneut alternativ dazu, die Ausgabe von Hinweis- und Fehlermeldungen in einer Logfile haben möchte, nutzt stattdessen
[code]
make -j4 >out.log 2>error.log

Als nächsten Schritt, um die Linux-bin nutzen zu können, muss ein Verzeichnis "bin-linux" erstellt und für die bin passend befüllt werden. Auch zu diesem Zweck gibt gibt es einen Befehl der ausgeführt werden muss. Man muss darauf achten, das "/Pfad/zu/CallOfPrypjat" der Pfad zu der via wine installierten Windows-Version des Spiels sein muss.

make DESTDIR=/Pfad/zu/CallOfPrypjat/bin-linux install

(Ab jetzt wird es schwammig bzw. ist das HowTo nicht mehr einwandfrei zu interpretieren)
Man sichert nun seine fsgame.ltx - Datei in der Form wie man sie durch das Installieren des Spiel via Steam, Gog oder von DVD aus erhalten hat.
Als nächstes kopiert man die fsgame.ltx - Datei und den Inhalt des "res" Ordners nach "/Pfad/zu/CallOfPrypjat".

Um das Spiel nun zu starten, gibt man aus dem Verzeichnis /bin-linux heraus im Terminal den nachfolgenden Befehl ein

./xr_3da.sh -fsltx ../fsgame.ltx

Teststatus

Im Netz kursieren verschiedene Videos die zeigen wie Nutzer das Spiel nativ unter Linux ausführen.
Die obenstehende Anleitung jedoch führt in zwei Testfällen auf verschiedenen System zu einer "FATAL ERROR" Meldung mit dem Hinweis
"[error] Description : can't read from file :" ohne konkreten Hinweise darauf, welche Dateien hier nicht gefunden werden oder fehlen.

Alternative: Nutzung eines PPA

Die Entwickler hinter dem Projekt haben auf github auf einen issue geantwortet, der das unter Teststatus festgehaltene Verhalten beschreibt. Sie sagen, dass die aktuelle Linuxversion fehlerhaft ist, jedoch zeit- und ersatzweise ein PPA genutzt werden kann, welches das System mit einer ausführbaren Datei versorgt. Zu diesem Zweck gibt man auf einem Terminal unter Ubuntu oder verwandten Systemen den nachfolgenden Befehle ein

sudo add-apt-repository ppa:eagleivg/openxray
sudo apt-get update
sudo apt-get install openxray

Ist dieser Vorgang abgeschlossen, müssen noch einige Ordner nach .local kopiert oder verlinkt werden. Dies betrifft mindestens die Ordner  levels, localization, mp, patches und resources aus der zuvor via wine installierten Windowsversion des Spiels. Diese müssen nach  /home/$username/.local/share/GSC/SCOP/ bzw.  ~/.local/share/GSC/SCOP/ kopiert werden.

Ferner benötigt man, da der linuxbuild etwas buggy ist, ein anderes/älteres "gamedata"-Verzeichnis. Zu diesem Zweck lädt man die Daten aus einem Fork des Projekts (https://github.com/eagleivg/xray-16.git), extrahiert sich daraus den Ordner "gamedata" und überschreibt mit diesem Ordner den Inhalt des gleichnamigen Verzeichnis unter  ~/.local/share/GSC/SCOP/. Ist dies geschehen, kann man in einem Terminal aus einem beliebigen Ordner heraus das Spiel mit "xr_3da" starten.

Trivia

Der Aufruf des Optionsmenü aus dem Hauptmenü heraus sorgt aktuell, Juli 2019, in einer Testsituation zu einem Absturz des Spiels.

Screenshots und Videos
Mastodon