a5a28840b10245eb4de14edcc8812b9327cd0de7
BSPViz
BSPViz ist ein kompaktes Go-Tool zum Analysieren von Doom-WAD-Dateien. Es lädt Maps, inspiziert Geometriedaten und baut daraus BSP-Bäume samt Statistiken oder Visualisierungen. Das Projekt entstand im Rahmen einer Seminararbeit und dient als Baukasten, um verschiedene BSP-Build-Heuristiken auszuprobieren.
Features
- Lädt klassische Doom-WADs und listet die enthaltenen Lumps
- Extrahiert einzelne Lumps als Dateien zum Debuggen
- Führt Geometrie-Diagnosen (Segment-Splits, Bounding Boxes) durch
- Baut BSP-Bäume mit konfigurierbaren Parametern und misst resultierende Metriken
- Exportiert BSP-Strukturen als DOT, optional weiterverarbeitbar zu PNG
Voraussetzungen
- Go >= 1.25 (siehe
go.mod) - Graphviz (nur nötig, wenn DOT-Dateien gerendert werden sollen)
- Eine Doom-kompatible WAD-Datei als Eingabe
Graphviz installieren
- Linux (Debian/Ubuntu):
sudo apt install graphviz - macOS (Homebrew):
brew install graphviz - Windows (Chocolatey):
choco install graphviz
Alternativ stehen aktuelle Pakete und Installationshinweise auch auf der offiziellen Seite: https://graphviz.org/download/
Installation
git clone <dein-repo-url>
cd bspviz
go build ./...
Alternativ lässt sich das Tool ohne vorherigen Build direkt ausführen:
go run ./main.go -wad MYMAP.wad -map MAP01 -info
Verwendung
Wichtige Flags (vollständige Übersicht mit -h):
-wad <pfad>(Pflicht): Pfad zur WAD-Datei.-map <name>: Map-Marker wieMAP01,E1M1oder benutzerdefinierte Namen.-list: WAD-Verzeichnis anzeigen und beenden.-info: Basisstatistiken zu Vertices und Linedefs ausgeben.-extract <L1,L2>: Angegebene Lumps (z. B.VERTEXES,LINEDEFS) nach-outspeichern.-geomtest: Segment- und Split-Diagnose für die gewählte Map ausgeben.-buildbsp: BSP-Baum erzeugen; Parameter wie-alpha,-beta,-leafmax,-maxdepth,-candsund-seedsteuern das Verhalten.-dot <datei.dot>: Gebauten BSP als DOT exportieren (setzt-buildbspvoraus; benötigt ein installiertes Graphviz für die weitere Verarbeitung).
Beispiel: BSP bauen und als PNG visualisieren (Graphviz vorausgesetzt):
go run ./main.go -wad MYMAP.wad -map MAP01 -buildbsp -dot tree.dot
dot -Tpng tree.dot -o tree.png
Entwicklung
- Code formatieren:
gofmt -w . - Tests ausführen:
go test ./... - Temporäre Artefakte (DOT/PNG) sind über
.gitignorebereits ausgeschlossen.
Beiträge, Erweiterungen oder neue Heuristiken sind willkommen.
Description
Languages
Go
100%