OpenRCT2

Bild des Benutzers meldrian

Eine freie Open Source Portierung von RollerCoaster Tycoon 2. Sie basiert massiv auf Inhalten des Originalspiels und fühlt sich daher selbst für Liebhaber des Klassikers wie das Original an. Das Spiel selbst wurde in einer modernen Programmiersprache neu geschrieben was es der Community leichter macht Inhalte hinzuzufügen oder bereits bestehende Inhalte zu verbessern. Auf der Homepage wird ein direkter Vergleich zu OpenTTD gestellt, was den zukünftigen Werdegang erahnen lässt. Zum Spielen sind die Originaldateien von RollerCoaster Tycoon 2 erforderlich, fertige Binaries werden von den Entwickler direkt bereitgestellt.

Installation

Allgemein

Man benötigt die Original-Dateien des Spiels RollerCoaster Tycoon 2. Neben den vielen Optionen zum Kauf der Daten besteht auch die Möglichkeit Dateien der frei zugänglichen Demo (siehe auch Rechts unter Downloads) zu verwenden. Die Entwickler bitten allerdings darum das Spiel zu kaufen um Chris Sawyer für sein Machwerk auch weiterhin Tribut und Anerkennung zu zollen.

Binaries

Die Binaries könnt ihr fertig gebaut für Linux von der Webseite herunterladen. Entpackt dieses und kopiert den Inhalt der Demo-Zip-Datei in ein eigenes Verzeichnis z.B. data-orig. Beim Starten des Spiels öffnet sich ein Dialog und dort könnt ihr das eben angelegte und befüllte Verzeichnis angeben. Schon startet das Spiel.

Unter OpenSUSE Leap 42.2 mussten noch die beiden Pakete libzip und libjansson nachinstalliert werden, erstere brauchte noch einen Symlink von der Version 2 auf die vorhandene Version 4.

Selbst bauen

Vor dem ersten Start des Spiels müssen die originalen Spieldateien zu verlinken.
Hierzu öffnet man die Datei config.ini unter $XDG_CONFIG_HOME/OpenRCT2/config.ini (typischerweise ~/.config/OpenRCT2/config.ini) bzw. legt diese dort an.
Dort hinein schreibt man die beiden folgenden Zeilen oder benennt die Datei aus dem Anhang um:

[general]
game_path = "/euer/Pfad/zu/den/Spieldateien/"
^ Beispielsweise  "/home/user/.wine/dosdevices/c:/GOG Games/RollerCoaster Tycoon 2 Triple Thrill Pack (German)/"

Arch Linux

Das aktuelle Entwicklungspaket liegt im AUR und kann z.B. mit yaourt -S openrct2-git installiert werden. Wer lieber Releases mag kann z.B. mit yaourt -S openrct2 auf die letzte Version zurückgreifen.
In beiden Fällen solltet Ihr den Anweisungen auf dem Bildschirm folgen.

Manuell

Das Programm selbst zu kompilieren (unter bspw. Ubuntu) ist ein im Vergleich schwieriger Prozess der viele Fallstricke aufweist. Zum einen fahren viele Benutzer bereits eine 64bit Distribution, für die Kompilierung werden aber explizit einige 32bit-dev Pakete benötigt. Zum anderen gibt es Probleme mit den 'curl'-Bibliotheken, was sich mit einem cmake-Zusatz aber umgehen lässt.

Vorbereitungen

Um selbst kompilieren zu können benötigt man mindestens

  • SDL2, SDL2_ttf, speex, curl, openssl, jansson

Unter Ubuntu oder Debian lässt sich alles benötigte laut dieser Seite wie folgt installieren:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install --no-install-recommends -y --force-yes cmake libsdl2-dev:i386 libsdl2-ttf-dev:i386 gcc-4.8 pkg-config:i386 g++-4.8-multilib gcc-4.8-multilib libjansson-dev:i386 libspeex-dev:i386 libspeexdsp-dev:i386 libcurl4-openssl-dev:i386 libcrypto++-dev:i386
wget https://launchpad.net/ubuntu/+archive/primary/+files/libjansson4_2.7-1ub...
wget https://launchpad.net/ubuntu/+archive/primary/+files/libjansson-dev_2.7-...
sudo dpkg -i libjansson4_2.7-1ubuntu1_i386.deb
sudo dpkg -i libjansson-dev_2.7-1ubuntu1_i386.deb

Sind alle Notwendigkeiten gegeben, beschafft man sich die eigentlichen Quelldateien von der Github-Seite und entpackt diese an eine gewünschte Stelle.
Im Anschluss darf man sich mit dem build-prozess beschäftigen. Erstellt einen Ordner 'build' in eurem openRCT2-Ordner. In diesem navigiert ihr dann im Terminal und gebt die nachfolgenden Befehle ein.

rm -R CMakeFiles CMakeCache.txt cmake_install.cmake
PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig/:$PKG_CONFIG_PATH cmake ../
make all g2

Problemfälle

/usr/include/features.h:374:25: fatal error: sys/cdefs.h: Datei oder Verzeichnis nicht gefunden

