Internet, Linux & IT

Spiele und Desktop streamen mit Sunshine und Moonlight

Gestern habe ich auf Youtube den Erfahrungsbericht von Keno zum Spiele-Streaming mit Sunshine und Moonlight gesehen. Ich selbst hatte auch schon verschiedene Lösungen wie Parsec und Stream Remote Play ausprobiert. Wirklich überzeugen konnte mich aber bisher nichts.

Da ich die Kombination von Sunshine (Server) und Moonlight (Client) noch nicht kannte, habe ich es einmal ausprobiert, mit meinem Windows PC als Server und einem Raspberry PI4 2GB als Client. Ob es brauchbar ist, muss sich noch zeigen.

Die Installation war aber leider gerade auf Client-Seite etwas fummelig, daher hier meine Notizen:

Windows Host:

Die Installation erfolgte ohne Probleme: Einfach den aktuellen sunshine-windows-installer.exe von der Homepage laden und den Anweisungen des Installationsprogramms folgen.

Linux Client:

Das aktuelle Raspberry OS (bookworm) in der Lite-Version mit dem Raspberry Pi Imager auf eine SD-Karte installieren. Dabei kann direkt SSH, WLAN sowie ein eigener User konfiguriert werden.

Nach dem Booten konnte dann der Moonlight Client enstprechend der Anleitung installiert werden mit den Befehlen:

user@linux ~ $ curl -1sLf 'https://dl.cloudsmith.io/public/moonlight-game-streaming/moonlight-qt/setup.deb.sh' | distro=raspbian sudo -E bash sudo apt install moonlight-qt

Moonlight kann man dann grundsätzlich mit dem folgenden Befehl starten:

user@linux ~ $ moonlight-qt

Nach der Installation ggf. die Kernel-Parameter in Datei /boot/firmware/cmdline.txt um folgende zwei Parameter erweitern:

video=HDMI-A-1:1920x1080M@60 usbhid.mousepoll=0

Der erste Parameter stellt die Auflösung fest ein. Dies ist sinnvoll, falls diese nicht korrekt erkannt wird, was bei meinem Monitor der Fall war. Übrigens, dass Aktivieren der Anzeige-Option "4K Output" in raspi-config führte bei mir dazu, dass Moonlight keine Bildausgabe schaffte (Ich habe allerdings auch keinen 4K Monitor). Der zweite Parameter hilft dabei, falls die Maus zu langsam ist.

Zuächst funktionierte bei mir der Ton in Moonlight nicht. Hier half es, Pulseaudio zu installieren und anschliessend mit Raspi-Config den Audio-Ausgang auf den korrekten HDMI-Port zu legen:

user@linux ~ $ sudo apt install pulseaudio
user@linux ~ $ sudo raspi-config

Damit jetzt noch Pulseaudio und Moonlight in der richtigen Reihenfolge automatisch beim einschalten des Raspis gestartet werden, musste ich im Verzeichnis /lib/systemd/system zwei .service-Dateien anlegen:

/lib/systemd/system/pulseaudio.service:

[Unit]
Description=pulseaudio
After=rc-local.service
Before=moonlight.service

[Service]
Type=simple
User=pi
ExecStart=/usr/bin/pulseaudio --daemonize=no --log-target=journal

[Install]
WantedBy=multi-user.target

/lib/systemd/system/moonlight.service:

[Unit]
Description=moonlight
After=rc-local.service
After=pulseaudio.service

[Service]
Type=simple
User=pi
ExecStart=/usr/bin/moonlight-qt

[Install]
WantedBy=multi-user.target

Damit diese Services auch automatisch beim Systemstart gestartet werden, noch die Befehle ausführen:

user@linux ~ $ sudo systemctl enable pulseaudio.service
user@linux ~ $ sudo systemctl enable moonlight.service

Computerspiele

SiN

Mit Dominatrix ist ein Source Port für das Spiel SiN aus dem Jahr 1998 erschienen. Neben dem Source Port selbst wird auf der Homepage auch auch ein Installer bereitgestellt, mit dem die Spieldateien bequem von der Windows-CD unter Linux installiert werden können.

Computerspiele

Windowstaste umbelegen

In Computerspielen verwende ich gerne die linke Windowstaste für bestimmte Bewegungen (v.a. Ducken). Leider lässt sich diese nicht in allen Spielen binden, sondern ruft dann das Windows-Menü auf. Abhilfe schafft das kleine Tool AutoHotkey.

Dazu im Order Dieser PC > Dokumente eine Konfigurationsdatei mit dem Dateinamen AutoHotkey.ahk anlegen, um so beispielsweise die linke Windowstaste (LWin) auf einen anderen Buchstaben, hier "p", zu mappen:

LWin::p

Dieses Skript wird beim Start des Tools automatisch ausgeführt.

Computerspiele

Quake 2

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Yamagi Quake 2 mit Neural Upscale Mod

Yamagi Quake 2 mit Neural Upscale Mod

Für ein originalgetreues Spielerlebnis der Singleplayer-Kampagne von Quake 2 aus dem Jahr 1997 verwende ich den Source Port Yamagi Quake II mit der grafischen Modifikation Quake 2 Neural Upscale.

Das Spiel

Grundsätzlich wird auch für den Source Port eine Originalversion des Spiels benötigt. Wer das Spiel nicht ohnehin bereits auf CDROM besitzt, kann es u.a. bei Steam oder GOG erwerben. Laut Internetforen ist bei den digitalen Versionen allerdings nicht immer der Soundtrack enthalten.

Die Modifikationen

Die Modifikation Quake 2 Nueral Upscale enthält mit Verfahren der künstlichen Intelligenz hochskalierte Versionen der Originalgrafiken, welche auf den heutigen hochauflösenden Monitoren optisch ansprechender sind als die Originalgrafiken.

Die Verzeichnisstruktur und Spieldateien

Es wird davon ausgegangen, dass sich die Original-(Windows/Steam/GOG)-Version von Quake 2 im Ordner ~/Quake2 befindet. Hier werden zusätzlich gemäß den nachfolgenden Anweisungen die Dateien der Modifikationen und die Audiodateien des Soundtracks abgelegt. Der Source Port wird über die Paketverwaltung des Betriebssystems ausserhalb dieses Verzeichnisbaums installiert. Die Ordnerstruktur sieht in etwa wie folgt aus:

~/Quake2                    Originalversion von Quake 2
├── baseq2                  Datendateien des Hauptspiels und Modifikationen
│   ├── music               Verzeichnis für Soundtrack des Hauptspiels
│   ├── players
│   │   ├── crakhor
│   │   ├── cyborg
│   │   ├── female
│   │   └── male
│   ├── save
│   │   ├── current
│   │   └── save0
│   └── video
├── ctf                     Erweiterung Capture the Flag (optional)
├── docs
│   └── quake2_manual
│       └── images
├── rogue                   Erweiterung Ground Zero (optional)
│   ├── docs
│   ├── music               Verzeichnis für Soundtrack der Erweiterung
│   └── video
└── xatrix                  Erweiterung The Reckoning (optional)
    ├── docs
    ├── music               Verzeichnis für Soundtrack der Erweiterung
    └── video

Installation von Yamagi Quake II unter Gentoo Linux

Eine (fast) aktuelle Version von Yamagi Quake II ist in der offiziellen Paketdatenbank von Gentoo Linux enthalten. Ich empfehle die Installation mit den folgenden USE-Flags:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="client ctf dedicated openal opengl rogue softrender vulkan xatrix" emerge games-fps/yamagi-quake2 -pv

Download der Modifikationen

Die benötigten Dateien der Modifikationen können von folgenden Seiten bezogen werden:

Installation der Modifikationen

Es wird davon ausgegangen, dass sich alle heruntergeladenen Dateien im Ordner ~/Downloads befinden.

user@linux ~ $ cp ~/Downloads/quake2-neural-upscale-models-2.0.1.pkz ~/Quake2/baseq2/
user@linux ~ $ cp ~/Downloads/quake2-neural-upscale-textures-2.0.1.pkz ~/Quake2/baseq2/

Installation der Musikdateien:

Der Soundtrack von Quake 2 und den beiden Erweiterungen befindet sich nur in Form von separaten Tonspuren auf den jeweiligen Original-CDs. Das hantieren mit CDs ist in der heutigen Zeit natürlich unpraktisch und die Source Ports haben dafür eine elegante Lösung parat: sie können die Musik auch ohne CD abspielen, wenn die Tonspuren mit einem geeigneten Programm (z.B. K3b) ausgelesen und als Musikdateien im Ogg Vorbis-Format mit bestimmten Dateinamen in bestimmten Verzeichnissen abgelegt wurden:

  • Die Tonspuren von Quake 2 können mit den Dateinamen 02.ogg bis 12.ogg im Verzeichnis ~/Quake2/baseq2/music abgelegt werden.
  • Die Tonspuren von Ground Zero können mit den Dateinamen 02.ogg bis 11.ogg im Verzeichnis ~/Quake2/rogue/music abgelegt werden.
  • Die Tonspuren von The Reckoning können mit den Dateinamen 02.ogg bis 11.ogg im Verzeichnis ~/Quake2/xatrix/music abgelegt werden.

Starten von Yamagi Quake II

Um Yamagi Quake 2 zu starten, muss lediglich in das Verzeichnis ~/Quake2 gewechselt werden und dort das systemweit installierte Programm yquake2 aufgerufen werden. Die im Verzeichnis baseq2 abgelegten Modifikationen werden automatisch geladen. Parameter sind lediglich für die Auswahl der Erweiterungen erforderlich.

1. Start des Hauptspiels:

user@linux ~ $ cd ~/Quake2
user@linux ~/Quake2 $ yquake2

2. Start der Erweiterung Ground Zero:

user@linux ~ $ cd ~/Quake2
user@linux ~/Quake2 $ yquake2 +set game rogue

3. Start der Erweiterung The Reckoning:

user@linux ~ $ cd ~/Quake2
user@linux ~/Quake2 $ yquake2 +set game xatrix

Computerspiele

Heretic

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Heretic (1994)

Heretic (GZDoom) m. Neural Texture Pack

Den Fantasy-Doom-Clone Heretic aus dem Jahr 1994 spiele ich mit dem Source Port GZDoom. Für ein aufgewertetes, aber immer noch weitgehend originalgetreues Spielerlebnis kombiniere ich diesen mit der grafischen Modifikation Heretic Neural Texture Pack und den musikalischen Modifikationen Dwars's Heretic HQ SFX Pack sowie dem Heretic SC-55 Music Pack oder alternativ dem Heretic Music Cover by Xeotroid.

Das Spiele

Grundsätzlich wird auch für den Source Port eine Originalversion des Spiels benötigt. Diese kann u.a. bei GOG.COM erworben werden.

Die Modifikationen

Die Modifikation Heretic Neural Texture Pack enthält mit Verfahren der künstlichen Intelligenz hochskalierte Versionen der Originalgrafiken, welche auf den heutigen hochauflösenden Monitoren optisch ansprechender sind als die Originalgrafiken.

Dwars's Heretic HQ SFX Pack enthält originalgetreue Neuaufnahmen der Soundeffekte in hoher Tonqualität. In mühevoller Kleinarbeit wurden entweder die Originalquellen der Soundeffekte ermittelt oder annähernd gleichklingende Samples abgemischt.

Das Heretic SC-55 Music Pack enthält Aufnahmen der Original-MIDI-Soundtracks von einem echten Roland MIDI Synthesizer im SC-55 Standardprofil. Der SC-55 war in den 90er Jahren bei Komponisten beliebt und die MIDI-Wiedergabe auf diesen Geräten entspricht daher am ehesten der Originalkomposition. Alternativ ist das Heretic Music Cover by Xeotroid für den Soundtrack empfehlenswert.

Die Verzeichnisstruktur und Dateien für den Source Port

Alle für Heretic benötigten Datendateien sollen der Einfachheit halber unterhalb des Ordners ~/Heretic abgelegt werden, so dass am Ende die folgende Ordner/Dateistrukur entsteht:

~/Heretic
├── dos                             ORIGINAL DOS-VERSION VON HERETIC
│   ├── HERETIC.WAD                 Datendatei von Heretic
│   └── ...
└── mods
    ├── audio                       MODIFIKATIONEN AUDIO:
    │   ├── sfxogg.wad              Dwars's Heretic HQ SFX Pack
    │   ├── heretic_sc55_ogg.zip    Heretic SC-55 Music Pack
    │   └── HereticPK3.pk3          Heretic Music Cover by Xeotroid
    │
    └── graphics                    MODIFIKATIONEN GRAFIK:
        └── heretic_gz.pk3          Heretic Neural Texture Pack

Aufbau der Verzeichnisstruktur und Ablage der Original-Spieldaten

Zuerst werden die Verzeichnisse angelegt:

user@linux ~ $ mkdir -p ~/Heretic/{dos,mods/audio,mods/graphics}

Anschließend werden die Dateien des DOS-Originalspiels in den Ordner ~/Heretic/dos kopiert. Für den Source Port ist die WAD-Datei HERETIC.WAD ausreichend.

Installation von GZDoom unter Gentoo Linux

Die aktuelle Version von GZDoom ist in der offiziellen Paketdatenbank von Gentoo Linux enthalten. Ich empfehle die Installation mit den folgenden USE-Flags:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="gtk non-free openmp vulkan -debug gles2 -telemetry" emerge games-fps/gzdoom -pv

Download der Modifikationen

Die benötigten Dateien der Modifikationen können von folgenden Seiten bezogen werden:

  • Heretic Neural Texture Pack (Version 4.0.1 für GZ): heretic_gz.pk3
  • Dwars's Heretic HQ SFX Pack (OGG-Version for GZDoom, 06/28/21): sfxogg.wad
  • Heretic SC-55 Music Pack (OGG Pack): heretic_sc55_ogg.zip
  • Heretic Music Cover by Xeotroid (Game Covers -> Heretic -> For ZDoom-based ports): HereticPK3.pk3

Installation der Modifikationen

Es wird davon ausgegangen, dass sich alle heruntergeladenen Dateien im Ordner ~/Downloads befinden.

user@linux ~ $ cp ~/Downloads/heretic_gz.pk3 ~/Heretic/mods/graphics/
user@linux ~ $ cp ~/Downloads/{sfxogg.wad,heretic_sc55_ogg.zip,HereticPK3.pk3} ~/Heretic/mods/audio/

Starten und Konfigurieren von GZDoom

Um GZDoom mit der gewünschten Kombination von Spiel(daten) und Modifikationen zu starten, gibt es zwei Möglichkeiten: Entweder werden die Informationen in Form von Kommandozeilenparametern bei Programmstart übergeben, oder sie werden in einer Konfigurationsdatei hinterlegt und können anschließend bei Programmstart über ein Popup ausgewählt werden. Für beide Varianten gilt, dass nach dem ersten Programmstart im Options-Menü Einstellungen vorgenommen werden sollten. Mehr dazu unten.

Hinweis: Falls GZDoom schon früher verwendet wurde, empfehle ich, die alte Konfigurationsdatei ~/.config/gzdoom/gzdoom.ini zu löschen, um bei der Konfiguration mit einer sauberen Ausgangslage zu beginnen.

1. Auswahl von Spiel(daten) und Modifikationen per Kommandozeile:

Heretic mit SC-55 Music Pack:

user@linux ~ $ gzdoom -iwad ~/Heretic/dos/HERETIC.WAD -file ~/Heretic/mods/graphics/heretic_gz.pk3 -file ~/Heretic/mods/audio/sfxogg.wad -file ~/Heretic/mods/audio/heretic_sc55_ogg.zip

Heretic mit Music Cover by Xeotroid:

user@linux ~ $ gzdoom -iwad ~/Heretic/dos/HERETIC.WAD -file ~/Heretic/mods/graphics/heretic_gz.pk3 -file ~/Heretic/mods/audio/sfxogg.wad -file ~/Heretic/mods/audio/HereticPK3.pk3

2. Auswahl von Spiel(daten) und Modifikationen per Popup:

Analog zu den Angaben in meinem Beitrag zu Doom.

3. GZDoom nach dem ersten Start konfigurieren

Analog zu den Angaben in meinem Beitrag zu Doom.

Computerspiele

Blood

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Blood (1997)

NBlood mit Upscale Pack

Für die Singleplayer-Kampagnen des DOS-Spiels Blood aus dem Jahr 1997 verwende ich den Source Port NBlood mit der Modifikation Blood Upscale Pack, welche optional mit dem Blood Voxel Pack kombiniert werden kann.

Der Source Port NBlood

Mit NBlood lässt sich Blood nativ unter Linux mit heutigen Bildschirmauflösungen und wahlweise einem Software- oder OpenGL-Renderer spielen

Mit Stand vom 19.11.2021 unterstützt der NBlood-Hauptentwicklungszweig (master) allerdings noch nicht das Feature "indexed hightiles" (u.a. Definition von "T_INDEXED" in der Datei source/build/src/defs.cpp). Dieses wird benötigt, wenn das aktuelle Upscale-Paket (Version 2.1) verwendet werden soll und ist im Entwicklungszweig "upscale" enthalten (commit).

