Hauptseite « Old-Games « X-COM « OpenXcom kompilieren
Letzte Änderung: 2015-07-05
OpenXcom ist im Wesentlichen das gute alte X-COM - Ufo defense, nur nachprogrammiert und um ein paar Funktionen erweitert bzw. verbessertes Interface. Als solches ist es Open Source, abgesehen von den Medien-Daten, wie Maps, Bitmaps und Sounds. Wie man OpenXcom unter Ubuntu 14.04 installiert bzw. kompiliert, das wird hier erklärt.
Es werden vom Original Spiel einige Verzeichnisse benötigt, um es überhaupt zum Laufen bringen zu können. Die X-COM-Version ist entweder 1.4 (=DOS), oder aber die Collectors-Edition (=Windows). Falls jemand das Spiel nicht hat, kann man es sich auch heute noch via Steam kaufen, oder aber man googlet mal danach, obs das nicht wo gibt (wenn man seine Installationsdatenträger verloren hat...) Gibt zumindest noch so Abandon-Ware-Seiten, die das anbieten. Da ist es ratsam, gleich nach der Collectors Edition zu suchen, weil man bei den DOS-Versionen nicht immer weiß, welche Version man jetzt wirklich erhalten hat. Benötigt werden die Verzeichnisse:
GEODATA
GEOGRAPH
MAPS
ROUTES
SOUND
TERRAIN
UFOGRAPH
UFOINTRO
UNITS
Hinweis an dieser Stelle: Da Linux bei Dateinamen case-sensitive ist, müssen die Ordner in Großbuchstaben geschrieben sein. Ansonsten findet das Spiel unter Linux die Dateien einfach nicht.
Es gibt inzwischen auch einen von der Community erarbeiteten Patch, der u. A. Map-Bugs und ähnliches behebt. Zu finden ist er unter http://openxcom.org/download/extras/universal-patch.zip. Wenn man zukünftig öfter selbst kompilieren will, kann man diese Files auch einfach mit denen vom Original-Spiel zusammen packen. Erst die oben genannten Ordner in ein Verzeichnis, dann die Verzeichnisse aus dem Patch-Archiv auch dort hin entpacken und ggf. überschreiben lassen. Das Ergebnis kann man sich wieder in ein Archiv für spätere Verwendung bunkern.
Zur Benutzung müssen evtl. noch Pakete nachinstalliert werden, insbesondere zum Compilieren:
Oder als ein Befehl zur Installation unter Ubuntu:
sudo apt-get install git libsdl1.2-dev libsdl-mixer1.2-dev libsdl-image1.2-dev libsdl-gfx1.2-dev libyaml-cpp-dev libboost-dev cmake cmake-curses-gui
Die -dev
-Pakete sind nur zum Kompilieren notwendig, deren kompilierte Versionen sollten eigentlich mit installiert werden, wenn man OpenXcom aus einem PPA installiert.
Man kann das Spiel auch installieren, hat dann allerdings die Einschränkung, dass Updates eher selten geschehen. Viele Mods laufen nur mit neueren Versionen, den sogenannten Nighlies. Dazu ist selbst kompilieren notwendig. Aber der Vollständigkeit halber die Installation:
sudo deb http://ppa.launchpad.net/knapsu/openxcom/ubuntu trusty main
sudo deb-src http://ppa.launchpad.net/knapsu/openxcom/ubuntu trusty main
sudo apt-get install openxcom
Dann noch die Original-Files an die richtige Stelle packen, direkt ins Verzeichnis /usr/local/share/openxcom/UFO/
. Für TFTD ist es der Ordner /usr/local/share/openxcom/TFTD/
. Dort sucht OpenXcom nach den Original-Files. Ggf. auch an anderer Stelle, aber es macht Sinn, hier konsistent zu bleiben, um keine Probleme zu bekommen. Mods gehören übrigens nicht mehr ins Spiele-Verzeichnis sondern nach $HOME/.local/share/openxcom/mods
, ein Verzeichnis tiefer, als auch die saved games liegen. Danach sollte man spielen können.
Man kann, bzw. muss das Spiel evtl. auch mal selbst kompilieren, z. B. weil neuere Mods auch neuere OpenXcom-Versionen benötigen. Über das PPA von oben sind Updates eher selten, sodass es notwendig sein kann, ein Nightly selbst zu kompilieren. Nightlies gibt es für Windows-User bereits vorkompiliert hier. Nur noch das Original-Verzeichnis füllen und schon ist man fertig. Als Ubuntu-User muss man für Nightlies allerdings selbst zum Compiler greifen. Das ist aber auch nicht unbedingt sonderlich schwer. Man kann das im Prinzip auch weitestgehend automatisieren.
bin/UFO/
der gerade entpackten Quell-Dateien kopieren/entpacken. Falls man noch TFTD rum liegen hat, das dann auch nach bin/TFTD/
kopieren.
src/version.h
den String #define OPENXCOM_VERSION_SHORT "1.0"
entsprechend abändern, z. B. auf #define OPENXCOM_VERSION_SHORT "1.0 Nightly 2015-06-05-12-13"
, für den 5.6.2015, 12:13 Uhr. Bei Windows-vorkompilierten nightlys von der Website ist z. B. ein automatischer Eintrag von Git enthalten.
build
im Quell-Verzeichnis anlegen und auf der Konsole dort hinein wechseln.
cmake ..
cmake -DCMAKE_BUILD_TYPE=Release ..
-DVariable=Variablenwert
die Pfade mit übergibt (siehe Punkte 8).
ccmake ..
cmake
mit den direkt übergebenen Optionen ausgeführt hat.
CMAKE_BUILD_TYPE
auf Release
setzen, alternativ auf Debug
.
CMAKE_INSTALL_PREFIX
auf den Pfad setzen, in den die OpenXcom-Binary später installiert werden soll. Standard ist /usr/local/
(voreingestellt), womit das Spiel im Ordner /usr/local/bin
landet.
DATADIR
auf den Pfad des Ziel-Ordners für die Daten-Files (Originale) setzen. Die weiter oben in die Sourcen kopierten Files werden dann dort während des nachfolgenden Prozesses hin kopiert. Gibt man keinen Pfad an, landen die Daten in /usr/local/share/openxcom/data/
.
c
für configure
drücken
e
um aus dem configure
-Bildschirm wieder raus zu kommen.
g
zum Generieren und Beenden von ccmake
drücken.
make -j3
make install
CMAKE_INSTALL_PREFIX
oder DATADIR
einen Ordner angegeben hat, für den man die Schreibrechte nicht hat, muss man unter einem Benutzer kompilieren, der die Rechte dazu hat. Beim Standard-Pfad sind also Root-Rechte notwendig:
sudo make install
Damit ist die Kompilation abgeschlossen (sofern nicht irgendwelche Fehler dabei aufgetreten sind...). In diesem Fall dürfte man bei Standard-Pfaden einfach loslegen können. Hat man an den Pfade rum editiert, z. B. um das Spiel als User irgendwo zum Laufen zu bekommen, also ohne richtige Installation, kann man sich noch ein Start-Skript schreiben:
#!/bin/sh
"Pfadzu/openxcom" -data "Pfadzu/data"
mit den jeweiligen Pfaden zu OpenXcom bzw. dem Original-Verzeichnis. Das Skript dann unter $HOME/bin/
ablegen, und z. B. openxcom
nennen, ausführbar machen und schon kann man OpenXcom auch ohne Admin-Rechte für die Installation im eigenen Home-Bereich spielen, indem in der Konsole einfach openxcom
eingibt. Das Skript kann natürlich auch irgendwo anders liegen, z. B. auf dem Desktop, wo man es dann auch anderweitig starten kann.
Wenn man richtig viel Wert auf Optik legt, kann man für das eben erstellte Start-Skript auch ein Desktop-File anlegen, um das eben kompilierte OpenXcom z. B. auch in den Starter von Gnome integrieren zu können:
[Desktop Entry]
Name=OpenXcom
Exec=<Pfadname/zum/OpenXcom-Skript>
Type=Application
StartupNotify=true
Path=<Pfad/zum/OpenXcom-Skript>
Icon=<Pfad/zum/OpenXcom-Ordner>/common/openxcom.png
Dieses File dann z. B. unter dem Namen OpenXcom.desktop
speichern und ausführbar machen. Dieses File kann im Prinzip irgendwo liegen, allerdings empfiehlt es sich für Ubuntu mit Gnome, es unter ~/.local/share/applications
abzulegen, da dort auch der Starter nachsucht. Für alle Benutzer ist der Ordner /usr/share/applications
aber besser geeignet, weil so alle das Symbol finden können.
Wichtig: Die eben installierten Files im Original-Ordner werden möglicherweise nicht verwendet, wenn in einem anderen der abgesuchten Pfade noch ein UFO- oder TFTD-Ordner gefunden wird. Daher empfiehlt es sich, alle anderen Original-Ordner entweder zu löschen oder wenigstens umzubenennen (z. B. data alt
oder so ähnlich). Man kann evtl. weitere vorhandene Original-Ordner mit einem einfachen Befehl finden:
sudo find / -name BACKPALS.DAT
sudo
ist notwendig, weil man sonst u. U. nicht alle Pfade findet, bzw. ständig Fehlermeldungen wegen fehlender Rechte die Ausgabe unterbrechen. Die Datei BACKPALS.DAT
ist Teil des UFO-Verzeichnisses und sollte theoretisch nur ein mal auf der Platte vorkommen, sofern man sie nicht noch woanders gebunkert hat. Sollten sich mehrere Pfade finden lassen, die data/GEODATA/BACKPALS.DAT
am Ende haben, sind das genau solche möglichen Problemstellen.
Im Prinzip kann man den kompletten Kompilations-Vorgang auch vollständig automatisieren, mit einem Skript der Form:
echo "Lade Quelldateien von github..."
wget https://github.com/SupSuper/OpenXcom/archive/master.zip
echo 'Entpacke "master.zip"...'
unzip master.zip
echo "Wechsle ins neu erstellte Quellen-Verzeichnis..."
cd OpenXcom-master
echo 'Entpacke Patch- und Vanilla-Files ins "bin/UFO/"-Verzeichnis...'
<Entpack- oder Kopierbefehl der Vanilla- und Patch-Files nach ./bin/UFO/>
d=`date +%Y-%m-%d-%H-%M`
echo Ändere Versions-String von \"1.0\" zu \"1.0 Nightly $d\"
perl -pi -e 's/SHORT "1.0"/SHORT "1.0 Nightly '$d'"/g' src/version.h
echo 'Lege Verzeichnis "build" an...'
mkdir build
echo 'Wechsle nach "build"...'
cd build
echo 'Konfiguriere make als "Release"...'
cmake -DCMAKE_BUILD_TYPE=Release ..
echo 'Compiliere OpenXcom...'
make -j10
echo 'Installiere OpenXcom...'
sudo make install
echo 'Entferne nicht mehr benötigte "master.zip"...'
rm ../../master.zip
Das Skript lädt die Quellen runter, entpackt sie, kopiert/entpackt die Original- bzw. Patch-Files ins UFO-Verzeichnis, ändert den Versions-String und kompiliert ein Release-build inkl. anschließender Installation. Die nicht mehr benötigte zip-Datei mit den Quellen wir auch noch entfernt. Hinweis: Es ist nicht empfohlen, das Skript einfach zwei mal ablaufen zu lassen, wenn es möglich ist, dass sich einiges an der Ordner-Struktur geändert hat. Besser die alten OpenXcom-master
-Ordner vor dem Ausführen löschen! (Lässt sich natürlich auch automatisieren, so wie vieles andere....)
Hauptseite « Old-Games « X-COM « OpenXcom kompilieren