Sollte

/usr/include/features.h:374:25: fatal error: sys/cdefs.h: Datei oder Verzeichnis nicht gefunden

beim make-Prozess auftreten, lässt sich dies hoffentlich durch das Ausführen von

sudo apt-get install gcc-multilib

beheben.

src/cmdline.c:22:31: fatal error: argparse/argparse.h: Datei oder Verzeichnis nicht gefunden

Die folgende Fehlermeldung

~/OpenRCT2-develop/src/cmdline.c:22:31: fatal error: argparse/argparse.h: Datei oder Verzeichnis nicht gefunden

verschwand, nachdem die Zip-Datei orctlibs.zip heruntergeladen und der Inhalt des sich darin befindlichen Ordners local in den Ordner lib in den OpenRCT2 Ordner kopiert wurde. (  cp -r "$srcdir/local" lib )

/usr/include/c++/4.8/exception:37:28: fatal error: bits/c++config.h: Datei oder Verzeichnis nicht gefunden

Die Meldung

/usr/include/c++/4.8/exception:37:28: fatal error: bits/c++config.h: Datei oder Verzeichnis nicht gefunden

wird vermutlich durch das fehlende Paket lib32stdc++-4.8-dev geworfen. Installiert dieses über den Paketmanager.
unter /usr/include/x86_64-linux-gnu/c++/4.8/32/bits/ sollte dann besagte c++config.h zu finden sein.

/usr/include/curl/curlrules.h:143:41: error: size of array ‘__curl_rule_01__’ is negative [CurlchkszEQ(long, CURL_SIZEOF_LONG)];

Stolpert man beim kompilieren über die folgenden Meldungen

/usr/include/curl/curlrules.h:143:41: error: size of array ‘__curl_rule_01__’ is negative
     [CurlchkszEQ(long, CURL_SIZEOF_LONG)];
/usr/include/curl/curlrules.h:153:53: error: size of array ‘__curl_rule_02__’ is negative
     [CurlchkszEQ(curl_off_t, CURL_SIZEOF_CURL_OFF_T)];

ist es am einfachsten cmake mit einem Parameter zu starten, welcher CURL aus dem Prozess ausschliesst.

cmake -DDISABLE_HTTP_TWITCH=On $restliche_cmake_optionen

collect2: error: ld returned 1 exit status

Falls im Terminal folgende Fehlermeldung auftaucht

[100%] Building C object CMakeFiles/openrct2.dir/lib/lodepng/lodepng.c.o
Linking CXX executable openrct2
/usr/bin/ld: cannot find -lSDL2_ttf
/usr/bin/ld: cannot find -lSDL2
/usr/bin/ld: cannot find -lspeexdsp
collect2: error: ld returned 1 exit status

lässt sich dies durch einige simlinks für die betroffenen Komponenten korrigieren. Ein beispielhaftes Vorgehen würde so aussehen (je nach Distribution zu verändern):

sudo ln -s /usr/lib/i386-linux-gnu/libSDL2-2.0.so.0 /usr/lib/i386-linux-gnu/libSDL2.so
sudo ln -s /usr/lib/i386-linux-gnu/libSDL2_ttf-2.0.so.0 /usr/lib/i386-linux-gnu/libSDL2_ttf.so
sudo ln -s /usr/lib/i386-linux-gnu/libspeexdsp.so.1 /usr/lib/i386-linux-gnu/libspeexdsp.so

src/drawing/sprite.c:110 (gfx_load_g2)]: Unable to load g2 graphics

Bekommt man nun noch die Fehlermeldung, dass irgendwelche g2 Grafiken nicht gefunden werden,

FATAL[/home/michael/spiele/OpenRCT2-develop/src/drawing/sprite.c:110 (gfx_load_g2)]: Unable to load g2 graphics

führt man die nun vorliegende openrct2 wie folgt aus

./openrct2 sprite build data/g2.dat resources/g2/

Dann sollte/könnte/dürfte vielleicht gegebenenfalls eventuell unter Umständen das Spiel spielbar sein.
Trivia:
In einer 32bit Chroot-Umgebung / auf einer 32bit virtuellen Maschine traten die meisten der oben beschriebenen Probleme gar nicht erst auf.

Dedicated Server

Den Server könnt ihr im Spiel aus dem Menü heraus starten.
Zusätzlich gibt es die Möglichkeit den Server im Terminal laufen zu lassen:

openrct2 --headless --port 11753 ~/.config/OpenRCT2/save/Savegamename.sv6

Screenshots und Videos
Anhänge
meldrian
Bild des Benutzers meldrian
Offline
Beigetreten: 12.05.2009
Beiträge: 1538

Der Multiplayer-Modus ist noch die reinste de-sync Hölle, macht aber unheimlich Spaß.
Läuft auf älterer Hardware (Eee PC 1001, Intel Atom SingleC 1,6Ghz, 1GB RAM, IntelHD) sowie in virtuellen Maschinen (VirtualBox).
Feinstes Retro.