Map-Kompilierung mit Trenchbroom

In dumptruck_ds’ Video-Tutorial-Serie zum Thema “Quake-Mapping mit Trenchbroom” wird in der ersten Folge der Editor und die Tools zur Compilierung der Maps vorgestellt und eingerichtet. Dabei müssen mehrere Tools nacheinander mit dem Output des jeweils vorhergehenden Tools aufgerufen werden. Zur schnellen und effizienten Kompilierung der Map-Files ist also eine Verkettung und damit Automatisierung des Kompilierungsprozesses notwendig. Unter Windows gibt es hier für Necros’ Compiling GUI, welche auch im gerade genannten Video vorgestellt und erklärt wird. Leider gibt es dieses Tool nicht für Linux (oder zumindest habe ich es nirgends gefunden ;-)). Das soll aber auch kein Problem sein, da der Editor Trenchbroom die gewollte Funktionalität selbst beherrscht. Das Setup und die Verkettung der Compiling-Tools ist vielleicht nicht intuitiv, weshalb ich das hier kurz beschreiben will:

Die notwendigen Optionen findet man unter:

Hauptmenüleiste: Run > Compile

Wählt man diese Option aus, dann öffnet sich ein neues Fenster. Hier möchten wir ein neues Profil anlegen, wozu wir auf das “+” des Containers “Profiles” klicken. Es erstellt sich ein neues Profil, welches nun einen aussagekräftigen (oder auch nicht ;-)) Namen erhält. Zudem definieren wir hier das working directory für alle involvierten Tools. Ich habe das Profil “standard” genannt und als working directory:

/home/frederic/quakedev/working/

angegeben. Ist das Profil so angelegt, können nun die einzelnen Schritte des Kompilierungsprozesses definiert werden, indem im rechten Container “Details” wiederrum das kleine “+” betätigt wird und die gewünschte Schrittart ausgewählt wird. Hier schlage ich folgende Schritte vor:

1. Export Map
Mit diesem Schritt wird die mit Trenchbroom erstellte Map in ein anderes Verzeichnis verschoben. Wir verschieben hiermit die Map-Datei in unser working directory, damit die darauf folgenden tools diese verwenden können. Der Wert im target-Feld sieht bei mir wie folgt aus:

${WORK_DIR_PATH}/${MAP_BASE_NAME}-compile.map

${WORK_DIR_PATH} und ${MAP_BASE_NAME} sind in diesem Fall Variablen, die der Editor mit den entsprechenden Werten füllt. Also für WORK_DIR_PATH wird das working directory eingesetzt, welches wir zuvor definiert haben und für MAP_BASE_NAME wird der Name der Map-Datei eingesetzt.

2. Run Tool
Als erstes Tool des eigentlichen Compilierungsprozesses definieren wir qbsp. Dies ist ein Tool, welches die Geometrie und die Kollisionsdaten der Map berechnet und als output eine .bsp-Datei zur Verfügung stellt. Man muss hier den vollständigen Pfad zur Binärdatei angeben. Ich habe folgende Werte definiert:

Pfad: /home/frederic/quakedev/tools/ericw-tools-v0.18.1-32-g6660c5f-Linux/bin/qbsp
Parameters: ${MAP_BASE_NAME}-compile.map ${MAP_BASE_NAME}.bsp

Die Werte im Parameters-Feld werden dem Tool (definiert im Pfad) so übergeben, wie also ob man das das Tool mit diesen Parametern über die command line aufrufen würden. In diesem Fall ist ${MAP_BASE_NAME}-compile.map das Map-File, welches durch den Export-Job im working directory hinterlegt wurde. ${MAP_BASE_NAME}.bsp ist der Name der output-Datei. Man beachte, dass die Parameter (wie auf der command line) durch ein Leerzeichen getrennt werden.

3. Run Tool
Als nächstes Tool definieren wir vis. Dies ist ein Tool, welches die potentiell sichtbaren Bereiche der Map berechnet.

Pfad: /home/frederic/quakedev/tools/ericw-tools-v0.18.1-32-g6660c5f-Linux/bin/vis
Parameters: ${MAP_BASE_NAME}.bsp

Als Parameter übergeben wir nur den Namen der .bsp-Datei, da die Datei mit diesem Namen gelesen und wieder geschrieben wird.

4. Run Tool
Das letzte Tool des eigentlichen Compilierungsprozesses ist light, welches – wie der Name schon vermuten lässt – die Beleuchtung der Map berechnet und in der Map hinterlegen.

Pfad: /home/frederic/quakedev/tools/ericw-tools-v0.18.1-32-g6660c5f-Linux/bin/light
Parameter: -soft -extra4 ${MAP_BASE_NAME}.bsp

Die Parameter -soft und -extra4 werden übergeben, damit die Schatten in der Map relativ weich gezeichnet werden. Es gibt hier einige mögliche Parameter, die das Ergebnis der Beleuchtungsberechnung stark beeinflussen können.

5. Copy Files
Der letzte Job ist das Kopieren der fertig kompilierten Map- bzw. .bsp-Datei in das Verzeichnis, auf das Quake später zugreifen wird.

Source: ${WORK_DIR_PATH}/${MAP_BASE_NAME}.bsp
Target: /home/frederic/quakedev/id1/maps/

Source ist eben die fertig kompilierte .bsp-Datei im working directory.
Target ist das Ziel der Kopier-Operation.

Wer genauere Beschreibungen der Tools und vorallem der übergebbaren Parameter haben möchte, der sollte sich z.B. die Dokumentation der Tools von EricW durchlesen.

Neverwinter Nights Enhanced Edition von GoG will nicht (direkt) starten

Ich hatte mir vor ein paar Tagen die Neverwinter Nights Enhanced Edition bei GoG gekauft, als so ziemlich alle D&D-Spiele im Angebot waren und weil ich einen guten D&D-Simulator haben wollte ;-).
Nun wollte ich das Spiel heute das erste Mal unter Linux Mint 19 starten, und musste leider feststellen, dass es hier noch einige Probleme gibt.
Wenn man das Spiel über den Desktop-Shortcut, welcher durch das Installationsscript erstellt wird, startet, dann startete das Spiel zunächst gar nicht. Um hier etwas mehr Informationen über die dahinter liegenden Probleme zu erhalten, kann man das Spiel über die command line starten:

~$ <installationsverzeichnis>/start.sh 

oder

~$ <installationsverzeichnis>/game/bin/linux/nwmain-linux

Zunächst wurde ich damit konfrontiert, dass anscheinend noch libs fehlen, da es sich hier um 32bit Spiel handelt. Es werden hierbei z.B. Fehler, wie folgender geworfen:

ALSA lib conf.c:3523:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so

Dies lässt sich aber schnell durch Nachinstallation der fehlenden libs beheben:

sudo apt install libopenal1:i386
sudo apt install libasound2-plugins:i386

Nach der Installation der fehlenden Bibliotheken waren zwar die Fehlermeldungen, die beim Starten über die command line geworfen wurden, verschwunden, aber ich erhielt nun einen schwarzen Bildschirm, den ich nur nach vielfachem “Raus-Tab-Versuch” verlassen durfte ;-). Was war hier nun das Problem? Nach längerer Recherche habe ich herausgefunden, dass die Linux-Version anscheinend ein Problem mit dem Full-Screen-Modus hat. Die Lösung ist relativ simpel, und wenn man es weiß auch logisch, man muss einfach den Full-Screen-Modus, der standardmäßig initial gestartet wird, deaktivieren. Dies geht ganz einfach, indem man die nwn.ini-Datei entsprechend editiert. Die findet sich in der Regel unter:

~/.local/share/Neverwinter\ Nights/nwn.ini

Hier müssen die folgenden Zeilen entsprechend angepasst werden (sofern man ein Vollbild-Erlebnis haben möchte):

FullScreen=0
FullScreenDesktopMode=1
Borderless=1