Der NBlood-Entwicklungszweig "upscale" kann wie folgt heruntergeladen und kompiliert werden:

Im Folgenden wird davon ausgegangen, dass sich die DOS-Version von Blood im Ordner ~/Blood befindet. Auf Abhängigkeiten zu externen Bibliotheken wird an dieser Stelle nicht eingegangen.

user@linux ~/Blood $ git clone https://github.com/nukeykt/NBlood.git
user@linux ~/Blood $ cd NBlood
user@linux ~/Blood/NBlood $ git checkout upscale
user@linux ~/Blood/NBlood $ make

Soll das Upscale-Paket nicht verwendet werden oder wurde die "indexed hightiles" Funktionalität in den Hauptzweig aufgenommen, kann auf den Befehl "git checkout upscale" verzichtet werden.

Die Installation des Gentoo-Pakets aus dem inoffiziellen Overlay jorgicio (enthält nicht die "indexed hightiles" Funktionalität) ist unabhängig von dessen Verwendung vor dem Kompilieren der GIT-Version empfehlenswert, da so automatisch alle benötigen Bibliotheken installiert werden:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="flac fluidsynth gtk opengl pulseaudio server timidity vorbis vpx xmp tools" emerge nblood -pv

Zuletzt von mir verwendete Revision: dfbee4aa6c233af062147d9cb873b217b322201d

Die Mods Blood Upscale Pack und Blood Voxel Pack

Das Upscale Pack enthält mit Verfahren der künstlichen Intelligenz hochskalierte Versionen der Originalgrafiken, welche auf den heutigen hochauflösenden Monitoren optisch ansprechender sind als die Originalgrafiken. Es enthält außerdem eine ebenfalls hochskalierte Version der Modifikation Smoothblood, welche das Spiel um flüssigere Waffenanmiationen ergänzt.

Das Voxel Pack ersetzt die 2D-Sprites einiger Objekte durch 3D-Modelle. Leider sind die Texturen dieser 3D-Modelle nicht analog zu den Grafiken des Upscale Packs hochskaliert und die betroffenen Objekte wirken in der Spielewelt daher pixeliger als die im Upscale-Pack enthaltenen Grafiken. Hier muss man abwägen, was besser gefällt: auf die restliche Optik abgestimmte 2D-Sprites mit feineren Pixeln oder 3D-Modelle mit etwas gröberen Pixeln.

Die Mods können wie folgt heruntergeladen werden:

Die Mods können wie folgt installiert werden:

Im Folgenden wird davon ausgegangen, dass die heruntergeladenen Dateien im Ordner ~/Downloads gespeichert wurden.

Upscale Pack:

user@linux ~ $ mkdir -p ~/Blood/mods/blood-upscale-pack-v2.1
user@linux ~ $ unzip ~/Downloads/bloodupscalepack.zip -d ~/Blood/mods/blood-upscale-pack-v2.1/

Voxel Pack:

user@linux ~ $ mkdir -p ~/Blood/mods/blood-voxel-pack-v0.95
user@linux ~ $ cp ~/Downloads/voxels_blood_v095.zip ~/Blood/mods/blood-voxel-pack-v0.95/.

NBlood kann mit den installierten Mods wie folgt gestartet werden:

Reguläre Kampagne und Plasma Pak:

user@linux ~/Blood $ NBlood/nblood -g mods/blood-upscale-pack-v2.1/autoload/base-component.zip -g mods/blood-upscale-pack-v2.1/autoload/smoothblood_upscale.zip -g mods/blood-voxel-pack-v0.95/voxels_blood_v095.zip -h mods/blood-upscale-pack-v2.1/blood.def

Offizielle Erweiterung Cryptic Passage:

user@linux ~/Blood $ NBlood/nblood -ini CRYPTIC.INI -g mods/blood-upscale-pack-v2.1/autoload/base-component.zip -g mods/blood-upscale-pack-v2.1/autoload/smoothblood_upscale.zip -g mods/blood-voxel-pack-v0.95/voxels_blood_v095.zip -h mods/blood-upscale-pack-v2.1/blood.def

Der gewünschte Renderer (Software oder OpenGL) kann gemeinsam mit der Bildschirmauflösung über das Popup bei Programmstart ausgewählt werden.

Soll das Voxel-Pack nicht verwendet werden, ist es ausreichend, den Kommandozeilenparameter "-g mods/blood-voxel-pack-v0.95/voxels_blood_v095.zip" wegzulassen.

Anmerkung: Die Definitionsdatei blood.def aus dem Upscale-Pack sieht bereits die Integration des Voxel-Packs vor und enthält bereits dessen Definitionen. Daher ist es nicht erforderlich, die dem Voxel-Pack beiliegende Definitionsdatei zusätzlich zu laden.

Multiplayer

Ob Multiplayerspiele mit NBlood möglich sind, habe ich bislang weder recherchiert noch ausprobiert. Ggf. ist hier ein anderer Source Port erforderlich oder es muss auf die ursprüngliche DOS-Version mit DOSBox zurückgegriffen werden.

Nachtrag - Auch interessant:

Blood: HQ sound effects [44 kHz]

Computerspiele

Shadow Warrior

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Shadow Warrior (1997)

VoidSW mit HRP und Upscale Pack

Für die Single-Player-Kampagnen des DOS-Spiels Shadow Warrior aus dem Jahr 1997 verwende ich den Source Port VoidSW mit der Modifikation Shadow Warrior Upscale Pack v1.1. Alternativ bzw. ergänzend denke ich über den Einsatz ausgewählter Bestandteile der Mod HRP Shadow Warrior nach.

DOS-Version von Shadow Warrior

Auch für den Source Port muss eine Originalversion des Spiels vorhanden sein. Falls dies nicht der Fall ist, kann die DOS-Version von Shadow Warrior kostenlos über GOG.COM bezogen werden. Hierzu den "Linux-Installer" des Spiels herunterladen (Datei gog_shadow_warrior_classic_complete_2.0.0.4.sh) und im Ordner ~/Downloads speichern. Die Installation kann wie folgt erfolgen:

1. Linux-Installer ausführbar machen, aufrufen und das Gesamtpaket im Vorgabeverzeichnis (~/GOG Games/Shadow Warrior Classic Complete) installieren:

user@linux ~/Downloads $ chmod 755 gog_shadow_warrior_classic_complete_2.0.0.4.sh
user@linux ~/Downloads $ ./gog_shadow_warrior_classic_complete_2.0.0.4.sh

2. Dateien der DOS-Version aus der GOG-Installation in den Ordner ~/ShadowWarrior kopieren:

user@linux ~/Downloads $ cp -R ~/GOG\ Games/Shadow\ Warrior\ Classic\ Complete/data ~/ShadowWarrior

3. Korrekte benannte Symlinks zu den Audiodateien anlegen, damit der Soundtrack in VoidSW abgespielt wird:

user@linux ~/Downloads $ cd ~/ShadowWarrior
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track02.ogg track02.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track03.ogg track03.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track04.ogg track04.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track05.ogg track05.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track06.ogg track06.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track07.ogg track07.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track08.ogg track08.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track09.ogg track09.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track10.ogg track10.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track11.ogg track11.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track12.ogg track12.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track13.ogg track13.ogg
user@linux ~/ShadowWarrior $ ln -s MUSIC/Track14.ogg track14.ogg

Die Modifikationen Shadow Warrior Upscale Pack und HRP Shadow Warrior

Das Upscale Pack enthält mit Verfahren der künstlichen Intelligenz hochskalierte Versionen der Originalgrafiken, welche auf den heutigen hochauflösenden Monitoren optisch ansprechender sind als die Originalgrafiken. Das HRP enthält hochauflösende, von Fans neu erstellte Grafiken und 3D-Modelle.

Leider enthält das Shadow Warrior Upscale Pack noch keine hochskalierten Texturen, sondern nur hochskalierte Sprites. Diese gefallen mir dafür in einigen Fällen deutlich besser als die hochauflösenden Versionen im HRP. Insbesondere im Fall der Monster gefallen mir die Sprites deutlich besser als die 3D-Modelle des HRPs, welche zudem noch unvollständig animiert und damit aus meiner Sich auch insgesamt unbrauchbar sind. Bei Zerstörung eines Monsters mit dem Schwert springt nämlich die Anzeige zwischen 3D-Modell und Sprite hin- und her. Auch sind die Grafiken im HRP naturgemäß nicht immer originalgetreu und beispielsweise sieht der Himmel im ersten Level der ersten Episode schon deutlich anders als im Original und im Upscale Pack aus. Dies muss nicht stören, ist aber Geschmackssache.

Da im HRP die einzelnen Bestandteile (z.B. Texturen, Monster-Modelle, Voxels, Schriften, etc.) gut strukturiert und mit jeweils separaten Definitionsdateien versehen sind, kann es nicht nur vollumfänglich verwendet werden, sondern relativ einfach auch eine eigene Auswahl von bestimmten Bestandteilen getroffen werden. Beispielsweise bietet es sich an, das Upscale Pack mit den Texturen des HRPs zu kombinieren. Dazu unten mehr.

Der Source Port VoidSW

Mit VoidSW lässt sich Shadow Warrior nativ unter Linux mit heutigen Bildschirmauflösungen und wahlweise einem Software- oder OpenGL-Renderer spielen. Es ist Bestandteil des eDuke32-Projektes, einem Source Port für Duke Nukem 3D.

Mit Stand vom 20.11.2021 unterstützt der VoidSW-Hauptentwicklungszweig (master) noch nicht das Feature "indexed hightiles" (u.a. Definition von T_INDEXED in source/build/src/defs.cpp). Dieses ist im Entwicklungszweig "upscale" enthalten und wird benötigt, wenn das Upscale-Paket zusammen mit dem klassischen Software-Renderer verwendet werden soll.

Der VoidSW-Entwicklungszweig "upscale" kann wie folgt heruntergeladen und kompiliert werden:

Im Folgenden wird davon ausgegangen, dass sich die DOS-Version von Shadow Warrior im Ordner ~/ShadowWarrior befindet. Auf Abhängigkeiten zu externen Bibliotheken wird an dieser Stelle nicht näher eingegangen.

user@linux ~/ShadowWarrior $ git clone https://voidpoint.io/terminx/eduke32.git voidsw
user@linux ~/ShadowWarrior $ cd voidsw
user@linux ~/ShadowWarrior/voidsw $ git checkout upscale
user@linux ~/ShadowWarrior/voidsw $ make sw

Das HRP funktioniert nur mit dem OpenGL-Renderer vollständig.

Soll das Upscale-Paket oder der Software-Renderer nicht verwendet werden, oder wurde die "indexed hightiles" Funktionalität in den Hauptzweig aufgenommen, kann auf den Befehl "git checkout upscale" verzichtet werden und der Hauptzweig verwendet werden. Alternativ könnte dann auch die (ggf. nicht so aktuelle) Version von VoidSW aus dem Gentoo-Repository verwendet werden (Paket: games-fps/eduke32) - sie enthält die "indexed hightiles" Funktionalität ebenfalls noch nicht.

Die Installation des Gentoo-Pakets (enthält nicht die "indexed hightiles" Funktionalität) ist unabhängig von dessen Verwendung vor dem Kompilieren der GIT-Version empfehlenswert, da so automatisch alle benötigen Bibliotheken installiert werden:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE=" fluidsynth gtk opengl png server timidity tools voidsw vpx xmp -duke3d -hrp -offensive -opl -psx -sc-55 -sdk -voxels" emerge eduke32 -pv

Zuletzt von mir verwendete Revision: 3a30f5a7a68c175e534b2476be737fffbe2d08db

Issue 208: Mausbewegungen sind sehr langsam

Im Hauptentwicklungszweig (master) sind mit Stand vom 20.11.2021 die Mausbewegungen in VoidSW sehr langsam. Dieser Regressionsfehler wurde durch 2 Commits verursacht und mit Issue 208 berichtet. Der Upscale-Entwicklungszweig ist derzeit nicht so stark besprochen, da dort nur einer von den beiden verursachenden Commits enthalten ist. Bis zur zentralen Fehlerbehebung kann der eine Commit (upscale-Zweig) bzw. können die beiden Commits (master-Zweig) lokal rückgängig gemacht werden, indem vor dem Ausführen des Befehls "make sw" die folgenden Befehle ausgeführt werden:

user@linux ~/ShadowWarrior/voidsw $ wget https://voidpoint.io/terminx/eduke32/-/commit/08d6271dfe4efbe84f4baf46bd324cd624aca6a5.diff
user@linux ~/ShadowWarrior/voidsw $ patch -R -p1 < 08d6271dfe4efbe84f4baf46bd324cd624aca6a5.diff
user@linux ~/ShadowWarrior/voidsw $ wget https://voidpoint.io/terminx/eduke32/-/commit/b51b553460b711b6965dda2e18e37b696312e191.diff
user@linux ~/ShadowWarrior/voidsw $ patch -R -p1 < b51b553460b711b6965dda2e18e37b696312e191.diff

Die Mods können wie folgt heruntergeladen werden:

  • Shadow Warrior Upscale Pack Version 1.1: swupscale.zip
  • HRP Shadow Warrior: Download der aktuellsten Version (Rev 21) aus dem SVN-Repository http://svn.eduke32.com/sw_hrp/ (siehe unten)

Die Mods können wie folgt installiert werden:

Upscale Pack:

Im Folgenden wird davon ausgegangen, dass die heruntergeladene Datei im Ordner ~/Downloads gespeichert wurde.

user@linux ~ $ mkdir -p ~/ShadowWarrior/mods/shadow-warrior-upscale-pack-v1.1
user@linux ~ $ cp ~/Downloads/swupscale.zip ~/ShadowWarrior/mods/shadow-warrior-upscale-pack-v1.1/.

High Resolution Pack (HRP):

Es wird eine zusätzliche, optionale Definitionsdatei für das gesamte HRP ohne 3D-Monster erzeugt.

user@linux ~ $ mkdir -p ~/ShadowWarrior/mods/shadow-warrior-hrp-svn
user@linux ~ $ cd ~/ShadowWarrior/mods/shadow-warrior-hrp-svn
user@linux /ShadowWarrior/mods/shadow-warrior-hrp-svn $ svn checkout http://svn.eduke32.com/sw_hrp
user@linux /ShadowWarrior/mods/shadow-warrior-hrp-svn $ grep -v "monsters" sw_hrp/highres/sw_hrp.def > sw_hrp/highres/sw_hrp_nomonsters.def
user@linux ~ $ cd sw_hrp
user@linux ~/ShadowWarrior/mods/shadow-warrior-hrp-svn/sw_hrp $ zip -r ../sw_hrp.zip *

VoidSW kann mit den installierten Mods wie folgt gestartet werden:

Software-Renderer mit Upscale-Pack

Voraussetzung: VoidSW-Version mit Unterstürzung für "indexed hightiles" (siehe oben)

Kampagne des Hauptspiels:

user@linux ~/ShadowWarrior $ voidsw/voidsw -gmods/shadow-warrior-upscale-pack-v1.1/swupscale.zip -mhswindexed.def

Kampagne der Erweiterung Wanton Destruction:

user@linux ~/ShadowWarrior $ voidsw/voidsw -addon1 -gmods/shadow-warrior-upscale-pack-v1.1/swupscale.zip -mhwdindexed.def

Kampagne der Erweiterung Twin Dragon:

user@linux ~/ShadowWarrior $ voidsw/voidsw -j`pwd`/dragon/ -addon2 -gmods/shadow-warrior-upscale-pack-v1.1/swupscale.zip -mhtdindexed.def

Der Software-Renderer muss gemeinsam mit der Bildschirmauflösung über das Popup bei Programmstart ausgewählt werden.

OpenGL-Renderer mit Upscale-Pack und HRP (ohne Monster)

Kampagne des Hauptspiels:

user@linux ~/ShadowWarrior $ voidsw/voidsw -gmods/shadow-warrior-upscale-pack-v1.1/swupscale.zip -hswupscale.def -gmods/shadow-warrior-hrp-svn/sw_hrp.zip -mhhighres/sw_hrp_nomonsters.def

Kampagne der Erweiterung Wanton Destruction:

user@linux ~/ShadowWarrior $ voidsw/voidsw -addon1 -gmods/shadow-warrior-upscale-pack-v1.1/swupscale.zip -hwdupscale.def -gmods/shadow-warrior-hrp-svn/sw_hrp.zip -mhhighres/sw_hrp_nomonsters.def

Kampagne der Erweiterung Twin Dragon:

user@linux ~/ShadowWarrior $ voidsw/voidsw -j`pwd`/dragon/ -addon2 -gmods/shadow-warrior-upscale-pack-v1.1/swupscale.zip -htdupscale.def -gmods/shadow-warrior-hrp-svn/sw_hrp.zip -mhhighres/sw_hrp_nomonsters.def

Der OpenGL-Renderer muss gemeinsam mit der Bildschirmauflösung über das Popup bei Programmstart ausgewählt werden.

