Start > Algorithmik > Labyrinthe und Irrgärten > labgen

labgen: Labyrinth-Generator

LabGen ist ein OpenGL-Programm zum Erstellen, Anzeigen und Durchwandern von Irrgärten, die als einfache Textdatei (Karte) erstellt werden können.

  1. Beschreibung
  2. Download
  3. Installation und Deinstallation
  4. Entwicklungsgeschichte

Beschreibung

Karte

LabGen übersetzt Karten in eine begehbare 3D-Darstellung. Dazu sucht es beim Aufruf im aktuellen Ordner nach der Karten­datei labgen.map mit folgendem Aufbau:

; labgen.map
######################
#     #              #
#     #              #
#  #  #  #  ### ###  #
#  #  #  #  #  #  #  #
#  #  #  #  #  #  #  #
#  #     #           #
?  #     #           #
?  ###########   #####
?  #     #           #
#  #     #  x        #
#  #  #  #  #  #  #  #
#  #  #  #  #######  #
#     #              #
#     #              #
######################

In diesem Textformat stellen Rautenzeichen Mauern und Leerzeichen den Boden dar. Optional kann ein x für den Startpunkt des Betrachters und ein ? für ein Ziel (z.B. Ausgang) angegeben werden, was zur Ausgabe der benötigten Zeit führt. Semikola leiten Zeilenkommentare ein.

Findet LabGen keine Kartendatei, generiert es eine eigene, zufallsbasierte Karte.

Ressourcen

LabGen sucht beim Aufruf im aktuellen Verzeichnis nach folgenden Ressourcen­dateien:

DateinameFunktion
bg.wavHintergrundmusik (Windows)
bg.mp3Hintergrundmusik (Linux)
bg.pngHimmel
wall.pngMauer

Somit läßt sich das Programm mit eigenen Texturen / Musik anpassen. Die obigen Dateien können als Beispiel und Startpunkt für eigene Anpassungen heruntergeladen werden.

Findet LabGen keine Ressourcen­dateien, verwendet es interne Ressourcen (Normalfall).

Steuerung

Im Programm schaltet F11 auf Vollbild um. Ein Nachtmodus ist verfügbar. Weitere Befehle finden sich in der Hilfe (F1).

Download

Das Programm kann als Archiv heruntergeladen werden:

Windows: labgen.zip [65 KB, 64 bit, MD5]
Linux: labgen.tgz [84 KB, 64 bit, MD5]

Nach dem Download ist eine Prüfung auf Virusfreiheit und Authentizität zu empfehlen.

Installation und Deinstallation

Installation oder Deinstallation des Programms sind nicht notwendig. Da sich das Programm nicht in System­dateien einträgt, ist ein portabler Betrieb möglich. Das Programm kann in einen Ordner eigener Wahl kopiert werden.

Getestet wurden Windows 10-11, Ubuntu 18, Mint 20-22 und Slax 9.11.

Windows

Das Programm benötigt keine systemfremden Bibliotheken.

Linux

Das Programm benötigt die Bibliotheken OpenGL, ALSA und FreeGlut, die in normalen Linux-Distributionen standardmäßig vorhanden sind (s. aber nachfolgende Ausführungen zu den einzelnen Systemen!).

Unter Linux kann statt einer einfachen Verknüpfung auf dem Desktop (Schreibtisch) eine sog. Desktop-Datei angelegt werden, die es erlaubt, ein Icon auf dem Desktop anzuzeigen und den aktuellen Ordner auf den Programm­ordner zu legen, damit Begleit­dateien (eigene Klänge, Texturen oder Karten) beim Programm­start gefunden werden.

