|
|
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| <div style="text-align=right; float: right; clear: none; background: none; padding-left:20px">
| | Das Tutorial wurde auf Gargi.org verschoben: https://www.gargi.org/index.php?title=DOOM_auf_Linux |
| __TOC__
| |
| </div><noinclude>
| |
| <div style="float:left;text-align:center;padding-right:20px">
| |
| [[Bild:doom.jpg|logo]]
| |
| <br />
| |
| ''Doom is not a game, it's sports...''</div>
| |
| '''Prolog'''<br>
| |
| <br>
| |
| Nachdem '''Doom''' im August 2011 nach vielen Jahren von dem deutschen Index der jugendgefährdenden Medien gestrichen wurde, und es damit auch einfacher geworden ist, über dieses Spiel öffentlich zu sprechen, ist es Zeit für mich, die alten CDs wieder auszupacken und zu sehen, was hier unter Linux alles machbar ist. Da ich ein eingefleischter openSUSE (http://www.opensuse.org) User bin, schaue ich mir das unter der derzeit aktuellen openSUSE Leap 42.3 (64bit) an.
| |
| <br>
| |
| <br>
| |
| Die Sourcen der Doom Engine schon lange freigegeben und es haben sich einige Projekte gebildet, die auch sich darum bemüht haben, die Engine auf openGL lauffähig zu bekommen. Natürlich gibt es hierzu einige Mods, Texturverbesserungen bis dahin, dass die alten Sprites der Figuren und Gegenstände durch echte 3D Modelle ausgetauscht wurden.
| |
| <br>
| |
| <br>
| |
| Die Bemühungen finde ich alle klasse, nur bin ich eher der Typ, der sein "Retro-Feeling" benötigt. Also muss die Konvertierung für mich zwar auf moderner Hadware angepasst sein (Full HD, 3D beschleunigt), darf aber nichts vom Flair des Originals verlieren. Ich habe mir hierzu das '''prboom''' (http://prboom.sourceforge.net), '''jdoom / Doomsday''' (http://dengine.net) und '''gzdoom''' (die openGL Version des zdoom - http://www.osnanet.de/c.oelckers/gzdoom/) angesehen, und muss sagen, dass mir persönlich was das Retro Feeling betrifft hierbei das gzdoom am besten gefallen hat. Gzdoom liefert Optionen, die die Originaltexturen auch noch original aussehen lässt, ohne dabei aber zu sehr pixelkrank zu werden. Hierzu müssen dann entsprechende Änderungen an der Konfiguration gemacht werden, die aber zum Glück über das eigene Menü hauptsächlich funktionieren.
| |
| <br>
| |
| <br>
| |
| <div style="float:right;text-align:center;padding-left:20px">
| |
| [[Bild:E1M1.jpg|E1M1]]
| |
| <br />
| |
| ''E1M1 im Leveleditor "DOOM BUILDER"''</div>
| |
| Um den '''DOOM''' Port gzdoom unter '''openSUSE Leap 42.3''' (http://www.opensuse.org) zu kompilieren und zu spielen sind ein paar Vorarbeiten nötig. Hierbei geht es um folgende Schritte:
| |
| <br>
| |
| <br>
| |
| '''- Vorbereitung des Systems'''<br>
| |
| '''- Aktuellen Quellcode über den git Clone ziehen'''<br>
| |
| '''- Compile der gzdoom Binaries'''<br>
| |
| '''- Konfiguration der doom.ini und Installation der doom.wad'''
| |
| <br>
| |
| <br>
| |
| An den Schritten ist zu erkennen, dass die Angelegenheit nicht trivial ist. Voraussetzung zum Spielen ist zudem ein Originalmedium von Doom. Auf den CD Versionen finden sich hierzu jeweils eine sogenannte '''wad - Datei''', die die Leveldaten und Grafiken des Spiels nebst allen Soundfiles beinhaltet. Diese sind urheberrechtlich geschützt und müssen somit gekauft werden.
| |
| <br>
| |
| <br>
| |
| Ferner benötigen wir um Midi Sound über FMOD zu erhalten eine Soundfond Datei, die '''gm.dls'''. Diese findet Ihr bei einem installierten Windows im Verzeichnis '''/system32/drivers/'''. Kopiert diese Datei z.B. unter Linux nach '''/usr/share/sounds/'''. Solltet Ihr auf die gm.dls keinen Zugriff haben, so könnt Ihr später auch Midi auf Timidity umstellen. Timidity muss hierzu installiert sein.
| |
| <br>
| |
| <br>
| |
| Ich erkläre das am Beispiel eines installieren openSUSE Leap 42.3 Linux, wobei ich die 64bit Variante verwende. Im Prinzip ist das auf andere Linux Varianten leicht übertragbar.
| |
| <br>
| |
| <br>
| |
| ==Voraussetzung==
| |
| Folgende Pakete müssen installiert sein (via '''Yast''' oder '''zypper'''):
| |
| <br>
| |
| <br>
| |
| '''- make'''<br>
| |
| '''- gcc-c++'''<br>
| |
| '''- zlib-devel'''<br>
| |
| '''- libSDL-devel'''<br>
| |
| '''- libSDL2-devel'''<br>
| |
| '''- libjpeg-devel'''<br>
| |
| '''- libbz2-devel'''<br>
| |
| '''- fluidsynth-devel'''<br>
| |
| '''- glew'''<br>
| |
| '''- glew-devel'''<br>
| |
| '''- nasm'''<br>
| |
| '''- git'''<br>
| |
| '''- tar'''<br>
| |
| '''- libgme-devel'''<br>
| |
| '''- openal-soft-devel'''<br>
| |
| '''- mpg123-devel'''<br>
| |
| '''- libsndfile-devel'''<br>
| |
| '''- timidity'''<br>
| |
| '''- Mesa-libGL-devel'''<br>
| |
| '''- gtk3-devel'''<br>
| |
| '''- cmake'''
| |
| | |
| <br>
| |
| | |
| Der Compile benötigt mindestens die gcc compiler ab der Version '''4.9'''. OpenSUSE 42.3 stellt selbst die Version 4.8 zur Verfügung. Installiert über YAST deshalb noch das Paket '''gcc5'''.
| |
| <br>
| |
| <br>
| |
| | |
| ==gzdoom Quellcode herunterladen und übersetzen==
| |
| Den Quellcode ziehen wir mittels git in unserem Arbeitsverzeichnis:
| |
| | |
| <code><pre>git clone git://github.com/coelckers/gzdoom gzdoom</pre></code>
| |
| | |
| Nach dem Checkout wechseln wir in das neue Verzeichnis gzdoom
| |
| | |
| <code><pre>cd gzdoom</pre></code>
| |
| | |
| und legen ein build-Verzeichnis an:
| |
| | |
| <code><pre>mkdir build</pre></code>
| |
| <br>
| |
| | |
| | |
| Wir bereiten nun den Compile vor. Wechselt dazu in das build Verzeichnis:
| |
| | |
| <code><pre>cd build</pre></code>
| |
| | |
| Danach legen wir die richtige Compilerversion fest:
| |
| | |
| <code><pre>export CC=/usr/bin/gcc-5</pre></code>
| |
| <code><pre>export CXX=/usr/bin/g++-5</pre></code>
| |
| | |
| Der nächste Befehl sollte fehlerfrei durchlaufen:
| |
| | |
| <code><pre>cmake .. -DCMAKE_BUILD_TYPE=Release</pre></code>
| |
| | |
| Nun können wir den Compile starten:
| |
| | |
| <code><pre>make</pre></code>
| |
| | |
| Das war es soweit. Wenn alles gut gelaufen ist, kopiert die neuen Dateien aus dem build Verzeichnis in ein neues Verzeichnis, aus dem Ihr in Zukunft Doom starten wollt. Diese Dateien sind: | |
| <br>
| |
| <br>
| |
| <div style="float:right;text-align:center;padding-left:20px">
| |
| [[Bild:doom1.jpg|Discs]]
| |
| <br />
| |
| ''Rare item. The original discs''</div>
| |
| '''brightmaps.pk3'''<br>
| |
| '''gzdoom'''<br>
| |
| '''gzdoom.pk3'''<br>
| |
| '''lights.pk3'''
| |
| <br>
| |
| <br>
| |
| Dazu kopiert die '''doom.wad''' von Eurer Doom CD.
| |
| <br>
| |
| <br>
| |
| | |
| ==Starten und konfigurieren==
| |
| Startet dann gzdoom. Ihr könnt nun die Einstellungen des Spiels vornehmen. Weitere Einstellungen, die Ihr eventuell nicht über die Menüs im Spiel vornehmen könnt finden sich in der '''gzdoom.ini''' im versteckten gzdoom Verzeichnis in Eurem Homeverzeichnis
| |
| <br>
| |
| <br>
| |
| '''~/.config/gzdoom'''
| |
| <br>
| |
| <br>
| |
| Dort öffnet die ''gzdoom.ini'' und könnt hier noch Finetuning betreiben. Änderungen speichert entsprechend ab und probiert sie dann aus.
| |
| <br>
| |
| <br>
| |
| | |
| ==Grafikoptionen==
| |
| Natürlich kann man nun über das Menü einiges an der Bildqualität des Spiels drehen. Ich liste hier meine Settings auf, die folgendes Ergebnis auf meiner nvidia (http://www.nvidia.com) GeForce 460GTX Grafikkarte liefern:
| |
| <br>
| |
| <br>
| |
| [[Bild:doom_fullhd_kl.jpg|FULL HD]]
| |
| <br>
| |
| <br>
| |
| Um die Full HD Variante anzusehen klickt einfach auf diesen Link: http://www.gargi.org/stuff/opensuse122/doom_fullhd.jpg
| |
| <br>
| |
| <br>
| |
| Die Settings hierfür als Screenshots:
| |
| <br>
| |
| <br>
| |
| [[Bild:settings1.jpg|Settings 1]]
| |
| <br>
| |
| <br>
| |
| [[Bild:settings2.jpg|Settings 2]]
| |
| <br>
| |
| <br>
| |
| [[Bild:settings3.jpg|Settings 3]]
| |
| <br>
| |
| <br>
| |
| [[Bild:settings4.jpg|Settings 4]]
| |
| <br>
| |
| <br>
| |
| Kantenglättung stelle ich dann bei meiner Nvidia Grafikkarte über ein Startscript ein, da ich das nicht unbedingt in der Konfiguration für alle 3D Programme aktivieren möchte. Dazu sieht mein Script wie folgt aus:
| |
| | |
| <code><pre>#!/bin/sh
| |
| cd /home/hans/bin/gzdoom
| |
| nvidia-settings --assign FSAA=11 --assign FSAAAppControlled=0 --assign FSAAAppEnhanced=0
| |
| gzdoom
| |
| nvidia-settings --assign FSAA=0 --assign FSAAAppControlled=1 --assign FSAAAppEnhanced=0</pre></code>
| |
| | |
| Bei Grafikkarten anderer Hersteller funktioniert dieses Script nicht, sonder die Kantenglättung muss hier ggf. anders aktiviert werden.
| |
| <br>
| |
| <br>
| |
| Alternativ kann man natürlich auch in seiner gzdoom ini in der Sektion [GlobalSettings] das Antialisasing mittels dem Multisampling erzeugen. Hierzu den Wert
| |
| <br>
| |
| <br>
| |
| '''gl_multisample=0'''
| |
| <br>
| |
| <br>
| |
| auf
| |
| <br>
| |
| <br>
| |
| '''gl_multisample=8'''
| |
| <br>
| |
| <br>
| |
| für 8x setzen.
| |
| <br>
| |
| Der Unterschied ist dann auch entsprechend gut zu erkennen:
| |
| <br>
| |
| <br>
| |
| [[Bild:gzdoom_multisample.jpg|Multisample]]
| |
| <br>
| |
| <br>
| |
| | |
| ==Stuttering Problem bei aktivierten Compositing Effekten==
| |
| Bei aktivierten Desktopeffekten (die auf die 3D Schnittstelle der Grafikkarte aufsetzen) kann es unter Linux passieren, dass 3D Spiele im Vollbildmodus leicht ruckeln und weniger schnell laufen. Hierzu kann man die Desktop Effekte einfach mittels einer Tastenkombination '''SHIFT+STRG+F12''' abstellen. Eleganter ist es, dies gleich an passender Stelle soweit einzustellen, dass eben im Vollbildmodus die Effekte ausgesetzt werden. Das passiert beispielsweise unter Windows 7 mit dem Aero oft im Hintergrund unbemerkt, um eben hier das Maximale an Performance heraus zu holen.
| |
| <br>
| |
| <br>
| |
| Korrekt einstellen könnt Ihr dies im KDE4 unter Linux über die '''Systemeinstellungen'''. Dort klickt auf '''Arbeitsflächen-Effekte''':
| |
| <br>
| |
| <br>
| |
| [[Bild:compositing1.png|Compositing 1]]
| |
| <br>
| |
| <br>
| |
| Im Registerblatt '''Erweitert''' klickt dann "'''Arbeitsflächeneffekte für Fenster im Vollbildmodus aussetzen'''" an:
| |
| <br>
| |
| <br>
| |
| [[Bild:compositing2.png|Compositing 2]]
| |
| <br>
| |
| <br>
| |
| Mit '''Anwenden''' übernehmt Ihr dann die Änderung. Jetzt sollte das Ruckeln nicht mehr auftreten.
| |
| <br>
| |
| <br>
| |
| ==SPEC Files==
| |
| Hier noch zwei (vereinfachte) Spec Files, solltet Ihr lieber '''RPM''' Pakete für openSUSE erstellen wollen, die Ihr dann via '''YAST''' beispielsweise installieren könnt. Passt die SPECS gegebenfalls auf Eure Architektur an ('''32bit''' oder '''64bit''').
| |
| <br>
| |
| <br>
| |
| | |
| '''Specfile für gzdoom'''
| |
| <code><pre>#Specfile fuer GZDOOM
| |
| Summary: Shooter aus den gzdoom Quellen
| |
| Name: gzdoom
| |
| Version: 1455
| |
| Release: gargibuild
| |
| License: see BUILDLIC.TXT
| |
| Group: Games/Action
| |
| Source: gzdoom-1455.tar.gz
| |
| URL: http://www.osnanet.de/c.oelckers/gzdoom/index.html
| |
| Distribution: openSUSE 12.2
| |
| Packager: YOUR NAME /URL>
| |
| | |
| %description
| |
| Bekannter und legendärer 3D Shooter mit openGL portierter Grafik. Hierbei handelt es sich nur
| |
| um den Linux Patch, der nur die Binaries zum Start des Spiels zur Verfügung stellt. Es werden weiterhin
| |
| die Originaldateien der originalen Installations CD benötigt.
| |
| | |
| %prep
| |
| %setup
| |
| %build
| |
| mkdir build
| |
| cd build
| |
| cmake -DCMAKE_BUILD_TYPE=Release -DFMOD_LIBRARY=/usr/local/lib/libfmodex64-4.42.03.so -DFMOD_INCLUDE_DIR=/usr/local/include/fmodex/ ..
| |
| make
| |
| | |
| %install
| |
| mkdir -p $RPM_BUILD_ROOT/usr/local/games/gzdoom
| |
| mkdir -p $RPM_BUILD_ROOT/usr/local/games/gzdoom/docs
| |
| | |
| cp build/brightmaps.pk3 $RPM_BUILD_ROOT/usr/local/games/gzdoom/brightmaps.pk3
| |
| cp build/gzdoom $RPM_BUILD_ROOT/usr/local/games/gzdoom/gzdoom
| |
| cp build/gzdoom.pk3 $RPM_BUILD_ROOT/usr/local/games/gzdoom/gzdoom.pk3
| |
| cp build/liboutput_sdl.so $RPM_BUILD_ROOT/usr/local/games/gzdoom/liboutput_sdl.so
| |
| cp build/lights.pk3 $RPM_BUILD_ROOT/usr/local/games/gzdoom/lights.pk3
| |
| cp docs/* $RPM_BUILD_ROOT/usr/local/games/gzdoom/docs/
| |
| | |
| %files
| |
| /usr/local/games/gzdoom/brightmaps.pk3
| |
| /usr/local/games/gzdoom/gzdoom
| |
| /usr/local/games/gzdoom/gzdoom.pk3
| |
| /usr/local/games/gzdoom/liboutput_sdl.so
| |
| /usr/local/games/gzdoom/lights.pk3
| |
| /usr/local/games/gzdoom/docs/*</pre></code>
| |
| Über diese RPM wird dann gzdoom nach '''/user/local/games/gzdoom''' installiert.
| |
| <br>
| |
| <br>
| |
| | |
| ==Links==
| |
| '''Projektseite gzdoom:''' http://www.osnanet.de/c.oelckers/gzdoom/index.html<br>
| |
| '''id Software:''' http://www.idsoftware.com/<br>
| |
| '''zdoom Forum:''' http://www.forum.zdoom.org/<br>
| |
| '''Timidity:''' http://timidity.sourceforge.net/<br>
| |
| '''openSUSE:''' http://www.opensuse.org<br>
| |
| '''gzdoom auf Windows compilieren:''' http://zdoom.org/wiki/Compile_ZDoom_on_Windows<br>
| |
| '''weiteres Tutorial für Windows:''' http://www.moddb.com/games/doom/tutorials/tutorial-15-compile-the-source-code-for-zdoom-and-gzdoom<br>
| |
| '''Forenbeitrag zum Thema auf Gargi.org:''' http://www.gargi.org/showthread.php?4095-Compile-gzdoom-unter-openSUSE-Linux-12-2<br>
| |
| '''Forenbeitrag zum Thema auf openSUSE:''' http://forums.opensuse.org/deutsch-german/hilfe-und-helfen/anwendungen/479055-doom-unter-opensuse.html
| |
| <br>
| |
| <br>
| |
| {{Hinweis|Mit Wirkung zum 31. August 2011 hat die Bundesprüfstelle für jugendgefährdende Medien die Indizierung der Spiele Doom und Doom 2 aufgehoben.}}
| |
| <br>
| |
| <br>
| |
| Have fun!
| |
| <br>
| |
| <br>
| |
| Pierre "Gargi" Kretschmer
| |
| <br>
| |
| <br>
| |
| {{Frage|Bei Fragen zu den Anleitungen wendet Euch bitte an mein Forum unter [http://www.gargi.org http://www.gargi.org]. Die Anmeldung und Nutzung des Forums ist kostenlos.}}
| |
| <br /><br />
| |