Speichert man diese Änderungen, dann startet das Spiel, wie es soll. Unter z.B. XFCE kann es sein, dass bei dieser Konfiguration die Taskleiste einen Teil des Bildes verdeckt. Das ist störend und vielleicht sogar behindernd, da hier Menüflächen des Spiels überdeckt werden. Hier kann man dann aber ganz einfach per Rechts-Klick auf die Taskschaltfläche des Spiels klicken und die Option “Immer im Vordergrund” wählen. Und TADA, wir haben ein wunderbar laufendes Spiel im Vollbild. Viel Spaß!

Hinweis:
Wie immer übernehme ich keine Verantwort oder Garantie für Veränderungen, die ihr motiviert durch diese kurze Lösungsanleitung an eurem System durchführt. Sobald man mit root-Rechten agiert, ist immer Vorsicht geboten!

Brogue 1.7.5 und die fehlenden libs

Brogue ist ein wirklich hervorragendes Roguelike, jedoch kommt es bei der aktuellen Version 1.7.5 häufig zu folgenden Fehlern beim Versuch das Spiel zu starten:

$ ./brogue
./brogue: error while loading shared libraries: libncurses.so.6: cannot open shared object file: No such file or directory
./brogue: error while loading shared libraries: libtinfo.so.6: cannot open shared object file: No such file or directory

Hier versucht Brogue libraries zu verwenden, die so nicht auf dem System vorhanden sind. Sucht man dann nach der fehlenden lib:

$ find / -iname "*ncurses*"
[...]
/lib/x86_64-linux-gnu/libncurses.so.5.9

findet man meist die lib in einer anderen Version.
Da Brogue nicht zwingend die lib in der Version 6 benötigt, gibt es eine einfache und schnelle Lösung zu diesem Problem. Man erstellt einfach einen symbolic link auf die vorhandene lib:

$ sudo ln -s /lib/x86_64-linux-gnu/libncurses.so.5.9 /lib/x86_64-linux-gnu/libncurses.so.6
$ sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.5.9 /lib/x86_64-linux-gnu/libtinfo.so.6

Startet man nun Brogue:

$ ./brogue

Startet das Spiel und man kann in die Tiefen der Dungeons of Doom hinabsteigen, um das Amulet von Yendor zu suchen.

Hinweis:
Da bei der Erstellung der symbolic links mit sudo, also mit root-Rechten hantiert wird, ist natürlich Vorsicht geboten. Man kann hier leicht etwas kaputt machen. Gerade bei der Reihenfolge der Parameter von ln kann man schnell durcheinanderkommen. Ich übernehme keine Garantie und Verantwortung dafür, dass die hier vorgeschlagene Lösung Schäden verursacht oder ungewünschte Nebeneffekte mitsich bringt.

Bei der Sommersonnenwende auf Irrwegen durch den Teutoburger Wald vom Hermannsdenkmal zu den Externsteinen