Zu beachten ist, dass viele Texturen der Erweiterungen im HRP nicht enthalten sind; es werden stattdessen die Originaltexturen angezeigt.

Der obige Aufruf sieht vor, dass Inhalte im HRP vorrang gegenüber Inhalten im Upscale-Paket haben. Dies erfolgt, indem mit dem Parameter "-h" die Definitionsdatei des Upscale-Pakets als Hauptdefinitionsdatei geladen wird und mit dem Parameter "-mh" die Definitionsdatei des HRPs als Moduldefinitionsdatei geladen wird. Die Reihenfolge kann auf Wunsch auch getauscht werden.

Falls das HRP nicht verwendet werden soll, kann der Parameter "-mhhighres/sw_hrp_nomonsters.def" weglassen werden.

Falls nur bestimmte Bestandteile und nicht das vollständige HRP verwendet werden soll, kann der Parameter "-mhhighres/sw_hrp_nomonsters.def" durch beliebig viele Parameter entsprechend der nachfolgenden Tabelle ersetzt werden. Sollen beispielsweise nur die Texturen, Schilder und Knöpfe aus dem HRP verwendet werden, bietet sich stattdessen eine Kombination der Parameter "-mhhighres/textures.def -mhhighres/sprites/signs.def -mhhighres/sprites/switches.def" an.

ParameterHRP-Bestandteil
-mhhighres/sw_hrp.defVollständiges HRP
-mhhighres/sw_hrp_nomonsters.defVollständiges HRP außer 3D-Modelle der Monster
-mhhighres/screen/fonts.defOberfläche: Schriften
-mhhighres/screen/menu.deOberfläche: Menü
-mhhighres/screen/hud.defOberfläche: HUD
-mhhighres/skyboxes/skyboxes.defHimmel/Hintergründe
-mhhighres/sprites/decals.defSprites: Blutspuren
-mhhighres/sprites/effects.defSprites: Effekte
-mhhighres/sprites/monsters.def3D-Modelle: Monster
-mhhighres/sprites/pickups.defSprites und 3D-Modelle: Aufnehmbare Gegenstände
-mhhighres/sprites/props.defSprites und 3D-Modelle: Requisiten
-mhhighres/sprites/signs.defSprites: Schilder
-mhhighres/sprites/switches.defSprites: Schalter
-mhhighres/sprites/voxels.def3D-Modelle: Requisiten
-mhhighres/sprites/projectiles.defSprites: Projektile
-mhhighres/textures.defTexturen

Multiplayer

Ob Multiplayerspiele mit VoidSW möglich sind, habe ich bislang weder recherchiert noch getestet. Ggf. ist hier ein anderer Source Port erforderlich oder es muss auf die ursprüngliche DOS-Version mit DOSBox zurückgegriffen werden.

Auch Interessant - Für später merken:

Computerspiele

Duke Nukem 3D

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Duke Nukem 3D (1996)

Eduke32 mit High Resolution Pack inkl. 3D-Monster

