Beruflich Dokumente
Kultur Dokumente
Install dependencies
ZDoom needs certain dependencies in order to compile. These versions are known to work with
recent ZDoom versions:
gcc 4.6 or later
make
cmake 2.8.7 or later
fmodex 4.26.36 or later
SDL 2.0.2 or later
zlib (optional - ZDoom has a copy of it and will be statically compiled in if not found)
libbzip2 (optional - possibly static)
libjpeg (optional - possibly static)
nasm 0.98.39 or later (optional)
GTK2 (optional)
Mesa (if compiling GZDoom); or any other GL implementation provider. Compile GZDoom
on Linux
gxmessage (optional - needed to show the crash log in a window)
git (needed in order to download the source)
fluidsynth (optional)
libgme or game-music-emu (optional - possibly static)
libopenal (optional)
timidity (optional)
wildmidi (optional - possibly static)
You can presumably use any higher versions of these programs, however that might not be the case.
FMOD Ex, notably, does not have a constant API and using a version newer than the one listed
above can prevent the successful compilation or execution of ZDoom.
Debian/Ubuntu
sudo apt-get install build-essential zlib1g-dev libsdl2-dev libjpeg-dev \
nasm tar libbz2-dev libgtk2.0-dev cmake git libfluidsynth-dev libgme-dev \
libopenal-dev timidity libwildmidi-dev
Fedora
yum install gcc-c++ make zlib-devel SDL2-devel libjpeg-turbo-devel \
nasm tar bzip2-devel gtk2-devel cmake git fluidsynth-devel game-music-emudevel \
openal-soft-devel timidity++ wildmidi-devel
openSUSE
zypper install gcc-c++ make zlib-devel libSDL2-devel libjpeg-devel \
nasm tar libbz2-devel gtk2-devel cmake git fluidsynth-devel libgme-devel \
openal-soft-devel timidity
Mageia
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
urpmi gcc-c++ make lib"$a"zlib-devel lib"$a"sdl2.0-devel \
lib"$a"jpeg-devel nasm tar lib"$a"bzip2-devel lib"$a"gtk+2.0-devel \
cmake git lib"$a"fluidsynth-devel lib"$a"gme-devel lib"$a"openal-devel \
TiMidity++ lib"$a"wildmidi-devel lib"$a"cairo-devel
Arch Linux
ZDoom is available in Arch User Repository at http://aur.archlinux.org/packages.php?ID=16403
Install as per usual for AUR packages.
pacman -S --needed gcc make zlib sdl2 libjpeg-turbo nasm tar bzip2 gtk2 cmake
git \
fluidsynth libgme fmodex openal timidity++ wildmidi
Gentoo
emerge -avn sys-devel/gcc sys-devel/make sys-libs/zlib media-libs/libsdl2 medialibs/libjpeg-turbo \
dev-lang/nasm app-arch/tar app-arch/bzip2 x11-libs/gtk+ dev-util/cmake devvcs/git media-sound/fluidsynth \
media-libs/game-music-emu media-libs/openal media-sound/timidity++ mediasound/wildmidi
PCLinuxOS
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
apt-get install gcc-c++ make zlib1-devel lib"$a"sdl2.0-devel \
lib"$a"jpeg62-devel nasm tar lib"$a"bzip2-devel lib"$a"gtk+2.0_0-devel \
cmake git lib"$a"fluidsynth1-devel lib"$a"openal-devel TiMidity++
cd "$HOME"/zdoom_build && \
git clone git://github.com/rheit/zdoom.git && \
mkdir -pv zdoom/build
Download FMOD
Download FMOD 4.26.36 32-bit or 64-bit and extract files to zdoom directory:
cd "$HOME"/zdoom_build && \
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
wget -nc
http://web.archive.org/web/20151111191152/http://doomgod.com/ports/fmod/fmodapi4
2636linux"$a".tar.gz && \
tar -xvzf fmodapi42636linux"$a".tar.gz -C zdoom
FMOD Links
FMOD 4.26.36 32-bit:
http://web.archive.org/web/20151111191152/http://doomgod.com/ports/fmod/fmodapi42636linux.ta
r.gz
FMOD 4.26.36 64-bit:
http://web.archive.org/web/20151111191152/http://doomgod.com/ports/fmod/fmodapi42636linux64
.tar.gz
Compiling
To compile the development version:
cd "$HOME"/zdoom_build/zdoom/build && \
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
make clean ; \
cmake -DCMAKE_BUILD_TYPE=Release \
DFMOD_LIBRARY="$HOME"/zdoom_build/zdoom/fmodapi42636linux"$a"/api/lib/libfmodex"
$a"-4.26.36.so \
-DFMOD_INCLUDE_DIR="$HOME"/zdoom_build/zdoom/fmodapi42636linux"$a"/api/inc .. &&
\
make
Assuming all goes well, a zdoom binary should be produced. To start ZDoom, the following
command should work:
./zdoom
If ZDoom complains you do not have any IWADs set up, make sure that you have your IWAD files
placed in the same directory as ZDoom, in ~/.config/zdoom, $DOOMWADDIR, or
/usr/local/share. Alternatively, you can edit ~/.config/zdoom/zdoom.ini to set the
path for your IWADs.
and compile.
After compiling, backing up and optionally installing the current release version, run:
cd "$HOME"/zdoom_build/zdoom && \
git checkout master
Backup
Follow this step if you want or manually copy (backup) zdoom, zdoom.pk3 and liboutput_sdl.so.
Make and name a directory with the corresponding ZDoom version/revision and copy zdoom,
zdoom.pk3 and liboutput_sdl.so to it:
cd "$HOME"/zdoom_build && \
BACKUPZDOOM="$(sed -n 's/.*#define GIT_DESCRIPTION "\(.*\)".*/\1/p' \
zdoom/src/gitinfo.h)" && \
mkdir -pv "$BACKUPZDOOM" && \
cp -v zdoom/build/{zdoom,zdoom.pk3,\
output_sdl/liboutput_sdl.so} "$BACKUPZDOOM"
Backup (Optional)
Make and name a directory with the current year, month, day, hour and minute and copy zdoom,
zdoom.pk3 and liboutput_sdl.so to it:
cd "$HOME"/zdoom_build && \
BACKUPZD="$(date +'%Y%m%d-%H%M')" && \
mkdir -pv "$BACKUPZD" && \
cp -v zdoom/build/{zdoom,zdoom.pk3,\
output_sdl/liboutput_sdl.so} "$BACKUPZD"
If you did "Backup" or "Backup (Optional)", the previous files should be located at:
Updating
When you wish to update ZDoom, copy and paste the following:
cd "$HOME"/zdoom_build/zdoom && \
git pull
Installation
zdoom = Release version
zdoom-alpha = Non-release version
The following steps have commands that require to be run as superuser with the sudo
command.
If you want to install ZDoom, do the following:
Make /usr/games/zdoom and /usr/games/zdoom-alpha directories:
sudo mkdir -pv /usr/games/{zdoom,zdoom-alpha}
Make zdoom or zdoom-alpha script, add executable permission and move it to /usr/bin:
cd "$HOME"/zdoom_build/zdoom && \
t="$(git describe --exact-match --tags 2>/dev/null)" && \
if [ -z "$t" ]; then
d="-alpha"
else
d=""
fi && cd /tmp && \
echo '#!/bin/sh' > zdoom"$d" && \
echo >> zdoom"$d" && \
echo "export LD_LIBRARY_PATH=/usr/games/zdoom"$d"" >> zdoom"$d" && \
echo "exec /usr/games/zdoom"$d"/zdoom \"\$@\"" >> zdoom"$d" && \
chmod 755 zdoom"$d" && \
Now from a terminal you should be able to execute zdoom or zdoom-alpha from any user account.
Uninstallation
To remove the previous installation steps:
Remove /usr/games/zdoom directory and all its files:
cd /usr/games && \
sudo rm -rfv zdoom
Developing
This page has helped you compile ZDoom, but perhaps you are interested in debugging the code or
submitting code changes or fixes for inclusion. This section is intended for more advanced users
who may be unfamiliar to CMake or debugging on Linux systems.
Debugging
Prerequisite:
gdb
Maybe you have found a way to make ZDoom crash, and are interested in debugging it. First, you
need to compile a debug build of ZDoom.
Inside the clone directory, create a new directory debug:
mkdir -pv "$HOME"/zdoom_build/zdoom/debug
Inside the debug directory, invoke CMake to set up for compiling, but this time, the build type is set
to Debug. After CMake is done, run make as usual:
cd "$HOME"/zdoom_build/zdoom/debug && \
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
make clean ; \
cmake -DCMAKE_BUILD_TYPE=Debug \
DFMOD_LIBRARY="$HOME"/zdoom_build/zdoom/fmodapi42636linux"$a"/api/lib/libfmodex"
$a"-4.26.36.so \
-DFMOD_INCLUDE_DIR="$HOME"/zdoom_build/zdoom/fmodapi42636linux"$a"/api/inc .. &&
\
make
To run ZDoom under a debugger such as gdb, use the following command:
gdb zdoom
Now gdb should have you in its own command prompt. You probably want to log the output, so lets
output to a file zdoomdebug.log:
(gdb) set logging on zdoomdebug.log
If ZDoom crashes, gdb may be able to tell you the source file and line number it crashed in.
Typing in the command bt or backtrace will produce information telling the last function calls,
showing how execution got to the point where it crashed:
(gdb) bt
All output will be copied into the zdoomdebug.log, which can then be scrutinized later, or
perhaps posted to the Bugs forum for other developers to look at.
To get out of gdb's command prompt, use quit, q or Ctrl-D:
(gdb) quit
Build Options
Options
NO_GTK=
ON
NO_FMOD
=ON
NO_OPEN
AL=ON
Description
cmake -DNO_FMOD=ON ..
cmake -DNO_OPENAL=ON ..
cmake
-DFMOD_LIBRARY=/path/to/li
bfmodex(64)-X.Y.Z.so ..
cmake
-DFMOD_INCLUDE_DIR=/pat
h/to/include/dir ..
Troubleshooting
Sound
If ZDoom starts but immediately closes with the following messages in the terminal:
...
Init Playloop state.
Setting up sound.
S_Init
Checking network game status.
player 1 of 1 (1 nodes)
This usually indicates that FMOD Ex is not loading correctly (and ZDoom is configured to use
FMOD by default). There are then two solutions.
You could start ZDoom without music:
zdoom -nomusic
or you could select (in the ZDoom settings) a MIDI device other than FMOD. To change MIDI
device, go to the sound options menu.
OPL synth emulation can work out of the box without further configuration.
To install TiMidity++:
... on any Debian/Ubuntu-based distribution, run:
sudo apt-get install timidity timidity-interfaces-extra
... on openSUSE:
yast2 -i timidity or zypper in timidity
See the software synthesizer article for further information about ZDoom's MIDI devices.
External links
Git Repository
Git svn mirror of the now dead ZDoom SVN repository
GZDoom
Notes
The minimum requirement for GZDoom 2.2 and later is OpenGL 2.0, so if you get the following
error:
Unsupported OpenGL version.
At least OpenGL 2.0 is required to run GZDoom.
you will have to use #GZDoom 1.8.6 instead. Keep in mind that this version is several years old and
no longer maintained. It will also have problems with more recent actively maintained mods.
Install dependencies
GZDoom requires some tools and development files in order to compile:
gcc 4.6 or later
make
cmake 2.8.7 or later
SDL 2.0.2 or later
SDL 1.2.8 or later 1.2.x versions (optional - for GZDoom 1.x)
libGL and libGLU (SDL or libSDL pull in libGLU); or any other GL implementation
provider.
fmodex 4.26.36 or later
nasm 0.98.39 or later (optional)
GTK2 (optional)
zlib (optional - possibly static)
libbzip2 (optional - possibly static)
libjpeg (optional - possibly static)
gxmessage (optional - needed to show the crash log in a window)
git (needed in order to download the source)
fluidsynth (optional)
libgme or game-music-emu (optional - possibly static)
libglew (optional - for GZDoom 1.x)
libopenal (optional)
timidity (optional)
wildmidi (optional - possibly static)
Install the following as root/superuser:
Debian/Ubuntu
sudo apt-get install build-essential zlib1g-dev libsdl1.2-dev libsdl2-dev
libjpeg-dev \
nasm tar libbz2-dev libgtk2.0-dev cmake git libfluidsynth-dev libgme-dev \
libopenal-dev timidity libwildmidi-dev libgl1-mesa-dev libglew-dev
Fedora
yum install gcc-c++ make zlib-devel SDL-devel SDL2-devel libjpeg-turbo-devel \
nasm tar bzip2-devel gtk2-devel cmake git fluidsynth-devel game-music-emudevel \
openal-soft-devel timidity++ wildmidi-devel mesa-libGL-devel glew-devel
openSUSE
zypper install gcc-c++ make zlib-devel libSDL-devel libSDL2-devel libjpegdevel \
nasm tar libbz2-devel gtk2-devel cmake git fluidsynth-devel libgme-devel \
openal-soft-devel timidity Mesa-libGL-devel glew-devel
Mageia
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
urpmi gcc-c++ make lib"$a"zlib-devel lib"$a"SDL-devel lib"$a"sdl2.0-devel \
lib"$a"jpeg-devel nasm tar lib"$a"bzip2-devel lib"$a"gtk+2.0-devel \
cmake git lib"$a"fluidsynth-devel lib"$a"gme-devel lib"$a"openal-devel \
TiMidity++ lib"$a"wildmidi-devel lib"$a"mesagl1-devel lib"$a"glew-devel \
lib"$a"cairo-devel
Arch Linux
pacman -S --needed gcc make zlib sdl sdl2 libjpeg-turbo nasm tar bzip2 gtk2
cmake git \
fluidsynth libgme openal timidity++ wildmidi mesa glu glew
Gentoo
emerge -avn sys-devel/gcc sys-devel/make sys-libs/zlib media-libs/libsdl medialibs/libsdl2 media-libs/libjpeg-turbo \
dev-lang/nasm app-arch/tar app-arch/bzip2 x11-libs/gtk+ dev-util/cmake devvcs/git media-sound/fluidsynth \
media-libs/game-music-emu media-libs/openal media-sound/timidity++ mediasound/wildmidi media-libs/mesa media-libs/glu \
media-libs/glew
PCLinuxOS
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
apt-get install gcc-c++ make zlib1-devel lib"$a"SDL-devel lib"$a"sdl2.0-devel \
lib"$a"jpeg62-devel nasm tar lib"$a"bzip2-devel lib"$a"gtk+2.0_0-devel \
cmake git lib"$a"fluidsynth1-devel lib"$a"openal-devel TiMidity++ \
lib"$a"mesagl1-devel lib"$a"glew-devel
Download FMOD
Download FMOD 4.26.36 32-bit or 64-bit and extract files to gzdoom directory:
cd "$HOME"/gzdoom_build && \
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
wget -nc
http://web.archive.org/web/20151111191152/http://doomgod.com/ports/fmod/fmodapi4
2636linux"$a".tar.gz && \
tar -xvzf fmodapi42636linux"$a".tar.gz -C gzdoom
FMOD Links
FMOD 4.26.36 32-bit:
http://web.archive.org/web/20151111191152/http://doomgod.com/ports/fmod/fmodapi42636linux.ta
r.gz
FMOD 4.26.36 64-bit:
http://web.archive.org/web/20151111191152/http://doomgod.com/ports/fmod/fmodapi42636linux64
.tar.gz
Compiling
To compile the development version:
cd "$HOME"/gzdoom_build/gzdoom/build && \
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
make clean ; \
cmake -DCMAKE_BUILD_TYPE=Release \
DFMOD_LIBRARY="$HOME"/gzdoom_build/gzdoom/fmodapi42636linux"$a"/api/lib/libfmode
x"$a"-4.26.36.so \
-DFMOD_INCLUDE_DIR="$HOME"/gzdoom_build/gzdoom/fmodapi42636linux"$a"/api/inc ..
&& \
make
Assuming all goes well, a gzdoom binary should be produced. To start GZDoom, the following
command should work:
./gzdoom
If GZDoom complains you do not have any IWADs set up, make sure that you have your IWAD
files placed in the same directory as GZDoom, in ~/.config/gzdoom, $DOOMWADDIR, or
/usr/local/share. Alternatively, you can edit ~/.config/gzdoom/gzdoom.ini to set
the path for your IWADs.
and compile.
After compiling, backing up and optionally installing the current release version, run:
cd "$HOME"/gzdoom_build/gzdoom && \
git checkout master
GZDoom 1.8.6
If your graphics card doesn't support OpenGL 2.0 or higher, you may want to compile GZDoom
1.8.6.
and compile. Please note that GZDoom 1.8.6 is old and unsupported. If you run into problems you
are on your own.
Backup
Follow this step if you want or manually copy (backup) gzdoom, gzdoom.pk3, lights.pk3,
brightmaps.pk3 and liboutput_sdl.so.
Make and name a directory with the corresponding GZDoom version/revision and copy gzdoom,
gzdoom.pk3, lights.pk3, brightmaps.pk3 and liboutput_sdl.so to it:
cd "$HOME"/gzdoom_build && \
BACKUPGZDOOM="$(sed -n 's/.*#define GIT_DESCRIPTION "\(.*\)".*/\1/p' \
gzdoom/src/gitinfo.h)" && \
mkdir -pv "$BACKUPGZDOOM" && \
cp -v gzdoom/build/{gzdoom,gzdoom.pk3,lights.pk3,\
brightmaps.pk3,output_sdl/liboutput_sdl.so} "$BACKUPGZDOOM"
Backup (Optional)
Make and name a directory with the current year, month, day, hour and minute and copy gzdoom,
gzdoom.pk3, lights.pk3, brightmaps.pk3 and liboutput_sdl.so to it:
cd "$HOME"/gzdoom_build && \
BACKUPGZD="$(date +'%Y%m%d-%H%M')" && \
mkdir -pv "$BACKUPGZD" && \
cp -v gzdoom/build/{gzdoom,gzdoom.pk3,lights.pk3,\
brightmaps.pk3,output_sdl/liboutput_sdl.so} "$BACKUPGZD"
If you did "Backup" or "Backup (Optional)", the previous files should be located at:
/home/<your username>/gzdoom_build/<your newly created directory>
Updating
When you wish to update GZDoom, copy and paste the following:
cd "$HOME"/gzdoom_build/gzdoom && \
git pull
Installation
gzdoom = Release version
gzdoom-alpha = Non-release version
The following steps have commands that require to be run as superuser with the sudo
command.
Copy gzdoom, gzdoom.pk3, lights.pk3, brightmaps.pk3, liboutput_sdl.so and libfmodex644.26.36.so or libfmodex-4.26.36.so to /usr/games/gzdoom or /usr/games/gzdoom-alpha:
cd "$HOME"/gzdoom_build/gzdoom && \
t="$(git describe --exact-match --tags 2>/dev/null)" && \
if [ -z "$t" ]; then
d="-alpha"
else
d=""
fi && \
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
sudo cp -v {build/{gzdoom,gzdoom.pk3,lights.pk3,\
brightmaps.pk3,output_sdl/liboutput_sdl.so},\
fmodapi42636linux"$a"/api/lib/libfmodex"$a"-4.26.36.so} \
/usr/games/gzdoom"$d"
Make gzdoom or gzdoom-alpha script, add executable permission and move it to /usr/bin:
cd "$HOME"/gzdoom_build/gzdoom && \
t="$(git describe --exact-match --tags 2>/dev/null)" && \
if [ -z "$t" ]; then
d="-alpha"
else
d=""
fi && cd /tmp && \
echo '#!/bin/sh' > gzdoom"$d" && \
echo >> gzdoom"$d" && \
echo "export LD_LIBRARY_PATH=/usr/games/gzdoom"$d"" >> gzdoom"$d" && \
echo "exec /usr/games/gzdoom"$d"/gzdoom \"\$@\"" >> gzdoom"$d" && \
chmod 755 gzdoom"$d" && \
sudo mv -v gzdoom"$d" /usr/bin
Now from a terminal you should be able to execute gzdoom or gzdoom-alpha from any user
account.
Uninstallation
To remove the previous installation steps:
Remove /usr/games/gzdoom directory and all its files:
cd /usr/games && \
sudo rm -rfv gzdoom
cd /usr/games && \
sudo rm -rfv gzdoom-alpha
Debugging
Prerequisite:
gdb
In most cases it is good idea to generate a backtrace when GZDoom crashes.
Make debug directory:
mkdir -pv "$HOME"/gzdoom_build/gzdoom/debug
Now gdb should have you in its own command prompt. You probably want to log the output, so lets
output to a file gzdoomdebug.log:
(gdb) set logging on gzdoomdebug.log
All output will be copied into the gzdoomdebug.log, which can then be scrutinized later, or perhaps
posted to the Bugs forum for other developers to look at.
To exit gdb's command prompt, use "quit", "q" or Ctrl-D:
(gdb) quit
Build Options
Options
NO_GTK=
ON
NO_FMOD
=ON
NO_OPEN
AL=ON
Description
cmake -DNO_FMOD=ON ..
cmake -DNO_OPENAL=ON ..
cmake
-DFMOD_LIBRARY=/path/to/li
bfmodex(64)-X.Y.Z.so ..
cmake
FMOD_INC Set path for FMOD
-DFMOD_INCLUDE_DIR=/pat
LUDE_DIR include directory.
h/to/include/dir ..
CMake Build Types
Types
Description
Example
cmake
Debug information, -O1
Debug
-DCMAKE_BUILD_TYPE
optimization.
=Debug ..
cmake
No debug information,
Release
-DCMAKE_BUILD_TYPE
-O3 optimization.
=Release ..
Debug information, -O3
optimization. Useful for cmake
RelWithDebInfo finding optimization
-DCMAKE_BUILD_TYPE
bugs that only show up =RelWithDebInfo ..
in Release.
Similar to Release but cmake
MinSizeRel
with less optimizations -DCMAKE_BUILD_TYPE
in order to save space. =MinSizeRel ..
FMOD_LIB Set path for FMOD
RARY
library.
and save.
Verify if the xorg.conf.d directory already exist:
ls /etc/X11
otherwise add the configurations of the next step to the already existing .drirc file.
Copy and paste the following to drirc:
<driconf>
<device screen="0" driver="dri2">
<application name="zandronum" executable="zandronum">
<option name="vblank_mode" value="0"/>
</application>
<application name="gzdoom" executable="gzdoom">
<option name="vblank_mode" value="0"/>
</application>
</device>
</driconf>
and save.
Rename drirc to .drirc:
mv drirc .drirc
Run Zandronum/GZDoom, start a new game, open console and type vid_fps 1, see how many FPS
are displayed, you should get more FPS than before.
External links
Git Repository
Git svn mirror of the now dead GZDoom SVN repository
Zandronum
Notes
If you are going to compile Zandronum 1.0 (120819-2011) and your Mesa version is 9.x or greater,
apply the fix found here, otherwise the zandronum client will not compile.
If you need to compile Zandronum 2.x or lower, you will need to install gcc 4.9 or lower:
sudo apt-get install gcc-4.9 g++-4.9
and set this variables according to the gcc version before compiling:
export CC="gcc-4.9"
export CXX="g++-4.9"
Prerequisites
Zandronum requires some tools and development files in order to compile:
gcc - C and C++ compilers >= 3.4.6
make
cmake >= 2.4
SDL >= 1.2.8
libGL and libGLU (SDL or libSDL pull in libGLU); or any other GL implementation
provider.
fmodex = 4.24.16
nasm >= 0.98.39 (optional)
GTK2 (optional)
zlib (optional - possibly static)
libbzip2 (optional - possibly static)
libjpeg (optional - possibly static)
gxmessage (needed to show the crash log in a window)
mercurial (needed in order to clone repository)
fluidsynth (optional)
libopenssl
SQLite
Install the following as root/superuser:
Debian/Ubuntu
sudo apt-get install build-essential zlib1g-dev libsdl1.2-dev libjpeg-dev \
nasm tar libbz2-dev libgtk2.0-dev cmake mercurial libfluidsynth-dev libgl1-mesadev \
libssl-dev libglew-dev
Fedora
yum install gcc-c++ make zlib-devel SDL-devel libjpeg-turbo-devel \
nasm tar bzip2-devel gtk2-devel cmake mercurial fluidsynth-devel mesa-libGLdevel \
openssl-devel
openSUSE
zypper install gcc-c++ make zlib-devel libSDL-devel libjpeg-devel \
nasm tar libbz2-devel gtk2-devel cmake mercurial fluidsynth-devel Mesa-libGLdevel \
libopenssl-devel
Mageia
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
urpmi gcc-c++ make lib"$a"zlib-devel lib"$a"SDL-devel \
lib"$a"jpeg-devel nasm tar lib"$a"bzip2-devel \
lib"$a"gtk+2.0-devel cmake mercurial lib"$a"fluidsynth-devel \
lib"$a"mesagl1-devel lib"$a"cairo-devel lib"$a"openssl-devel
Arch Linux
pacman -S --needed gcc make zlib sdl libjpeg-turbo nasm tar bzip2 gtk2 cmake
mercurial \
fluidsynth mesa glu openssl
Gentoo
emerge -avn sys-devel/gcc sys-devel/make sys-libs/zlib media-libs/libsdl medialibs/libjpeg-turbo \
dev-lang/nasm app-arch/tar app-arch/bzip2 x11-libs/gtk+ dev-util/cmake devvcs/mercurial media-sound/fluidsynth \
media-libs/mesa media-libs/glu dev-libs/openssl
PCLinuxOS
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
apt-get install gcc-c++ make zlib1-devel lib"$a"SDL-devel \
lib"$a"jpeg62-devel nasm tar lib"$a"bzip2-devel \
lib"$a"gtk+2.0_0-devel cmake mercurial lib"$a"fluidsynth1-devel \
lib"$a"mesagl1-devel lib"$a"openssl-devel
Download FMOD
Download FMOD 4.24.16 32-bit or 64-bit and extract files to zandronum directory:
cd "$HOME"/zandronum_build && \
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
wget -nc http://zandronum.com/essentials/fmod/fmodapi42416linux"$a".tar.gz && \
tar -xvzf fmodapi42416linux"$a".tar.gz -C zandronum
FMOD Links
FMOD 4.24.16 32-bit:
http://zandronum.com/essentials/fmod/fmodapi42416linux.tar.gz
FMOD 4.24.16 64-bit:
http://zandronum.com/essentials/fmod/fmodapi42416linux64.tar.gz
Compiling
To compile the development version:
Zandronum client:
cd "$HOME"/zandronum_build/zandronum/buildclient && \
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
make clean ; \
cmake -DCMAKE_BUILD_TYPE=Release \
DFMOD_LIBRARY="$HOME"/zandronum_build/zandronum/fmodapi42416linux"$a"/api/lib/li
bfmodex"$a"-4.24.16.so \
DFMOD_INCLUDE_DIR="$HOME"/zandronum_build/zandronum/fmodapi42416linux"$a"/api/in
c .. && \
make
Assuming all goes well, a zandronum binary should be produced. To start Zandronum client, the
following command should work:
./zandronum
Zandronum server:
cd "$HOME"/zandronum_build/zandronum/buildserver && \
make clean ; \
cmake -DCMAKE_BUILD_TYPE=Release -DSERVERONLY=ON .. && \
make
Assuming all goes well, a zandronum-server binary should be produced. To start Zandronum server,
the following command should work:
./zandronum-server
If Zandronum complains you do not have any IWADs set up, make sure that you have your IWAD
files placed in the same directory as Zandronum, in ~/.config/zandronum, $DOOMWADDIR, or
/usr/local/share. Alternatively, you can edit ~/.config/zandronum/zandronum.ini or
~/.zandronum/zandronum.ini to set the path for your IWADs.
If you want to compile the current stable version, run the following:
cd "$HOME"/zandronum_build/zandronum && \
hg update -cr 'max(tagged())'
and compile.
After compiling, backing up and optionally installing the current stable version, run the following:
cd "$HOME"/zandronum_build/zandronum && \
hg update
Backup
Follow this step if you want or manually copy (backup) zandronum, zandronum.pk3,
skulltag_actors.pk3, liboutput_sdl.so and zandronum-server.
Make and name a directory with the corresponding Zandronum version/revision and copy
zandronum, zandronum.pk3, skulltag_actors.pk3, liboutput_sdl.so and zandronum-server to it:
cd "$HOME"/zandronum_build/zandronum/src && \
BACKUPZANDRONUM="$(sed -n 's/.*#define GAMEVER_STRING "\(.*\)".*/\1/p'
version.h)\
$(sed -n 's/.*#define DOTVERSIONSTR.*GAMEVER_STRING "\(.*\)".*/\1/p' version.h)\
$(sed -n 's/.*#define SVN_REVISION_STRING "\(.*\)".*/\-r\1/p'
{svnrevision.h,gitinfo.h} 2>/dev/null)\
$(sed -n 's/.*#define HG_TIME "\(.*\)".*/\-r\1/p' gitinfo.h 2>/dev/null)\
$(sed -n 's/.*#define HG_REVISION_HASH_STRING "\(.*\)".*/\-\1/p' gitinfo.h)" ; \
cd ../.. && mkdir -pv "$BACKUPZANDRONUM" && \
cp -v zandronum/{buildclient/{zandronum,zandronum.pk3,\
skulltag_actors.pk3,output_sdl/liboutput_sdl.so},\
buildserver/zandronum-server} "$BACKUPZANDRONUM"
Backup (Optional)
Make and name a directory with the current year, month, day, hour and minute and copy
zandronum, zandronum.pk3, skulltag_actors.pk3, liboutput_sdl.so and zandronum-server to it:
cd "$HOME"/zandronum_build && \
COPYANDPASTEZAN="$(date +'%Y%m%d-%H%M')" && \
mkdir -pv "$COPYANDPASTEZAN" && \
cp -v zandronum/{buildclient/{zandronum,zandronum.pk3,\
skulltag_actors.pk3,output_sdl/liboutput_sdl.so},\
buildserver/zandronum-server} "$COPYANDPASTEZAN"
If you did "Backup" or "Backup (Optional)", the previous files should be located at:
/home/<your username>/zandronum_build/<your newly created directory>
Updating
When you wish to update Zandronum, copy and paste the following:
cd "$HOME"/zandronum_build/zandronum && \
hg pull ; hg update
Installation
The following steps have commands that require to be run as superuser with the sudo
command.
If you want to install Zandronum, do the following:
Make /usr/games/zandronum and /usr/games/zandronum-alpha directories:
sudo mkdir -pv /usr/games/{zandronum,zandronum-alpha}
Make zandronum or zandronum-alpha script, add executable permission and move it to /usr/bin:
cd "$HOME"/zandronum_build/zandronum && \
t="$(hg id -t)" && \
if [ "$t" = "tip" ] || [ -z "$t" ]; then
d="-alpha"
else
d=""
fi && cd /tmp && \
echo '#!/bin/sh' > zandronum"$d" && \
echo >> zandronum"$d" && \
echo "export LD_LIBRARY_PATH=/usr/games/zandronum"$d"" >> zandronum"$d" && \
echo "exec /usr/games/zandronum"$d"/zandronum \"\$@\"" >> zandronum"$d" && \
chmod 755 zandronum"$d" && \
sudo mv -v zandronum"$d" /usr/bin
Uninstallation
To remove the previous installation steps:
Remove /usr/games/zandronum directory and all its files:
cd /usr/games && \
sudo rm -rfv zandronum
Debugging
Prerequisite:
gdb
In most cases it is good idea to generate a backtrace when Zandronum crashes.
Now GDB should have you in its own command prompt. You probably want to log the output, so
lets output to a file zandronumclientdebug.log:
(gdb) set logging on zandronumclientdebug.log
All output will be copied into the zandronumclientdebug.log, which can then be scrutinized later, or
perhaps posted to the Bug Tracker for other developers to look at.
To exit GDB's command prompt, use "quit", "q" or Ctrl-D:
(gdb) quit
Now GDB should have you in its own command prompt. You probably want to log the output, so
lets output to a file zandronumserverdebug.log:
(gdb) set logging on zandronumserverdebug.log
All output will be copied into the zandronumserverdebug.log, which can then be scrutinized later, or
perhaps posted to the Bug Tracker for other developers to look at.
To exit GDB's command prompt, use "quit", "q" or Ctrl-D:
(gdb) quit
Build Options
Options
Description
cmake
-DSERVERONLY=ON ..
cmake -DNO_GTK=ON ..
cmake -DNO_SOUND=ON ..
cmake -DNO_GL=ON ..
cmake -DNO_ASM=ON ..
cmake
FMOD_LIBRAR Set path for FMOD
-DFMOD_LIBRARY=/path/to/
Y
library.
libfmodex(64)-X.Y.Z.so ..
cmake
FMOD_INCLUD Set path for FMOD
-DFMOD_INCLUDE_DIR=/pa
E_DIR
include directory.
th/to/include/dir ..
CMake Build Types
Types
Description
Example
cmake
Debug information, -O1
Debug
-DCMAKE_BUILD_TYPE
optimization.
=Debug ..
cmake
No debug information,
Release
-DCMAKE_BUILD_TYPE
-O3 optimization.
=Release ..
Debug information, -O3
optimization. Useful for cmake
RelWithDebInfo finding optimization
-DCMAKE_BUILD_TYPE
bugs that only show up =RelWithDebInfo ..
in Release.
Similar to Release but cmake
MinSizeRel
with less optimizations -DCMAKE_BUILD_TYPE
in order to save space. =MinSizeRel ..
and save.
Verify if the xorg.conf.d directory already exist:
ls /etc/X11
otherwise add the configurations of the next step to the already existing .drirc file.
Copy and paste the following to drirc:
<driconf>
<device screen="0" driver="dri2">
<application name="zandronum" executable="zandronum">
<option name="vblank_mode" value="0"/>
</application>
<application name="gzdoom" executable="gzdoom">
<option name="vblank_mode" value="0"/>
</application>
</device>
</driconf>
and save.
Rename drirc to .drirc:
mv drirc .drirc
Run Zandronum/GZDoom, start a new game, open console and type vid_fps 1, see how many FPS
are displayed, you should get more FPS than before.