Wie schon im letzten Jahr, waren mein guter Freund P. und ich am Tag der Sommersonnenwende auf den Pfaden der Germanen unterwegs und sind dabei vom Hermannsdenkmal zu den Externsteinen durch den Teutoburger Wald gewandert. Dabei wollten wir so wenig, wie möglich, die moderne Technik von GPS und Map-Apps nutzen und haben uns zunächst an den Schildern und Wanderwegweisern orientieren. So richteten wir uns schon am Hermannsdenkmal nach einem dort platzierten Wegweiser, der in Richtung der Externsteine wies bzw. weisen sollte (dazu gleich mehr) und wanderten los. Nach einiger Zeit (ungefähr eine Stunde) gelangten wir dann jedoch zu einem Wegweiser, der genau in die Richtung zeigte, aus der wir gerade kamen, und uns wurde langsam klar, dass wir zum einen den um das Hermannsdenkmal und im Teutoburger Wald aufgestellten Wegweisern nicht zwingend trauen konnten und zum anderen, dass wir eine ganze Zeit bereits in die falsche Richtung gewandert waren. Als wir dies realisierten, drehten wir um und gingen zurück zum Hermannsdenkmal. Als wir wieder am Denkmal ankamen, hatten wir schon 4 Kilometer und ca. 1,5 Stunden auf dem Zähler. Wir wählten dann einen anderen, tendenziell richtigen Weg, der uns jedoch anscheinend in einem Bogen, und damit auf viel längerem Weg zu den Externsteinen führte. Zu weiteren Verwirrungen trug der Umstand bei, dass anscheinend im gesamten Teutoburger Wald durch einen Sturm viele, teils sehr große Bäume um geknickt bzw. umgefallen waren, die zum einen die Wege blockierten, aber zum anderen auch die Optik des Weges veränderten, sodass wir auch hierdurch nicht immer den richtigen Weg wiedererkannten. Eine Strecke vom Hermannsdenkmal zu den Externsteinen ist normalerweise ca. 10km lang, hin und zurück wären es also ca. 20 km gewesen. Bei dieser Wanderung haben wir aber schon auf der einen Strecke, die wir gewandert sind, 22km (!) zurückgelegt und benötigten dafür ca. 6,5 Stunden. Während des ganzen Tages war das Wetter sehr wechselhaft, strahlend blauer Himmel mit Sonnenschein wechselte sich immer wieder mit einer grauen Bewölkung ab und am Ende, als wir auf den Externsteinen über den Teutoburger Wald schauten, fing es auch noch an relativ stark zu regnen, sodass wir ziemlich nass wurden.
Aufgrund dieser Umstände, also der bereits zurückgelegten Strecke, der dadurch schon recht fortgeschrittenen Zeit (es war 20:30 Uhr als wir auf den Externsteinen standen) und der Wetterlage sowie der durchnässten Kleidung entschieden wir uns, dass wir den Rückweg mit dem Taxi machen, da wir sonst noch bis tief in die Nacht hätten durch den Teutoburger Wald wandern müssen. Auch wenn dies natürlich einer kleinen Niederlage gleich kommt, siegte am Ende die Vernunft. Alles in allem war es doch eine schöne Zeit und eine schöne Wanderung aus der ich bzw. wir für die Zukunft und die nächsten längeren Wanderungen sicherlich einige Lehren ziehen werden.
Hier folgend, kann man sich, wie immer, einige Eindrücke der Wanderung ansehen.

Kleine Runde durch die Leucht

Sauna im Rheurdter Staatsforst

Nach einem kurzen Regenschauer sind meine Freundin S. aus N.-V. und ich bei Sonnenschein und ca. 25°C durch den Rheurdter Staatsforst gewandert. Leider hat die Kombination von nassem Wald und Sonnenschein dazu geführt, dass die Luftfeuchtigkeit extrem hoch war und man sich wie im tropischen Urwald vorkam. Dennoch war die Wanderung sehr schön und entspannend. Wenn man eine kurze Wanderung durch einen schönen, relativ unberührten Wald erleben möchte, dann ist der Rheurdter Staatsforst genau das Richtige.
Hier folgend kann man einige der Eindrücke sehen, die wir auf der ca. 6,4km langen Wanderung erlebt haben:

Umrundung des Elfrather Sees

Bei strahlendem Sonnenschein und 25°C sind meine Freundin S. aus N.-V. und ich am bzw. um den Elfrather See gewandert. Es war ein wirklich schöner Spaziergang, bei dem viel geredet und sich noch besser kennengelernt wurde. Die Strecke (6,5km), die wir zurückgelegt haben sieht man oben und hier unten kann man einige optische Eindrücke finden:

Bei der Sommersonnenwende auf den Spuren der Germanen im Teutoburger Wald

Teutoburger Wald von unten
Blick in die Wipfel des Teutoburger Waldes

Am 21.06.2017, dem Tag der Sommersonnenwende 2017, begaben sich mein guter Freund P. und ich uns auf die Spuren und Pfade der alten Germanen und wanderten durch den Teutoburger Wald, der sich in Nord-Nordrhein Westfalen und Süd-Niedersachsen erstreckt. Die Start- respektive Endpunkte der Wanderung waren zum einen das Hermannsdenkmal und zum anderen die Externsteine. Wir haben die Wanderung in zwei Etappen aufgeteilt und sind zunächst vom Hermannsdenkmal zu den Externsteinen und dann zurück von den Externsteinen zum Hermannsdenkmal gewandert, wobei jede Etappe eine Strecke ca. 10km war. Hier sollen einige Impressionen dieser Wanderung geteilt und dargestellt werden.