Exemplarisches Vorgehen für einen Benutzer namens Tim:

  1. Die Programmdateien in einen Benutzerordner kopieren, z. B. nach /home/tim/bin
  2. Der Programmdatei labgen im Ordner ausführbare Rechte gewähren, z. B. 755
  3. Eine Desktop-Datei labgen.desktop im Ordner /home/tim/Schreibtisch mit folgendem Inhalt anlegen:
    [Desktop Entry]
    Type=Application
    Name=labgen
    Path=/home/tim/bin
    Exec=/home/tim/bin/labgen
    Icon=/home/tim/bin/labgen.svg
    Statt labgen.svg ist auch eine andere Bilddatei möglich, z. B. labgen.xpm
  4. Der Desktop-Datei ausführbare Rechte geben, z. B. 755

Zum Austesten verschiedener Texturen, Klänge oder Karten ist ein Start im Terminal empfehlenswert, um Fehler­meldungen angezeigt zu bekommen.

Fehlende Glut-Bibliothek

Unter manchen Systemen (Mint Wilma, Slax) ist Glut nachzu­installieren (apt install libglut3.12 oder apt install freeglut3).

Debian, Ubuntu, Mint: Fehlerhafte Glut-Bibliothek

Seit FreeGlut/3.4.0 findet labgen die Glut-Laufzeitbibliothek nicht mehr (Details). Der Fehler wurde von der Paket­betreuung Dez. 2024 in Debian Trixie mit FreeGlut/3.4.0-2 behoben. Bis Trixie ausgerollt wird, empfiehlt sich als Notbehelf, im Verzeichnis /usr/lib/x86_64-linux-gnu einen SymLink libglut.so.3 auf libglut.so.3.12 anzulegen:

$ cd /usr/lib/x86_64-linux-gnu
$ sudo ln -s libglut.so.3.12 libglut.so.3

Mint Wilma: Fehlerhafte Default-Konfi­guration des PipeWire-ALSA-Plugins

Ab Mint Wilma wurden Schrittklänge nicht mehr abgespielt. Grund ist eine fehlerhafte Default-Konfi­guration des PipeWire-ALSA-Plugins (umgangen in labgen/1.3.1).

Entwicklungsgeschichte

Ziel: Weitgehende Unabhängigkeit von Bibliotheken, ohne Programmgröße aufzublähen.

Ver.Inhalt
0.9Prototyp, dankbar inspiriert durch Jeff Molofee auf nehe.gamedev.net.
1.0Gangbild und Kollisionserkennung.
Windows: Glut-Emulation, somit keine Abhängigkeit mehr.
1.1Spielerlogik, Edge Following.
RLE-Bitmaps und Wave-Audio-Dateien für Ressourcen.
1.2Zufallskarten und interne Ressourcen, somit LabGen einzeln lauffähig.
PNG statt Bitmaps.
1.3Monsterkrake PulseAudio durch mehr verfügbare ALSA-Bibliothek ersetzt.
Hintergrundmusik für Linux, Threads.
MP3 statt Wave-Audio.
Code-Überarbeitung, Programmgröße unter 100 KB gedrückt.
1.3.1Fix für PipeWire: In Mint 22 sind im standardmäßig installierten PipeWire-ALSA-Plugin nicht alle Audio-Formate des Safe ALSA Subset (U8, S16_LE, S16_BE, S32_LE, S32_BE, FLOAT_LE, FLOAT_BE, MU_LAW, A_LAW) bei Ausgabe auf das Standard-ALSA-Ausgabegerät (was auf PipeWire verweist) verfügbar, wie aplay zeigt:
aplay step.als
aplay: set_params:1371: Sample-Format nicht unterstützt

Die Ausgabe auf das Pulse-Plugin (-Dpulse) oder die direkte Ausgabe über PulseAudio (paplay) oder PipeWire (gw_play) funktionierten hingegen tadellos.
Lösung: LabGen testet nun mehrere Ausgabegeräte.
Fix für falsches SONAME-Feld von libglut.so: Patche DT_NEEDED in labgen von libglut.so.3.12 auf libglut.so.3.
1.3.2Schrittfrequenz leicht erhöht.
© 2020, 2025 asdala.de: Kon­takt & Daten­obhut