Für die Single-Player-Kampagnen von Duke Nukem 3D aus dem Jahr 1996 verwende ich den Source Port EDuke32 mit der grafischen Modifikation High Resolution Pack (HRP) oder alternativ den Upscale- und Voxel-Packs aus dem Enhanced Resource Pack. Als musikalische Modifikationen kommen die Duke3D PSX Highres Sounds und das Roland SC-55 Music Pack hinzu. Um die Episode Alien World Order aus der relativ neuen 20th Anniversary Editon von Duke Nukem 3D spielen zu können, wird außerdem der Stopgap Compatibility Layer for EDuke32 benötigt. Für drei offizielle Erweiterungen gibt es zudem separate HRP Addons (Duke It Out In D.C., Duke: Nuclear Winter, Duke Caribbean: Life's A Beach) und Music Packs.

Für den Mehrspielermodus über das Internet kann entweder das ältere EDuke32-OldMP oder das neuere NetDuke32 verwendet werden. Diese separaten Source Ports sind erforderlich, da der Netzwerkmodus in der Hauptversion von EDuke32 selbst (noch) nicht funktionsfähig ist. Auf die Installation und Verwendung gehe ich vorerst nicht weiter ein; dies ergänze ich ggf. später.

Das Spiel Duke Nukem 3D und seine Erweiterungen

Grundsätzlich werden auch für die Source Ports die Datendateien der Originalspiele benötigt. Wenn diese nicht ohnehin bereits vorhanden sind, können die Spiele und Erweiterungen auf digitalen Plattformen käuflich erwerben werden.

Leider gibt es kein einzelnes Paket, dass alle der aufgeführten Spiele und Erweiterungen enthält. Die auf Steam erhältliche Duke Nukem 3D: 20th Anniversary World Tour enthält die ursprünglichen vier Episoden aus der Atomic Edition sowie die spieleswerte neue fünfte Episode Alien World Order, aber nicht die Erweiterungen. Dagegen enthält die auf Zoom-Platform erhältliche Duke Nukem 3D: Atomic Edition zwar nur die vier urspünglichen Episoden, aber als einziges mir bekanntes digitales Paket auch die Erweiterungen Duke Caribbean: Life's A Beach, Duke It Out in D.C., Duke Nukem's Penthouse Paradise, Duke! ZONE II (Includes ZONE I) und Duke: Nuclear Winter. Im Folgenden wird davon ausgegangen, dass mindestens eines dieser beiden Pakete oder die urspüngliche DOS-Version von Duke Nukem 3D oder der Atomic Edition vorliegt.

Die Modifikationen

Das High Resolution Pack (HRP) enthält hochauflösende, von Fans neu erstellte Grafiken und 3D-Modelle. Naturgemäß sind die Grafiken in solchen HRPs nicht immer ganz so originalgetreu wie die Grafiken von sogenannten Upscale Packs. Das Duke Nukem HRP ist meiner Meinung nach aber in sich stimmig und auch die 3D-Modelle überzeugen. Bei meinem letzten Spieldurchlauf vor etwa einem Jahr hatte ich das HRP genutzt und viel Spaß damit gehabt. Ergänzend gibt es mehr oder weniger vollständige HRP Addons für die drei Spieleerweiterungen Duke It Out In D.C., Duke: Nuclear Winter und Duke Caribbean: Life's A Beach.

Als Alternative zu dem HRP gibt es seit kurzem auch ein Upscale Pack, welches mit Verfahren der künstlichen Intelligenz hochskalierte Versionen der Originalgrafiken enthält. Die Grafiken sind nicht so hochauflösend wie im HRP, dafür aber naturgemäß originalgetreuer. Die aktuelle Version deckt bislang allerdings nur die ursprünglichen Episoden 1 bis 3 vollständig ab. Es bietet sich eine Kombination mit dem Voxel Pack an, welches einige 3D-Objekte ergänzt. Beide Modifikationen sind in dem Enhanced Resource Pack for Duke Nukem enthalten.

Die Modifikation Duke3D PSX Highres Sounds enthält Soundeffekte des Spiels in höherer Tonqualität.

Die Roland SC-55 Music Packs für das Hauptspiel und die beiden Erweiterungen Duke Caribbean und Nuclear Winter enthalten Aufnahmen der Original-MIDI-Soundtracks von einem echten Roland MIDI Synthesizer im SC-55 Standardprofil. Der SC-55 war in den 90er Jahren bei Komponisten beliebt und die MIDI-Wiedergabe auf diesen Geräten entspricht daher am ehesten der Originalkomposition. Das Duke It Out In D.C. Music Pack enthält einen von dem in der Community bekannten Komponisten James Paddock erstellten Soundtrack, da diese Erweiterung über keinen eigenen Soundtrack verfügt.

Der Stopgap Compatibility Layer for EDuke32 wird benötigt, um die Duke Nukem 3D: 20th Anniversary World Tour Edition mit EDuke32 spielen zu können.

Die Verzeichnisstruktur und Dateien für die Spiele, Erweiterungen, Source Ports und Modifikationen

Alle benötigten Dateien sollen unterhalb des Ordners ~/DukeNukem3D abgelegt werden, so dass am Ende in etwa die folgende Ordner/Dateistrukur entsteht:

~/DukeNukem3D
│
├── worldtour                               DUKE NUKEM 3D: 20th Anniv. W. T.
│   └── ...
│
├── atomic                                  DUKE NUKEM 3D: Atomic Edition
│   └── ...
│
├── addons                                  OFFIZIELLE ERWEITERUNGEN
│   ├── DUKEDC.GRP                          Duke It Out In D.C.
│   ├── DUKEDC.CON                          Duke It Out In D.C.
│   ├── NWINTER.GRP                         Duke: Nuclear Winter
│   ├── NWINTER.CON                         Duke: Nuclear Winter
│   ├── VACATION.GRP                        Duke Caribbean: Life's A Beach
│   ├── VACATION.CON                        Duke Caribbean: Life's A Beach
│   ├── DUKE!ZON.GRP                        Duke! ZONE II (Includes ZONE I)
│   ├── DZ-GAME.CON                         Duke! ZONE II (Includes ZONE I)
│   ├── PENTHOUS.GRP                        Duke Nukem's Penthouse Paradise
│   └── PPAKGAME.CON                        Duke Nukem's Penthouse Paradise
│
├── eduke32                                 EDUKE32 SOURCE PORT
│   ├── eduke32
│   └── ...
│
└── mods                            
    ├── audio                               AUDIO MODIFIKATIONEN
    │   ├── duke3d_psx.zip                  Duke 3D Highres Sounds
    │   ├── duke3d_music-sc55.zip           Duke 3D Roland SC-55 Music Pack
    │   ├── dukedc_music20.zip              Duke It Out In D.C. Music Pack
    │   └── duke3d_music-nwvaca.zip         Caribbean & N. Winter Music Pack
    │
    ├── e32wt                               STOPGAP COMPATIBILITY LAYER
    │   └── ...
    │
    └── graphics                            GRAFIK MODIFIKATIONEN
        ├── erp.def                         ERP Definitionsdatei
        ├── dukeupscale.zip                 ERP Upscale Pack
        ├── duke3d_voxelpack-master.zip     ERP Voxelpack
        ├── duke3d_hrp.zip                  HRP High Resolution Pack
        ├── dukedc_hrp.zip                  HRP Addon für Duke It Out In D.C.
        ├── nwinter_hrp.zip                 HRP Addon für Nuclear Winter
        └── vaca_hrp.zip                    HRP Addon für Duke Caribbean

Aufbau der Verzeichnisstruktur und Ablage der Original-Spieldaten

1. Anlage der Verzeichnisse:

user@linux ~ $ mkdir -p ~/DukeNukem3D/{mods/audio,mods/graphics,addons,atomic}

2. Falls vorhanden, wird die 20th Anniversary World Tour Edition in den Ordner ~/DukeNukem/worldtour kopiert und die Pfadangaben in der Datei USER.CON für Linux korrigiert.

Es wird angenommen, dass die 20th Anniversary World Tour Edition mit Steam in den Standardordner ~/.local/share/Steam/steamapps/common/Duke Nukem 3D Twentieth Anniversary World Tour installiert wurde.

user@linux ~ $ cp -r ~/.local/share/Steam/steamapps/common/Duke\ Nukem\ 3D\ Twentieth\ Anniversary\ World\ Tour/ ~/DukeNukem3D/worldtour
user@linux ~ $ sed -i 's/sound\\\\/sound\//g' ~/DukeNukem3D/worldtour/USER.CON
user@linux ~ $ sed -i 's/sound\\/sound\//g' ~/DukeNukem3D/worldtour/USER.CON

2a. Falls vorhanden, werden die Datendatein DUKE3D.GRP und DUKE.RTS der Atomic Edition von der Zoom-Plattform oder einer anderen DOS-Version des Spiels in den Ordner ~/DukeNukem/atomic kopiert.

Es wird angenommen, dass die Atomic Edition der Zoom-Plattform mit Wine in den Standardordner ~/.wine/drive_c/ZOOM PLATFORM/Gearbox Software/Duke Nukem 3D - Atomic Edition installiert wurde.

user@linux ~ $ cp ~/.wine/drive_c/ZOOM\ PLATFORM/Gearbox\ Software/Duke\ Nukem\ 3D\ -\ Atomic\ Edition/{DUKE3D.GRP,DUKE.RTS} ~/DukeNukem3D/atomic/.

2b. Falls nur die 20th Anniversary Edition und nicht zusätzlich auch die Atomic Edition vorhanden ist, werden im Verzeichnis ~/DukeNukem/atomic symbolische Links zu den entsprechenden Datendateien der 20th Anniversary Edition angelegt:

user@linux ~ $ cd ~/DukeNukem3D/atomic
user@linux ~/DukeNukem3D/atomic $ ln -s ../worldtour/DUKE3D.GRP DUKE3D.GRP
user@linux ~/DukeNukem3D/atomic $ ln -s ../worldtour/DUKE.RTS DUKE3D.RTS

3. Falls vorhanden, werden die Datendatein der Erweiterungen in den Ordner ~/DukeNukem/addons kopiert.

Im Folgenden wird angenommen, dass die Atomic Edition und das Addon-Paket der Zoom-Plattform mit Wine in den Ordner ~/.wine/drive_c/ZOOM PLATFORM/Gearbox Software/Duke Nukem 3D - Atomic Edition bzw. dessen Unterordner AddOns installiert wurde.

Hinweis: Die Zoom-Versionen der Erweiterungen bestehen aus jeweils zwei Dateien (eine GRP-Datei und eine CON-Datei). Es scheint auch andere Versionen der Erweiterungen zu geben, welche nur aus jeweils einer GRP-Datei bestehen und ohne die zusätzliche CON-Datei auskommen. Dann sind entsprechend nur die GRP-Dateien in den Ordner ~/DukeNukem/addons zu kopieren.

user@linux ~ $ cp ~/.wine/drive_c/ZOOM\ PLATFORM/Gearbox\ Software/Duke\ Nukem\ 3D\ -\ Atomic\ Edition/AddOns/{*.GRP,*.CON} ~/DukeNukem3D/addons/.

Der Source Port EDuke32

Mit EDuke32 lässt sich Duke Nukem 3D nativ unter Linux mit heutigen Bildschirmauflösungen und wahlweise einem Software- oder zwei verschiedenen OpenGL-Renderern (Polymost und Polymer) spielen. Polymost ist älter als Polymer und bietet laut Foreneinträgen insgesamt eine korrektere Darstellung. Polymer begeistert dagegen mit schöneren Lichteffekten.

Mit Stand vom 14.12.2021 unterstützt der EDuke32-Hauptentwicklungszweig (master) noch nicht das Feature "indexed hightiles" (u.a. Definition von T_INDEXED in source/build/src/defs.cpp). Dieses ist im Entwicklungszweig "upscale" enthalten und wird benötigt, wenn das Upscale-Paket verwendet werden soll.

Der EDuke32-Entwicklungszweig "upscale" kann wie folgt heruntergeladen und kompiliert werden:

Auf Abhängigkeiten zu externen Bibliotheken wird an dieser Stelle nicht näher eingegangen.

user@linux ~/DukeNukem3D $ git clone https://voidpoint.io/terminx/eduke32.git
user@linux ~/DukeNukem3D $ cd eduke32
user@linux ~/DukeNukem3D/eduke32 $ git checkout upscale
user@linux ~/DukeNukem3D/eduke32 $ make

Das HRP funktioniert nur mit einem der beiden OpenGL-Renderer (Polymost oder Polymer). Das Upscale-Pack dagegen sowohl mit Software- als auch OpenGL-Renderern.

Soll das Upscale-Paket nicht verwendet werden, oder wurde die "indexed hightiles" Funktionalität in den Hauptzweig aufgenommen, kann auf den Befehl "git checkout upscale" verzichtet werden und der Hauptzweig verwendet werden. Alternativ könnte dann auch die (ggf. nicht so aktuelle) Version von EDuke32 aus dem Gentoo-Repository verwendet werden (Paket: games-fps/eduke32) - sie enthält die "indexed hightiles" Funktionalität ebenfalls noch nicht.

Die Installation des Gentoo-Pakets (enthält nicht die "indexed hightiles" Funktionalität) ist unabhängig von dessen Verwendung vor dem Kompilieren der GIT-Version empfehlenswert, da so automatisch alle benötigen Bibliotheken installiert werden:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE=" fluidsynth gtk opengl png server timidity tools voidsw vpx xmp -duke3d -hrp -offensive -opl -psx -sc-55 -sdk -voxels" emerge eduke32 -pv

Zuletzt von mir verwendete Revision: 3a30f5a7a68c175e534b2476be737fffbe2d08db

Download der Modifikationen

Die benötigten Dateien der Modifikationen können von folgenden Seiten bezogen werden:

Installation der Modifikationen:

Es wird davon ausgegangen, dass sich alle heruntergeladenen Dateien im Ordner ~/Downloads befinden.

Duke3D High Resolution Pack (HRP):

user@linux ~ $ cp ~/Downloads/duke3d_hrp.zip ~/DukeNukem3D/mods/graphics/.

DukeDC HRP:

user@linux ~ $ cp ~/Downloads/dukedc_hrp.zip ~/DukeNukem3D/mods/graphics/.

Duke Carribean HRP:

Dieses HRP Addon ist Bestandteil der umfangreicheren Modifikation Duke Caribbean: Life's A Beach Plus. Vorerst nutze ich nur den HRP-Teil.

user@linux ~ $ svn checkout http://svn.eduke32.com/vaca_plus /tmp/vhrp
user@linux ~ $ cd /tmp/vhrp
user@linux /tmp/vhrp $ cp vaca_plus/vacation_hrp.def .
user@linux /tmp/vhrp $ zip -r ~/DukeNukem3D/mods/graphics/vaca_hrp.zip vaca_hrp vacation_hrp.def
user@linux /tmp/vhrp $ rm -Rf /tmp/vhrp

Nuclear Winter HRP:

Dieses HRP Addon ist Bestandteil der umfangreicheren Modifikation Duke: Nuclear Winter Plus. Vorerst nutze ich nur den HRP-Teil.

user@linux ~ $ svn checkout http://svn.eduke32.com/nw_plus /tmp/nhrp
user@linux ~ $ cd /tmp/nhrp
user@linux /tmp/nhrp $ cp nw_plus/nwinter_hrp.def .
user@linux /tmp/nhrp $ zip -r ~/DukeNukem3D/mods/graphics/nwinter_hrp.zip nw_hrp nwinter_hrp.def
user@linux /tmp/nhrp $ rm -Rf /tmp/nhrp

Upscale- u. Voxel-Packs (aus dem Duke Nukem Enhanced Resource Pack):

Das Upscale Pack und das Voxel Pack sind Bestandteile der umfangreicheren Modifikation Enhanced Resource Pack. Ich nutze diese Teile sowie die zugehörige Definitionsdatei.

user@linux ~ $ unzip -j ~/Downloads/duke-erp-210701.zip autoload/dukeupscale.zip -d ~/DukeNukem3D/mods/graphics
user@linux ~ $ unzip -j ~/Downloads/duke-erp-210701.zip autoload/duke3d_voxelpack-master.zip -d ~/DukeNukem3D/mods/graphics
user@linux ~ $ unzip -j ~/Downloads/duke-erp-210701.zip duke3d.def -d /tmp && mv /tmp/duke3d.def ~/DukeNukem3D/mods/graphics/erp.def

Duke3D PSX Highres Sounds:

user@linux ~ $ cp ~/Downloads/duke3d_psx.zip ~/DukeNukem3D/mods/audio/.

Duke 3D Roland SC-55 Music Pack:

user@linux ~ $ cp ~/Downloads/duke3d_music-sc55.zip ~/DukeNukem3D/mods/audio/.

Duke It Out In D.C. Music Pack:

user@linux ~ $ cp ~/Downloads/dukedc_music20.zip ~/DukeNukem3D/mods/audio/.

Duke Caribbean & Nuclear Winter Music Pack:

user@linux ~ $ cp ~/Downloads/duke3d_music-nwvaca.zip ~/DukeNukem3D/mods/audio/.

Duke Nukem 3D: 20th Anniversary World Tour - Stopgap Compatibility Layer for EDuke32 :

user@linux ~ $ git clone https://github.com/Hendricks266/e32wt.git ~/DukeNukem3D/mods/e32wt

Starten und Konfigurieren von EDuke32:

Je nachdem, ob das High Resolution Pack oder das Upscale-Pack verwendet werden soll, sind unterschiedliche Kommandozeilenparameter für den Aufruf von EDuke32 erforderlich.

1. Mit High Resolution Pack (HRP):

Das HRP kann nur mit einem der beiden OpenGL-Renderer verwendet werden; mit dem Software-Renderer funktioniert es nicht. Die Auswahl des Renderers erfolgt gemeinsam mit der Bildschirmauflösung über das Popup bei Programmstart. Wird OpenGL ausgewählt und ein Haken bei "Polymer" gesetzt wird der neuere Polymer-OpenGL-Renderer genutzt, andernfalls der ältere Polymost-OpenGL-Renderer.

1.1. 20th Anniversary Edition (mit HRP):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/worldtour -j `pwd`/mods/e32wt -g `pwd`/mods/graphics/duke3d_hrp.zip -mh duke3d_hrp.def

Zu beachten ist, dass im Popup von EDuke32 im Reiter "Game", der Eintrag "Duke Nukem 3D 20th Anniversary World Tour [Stopgap]" ausgewählt werden muss!

Da die 20th Anniversary Edition selbst neue Audiodateien mitbringt, binde ich die Audio-Modifikationen hier nicht ein.

Die Stopgap-Modifikation ermöglicht das vornehmen folgender Einstellungen über die Konsole im Spiel (Aufruf mit Taste `):

  • New Duke voice acting: Use "setvar voice <value>" in the console to configure. 0 - 2016 voice, 1 - 1996 voice except during Episode 5, 2 - 1996 voice except new lines only
  • Developer commentary in Episode 5: Use "setvar commentary <value>" in the console to configure. 0 - off, 1 - on, 2 - show but don't allow playback

1.2. Atomic Edition oder andere DOS-Version (mit HRP):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/mods/graphics/duke3d_hrp.zip -mh duke3d_hrp.def

1.3. Erweiterung Duke It Out In D.C. (mit HRP):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/addons/DUKEDC.GRP -x `pwd`/addons/DUKEDC.CON -g `pwd`/mods/audio/dukedc_music20.zip -g `pwd`/mods/graphics/duke3d_hrp.zip -mh duke3d_hrp.def -g `pwd`/mods/graphics/dukedc_hrp.zip -mh dukedc_hrp.def -mh dukedc_ogg.def

Falls eine Version der Erweiterung ohne separate CON-Datei vorliegt, muss der Parameter "-x `pwd`/addons/DUKEDC.CON" weggelassen werden. Dies gilt analog auch für die anderen Erweiterungen.

1.4. Erweiterung Duke Caribbean: Life's A Beach (mit HRP):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/addons/VACATION.GRP -x `pwd`/addons/VACATION.CON -g `pwd`/mods/audio/duke3d_music-nwvaca.zip -g `pwd`/mods/graphics/duke3d_hrp.zip -mh duke3d_hrp.def -g `pwd`/mods/graphics/vaca_hrp.zip -mh vacation_hrp.def

1.5 Erweiterung Duke: Nuclear Winter (mit HRP):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/addons/NWINTER.GRP -x `pwd`/addons/NWINTER.CON -g `pwd`/mods/audio/duke3d_music-nwvaca.zip -g `pwd`/mods/graphics/duke3d_hrp.zip -mh duke3d_hrp.def -g `pwd`/mods/graphics/nwinter_hrp.zip -mh nwinter_hrp.def

1.6. Erweiterung Penthouse Paradise (mit HRP):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/addons/PENTHOUS.GRP -x `pwd`/addons/PPAKGAME.CON -g `pwd`/mods/graphics/duke3d_hrp.zip -mh duke3d_hrp.def

1.7. Erweiterung Duke! ZONE II (mit HRP):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/addons/DUKE\!ZON.GRP -x `pwd`/addons/DZ-GAME.CON -g `pwd`/mods/graphics/duke3d_hrp.zip -mh duke3d_hrp.def

2. Mit Upscale- und Voxel-Pack:

Das Upscale- und Voxel-Pack funktionieren sowohl mit dem OpenGL- als auch mit dem Software-Renderer. Voraussetzung ist allerdings eine EDuke32-Version mit Unterstürzung für "indexed hightiles" (siehe oben). Die Auswahl des Renderers erfolgt gemeinsam mit der Bildschirmauflösung über das Popup bei Programmstart. Wird OpenGL ausgewählt und ein Haken bei "Polymer" gesetzt wird der neuere Polymer-OpenGL-Renderer genutzt, andernfalls der ältere Polymost-OpenGL-Renderer. Achtung: Das Voxelpack fuktioniert mit Polymer nicht!

2.1. 20th Anniversary Edition (mit Upscale Pack):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/worldtour -j `pwd`/mods/e32wt -g `pwd`/mods/graphics/dukeupscale.zip -g `pwd`/mods/graphics/duke3d_voxelpack-master.zip -mh `pwd`/mods/graphics/erp.def

Die obigen Anmerkungen gelten analog!

Soll das optionale Voxel-Pack nicht verwendet werden, muss der Parameter "-g `pwd`/mods/graphics/duke3d_voxelpack-master.zip" weggelassen werden. Dies gilt auch für alle folgendenden Aufrufe.

2.2. Atomic Edition oder andere DOS-Version (mit Upscale Pack):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/mods/graphics/dukeupscale.zip -g `pwd`/mods/graphics/duke3d_voxelpack-master.zip -mh `pwd`/mods/graphics/erp.def

2.3. Erweiterung Duke It Out In D.C. (mit Upscale Pack):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/addons/DUKEDC.GRP -x `pwd`/addons/DUKEDC.CON -g `pwd`/mods/audio/dukedc_music20.zip -g `pwd`/mods/graphics/dukeupscale.zip -g `pwd`/mods/graphics/duke3d_voxelpack-master.zip -mh `pwd`/mods/graphics/erp.def

Die obigen Anmerkungen gelten analog!

2.4. Erweiterung Duke Caribbean: Life's A Beach (mit Upscale Pack):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/addons/VACATION.GRP -x `pwd`/addons/VACATION.CON -g `pwd`/mods/audio/duke3d_music-nwvaca.zip -g `pwd`/mods/graphics/dukeupscale.zip -g `pwd`/mods/graphics/duke3d_voxelpack-master.zip -mh `pwd`/mods/graphics/erp.def

2.5. Erweiterung Duke: Nuclear Winter (mit Upscale Pack):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/addons/NWINTER.GRP -x `pwd`/addons/NWINTER.CON -g `pwd`/mods/audio/duke3d_music-nwvaca.zip -g `pwd`/mods/graphics/dukeupscale.zip -g `pwd`/mods/graphics/duke3d_voxelpack-master.zip -mh `pwd`/mods/graphics/erp.def

2.6. Erweiterung Penthouse Paradise (mit Upscale Pack):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/addons/PENTHOUS.GRP -x `pwd`/addons/PPAKGAME.CON -g `pwd`/mods/graphics/dukeupscale.zip -g `pwd`/mods/graphics/duke3d_voxelpack-master.zip -mh `pwd`/mods/graphics/erp.def

2.7. Erweiterung Duke! ZONE II (mit Upscale Pack):

user@linux ~/DukeNukem3D $ eduke32/eduke32 -j `pwd`/atomic -g `pwd`/mods/audio/duke3d_music-sc55.zip -g `pwd`/mods/audio/duke3d_psx.zip -g `pwd`/addons/DUKE\!ZON.GRP -x `pwd`/addons/DZ-GAME.CON -g `pwd`/mods/graphics/dukeupscale.zip -g `pwd`/mods/graphics/duke3d_voxelpack-master.zip -mh `pwd`/mods/graphics/erp.def

Auch Interessant - Für später merken:

Computerspiele

Quake

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Quake (1996)

DarkPlaces mit QRP-Texturen

Für das bahnbrechende Quake aus dem Jahr 1996 gibt es unzählige Source Ports und noch viel mehr grafische Modifikationen und Erweiterungen, so dass die Auswahl und Zusammenstellung von Komponenten schon fast zur Qual wird. Im Gegenzug gibt es vermutlich für jeden Geschmack etwas passendes.

Für ein originalgetreues Spielerlebnis der Singleplayer-Kampagne verwende ich den Source Port QuakeSpasm ohne Modifikationen. Möchte ich zusätzlich modernere Grafikeffekte und hochauflösende Texturen sehen, aber immer noch nah am ursprünglichen Look und Feel bleiben, wähle ich den Source Port DarkPlaces mit den Modifikationen QRP Textures, Romi's rtlights und teilweise Authentic Model Improvements for Quake. Soll es dagegen ganz extravagant und nicht mehr so nah am ursprünglichen Erscheinungsbild sein, greife ich auf das ebenfalls auf DarkPlaces aufbauende und mit diversen Modifikationen vorkonfigurierte Paket Quake Epsilon Build zurück.

Die Installation aller drei Möglichkeiten beschreibe ich im Folgenden.

 
VORBEREITEN DER VERZEICHNISSTRUKTUR

Als Ausgangslage wird angenommen, dass sich die DOS-Version von Quake und ggf. die Zusatzmissionen (Mission Pack 1, Mission Pack 2, Dimension of the Past) im Verzeichnis ~/Quake befinden. Falls Quake noch nicht vorhanden ist, kann es inkl. aller Zusatzmissionen z.B. auf Steam erworben werden. Da verschiedene Source Ports und diese ohne bzw. mit Modifikationen zum Einsatz kommen sollen, wird zur Differenzierung zunächst die folgende Verzeichnisstruktur aufgebaut, bei der die DOS-Version sich dann zukünftig im Ordner ~/Quake/dos befindet:

Quake
├── darkplaces
│   ├── dopa
│   ├── hipnotic
│   │   └── music -> ../../dos/hipnotic/music
│   ├── id1
│   │   └── music -> ../../dos/id1/music
│   └── rogue
│       └── music -> ../../dos/rogue/music
├── dos
│   ├── dopa
│   ├── hipnotic
│   │   └── music
│   ├── id1
│   │   └── music
│   └── rogue
│       └── music
└── quakespasm
    ├── dopa
    ├── hipnotic
    │   └── music -> ../../dos/hipnotic/music
    ├── id1
    │   └── music -> ../../dos/id1/music
    └── rogue
        └── music -> ../../dos/rogue/music

Der Aufbau dieser Struktur kann mit folgenden Schritten erfolgen:

1. Umbenennen des ursprünglichen Quake-Ordners mit der DOS-Version und Erstellen einer ZIP-Datei der DOS-Version. Die ZIP-Datei wird angelegt, da so auf einfache Art und Weise beim nachfolgenden Entpacken im neuen Zielordner alle Datei- und Verzeichnisnnamen in Kleinbuchstaben konvertiert werden können. Dies ist für QuakeSpasm erforderlich.

user@linux ~ $ mv Quake Quake.old
user@linux ~ $ cd Quake.old
user@linux ~/Quake.old $ zip -r /tmp/Quake.zip *

2. Verzeichnisse und Symlinks zur Vermeidung von Datenredundanz anlegen sowie ZIP-Datei mit DOS-Quake in Kleinbuchstaben im neuen Zielordner entpacken:

user@linux ~ $ mkdir -p ~/Quake/dos
user@linux ~ $ cd ~/Quake/dos
user@linux ~/Quake/dos $ unzip -LL /tmp/Quake.zip
user@linux ~/Quake/dos $ mkdir -p id1/music hipnotic/music rogue/music
user@linux ~/Quake/dos $ cd ..
user@linux ~/Quake $ mkdir -p quakespasm/id1 quakespasm/hipnotic quakespasm/rogue quakespasm/dopa
user@linux ~/Quake $ ln -s ../../dos/id1/music quakespasm/id1/music
user@linux ~/Quake $ ln -s ../../dos/hipnotic/music quakespasm/hipnotic/music
user@linux ~/Quake $ ln -s ../../dos/rogue/music quakespasm/rogue/music
user@linux ~/Quake $ mkdir -p darkplaces/id1 darkplaces/hipnotic darkplaces/rogue darkplaces/dopa darkplaces/config
user@linux ~/Quake $ ln -s ../../dos/id1/music darkplaces/id1/music
user@linux ~/Quake $ ln -s ../../dos/hipnotic/music darkplaces/hipnotic/music
user@linux ~/Quake $ ln -s ../../dos/rogue/music darkplaces/rogue/music
user@linux ~/Quake $ mkdir -p epsilon/id1 epsilon/hipnotic epsilon/rogue epsilon/config
user@linux ~/Quake $ ln -s ../../dos/id1/music epsilon/id1/music
user@linux ~/Quake $ ln -s ../../dos/hipnotic/music epsilon/hipnotic/music
user@linux ~/Quake $ ln -s ../../dos/rogue/music epsilon/rogue/music

3a. Symlinks zu den Datendateien von Quake in den Ordnern der Source Ports anlegen:

user@linux ~/Quake $ ln -s ../../dos/id1/pak0.pak quakespasm/id1/pak0.pak
user@linux ~/Quake $ ln -s ../../dos/id1/pak1.pak quakespasm/id1/pak1.pak
user@linux ~/Quake $ ln -s ../../dos/id1/pak0.pak darkplaces/id1/pak0.pak
user@linux ~/Quake $ ln -s ../../dos/id1/pak1.pak darkplaces/id1/pak1.pak
user@linux ~/Quake $ ln -s ../../dos/id1/pak0.pak epsilon/id1/pak0.pak
user@linux ~/Quake $ ln -s ../../dos/id1/pak1.pak epsilon/id1/pak1.pak

3b. (Optional) Symlinks zu den Datendateien von Mission Pack 1 in den Ordnern der Source Ports anlegen:

user@linux ~/Quake $ ln -s ../../dos/hipnotic/pak0.pak quakespasm/hipnotic/pak0.pak
user@linux ~/Quake $ ln -s ../../dos/hipnotic/pak0.pak darkplaces/hipnotic/pak0.pak
user@linux ~/Quake $ ln -s ../../dos/hipnotic/pak0.pak epsilon/hipnotic/pak0.pak

3c. (Optional) Symlinks zu den Datendateien von Mission Pack 2 in den Ordnern der Source Ports anlegen:

user@linux ~/Quake $ ln -s ../../dos/rogue/pak0.pak quakespasm/rogue/pak0.pak
user@linux ~/Quake $ ln -s ../../dos/rogue/pak0.pak darkplaces/rogue/pak0.pak
user@linux ~/Quake $ ln -s ../../dos/rogue/pak0.pak epsilon/rogue/pak0.pak

3d. (Optional) Symlinks zu den Datendateien von der Jubiläumserweiterung Mission Dimension of the Past in den Ordnern der Source Ports anlegen:

user@linux ~/Quake $ ln -s ../../dos/dopa/pak0.pak quakespasm/dopa/pak0.pak
user@linux ~/Quake $ ln -s ../../dos/dopa/pak0.pak darkplaces/dopa/pak0.pak

Hinweis 1: Falls noch nicht vorhanden und gewünscht, kann diese von Machine Games erstellte Jubiläumserweiterung kostenlos heruntergeladen werden und kann anschließend unter der Annahme, dass die Datei dopa.rar im Ordner ~/Downloads liegt, wie folgt installiert werden:

user@linux ~/Quake $ unrar e ~/Downloads/dopa.rar ~/Quake/dos/dopa/

Hinweis 2: DOPA ist in der Quake Epsilon Build bereits in anderer Form enthalten, daher wird an dieser Stelle kein symbolischer Link erstellt.

Installation der Musik für die Source Ports:

Der Soundtrack von Quake und den beiden Mission Packs befindet sich nur in Form von separaten Tonspuren auf den jeweiligen Original-CDs. Das hantieren mit CDs ist in der heutigen Zeit natürlich unpraktisch und die Source Ports haben dafür eine elegante Lösung parat: sie können die Musik auch ohne CD abspielen, wenn die Tonspuren mit einem geeigneten Programm (z.B. K3b) ausgelesen und als Musikdateien im Ogg Vorbis-Format mit bestimmten Dateinamen in bestimmten Verzeichnissen abgelegt wurden:

  • Die Tonspuren von Quake können mit den Dateinamen track02.ogg bis track11.ogg im Verzeichnis ~/Quake/id1/music abgelegt werden.
  • Die Tonspuren von Mission Pack 1 können mit den Dateinamen track02.ogg bis track09.ogg im Verzeichnis ~/Quake/hipnotic/music abgelegt werden.
  • Die Tonspuren von Mission Pack 2 können mit den Dateinamen track02.ogg bis track09.ogg im Verzeichnis ~/Quake/rogue/music abgelegt werden.

Hinweis: Für Dimension of the Past gibt es keinen separaten offiziellen Soundtrack. Stattdessen wird der Soundtrack der Hauptkampagne verwendet.

Hinweis 2: In der digitalen Steam-Version von Quake ist der Soundtrack im "rerelease"-Ordner bereits in Form von OGG-Dateien enthalten.

 
QUAKESPASM

Installation von QuakeSpasm unter Gentoo Linux:

Leider ist QuakeSpasm nicht in der offiziellen Paketdatenbank von Gentoo Linux enthalten, aber über die Overlay-Pakete-Suche können mehrere Ebuilds in externen Repositories gefunden und dann in das eigene lokale Overlay übernommen werden. Ich selbst verwende eine ältere Ebuild aus dem Overlay winny, welche ich auf die neuste QuakeSpasm-Version aktualisiert habe (Download Ebuild games-fps/quakespasm-0.94.2).

Wenn die Ebuilds für QuakeSpasm korrekt im lokalen Overlay unter games-fps/quakespasm abgelegt sind, kann die Installation wie folgt erfolgen:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="flac mp3 ogg opus -cdinstall -debug -demo -mikmod -sdl2" emerge quakespasm -pv

Der Vorteil einer Installation per Ebuild gegenüber dem manuellen Kompilieren und Installieren liegt vor allem in der damit verbundenen automatischen Installation der benötigten Bibliotheken.

Starten und Konfigurieren von QuakeSpasm

Achtung: Quakespasm speichert einmal übergebene Kommandozeilenparameter dauerhaft in den Konfigurationsdateien (~/.quakespasm/*/config.cfg). Ein Weglassen von bestimmten Parametern ist nicht gleichbedeutend mit dem Deaktivieren oder Zurücksetzen des betroffenen Parameters. Dies ist nur durch explizite Angabe des neuen gewünschten Wertes möglich. Daher ist es empfehlenswert die Konfigurationsdateien zu löschen, falls QuakeSpasm zuvor schon einmal mit anderen Einstellungen genutzt wurde oder falls die Kommandozeilenparameter geändert wurden. Dies macht der folgende Befehl:

user@linux ~ $ rm -i ~/.quakespasm/*/config.cfg

Mit dem folgenden Aufruf startet QuakeSpasm mit einer Grafikkonfiguration, die aus meiner Sicht einen guten Kompromiss aus originalgetreuem Erscheinungsbild und optischer Verbesserung für die Darstellung der Originalgrafiken auf hochauflösenden Monitoren darstellt. Viele dieser Parameter waren vermutlich ohnehin bereits in dem auf DOS-Quake wenig später folgenden GLQuake enthalten, da nach meinem Kenntnisstand QuakeSpasm grundsätzlich Wert auf originalgetreues Spielerlebnis legt und keine oder nur wenige neue grafische Effekte einführt.

user@linux ~/Quake $ quakespasm -basedir quakespasm +gl_texturemode gl_nearest_mipmap_linear +gl_texture_anisotropy 8 +r_shadows 1 +r_novis 1 +r_wateralpha 0.5 +r_skyalpha 0.5 +r_particles 2

Nach dem Starten können über das Konfigurationsmenü die Einstellungen zur Bildschirmauflösung, Vollbild, Skalierung der Menü- und HUD-Größe, den Tastenbelegungen und Mausoptionen (z.B. Mouse Look und Invert Mouse) vorgenommen werden.

Mit den obigen Einstellungen sind bei Nahansicht wie im ursprünglichen DOS-Quake einzelne Pixel sichtbar. Mir persönlich gefällt dies bei Nutzung der Originaltexturen am besten. Wer dagegen die weichgezeichneten Texturen wie in glQuake bzw. mit 3DFX Voodoo-Karte bevorzugt, kann hierzu den Parameter "+gl_texturemode gl_nearest_mipmap_linear" durch den Parameter "+gl_texturemode gl_linear_mipmap_linear" ersetzen.

Der hier verwendete Parameter "+r_novis 1" aktiviert die Darstellung von transparenten Flüssigkeiten (Wasser, Lava) durch die Engine, ist aber relativ rechenintensiv. Dies wirkt sich auf älterer Hardware (z.B. meinem 10 Jahre alten Notebook) durchaus negativ auf die FPS aus. Alternativ kann man die Datendateien von Quake einmalig mit dem Tool VisPatch patchen und anschließend auf die rechenintensiven Funktionen der Engine verzichten oder gleich ganz auf die Darstellung von transparenten Flüssigkeiten verzichten. Für beide Fälle muss der Parameter auf "+r_novis 0" geändert werden. Die Installation und das Ausführen von VisPatch kann so erfolgen:

user@linux ~/Quake $ git clone git://git.code.sf.net/p/vispatch/vispatch.git tools/vispatch
user@linux ~/Quake $ cd tools/vispatch
user@linux ~/Quake/tools/vispatch $ make
user@linux ~/Quake/tools/vispatch $ wget -O id1_vis.tgz "https://sourceforge.net/project/downloading.php?group_id=215114&filename=id1_vis.tgz"
user@linux ~/Quake/tools/vispatch $ wget -O hipnotic_vis.tgz "https://sourceforge.net/project/downloading.php?group_id=215114&filename=hipnotic_vis.tgz"
user@linux ~/Quake/tools/vispatch $ wget -O rogue_vis.tgz "https://sourceforge.net/project/downloading.php?group_id=215114&filename=rogue_vis.tgz"
user@linux ~/Quake/tools/vispatch $ tar xvfz id1_vis.tgz
user@linux ~/Quake/tools/vispatch $ tar xvfz hipnotic_vis.tgz
user@linux ~/Quake/tools/vispatch $ tar xvfz rogue_vis.tgz
user@linux ~/Quake/tools/vispatch $ cp ../../dos/id1/pak0.pak ../../dos/id1/pak0.pak.pre-vispatch-backup
user@linux ~/Quake/tools/vispatch $ cp ../../dos/id1/pak1.pak ../../dos/id1/pak1.pak.pre-vispatch-backup
user@linux ~/Quake/tools/vispatch $ cp ../../dos/hipnotic/pak0.pak ../../dos/hipnotic/pak0.pak.pre-vispatch-backup
user@linux ~/Quake/tools/vispatch $ cp ../../dos/rogue/pak0.pak ../../dos/rogue/pak0.pak.pre-vispatch-backup
user@linux ~/Quake/tools/vispatch $ ./vispatch -data id1.vis -dir ../../dos/id1
user@linux ~/Quake/tools/vispatch $ ./vispatch -data hipnotic.vis -dir ../../dos/hipnotic
user@linux ~/Quake/tools/vispatch $ ./vispatch -data rogue.vis -dir ../../dos/rogue

Auf manchen Webseiten wird der Parameter "+vid_fsaa 8" (eine Antialiasing-Option) empfohlen. Diese ist jedoch rechenintensiv und verlangsamt das Spiel auf älterer Hardware erheblich, ohne einen für mich deutlich erkennbaren optischen Mehrwert.

Mit dem Parameter "+host_maxfps 144" kann die auf 72 FPS begrenzte Framerate auf z.B. 144 für moderne Monitore angepasst werden. Allerdings kann es hier laut Forenbeiträgen zu Problemen mit dem Timing in der Engine und dem Spielablauf kommen und ist daher nur bedingt empfehlenswert. Der Parameter "+scr_showfps 1" aktiviert die FPS-Anzeige.

Die offiziellen Erweiterungen können gestartet werden, indem einer der folgenden Parameter ergänzt wird:

  • "-hipnotic" für Mission Pack 1: Scourge of Armagon
  • "-rogue" für Mission Pack 2: Dissolution of Eternity
  • "-game dopa" für Dimension of the Past

 
DARKPLACES

Installation von DarkPlaces unter Gentoo Linux:

Die aktuelle Version von DarkPlaces (20140513) ist in der offiziellen Paketdatenbank von Gentoo Linux enthalten. Ich empfehle die Installation mit den folgenden USE-Flags:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="alsa opengl sdl cdsound -cdinstall -debug -dedicated -demo -lights -oss -textures" emerge darkplaces -pv

Wichtig: Ohne das USE-Flag cdsound funktioniert auch die Wiedergabe der OGG-Dateien nicht!

Der Vorteil einer Installation per Ebuild gegenüber dem manuellen Kompilieren und Installieren liegt vor allem in der damit verbundenen automatischen Installation der benötigten Bibliotheken. Auch wenn diese offizielle Release-Version schon mehrere Jahre alt ist, soll sie stabiler sein als der aktuelle Entwicklungszweig.

Die Modifikationen QRP Texture Packs, Romi's rtlights und Quake Authmdl

Bei meiner DarkPlaces-Installation verwende ich die folgenden Modifikationen:

  1. Die hochauflösenden QRP-Texturen aus dem Quake Retexturing Project, da sie ziemlich originalgetreu sind.
  2. Die rtlights-Pakete von Romi für Quake und das Mission Pack 1, welche die Performance der Echtzeitbeleuchtung erhöhen
  3. Die verbesserten aber weiterhin originalgetreuen Monstermodelle und Programmkorrekturen der Authentic Model Improvements for Quake. Als Alternative hatte ich die deutlich hochauflösenderen aber nicht mehr ganz so originalgetreuen Monstermodelle aus dem Quake Reforged Bestiary-Paket in Erwägung gezogen, mich letztendlich aber für die authentischeren Modelle entschieden.

Herunterladen der Modifikationen

Die benötigten Dateien der Modifikationen können von folgenden Seiten bezogen werden:

Der Download der Authentic Model Improvements for Quake wird weiter unten im Rahmen der Installation beschrieben.

Installation der Modifikationen

Es wird davon ausgegangen, dass sich alle heruntergeladenen Dateien im Ordner ~/Downloads befinden.

QRP-Texturenpakete:

user@linux ~/Quake $ 7z e -odarkplaces/id1/ ~/Downloads/QRP_map_textures_v.1.00.pk3.7z
user@linux ~/Quake $ 7z e -odarkplaces/id1/ ~/Downloads/QRP_normalmap_textures_add-on_v.1.00.pk3.7z
user@linux ~/Quake $ 7z e -odarkplaces/id1/ ~/Downloads/QRP_item_textures_v.0.73_dp.pk3.7z
user@linux ~/Quake $ unzip -e ~/Downloads/QRP_SoA_map_textures_add-on_v.1.00.pk3.zip -d darkplaces/hipnotic/
user@linux ~/Quake $ unrar e ~/Downloads/QRP_SoA_normal_map_textures_add-on_v.1.00.rar darkplaces/hipnotic/
user@linux ~/Quake $ unzip -e ~/Downloads/QRP_DoE_mtex_add-on_v.1.00.zip -d darkplaces/rogue/
user@linux ~/Quake $ unzip -e ~/Downloads/QRP_DoE_normal_map_textures_add-on_v.1.00.zip -d darkplaces/rogue/

Romi's rtlights:

user@linux ~/Quake $ cp ~/Downloads/Quake1/RomiRTLights/romirtlights_id1.pk3 darkplaces/id1/
user@linux ~/Quake $ cp ~/Downloads/romirtlights_soa.pk3 darkplaces/hipnotic/

Authentic Model Improvements for Quake:

Die Installation dieser Mod ist etwas umständlicher, da ich nur bestimmte Teile des Gesamtpakets (Programmkorrekturen und Monstermodelle) verwenden möchte. Das Gesamtpaket enthält neben den Programmkorrekturen und Monstermodellen nämlich auch Modelle für Gegenstände und Waffen. Bei letzteren gibt es Überschneidungen und Inkompatibilitäten mit den QRP Item Textures, welche mir persönlich besser gefallen. Daher müssen die gewünschten Komponenten aus dem Gesamtpaket mit dem Tool pakextract extrahiert und separat installiert werden. Hierzu gehe ich wie folgt vor:

1. Herunterladen und Kompilieren des Tools pakextract:

user@linux ~/Quake $ git clone https://github.com/yquake2/pakextract.git tools/pakextract
user@linux ~/Quake $ cd tools/pakextract
user@linux ~/Quake/tools/pakextract $ make

2. Download der aktuellen Entwicklerversion der Mod in ein temporäres Verzeichnis und entpacken der PAK-Dateien:

user@linux ~/Quake/tools/pakextract $ git clone https://github.com/NightFright2k19/quake_authmdl.git /tmp/quake_authmdl
user@linux ~/Quake/tools/pakextract $ ./pakextract -o /tmp/quake_authmdl/id1/ /tmp/quake_authmdl/id1/pakz.pak
user@linux ~/Quake/tools/pakextract $ ./pakextract -o /tmp/quake_authmdl/hipnotic/ /tmp/quake_authmdl/hipnotic/pakz.pak
user@linux ~/Quake/tools/pakextract $ ./pakextract -o /tmp/quake_authmdl/rogue/ /tmp/quake_authmdl/rogue/pakz.pak
user@linux ~/Quake/tools/pakextract $ cd ../..

3. Installation der Programmkorrekturen und extrahierten Monstermodelle:

user@linux ~/Quake $ mkdir darkplaces/id1/progs darkplaces/rogue/progs
user@linux ~/Quake $ cp /tmp/quake_authmdl/id1/progs.dat darkplaces/id1/
user@linux ~/Quake $ cp /tmp/quake_authmdl/hipnotic/progs.dat darkplaces/hipnotic/
user@linux ~/Quake $ cp /tmp/quake_authmdl/rogue/progs.dat darkplaces/rogue/
user@linux ~/Quake $ cp /tmp/quake_authmdl/id1/progs/{boss.mdl,hknight.mdl,h_hellkn.mdl,enforcer.mdl,h_mega.mdl,demon.mdl,h_demon.mdl,soldier.mdl,h_guard.mdl,knight.mdl,h_knight.mdl,ogre.mdl,h_ogre.mdl,player.mdl,h_player.mdl,fish.mdl,dog.mdl,h_dog.mdl,wizard.mdl,h_wizard.mdl,shambler.mdl,h_shams.mdl,oldone.mdl,tarbaby.mdl,shalrath.mdl,h_shal.mdl,zombie.mdl,h_zombie.mdl} darkplaces/id1/progs/
user@linux ~/Quake $ cp /tmp/quake_authmdl/rogue/progs/{h_hellkn.mdl,hknight.mdl,knight.mdl,ogre.mdl,tarbaby.mdl,h_knight.mdl,h_ogre.mdl,mummy.mdl,player.mdl} darkplaces/rogue/progs/

Starten und Konfigurieren von DarkPlaces

Achtung: DarkPlaces speichert einmal übergebene Kommandozeilenparameter dauerhaft in den Konfigurationsdateien unter ~/Quake/darkplaces/config/*/config.cfg gemäß Parameter "-userdir darkplaces/config". Die Definition eines bestimmten Verzeichnisses ist hier erforderlich, damit es zu keinen Überschneidungen mit Quake Epsilon Build kommt. Ein Weglassen von bestimmten Parametern ist nicht gleichbedeutend mit dem Deaktivieren oder Zurücksetzen des betroffenen Parameters. Dies ist nur durch explizite Angabe des neuen gewünschten Wertes möglich. Daher ist es empfehlenswert die Konfigurationsdateien zu löschen, falls die Kommandozeilenparameter geändert wurden. Dies macht der folgende Befehl:

user@linux ~ $ rm -i ~/Quake/darkplaces/config/*/config.cfg

Da DarkPlaces deutlich mehr Grafikoptionen als QuakeSpasm anbietet, habe ich mir drei verschiedene Konfigurationen zusammengestellt:

DarkPlaces mit Minimalkonfiguration der Grafikeffekte

Geeignet um Quake auf ältereren Computern mit den hochauflösenden Texturen zu spielen. Je nach Rechenleistung sollten ggf. die Effekte für transparente Flüssigkeiten und Schatten deaktiviert werden, siehe unten.

user@linux ~/Quake $ darkplaces -basedir darkplaces -userdir darkplaces/config +gl_texturemode gl_linear_mipmap_linear +gl_texture_anisotropy 2 +r_shadows 1 +r_novis 1 +r_wateralpha 0.5 +cl_particles_quality 1 +cl_stainmaps 0 +r_bloom 0 +r_coronas 0 +r_lerpsprites 0 +vid_samples 1 +r_shadow_realtime_world 0 +r_glsl_offsetmapping 0 +r_glsl_offsetmapping_reliefmapping 0

Nach dem Starten können über das Konfigurationsmenü die Einstellungen zur Bildschirmauflösung, den Tastenbelegungen und Mausoptionen (z.B. Invert Mouse) vorgenommen werden.

Die hier verwendeten Parameter "+r_novis 1" (Transparente Flüssigkeiten) und "+r_shadows 1" (Schatteneffekte) sind relativ rechenintensiv und wirken sich bei älteren Computern auf die Framerate aus. Hier ggf. wie oben beschrieben die Datendateien mit VisPatch anpassen oder auf die transparenten Wassereffekte ganz verzichten. In beiden Fällen den Parameter auf "+r_novis 0" setzen. Die Schatteneffekte können mit "+r_shadows 0" deaktiviert werden. Gleiches gilt für den Parameter "+gl_texture_anisotropy 2", welcher bei Bedarf auf Kosten der Optik auf den Wert 1 reduziert werden kann.

Darkplaces mit ausgeglichener Konfiguration der Grafikeffekte:

Für ein hochauflösendes und originalgetreues Spielerlebnis auf aktuellen Computern. Je nach Rechenleistung ggf. den Parameter "+vid_samples 2" auf den Wert 4 für noch bessere Kantenglättung erhöhen.

user@linux ~/Quake $ darkplaces -basedir darkplaces -userdir darkplaces/config +gl_texturemode gl_linear_mipmap_linear +gl_texture_anisotropy 8 +r_shadows 1 +r_novis 1 +r_wateralpha 0.5 +cl_particles_quality 2 +cl_stainmaps 1 +r_bloom 1 +r_coronas 1 +r_lerpsprites 1 +vid_samples 2 +r_shadow_realtime_world 0 +r_glsl_offsetmapping 0 +r_glsl_offsetmapping_reliefmapping 0

DarkPlaces mit Highend-Grafikkonfiguration inkl. Echtzeit-Beleuchtung:

Für ein erweitertes, hochauflösendes Spielerlebnis mit beeindruckender Echtzeit-Beleuchtung. Dafür allerdings nicht mehr ganz so originalgetreu im Erscheinungsbild.

user@linux ~/Quake $ darkplaces -basedir darkplaces -userdir darkplaces/config +gl_texturemode gl_linear_mipmap_linear +gl_texture_anisotropy 16 +r_shadows 0 +r_novis 1 +r_wateralpha 0.5 +cl_particles_quality 2 +cl_stainmaps 1 +r_bloom 1 +r_coronas 1 +r_lerpsprites 1 +vid_samples 4 +r_shadow_realtime_world 1 +r_glsl_offsetmapping 1 +r_glsl_offsetmapping_reliefmapping 1

Die offiziellen Erweiterungen können in allen drei Fällen gestartet werden, indem einer der folgenden Parameter ergänzt wird:

  • "-hipnotic" für Mission Pack 1: Scourge of Armagon
  • "-rogue" für Mission Pack 2: Dissolution of Eternity
  • "-game dopa" für Dimension of the Past

 
QUAKE EPSILON BUILD

Download von Quake Epsilon Build:

Alle benötigten Pakete können von ModDB: Quake Epsion Build heruntergeladen werden:

Installation von Quake Epsilon Build:

Es wird davon ausgegangen, dass sich die heruntergeladenen Dateien im Ordner ~/Downloads befinden. Die Installation erfolgt dann wie folgt. Dabei werden die beiliegende Shareware-Version von Quake sowie die beiliegenden alternativen Soundtracks gelöscht, damit der Originalsoundtrack wiedergegeben wird. Außerdem wird das Benutzerverzeichnis für Konfigurationsdateien und Savegames in den Skripten auf ~/Quake/epsilon/config angepasst, um Überschneidungen mit der Darkplaces-Installation zu vermeiden.

user@linux ~ $ cd ~/Quake/epsilon
user@linux ~/Quake/epsilon $ unzip ~/Downloads/quake_epsilon_v2_56.zip
user@linux ~/Quake/epsilon $ rm id1/PAK0.PAK id1/quake1_music_diabolipak.pk3
user@linux ~/Quake/epsilon $ unzip ~/Downloads/epsilon_mp1_addon_v2_56.zip
user@linux ~/Quake/epsilon $ rm hipnotic/baz-pakwerk_soundtrack_xolvemastered.pk3
user@linux ~/Quake/epsilon $ unzip ~/Downloads/epsilon_mp2_addon_v2_56.zip
user@linux ~/Quake/epsilon $ rm rogue/sonic_mayhem-methods_of_destruction_mp2-xolveedited.pk3
user@linux ~/Quake/epsilon $ unzip ~/Downloads/epsilon_dopa_v2_56.zip
user@linux ~/Quake/epsilon $ rm dopa/nineinchnails_lightsinthesky_dopa_soundtrack.pk3
user@linux ~/Quake/epsilon $ sed -i 's/~\/\.darkplaces/\.\/config/g' linux_changegraphicsquality.sh
user@linux ~/Quake/epsilon $ sed -i 's/darkplaces-linux-x86_64-glx/darkplaces-linux-x86_64-glx -userdir config/g' *.sh
user@linux ~/Quake/epsilon $ sed -i 's/darkplaces-linux-686-glx/darkplaces-linux-686-glx -userdir config/g' *.sh

Konfiguration von Quake Epsilon Build

Quake Epsilon Build bringt vier verschiedene Grafikkonfigurationen mit: Low, High, Medium und Ultra. Die Grafikkonfiguration muss vor dem ersten Spielstart mit dem folgenden Skript ausgewählt werden und kann anschließend auch jederzeit damit verändert werden:

user@linux ~/Quake/epsilon $ ./linux_changegraphicsquality.sh

Starten von Quake Epsilon Build

Die Hauptkampagne und die verschiedenen Mission Packs können bequem über separate Skriptdateien aus dem Verzeichnis ~/Quake/epsilon heraus gestartet werden:

Quake Hauptkampagne:

user@linux ~/Quake/epsilon $ ./linux_quake.sh

Mission Pack 1:

user@linux ~/Quake/epsilon $ ./linux_mp1.sh

Mission Pack 2:

user@linux ~/Quake/epsilon $ ./linux_mp2.sh

Dimensions of the Past:

user@linux ~/Quake/epsilon $ ./linux_dimensionsofthepast.sh

Wechsel der DarkPlaces-Version von Quake Epsilon Build:

Die Quake Epison Build enthält verschiedene vorkompilierte Binärversionen von DarkPlaces. Sowohl für 32-Bit als auch 64-Bit Linux gibt es jeweils eine Version mit dem Grafikbackend GLX und eine Version mit dem Grafikbackend SDL. In der Standardeinstellung wird die GLX-Version verwendet. Bei Problemen kann mit folgenden Befehlen die aufgerufene Version in den Startskripen ausgetauscht werden. In meinem Fall funktionierte die SDL-Version besser; bei der GLX-Version gab es Audioprobleme.

Wechel von GLX- zu SDL-Version:

user@linux ~/Quake/epsilon $ sed -i 's/darkplaces-linux-x86_64-glx/darkplaces-linux-x86_64-sdl/g' *.sh
user@linux ~/Quake/epsilon $ sed -i 's/darkplaces-linux-686-glx/darkplaces-linux-686-sdl/g' *.sh

Wechsel von SDL- zu GLX-Version:

user@linux ~/Quake/epsilon $ sed -i 's/darkplaces-linux-x86_64-sdl/darkplaces-linux-x86_64-glx/g' *.sh
user@linux ~/Quake/epsilon $ sed -i 's/darkplaces-linux-686-sdl/darkplaces-linux-686-glx/g' *.sh

 
MULIPLAYER - QUAKEWORLD

Für Multiplayerspiele mit dem Internet-optimierten Quakeworld eignen sich andere Source Ports. Einer davon ist ezQuake, welcher in einem komplett vorkonfigurierten Paket unter dem Namen nQuake zum Download angeboten wird. Auf der Homepage gibt es sowohl Client- als auch Serverpakete für verschiedene Betriebssysteme. Hierzu werde ich ggf. später in einem separaten Artikel etwas schreiben.

Computerspiele

Doom

Nach mehr als 15 abstinenten Jahren habe ich das Hobby meiner Kindheit und Jugendzeit wiederentdeckt: Computerspiele. Neben aktuellen Titeln haben es mir vor allem die DOS- und Windows-Spiele der 1990er Jahre angetan. Doch wie spielt man diese auf moderner Hardware und unter Linux?

Ultimate Doom (1995)

GZDoom mit DHTP & Neural Upscale Pack

Für die Doom-Spiele der 1990er Jahre (Doom bzw. Ultimate Doom mit der semi-offiziellen Erweiterung Sigil; Doom II mit den Erweiterungen No Rest For The Living und Master Levels for Doom II; Final Doom) gibt es unzählige Source Ports und noch viel mehr grafische und musikalische Modifikationen und Erweiterungen, so dass die Auswahl und Zusammenstellung von Komponenten schon fast zur Qual wird. Im Gegenzug gibt es vermutlich für jeden Geschmack etwas passendes.

Für ein aufgewertetes, aber immer noch weitgehend originalgetreues Spielerlebnis im Singleplayer-Modus verwende ich für alle Spiele den Source Port GZDoom mit den grafischen Modifikationen Doom Neural Upscale 2X und Smooth weapons decorate Add On. Gelegentlich verwende ich zusätzlich das DOOM High Resolution Texture Project (DHTP). Musikalisch kommen das Hi-res Doom SFX pack und je nach Spiel der passende Soundtrack hinzu: IDKFA Soundtrack für Doom, die Roland SC-55 Music Packs für Doom II und Final Doom TNT Evilution sowie das Plutonia MIDI Pack für Final Doom Plutonia Experiment.

Extravagante aber weniger originalgetreue Spielerlebnisse bieten dagegen das ebenfalls auf GZDoom aufbauende und vorkonfigurierte Gesamtpaket Doom 4 Remake, die Mod-Zusammenstellung Projekt S.I.D.E. oder Mods wie Vanilla Doom 3D Models for Doom I & II und DOOM HD weapons and objects, Smooth Doom (siehe auch die Upscale Version) und Beautiful Doom. Für mich persönlich ist aber schon fast das DHTP zuviel des Guten und so zog es mich bisher immer wieder hin zu der oben vorgestellten Modkombination mit der Doom Neural Upscale 2X Mod, meist ohne DHTP.

Für den Mehrspieler-Modus über das Internet verwende ich den Source Port Zandronum mit leicht angepassten Versionen der oben genannten Modifikationen sowie dem Tool Doomseeker. Zandronum basiert auf dem gleichen ursprünglichen Programmcode wie GZDoom und wurde mit Fokus auf den Mehrspielermodus angepasst und weiterentwickelt, ist ansonsten aber nicht so aktuell und funktionsreich wie GZDoom. Anders als GZDoom verwendet Zandronum eine Client-Server-Netzwerkarchitekur an, d.h. es muss ein dedizierter Server aufgesetzt werden, mit dem sich die Spieler verbinden können. Dies ist für Netzwerkspiele komfortabler, sofern die Infrastruktur für einen dedizierten Server zur Verfügung steht. Bei GZDoom dagegen übernimmt ein Mitspieler die Rolle des Hosts.

Die Spiele

Grundsätzlich werden auch für die Source Ports die Datendateien (WAD-Dateien) der Originalspiele benötigt. Wenn diese nicht ohnehin bereits vorhanden sind, können die Spiele auf Plattformen wie Steam oder GOG käuflich erwerben werden. Lediglich die Erweiterung Sigil von John Romero kann kostenlos bezogen werden; nur der offizielle Soundtrack kostet 6,66 Euro.

Leider gibt es kein einzelnes Paket, dass alle der aufgeführten Spiele und Erweiterungen enthält. Immerhin enthält die Doom 3 BFG Edition auch die Datendateien für Ultimate Doom, Doom 2 und als einziges Paket auch die Erweiterung No Rest For The Living für Doom 2. Final Doom kann dagegen mit Doom II im Paket auf GOG.COM erworben werden und enthält außerdem die Master Levels für Doom II.

Die Modifikationen

Die Modifikationen Doom Neural Upscale 2X und Smooth weapons decorate Add ON enthalten mit Verfahren der künstlichen Intelligenz hochskalierte Versionen der Originalgrafiken, welche auf den heutigen hochauflösenden Monitoren optisch ansprechender sind als die Originalgrafiken. Doom Neural Upscale 2X ersetzt alle Grafiken von Doom, Doom 2, Final Doom, No Rest for the Living und enthält die Korrekturen aus dem Doom 2 Minor Sprite Fixing Project. Smooth Weapons ergänzt das Spiel zusätzlich um flüssigere Waffenanmiationen. Das Doom High Resolution Texture Project (DHTP) dagegen enthält hochauflösende, von Fans neu erstellte Texturen und ist daher naturgemäß weniger originalgetreu als das Upscale Pack.

Der Zandronum SW-Renderer HUD-Fix behebt Darstellungsfehler in Zandronum im HUD bei gleichzeitiger Verwendung von Software Renderer und Neural Upscale Pack bzw. DHTP. Die Mod kann mit dem Tool WadExt aus den Originalspieledaten selbst erstellt werden. Bei Verwendung einer Screensize ab 11 oder des OpenGL-Renderers von Zandronum sowie für GZDoom ist diese Mod nicht erforderlich und sollte auch nicht verwendet werden.

Das High resolution Doom sound effects pack enthält für 77 der 107 Doom-Soundeffekte originalgetreue Neuaufnahmen in hoher Tonqualität. In mühevoller Kleinarbeit wurden entweder die Originalquellen der Soundeffekte ermittelt oder annähernd gleichklingende Samples abgemischt.

IDFKA - Doom Soundtrack ist ein professioneller Remake des Doom 1 Soundtracks von Andrew Hulshult. Der Wiedererkennungswert der Originaltitel ist in meinen Augen so hoch, dass ich gerne den ebenfalls sehr guten und kultigen Original-MIDI-Soundtrack damit ersetzte. Andrew Hulshult hat schon für viele kommerizielle Shooter die Soundtracks erstellt, u.a. auch für die beiden Erweiterungen von Doom Eternal.

Die Roland SC-55 Music Packs für Doom II und Final Doom TNT Evilution enthalten Aufnahmen der Original-MIDI-Soundtracks von einem echten Roland MIDI Synthesizer im SC-55 Standardprofil. Der SC-55 war in den 90er Jahren bei Komponisten beliebt und die MIDI-Wiedergabe auf diesen Geräten entspricht daher am ehesten der Originalkomposition. Auch für Doom 1 gibt es als Alternative zum oben aufgeführten Remake ein Doom 1 Roland SC-55 Music Pack.

Das Plutonia MIDI Pack enthält einen von der DOOM-Community komponierten Soundtrack für Final Doom Plutonia Project, da das Originalspiel über keinen eigenen Soundtrack verfügt.

Die Verzeichnisstruktur und Dateien für die Source Ports

Alle für GZDoom bzw. Zandronum benötigten Datendateien sollen der Einfachheit halber unterhalb des Ordners ~/GZDoom abgelegt werden, so dass am Ende die folgende Ordner/Dateistrukur entsteht:

~/GZDoom
├── games                                       ORIG.DATENDATEIEN DER SPIELE:
│   ├── DOOM.WAD                                Doom oder Ultimate Doom
│   ├── SIGIL_v1_21.wad                         Sigil
│   ├── SIGIL_SHREDS.wad                        Sigil (Soundtrack; optional)
│   ├── DOOM2.WAD                               Doom 2
│   ├── NERVE.WAD                               No Rest for the Living
│   ├── master.wad                              Master Levels for Doom 2
│   ├── PLUTONIA.WAD                            Final Doom: Plutonia Project
│   └── TNT.WAD                                 Final Doom: TNT Evilution
└── mods
    ├── audio                                   MODIFIKATIONEN AUDIO:
    │   ├── pk_doom_sfx_20120224.wad            Doom highres. sound effects
    │   ├── IDKFAv2.wad                         Doom 1: A. Hulshult's Remake
    │   ├── doom2_sc55_ogg_v1.2.zip             Doom 2: Roland SC-55 Music 
    │   ├── plutmidi.wad                        F.Doom PP: Community Music
    │   └── tntevilution_sc55_ogg.zip           F.Doom TNT: Roland SC-55 Music
    │
    └── graphics                                MODIFIKATIONEN GRAFIK:
        ├── NeuralUpscale2x_v1.0-Base.pk3       Upscaled graphics (Base)
        ├── NeuralUpscale2x_v1.0-Addon-GZDoomHUD.pk3   └ GZDoom Addon
        ├── NeuralUpscale2x_v1.0-Addon-Doom1.pk3       └ Doom 1 Addon
        ├── NeuralUpscale2x_v1.0-Addon-Doom2.pk3       └ Doom 2 Addon
        ├── NeuralUpscale2x_v1.0-Addon-Plutonia.pk3    └ F.Doom PP Addon
        ├── NeuralUpscale2x_v1.0-Addon-TNT.pk3         └ F.Doom TNT Addon
        ├── NeuralUpscale2x_Smooth_Weapons-Base.pk3 Smooth Weapons (Base)
        ├── NeuralUpscale2x_Smooth_Weapons-Addon-Doom2.pk3 └ Doom 2 Addon
        ├── DHTP-Base.pk3                       High Res. graphics (Base)
        ├── DHTP-Addon-Doom1.pk3                       └ Doom 1 Addon
        ├── DHTP-Addon-Doom2.pk3                       └ Doom 2 Addon
        ├── DHTP-Addon-Plutonia.pk3                    └ F.Doom PP Addon
        ├── DHTP-Addon-TNT.pk3                         └ F.Doom TNT Addon
        └── Zandronum-SWRenderer-HUD-Fix.pk3    Zandronum SW-Renderer HUD-Fix

Aufbau der Verzeichnisstruktur und Ablage der Original-Spieldaten

Zuerst werden die Verzeichnisse angelegt:

user@linux ~ $ mkdir -p ~/GZDoom/games ~/GZDoom/mods/audio ~/GZDoom/mods/graphics

Anschließend werden die Datendateien der Originalspiele in den Ordner ~/GZDoom/games kopiert. Die benötigten WAD-Dateien (Dateinamen siehe oben) findet man in den Installationsordnern der entsprechenden Spiele bzw. oben genannten Pakete von Steam oder GOG.

Eine Ausname stellen die Master Levels for Doom 2 dar: Sie werden nicht wie oben angegeben als einzelne Datei master.wad ausgeliefert, sondern in Form von 20 separaten WAD-Dateien. Damit die losen Master-Level im Menü von Doom 2 als separate Episode angezeigt werden, können sie mit dem Tool Unofficial Master Levels for Doom 2 Patch zu der Datei master.wad zusammengeführt werden. Das Tool steht als Windows-Binärdatei und im Quelltext zur Verfügung. Da für das Kompilieren eine alte QT-Version benötigt wird, empfehle ich die Verwendung der Windows-Binärdatei unter Wine oder in einer Windows-VM. Die zusammengeführte master.wad-Datei wird anschließend ebenfalls in den Ordner ~/GZDoom/games kopiert.

Die WAD-Datei SIGIL_v1_21.wad von Sigel kann auf der Sigel-Homepage kostenlos heruntergeladen werden. Der optionale Soundtrack kann dort als separate WAD-Datei SIGIL_SHREDS.wad käuflich erworben werden.

Installation von GZDoom unter Gentoo Linux

Die aktuelle Version von GZDoom ist in der offiziellen Paketdatenbank von Gentoo Linux enthalten. Ich empfehle die Installation mit den folgenden USE-Flags:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="gtk non-free openmp vulkan -debug gles2 -telemetry" emerge games-fps/gzdoom -pv

Installation von Doomseeker und Zandronum unter Gentoo Linux

Doomseeker, Zandronum sowie die benötigte Bibliothek fmod sind leider nicht in der offiziellen Paketdatenbank von Gentoo enthalten. In dem inoffiziellen Overlay haarp gibt es aber für alle drei Pakete games-util/doomseeker-1.3.2, games-fps/zandronum-3.0.1 und media-libs/fmod-4.38.02-r1 aktuelle Ebuilds.

Die in Zandronum enthaltene Bibliothek libgme kompiliert nicht und führt zu einem Abbruch der Installation mit obiger Zandronum-Ebuild. Die Verwendung der beiliegenden Version kann jedoch umgangen werden, indem die Bibliothek aus den offiziellen Gentoo-Paketdatenbank installiert wird. Dort ist sie unter dem Namen media-libs/game-music-emu enthalten und muss vor der Installation von Zandronum installiert werden.

Wenn die Ebuilds für Doomseeker, Zandronum und fmod korrekt im lokalen Overlay unter games-util/doomseeker, games-fps/zandronum bzw. media-libs/fmod abgelegt sind, kann die Installation wie folgt erfolgen:

linux ~ # ACCEPT_KEYWORDS="~amd64" USE="-fake-plugins -legacy-plugins" emerge games-util/doomseeker -pv
linux ~ # emerge media-libs/game-music-emu -pv
linux ~ # ACCEPT_KEYWORDS="~amd64" USE="dedicated gtk opengl system-sqlite timidity -system-dumb -system-geoip" emerge games-fps/zandronum -pv

Installation des Zandronum-Servers unter Gentoo Linux (optional)

Mit der oben beschriebenen Client-Installation wird durch das USE-Flag "dedicated" auch der dedizierte Zandronum-Server installiert. Soll aber z.B. auf einem Linux-Server ausschließlich der dedizierte Server ohne den Client mit seinen Abhängigkeiten installiert werden, kann die Installation wie folgt durchgeführt werden:

linux ~ # emerge media-libs/game-music-emu -pv
linux ~ # ACCEPT_KEYWORDS="~amd64" USE="-opengl dedicated -gtk -system-dumb -system-geoip system-sqlite -timidity" emerge games-fps/zandronum -pv

Download der Modifikationen

Die benötigten Dateien der Modifikationen können von folgenden Seiten bezogen werden:

Installation der Modifikationen

Es wird davon ausgegangen, dass sich alle heruntergeladenen Dateien im Ordner ~/Downloads befinden.

Doom Neural Upscale 2X Pack:

Das heruntergeladene Upscale-Pack funktioniert nur mit GZDoom, da Zandronum das sogenannte Lump Filtering nicht unterstützt. Daher erzeuge ich mit den folgenden Befehlen kombinierbare Teilpakete, die sowohl mit GZDoom als auch Zandronum genutzt werden können. Zwei mit Zandronum gänzlich inkompatible HUD-Grafiken (STBAR.png und STARMS.png) werden in ein separates Paket für die ausschließliche Verwendung mit GZDoom ausgelagert.

user@linux ~ $ unzip -o ~/Downloads/NeuralUpscale2x_v1.0.pk3 -d /tmp/nu2x
user@linux ~ $ cd /tmp/nu2x
user@linux ~/tmp/nu2x $ mkdir -p HIRES/HUD && mv FILTER/DOOM/HIRES/HUD/STBAR.png FILTER/DOOM/HIRES/HUD/STARMS.png HIRES/HUD/. && zip -r ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-GZDoomHUD.pk3 HIRES && rm -Rf HIRES
user@linux ~/tmp/nu2x $ mv FILTER/DOOM/HIRES . && zip -r ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Base.pk3 HIRES SOUNDS SPRITES stepfix.wad && rm -Rf HIRES SOUNDS SPRITES stepfix.wad
user@linux ~/tmp/nu2x $ mv FILTER/DOOM.DOOM1/HIRES . && zip -r ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Doom1.pk3 HIRES && rm -Rf HIRES
user@linux ~/tmp/nu2x $ mv FILTER/DOOM.DOOM2/HIRES . && zip -r ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Doom2.pk3 HIRES && rm -Rf HIRES
user@linux ~/tmp/nu2x $ mv FILTER/DOOM.DOOM2.PLUTONIA/HIRES . && zip -r ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Plutonia.pk3 HIRES && rm -Rf HIRES
user@linux ~/tmp/nu2x $ mv FILTER/DOOM.DOOM2.TNT/HIRES . && zip -r ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-TNT.pk3 HIRES && rm -Rf HIRES
user@linux ~/tmp/nu2x $ rm -Rf /tmp/nu2x

Smooth weapons decorate Add ON:

Das heruntergeladene Smooth Weapons Add On funktioniert nur mit GZDoom, da Zandronum das sogenannte Lump Filtering nicht unterstützt. Daher erzeuge ich mit den folgenden Befehlen kombinierbare Teilpakete, die sowohl mit GZDoom als auch Zandronum genutzt werden können.

user@linux ~ $ unzip -o ~/Downloads/NeuralUpscale2x_Smooth_Weapons.pk3 -d /tmp/nu2xsw
user@linux ~ $ cd /tmp/nu2xsw
user@linux ~/tmp/nu2xsw $ mv FILTER/DOOM.DOOM2/HIRES . && zip -r ~/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Addon-Doom2.pk3 HIRES && rm -Rf HIRES
user@linux ~/tmp/nu2xsw $ mv FILTER/DOOM/HIRES . && rm -Rf FILTER && zip -r ~/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Base.pk3 *
user@linux ~/tmp/nu2xsw $ rm -Rf /tmp/nu2xsw

Doom High Resolution Texture Pack (DHTP):

Im Folgenden wird der aktuelle Entwicklungsstand des Doom High Resolution Texture Packs heruntergeladen. Da das beiliegende Paketierungstool nur eine GZDoom-kompatible Version (Zandronum unterstützt das sogenannte Lump Filtering nicht) generieren kann, erzeuge ich mit den folgenden Befehlen kombinierbare Teilpakete, die sowohl mit GZDoom als auch Zandronum genutzt werden können.

user@linux ~ $ git clone https://github.com/KuriKai/DHTP.git /tmp/DHTP
user@linux ~ $ mkdir /tmp/DHTP/splitpack
user@linux ~ $ cd /tmp/DHTP/splitpack
user@linux ~/tmp/DHTP/splitpack $ for filename in "../docs/"*; do base_name=$(basename $filename); cat "../README.md" "$filename" "../credits.txt" > "README_$base_name"; done
user@linux ~/tmp/DHTP/splitpack $ mv ../textures/doom1 hires && zip -r ~/GZDoom/mods/graphics/DHTP-Addon-Doom1.pk3 . -i \*.PNG \*.png \*.txt && rm -Rf hires
user@linux ~/tmp/DHTP/splitpack $ mv ../textures/doom2 hires && zip -r ~/GZDoom/mods/graphics/DHTP-Addon-Doom2.pk3 . -i \*.PNG \*.png \*.txt && rm -Rf hires
user@linux ~/tmp/DHTP/splitpack $ mv ../textures/doom2-plut hires && zip -r ~/GZDoom/mods/graphics/DHTP-Addon-Plutonia.pk3 . -i \*.PNG \*.png \*.txt && rm -Rf hires
user@linux ~/tmp/DHTP/splitpack $ mv ../textures/doom2-tnt hires && zip -r ~/GZDoom/mods/graphics/DHTP-Addon-TNT.pk3 . -i \*.PNG \*.png \*.txt && rm -Rf hires
user@linux ~/tmp/DHTP/splitpack $ mv ../textures hires && mv ../flats/* hires/. && zip -r ~/GZDoom/mods/graphics/DHTP-Base.pk3 . -i \*.PNG \*.png \*.txt && rm -Rf hires README_*
user@linux ~/tmp/DHTP $ rm -Rf /tmp/DHTP

Zandronum SW-Renderer HUD-Fix:

Die hochskalierten Versionen der Grafiken floor7_2 und sttprcnt im Upscale-Pack sowie die hochauflösende Grafik floor7_2 im DHTP verursachen in Zandronum Darstellungsfehler in HUD und Rahmen bei Verwendung des Software Renderers und einer Screensize kleiner als 11. Daher wird im folgenden eine Mod mit den entsprechenden Originalgrafiken aus der DOOM.WAD erzeugt, mit welcher diese Änderungen aus Upscale Pack bzw. DHTP rückgängig gemacht werden können, indem diese Mod als letzte Datei, d.h. mit höchster Priorität, geladen wird. Hierzu wird die Windows-Binary des Tools WadExt mit Wine ausgeführt, da ich es hier auf die schnelle nicht kompilieren konnte. Bei einer Screensize ab 11 oder Verwendung des Zandronum-OpenGL-Renderers sowie für GZDoom ist diese Mod nicht erforderlich und sollte auch nicht verwendet werden.

user@linux ~ $ mkdir /tmp/zfix
user@linux ~ $ cd /tmp/zfix
user@linux ~/tmp/zfix $ unzip ~/Downloads/wadext_win32_2.1.zip
user@linux ~/tmp/zfix $ wine wadext.exe ~/GZDoom/games/DOOM.WAD
user@linux ~/tmp/zfix $ cd DOOM
user@linux ~/tmp/zfix/DOOM $ echo "gameinfo { BorderFlat = \"zdrmbrdr\" }" >ZMAPINFO
user@linux ~/tmp/zfix/DOOM $ cp FLATS/floor7_2.png FLATS/zdrmbrdr.png
user@linux ~/tmp/zfix/DOOM $ zip ~/GZDoom/mods/graphics/Zandronum-SWRenderer-HUD-Fix.pk3 ZMAPINFO FLATS/zdrmbrdr.png graphics/sttprcnt.png
user@linux ~/tmp/zfix/DOOM $ rm -Rf /tmp/zfix

The high resolution Doom sound effects pack:

user@linux ~ $ unzip ~/Downloads/pk_doom_sfx.zip -d ~/GZDoom/mods/audio/

IDKFA Remake of Doom 1 Soundtrack by Andrew Hulshult:

user@linux ~ $ unzip -j ~/Downloads/IDKFA_Soundtrack_Mod_v2.zip WAD/IDKFAv2.wad -d ~/GZDoom/mods/audio/

Roland SC-55 Music Pack für Doom II:

user@linux ~ $ cp ~/Downloads/doom2_sc55_ogg_v1.2.zip ~/GZDoom/mods/audio/

Roland SC-55 Music Pack für Final Doom (TNT Evilution):

user@linux ~ $ cp ~/Downloads/tntevilution_sc55_ogg.zip ~/GZDoom/mods/audio/

Final Doom Plutonia Project MIDI Pack:

user@linux ~ $ unzip ~/Downloads/plutmidi.zip plutmidi.wad -d ~/GZDoom/mods/audio/

Starten und Konfigurieren von GZDoom

Um GZDoom mit der gewünschten Kombination von Spiel(daten) und Modifikationen zu starten, gibt es zwei Möglichkeiten: Entweder werden die Informationen in Form von Kommandozeilenparametern bei Programmstart übergeben, oder sie werden in einer Konfigurationsdatei hinterlegt und können anschließend bei Programmstart über ein Popup ausgewählt werden. Für beide Varianten gilt, dass nach dem ersten Programmstart im Options-Menü Einstellungen vorgenommen werden sollten. Mehr dazu unten.

Hinweis: Falls GZDoom schon früher verwendet wurde, empfehle ich, die alte Konfigurationsdatei ~/.config/gzdoom/gzdoom.ini zu löschen, um bei der Konfiguration mit einer sauberen Ausgangslage zu beginnen.

1. Auswahl von Spiel(daten) und Modifikationen per Kommandozeile:

Doom bzw. Ultimate Doom und Sigel:

user@linux ~ $ gzdoom -iwad ~/GZDoom/games/DOOM.WAD -file ~/GZDoom/games/SIGIL_v1_21.wad ~/GZDoom/games/SIGIL_SHREDS.wad ~/GZDoom/mods/audio/pk_doom_sfx_20120224.wad ~/GZDoom/mods/audio/IDKFAv2.wad ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Base.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-GZDoomHUD.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Doom1.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Base.pk3 ~/GZDoom/mods/graphics/DHTP-Base.pk3 ~/GZDoom/mods/graphics/DHTP-Addon-Doom1.pk3

Doom 2, No Rest for the Living und Master Levels for Doom 2:

user@linux ~ $ gzdoom -iwad ~/GZDoom/games/DOOM2.WAD -file ~/GZDoom/games/NERVE.WAD ~/GZDoom/games/master.wad ~/GZDoom/mods/audio/pk_doom_sfx_20120224.wad ~/GZDoom/mods/audio/doom2_sc55_ogg_v1.2.zip ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Base.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-GZDoomHUD.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Doom2.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Base.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Addon-Doom2.pk3 ~/GZDoom/mods/graphics/DHTP-Base.pk3 ~/GZDoom/mods/graphics/DHTP-Addon-Doom2.pk3

Final Doom: TNT Evilution:

user@linux ~ $ gzdoom -iwad ~/GZDoom/games/TNT.WAD -file ~/GZDoom/mods/audio/pk_doom_sfx_20120224.wad ~/GZDoom/mods/audio/tntevilution_sc55_ogg.zip ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Base.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-GZDoomHUD.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Doom2.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-TNT.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Base.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Addon-Doom2.pk3 ~/GZDoom/mods/graphics/DHTP-Base.pk3 ~/GZDoom/mods/graphics/DHTP-Addon-Doom2.pk3 ~/GZDoom/mods/graphics/DHTP-Addon-TNT.pk3

Final Doom: Plutonia Project:

user@linux ~ $ gzdoom -iwad ~/GZDoom/games/PLUTONIA.WAD -file ~/GZDoom/mods/audio/pk_doom_sfx_20120224.wad ~/GZDoom/mods/audio/plutmidi.wad ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Base.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-GZDoomHUD.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Doom2.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Plutonia.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Base.pk3 ~/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Addon-Doom2.pk3 ~/GZDoom/mods/graphics/DHTP-Base.pk3 ~/GZDoom/mods/graphics/DHTP-Addon-Doom2.pk3 ~/GZDoom/mods/graphics/DHTP-Addon-Plutonia.pk3

Die obigen Aufrufe enthalten sowohl die Upscale-Packs als auch das DHTP High Resolution Pack. Aus der Aufrufreihenfolge ergibt sich die Priorität; da das DHTP zuletzt eingebunden wird, haben die dort enthaltenen Grafiken Vorrang gegenüber den Grafiken aus dem Upscale-Pack. Meistens spiele ich jedoch ohne DHTP: Dafür müssen lediglich die DHTP-Dateien ~/GZDoom/mods/graphics/DHTP-*.pk3 von der Kommandozeile entfernt werden.

2. Auswahl von Spiel(daten) und Modifikationen per Popup:

Mit dem ersten Aufruf von GZdoom (es reicht der Aufruf von "gzdoom" ohne Parameter) wird die Konfigurationsdatei ~/.config/gzdoom/gzdoom.ini mit Standardeinstellungen erzeugt. Nachdem eine initiale Konfigurationsdatei erzeugt wurde, kann diese mit einem Texteditor bearbeitet werden.

Die Konfigurationsdatei gliedert sich in verschiedene Abschnitte, die jeweils mit einem Bezeichner in eckigen Klammern beginnen. Die Einträge für einen Abschnitt müssen dann ohne Leerzeilen nacheinander folgen. In den folgenden Abschnitten sind die aufgeführten Einträge zu ergänzen. Dabei sollten bestehende Einträge nicht entfernt werden; der Lesbarkeit halber führe ich sie hier jedoch nicht auf.

[IWADSearch.Directories]
Path=$HOME/GZDoom/games

[doom.id.doom2.commercial.Autoload]
Path=$HOME/GZDoom/games/NERVE.WAD
Path=$HOME/GZDoom/games/master.wad
Path=$HOME/GZDoom/mods/audio/pk_doom_sfx_20120224.wad
Path=$HOME/GZDoom/mods/audio/doom2_sc55_ogg_v1.2.zip
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Base.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-GZDoomHUD.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Doom2.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Base.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Addon-Doom2.pk3
Path=$HOME/GZDoom/mods/graphics/DHTP-Base.pk3
Path=$HOME/GZDoom/mods/graphics/DHTP-Addon-Doom2.pk3

[doom.id.doom2.plutonia.Autoload]
Path=$HOME/GZDoom/mods/audio/pk_doom_sfx_20120224.wad
Path=$HOME/GZDoom/mods/audio/plutmidi.wad
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Base.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-GZDoomHUD.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Doom2.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Plutonia.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Base.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Addon-Doom2.pk3
Path=$HOME/GZDoom/mods/graphics/DHTP-Base.pk3
Path=$HOME/GZDoom/mods/graphics/DHTP-Addon-Doom2.pk3
Path=$HOME/GZDoom/mods/graphics/DHTP-Addon-Plutonia.pk3

[doom.id.doom2.tnt.Autoload]
Path=$HOME/GZDoom/mods/audio/pk_doom_sfx_20120224.wad
Path=$HOME/GZDoom/mods/audio/tntevilution_sc55_ogg.zip
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Base.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-GZDoomHUD.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Doom2.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-TNT.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Base.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Addon-Doom2.pk3
Path=$HOME/GZDoom/mods/graphics/DHTP-Base.pk3
Path=$HOME/GZDoom/mods/graphics/DHTP-Addon-Doom2.pk3
Path=$HOME/GZDoom/mods/graphics/DHTP-Addon-TNT.pk3

[doom.id.doom1.Autoload]
Path=$HOME/GZDoom/games/SIGIL_v1_21.wad
Path=$HOME/GZDoom/games/SIGIL_SHREDS.wad
Path=$HOME/GZDoom/mods/audio/pk_doom_sfx_20120224.wad
Path=$HOME/GZDoom/mods/audio/IDKFAv2.wad
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Base.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-GZDoomHUD.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_v1.0-Addon-Doom1.pk3
Path=$HOME/GZDoom/mods/graphics/NeuralUpscale2x_Smooth_Weapons-Base.pk3
Path=$HOME/GZDoom/mods/graphics/DHTP-Base.pk3
Path=$HOME/GZDoom/mods/graphics/DHTP-Addon-Doom1.pk3

Auch hier gilt: Wenn das DHTP nicht verwendet werden soll, die entsprechenden Einträge mit den Dateinamen "DHTP-*.pk3" aus den Abschnitten entfernen.

Anschließend kann GZDoom ohne weitere Kommandozeilenparameter gestartet werden:

user@linux ~ $ gzdoom

3. GZDoom nach dem ersten Start konfigurieren

Nach dem ersten Start sollten die Grafikoptionen über das Options-Menü angepasst werden. Hier gibt es unzählige Einstellungen, mit denen das Erscheinungsbild des Spiels angepasst werden kann. Ich persönlich bevorzuge einen scharfen, pixeligen Look gegenüber den weichgezeichneten, "verwaschenen" Texturen der GZDoom-Standardeinstellungen. Grundsätzlich nehme ich folgende Einstellungen vor:

  • Options > Full options menu > Set video mode
    • Preferred Rendering API: Legt die API fest, mit der das Bild ausgegeben wird. OpenGL; bei neueren Grafikkarten ggf. Vulkan. Bei meinem 10 Jahre alten Notebook liegt die Framerate dagegen nur mit "OpenGL ES" in einem akzeptablen Bereich. Im Zweifelsfall ausprobieren. Eine Änderung dieser Option wird erst nach einem Neustart von GZDoom aktiv. Mit dem Befehl "vid_fps 1" in der GZDoom-Konsole kann man die FPS einblenden.
    • Render Mode: Legt fest, wie das Bild berechnet wird. Hier schwanke ich je zwischen Hardware accelerated und dem True Color SW Renderer. Wenn es möglichst klassisch sein soll, wähle ich den True Color SW Renderer. Möchte ich moderne Features wie Blickwinkelberücksichtigung bei der Spritedarstellung, Kantenglättung oder 3D-Modelle wähle ich Hardware accelerated. Zahlreiche Optionen in den Menüs haben bei Wahl des Software Renderers keine Auswirkungen.
    • Choose Resolution Preset: Hier wähle ich die native Bildschirmauflösung des Monitors aus.
  • Options > Full options menu > Display options:
    • Hardware Renderer > Adjust sprite clipping: Hat Auswirkungen auf die Darstellung der Sprites. Ohne Clipping werden die Sprites je nach Perspektive beim Hardware-Renderer hart abgeschnitten; in meinen Augen unschön, daher wähle ich hier Always.
    • Hardware Renderer > Multisample: Hat Auswirkungen auf die Kantendarstellung. Je nach Rechenleistung ganz deaktiviert, 2x oder gerne auch etwas höher (8x oder 16x), da dies zu glatteren Kanten führt.
    • Texture options > Texture Filter mode: Aus meiner Sicht die wichtigste Einstellung, wenn der Render mode "Hardware accelerated" ausgewählt wurde. Sie legt fest, welcher Filter auf die Texturen angewendet wird. Als Standard ist hier "Linear" vorausgewählt, was zu der in meinen Augen unscharfen und verwaschenen Bilddarstellung führt. Ich mag es scharf und (ein wenig) pixelig; daher wähle ich hier im Zweifelsfall None. Allerdings ist auch None (nearest mipmap) empfehlenswert, da dies (nur) in weiter Entfernung zu etwas weicheren und damit ruhigeren Texturen führt.
    • Texture options > Anisotropic filter: Hat Auswirkungen auf die Schärfe von entfernten Texturen. Je nach Rechenleistung 4x oder auch höher (8x, 16x).
    • Screensize: 11, um platzsparend ohne breite HUD/Statusleiste zu spielen.

Starten und Konfigurieren von Doomseeker und Zandronum

Zandronum benutze ich ausschließlich für Multiplayer-Spiele und starte den Source Port nicht direkt, sondern über den komfortablen Server-Browser Doomseeker. Da im Mehrspielermodus die Server vorgeben, welche WADs zu verwenden sind oder optional verwendet werden können, müssen diese auch nicht explizit vorgegeben werden; lediglich die Pfade zu den Ordnern mit den WAD-Dateien müssen in Doomseeker hinterlegt werden. Zudem besitzt Doomseeker die Funktion, die für einen bestimmten Server benötigten WAD-Dateien (jenseits der kommerziellen Spieledaten, die immer vorhanden sein müssen) automatisch aus dem Internet zu laden.

Hinweis: Falls Doomseeker oder Zandronum schon früher verwendet wurden, empfehle ich, die alten Konfigurationsdateien ~/.config/doomseeker/*.ini sowie ~/.config/zandronum/zandronum.ini zu löschen, um bei der Konfiguration mit einer sauberen Ausgangslage zu beginnen.

Doomseeker kann wie folgt gestartet werden:

user@linux ~ $ doomseeker

Beim ersten Start von Doomseeker öffnet sich automatisch der Konfigurationsdialog. Hier ist im Abschnitt File Paths zusätzlich ein Eintrag für den Pfad "~/GZDoom" mit der Option "Recurse" vorzunehmen. Anschließend kann ein Server in der Liste ausgewählt werden und mit einem Doppelklick Zandronum mit Verbindung zu dem gewählten Server gestartet werden.

Nach dem ersten Start von Zandronum sollten auch hier analog zu GZDoom einige Einstellungen im Options-Menü vorgenommen werden. Es gilt im Wesentlichen das oben gesagte, allerdings sind die Optionen im Menü abweichend angeordnet. Ich empfehle dementsprechend die folgenden Einstellungen; Erläuterungen siehe oben bei GZDoom:

  • Options > Set Video Mode
    • Fullscreen: YES
    • Aspect Ratio: Seitenverhältnis des eigenen Monitors auswählen, falls unten die native Bildschirmauflösung des Monitors nicht aufgeführt ist.
    • Renderer: OpenGL; ggf. auch Software. Eine Änderung dieser Option wird erst nach einem Neustart von Zandronum aktiv. Hinweis: Bei Screensize kleiner 11 und Verwendung von Upscale Pack und/oder DHTP können die Darstellungsfehler in HUD und Rahmen durch Einbinden der erstellten Zandronum-SWRenderer-HUD-Fix.pk3 behoben werden.
    • Bildschirmauflösung: Auswahl der nativen Bildschirmauflösung des eigenen Monitors
  • Options > Display Options > OpenGL Options
    • Preferences > Adjust Sprite Clipping: Always
    • Multisample-Einstellungen lassen sich in Zandronum nicht über das Menü vornehmen. Hierzu muss der Kommandozeilenparameter "+gl_vid_multisample 2" (oder 0, 2, 4, 6, 8, ... analog GZDoom) an Zandronum übergeben werden. Dazu diesen Parameter in der Doomseeker-Konfiguration unter dem Abschitt Games > Zandronum > Custom parameters eintragen.
    • Texture Options > Texture Filter Mode: None (nearest mipmap) oder None
    • Texture Options > Anisotropic Filter: 4x oder höher
  • Options > Display Options > Screensize: 11, um platzsparend ohne breite HUD/Statusleiste zu spielen.
  • Options > HUD Options > Message Options > Text Scaling
    • Enable Text Scaling: ON
    • Use Screen Ratio: Yes
    • Text Size Scalar: Schriften auf eine lesbare Größe skalieren
  • Options > Player Setup: Name und ggf. weitere Einstellungen (z.B. Always run und Weapon setup) vornehmen.

Starten und Konfigurieren eines dedizierten Zandronum-Servers (optional)

Der Zandronum-Server kann grundsätzlich mit dem Programm zandronum-server gestartet werden und über eine Vielzahl von Servervariablen individuell konfiguriert werden. Die Einstellungen können per Kommandozeile und Konfigurationsdateien übergeben werden.

Um nicht für jede Kombination aus Spiel (z.B. Doom, Doom 2) und Spielmodus (Deathmatch, Cooperative) eine eigene komplexe Server-Konfigurationsdatei pflegen zu müssen, habe ich meine Konfiguration wie folgt aufgebaut:

  1. Konfigurationsparameter, die unabhängig von Spiel und Spielmodus für jeden Server gleich sein sollen, pflege ich in einer zentralen Konfigurationsdatei mit dem Namen general.conf und binde diese bei jedem Serveraufruf ein.
  2. Konfigurationsparameter, die den Spielmodus definieren und konfigurieren, werden separat je Modus in zwei weiteren Konfigurationsdateien coop.conf und deathmatch.conf gepflegt und dann alternativ bei dem Serveraufruf je nach gewünschtem Modus eingebunden.
  3. Konfigurationsparameter, die das Spiel (z.B. Auswahl der obligatorischen und optionalen WAD-Dateien) sowie die konkrete Serverinstanz (z.B. Servername, Port) betreffen, übergebe ich per Kommandozeilenparameter. Für die verschiedenen Server habe ich mir daher jeweilige Start-Skripte erstellt: doom1-coop.sh, doom1-deathmatch.sh, doom2-coop.sh, doom2-deathmatch.sh, fdoom-plutonia-coop.sh, fdoom-tnt-coop.sh.

Die Startskripte liegen im Ordner ~/zandronum, die drei Konfigurationsdateien im Ordner ~/zandronum/configs und Logdateien werden gemäß Konfiguration unter ~/zandronum/logs erstellt. Die WAD-Dateien werden wie oben unter ~/GZDoom erwartet.

Bei der Auswahl und Festlegung der obligatorischen (Parameter -file) und optionalen (Parameter -optfile) Modifikationen ist zu beachten:

  • Falls die Mod Smooth Weapons verwendet werden soll, muss sie aus technischen Gründen (enthalt decorate.dec) obligatorisch eingebunden werden.
  • Die Mod Smooth Weapons funktioniert nicht korrekt, wenn sie vor der Mod Neural Upscale Pack geladen wird. Wenn Smooth Weapons verwendet wird, sollte auch die Mod Neural Upscale als obligatorisch eingebunden werden - und zwar in der Reihenfolge vor Smooth Weapons. Hintergrund ist hier, dass Zandronum alle obligatorischen Mods immer vor allen optionalen Mods läd, auch wenn die Parameter der obligatorischen und optionalen Mods in einer bestimmten Reihenfolge angegeben wurden.
  • Das "GZDoom HUD Addon" der Neural Upscale Mod sollte nicht mit Zandronum verwendet werden, da es sowohl im OpenGL- als auch Software-Renderer zu Darstellungsfehlern im HUD führt
  • Der "Zandronum SW-Renderer Fix" sollte optional eingebunden werden. Er behebt Darstellungsfehler im HUD bei Wahl des Software-Renderers. Mit dem OpenGL-Renderer ist der Fix nicht erforderlich und nicht empfehlenswert, da er die Qualität der enthaltenen Grafiken reduziert.

Die Firewall des Servers muss eingehenden Datenverkehr für die in den Startskripten definierten Server-IPs und UDP-Ports erlauben. Außerdem muss ausgehender Datenverkehr vom Server zum Masterserver von Doomseeker (IP 45.56.67.39, UDP-Port 15300) erlaubt werden, damit der eigene Server bei Doomseeker zur Auswahl steht (sofern dieser Dienst genutzt werden soll).

Auch Interessant - Für später merken: