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.