Sie sind auf Seite 1von 29

ZDoom

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++

Do the following steps as normal user.

Make zdoom_build directory


mkdir -pv "$HOME"/zdoom_build

Download the Source


Download the ZDoom source and make build directory:

cd "$HOME"/zdoom_build && \
git clone git://github.com/rheit/zdoom.git && \
mkdir -pv zdoom/build

and run the following commands:


cd zdoom
git config --local --add remote.origin.fetch +refs/tags/*:refs/tags/*
git pull

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.

Current release version


Show the current release version:
cd "$HOME"/zdoom_build/zdoom && \
git tag -l | grep -v 9999 | grep -E '^[0-9]+([.][0-9]+)*$' | \
sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 | \
tail -n 1

If you want to compile the current release version, run:


cd "$HOME"/zdoom_build/zdoom && \
Tag="$(git tag -l | grep -v 9999 | grep -E '^[0-9]+([.][0-9]+)*$' | \
sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 | \
tail -n 1)" && \
git checkout --detach refs/tags/"$Tag"

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:

/home/<your username>/zdoom_build/<your newly created directory>

Updating
When you wish to update ZDoom, copy and paste the following:
cd "$HOME"/zdoom_build/zdoom && \
git pull

When the update finish, go to #Compiling.

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}

Copy zdoom, zdoom.pk3, liboutput_sdl.so and libfmodex64-4.26.36.so or libfmodex-4.26.36.so


to /usr/games/zdoom or /usr/games/zdoom-alpha:
cd "$HOME"/zdoom_build/zdoom && \
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/{zdoom,zdoom.pk3,output_sdl/liboutput_sdl.so},\
fmodapi42636linux"$a"/api/lib/libfmodex"$a"-4.26.36.so} \
/usr/games/zdoom"$d"

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" && \

sudo mv -v zdoom"$d" /usr/bin

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

Remove zdoom script:


cd /usr/bin && \
sudo rm -fv zdoom

Remove /usr/games/zdoom-alpha directory and all its files:


cd /usr/games && \
sudo rm -rfv zdoom-alpha

Remove zdoom-alpha script:


cd /usr/bin && \
sudo rm -fv zdoom-alpha

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

Now start ZDoom by typing in run, and pressing enter:


(gdb) run

Or put any Command line parameters to zdoom after run:


(gdb) run <command line parameters>

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 Build Options


Example

Disable GTK+ dialogs. cmake -DNO_GTK=ON ..


Disable FMOD
support.
Disable OpenAL
support.

FMOD_LIB Set path for FMOD


RARY
library.
FMOD_INC Set path for FMOD
LUDE_DIR include directory.

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 ..

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 ..

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

... on Gentoo, run:

sudo emerge -avn 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

Do the following steps as normal user.

Make gzdoom_build directory


mkdir -pv "$HOME"/gzdoom_build

Download the Source


Download the GZDoom source and make build directory:
cd "$HOME"/gzdoom_build && \
git clone git://github.com/coelckers/gzdoom.git && \
mkdir -pv gzdoom/build

and run the following commands:


cd gzdoom
git config --local --add remote.origin.fetch +refs/tags/*:refs/tags/*
git pull

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.

Current release version


Show the current release version:
cd "$HOME"/gzdoom_build/gzdoom && \
git tag -l | grep -v 9999 | grep -E '^g[0-9]+([.][0-9]+)*$' | \
sed 's/^g//' | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 | \
tail -n 1 | sed 's/^/g/'

If you want to compile the current release version, run:


cd "$HOME"/gzdoom_build/gzdoom && \
Tag="$(git tag -l | grep -v 9999 | grep -E '^g[0-9]+([.][0-9]+)*$' | \
sed 's/^g//' | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 | \
tail -n 1 | sed 's/^/g/')" && \
git checkout --detach refs/tags/"$Tag"

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.

Let's checkout GZDoom 1.8.6:


cd "$HOME"/gzdoom_build/gzdoom && \
git checkout --detach refs/tags/g1.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

When the update finish, go to #Compiling.

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.

If you want to install GZDoom, do the following:


Make /usr/games/gzdoom and /usr/games/gzdoom-alpha directories:
sudo mkdir -pv /usr/games/{gzdoom,gzdoom-alpha}

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

Remove gzdoom script:


cd /usr/bin && \
sudo rm -fv gzdoom

Remove /usr/games/gzdoom-alpha directory and all its files:

cd /usr/games && \
sudo rm -rfv gzdoom-alpha

Remove gzdoom-alpha script:


cd /usr/bin && \
sudo rm -fv 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

Make a debug build of GZDoom:


cd "$HOME"/gzdoom_build/gzdoom/debug && \
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
make clean ; \
cmake -DCMAKE_BUILD_TYPE=Debug \
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

You should now be able to use gdb to generate a backtrace:


gdb gzdoom

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

Use "run" to start gzdoom:


(gdb) run

To start and pass Command line parameters to gzdoom:


(gdb) run <command line parameters>

Use "bt" to get the backtrace after a crash:


(gdb) bt

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 Build Options


Example

Disable GTK+ dialogs. cmake -DNO_GTK=ON ..


Disable FMOD
support.
Disable OpenAL
support.

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.

How to increase Zandronum/GZDoom OpenGL FPS on Intel


Graphics
Prerequisite:
Debian/Ubuntu
xserver-xorg-video-intel >= 2.19
Fedora

xorg-x11-drv-intel >= 2.19


openSUSE
xf86-video-intel >= 2.19
Mageia
x11-driver-video-intel >= 2.19
Arch Linux
xf86-video-intel >= 2.19
Gentoo
x11-drivers/xf86-video-intel >= 2.19
PCLinuxOS
x11-driver-video-intel >= 2.19
Run Zandronum/GZDoom, start a new game, open console and type vid_fps 1, see how many FPS
are displayed and exit Zandronum/GZDoom.

Enable SandyBridge's New Acceleration


If your Intel driver version is 2.21.14-1 / 2.21.15-2 or greater, go to the next part.
Intel SNA is useful on all Intel Graphics, not just SandyBridge.
Make 99-intel.conf:
touch 99-intel.conf

Copy and paste the following to 99-intel.conf:


Section "Device"
Identifier "Intel Graphics"
Driver "intel"
Option "AccelMethod" "sna"
EndSection

and save.
Verify if the xorg.conf.d directory already exist:
ls /etc/X11

If it doesn't exist, as root/superuser, make it:


mkdir -pv /etc/X11/xorg.conf.d

As root/superuser, copy 99-intel.conf to /etc/X11/xorg.conf.d:


cp -v 99-intel.conf /etc/X11/xorg.conf.d

and logout and login.

Disable Vertical Synchronization for Zandronum/GZDoom


Open a terminal, go to your user home directory and verify if the .drirc file already exist:
cd "$HOME"
ls -la

If it doesn't exist; make it:


touch drirc

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.

Revert All Changes


Remove .drirc:
cd "$HOME"
rm -fv .drirc

As root/superuser, remove 99-intel.conf:


cd /etc/X11/xorg.conf.d
rm -fv 99-intel.conf

and logout and login.

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

Do the following steps as normal user.

Make zandronum_build directory


mkdir -pv "$HOME"/zandronum_build

Download the Source


Download the Zandronum source and make buildclient and buildserver directories:
cd "$HOME"/zandronum_build && \
hg clone https://bitbucket.org/Torr_Samaho/zandronum && \
mkdir -pv zandronum/{buildclient,buildserver}

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.

Current stable version


Show the current stable version:
cd "$HOME"/zandronum_build/zandronum && \
hg identify -r 'max(tagged())'

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

When the update finish, go to Compiling.

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}

Copy zandronum, zandronum.pk3, skulltag_actors.pk3, liboutput_sdl.so, zandronum-server and


libfmodex64-4.24.16.so or libfmodex-4.24.16.so to /usr/games/zandronum or
/usr/games/zandronum-alpha:
cd "$HOME"/zandronum_build/zandronum && \
t="$(hg id -t)" && \
if [ "$t" = "tip" ] || [ -z "$t" ]; then
d="-alpha"
else
d=""
fi && \
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
sudo cp -v {buildclient/{zandronum,zandronum.pk3,\
skulltag_actors.pk3,output_sdl/liboutput_sdl.so},\
buildserver/zandronum-server,fmodapi42416linux"$a"/api/lib/libfmodex"$a"4.24.16.so} \
/usr/games/zandronum"$d"

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

Make zandronum-server or zandronum-server-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-server"$d" && \
echo >> zandronum-server"$d" && \
echo "exec /usr/games/zandronum"$d"/zandronum-server \"\$@\"" >> zandronumserver"$d" && \
chmod 755 zandronum-server"$d" && \
sudo mv -v zandronum-server"$d" /usr/bin

Now from a terminal you should be able to execute zandronum / zandronum-alpha or


zandronum-server / zandronum-server-alpha from any user account.

Uninstallation
To remove the previous installation steps:
Remove /usr/games/zandronum directory and all its files:
cd /usr/games && \
sudo rm -rfv zandronum

Remove zandronum script:


cd /usr/bin && \
sudo rm -fv zandronum

Remove zandronum-server script:


cd /usr/bin && \
sudo rm -fv zandronum-server

Remove /usr/games/zandronum-alpha directory and all its files:


cd /usr/games && \
sudo rm -rfv zandronum-alpha

Remove zandronum-alpha script:


cd /usr/bin && \
sudo rm -fv zandronum-alpha

Remove zandronum-server-alpha script:


cd /usr/bin && \
sudo rm -fv zandronum-server-alpha

Debugging
Prerequisite:
gdb
In most cases it is good idea to generate a backtrace when Zandronum crashes.

Debugging Zandronum client


Make debugclient directory:
mkdir -pv "$HOME"/zandronum_build/zandronum/debugclient

Make a debug build of Zandronum client:


cd "$HOME"/zandronum_build/zandronum/debugclient && \
if [ "$(uname -m)" = "x86_64" ]; then
a="64"
else
a=""
fi && \
make clean ; \
cmake -DCMAKE_BUILD_TYPE=Debug \
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

You should now be able to use gdb to generate a backtrace:


gdb zandronum

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

Use "run" to start zandronum:


(gdb) run

To start and pass command line parameters to zandronum:


(gdb) run <command line parameters>

Use "bt" to get the backtrace after a crash:


(gdb) bt

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

Debugging Zandronum server


Make debugserver directory:
mkdir -pv "$HOME"/zandronum_build/zandronum/debugserver

Make a debug build of Zandronum server:


cd "$HOME"/zandronum_build/zandronum/debugserver && \
make clean ; \
cmake -DCMAKE_BUILD_TYPE=Debug -DSERVERONLY=ON .. && \
make

You should now be able to use gdb to generate a backtrace:


gdb zandronum-server

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

Use "run" to start zandronum-server:


(gdb) run

To start and pass command line parameters to zandronum-server:


(gdb) run <command line parameters>

Use "bt" to get the backtrace after a crash:


(gdb) bt

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 Build Options


Example

SERVERONLY= Build a server only


ON
binary.
Disable GTK+
NO_GTK=ON
dialogs.
NO_SOUND=O Disable sound
N
support.
Disable OpenGL
NO_GL=ON
support.
Disable assembly
NO_ASM=ON
code.

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 ..

How to increase Zandronum/GZDoom OpenGL FPS on Intel


Graphics
Prerequisite:
Debian/Ubuntu
xserver-xorg-video-intel >= 2.19
Fedora
xorg-x11-drv-intel >= 2.19
openSUSE
xf86-video-intel >= 2.19
Mageia

x11-driver-video-intel >= 2.19


Arch Linux
xf86-video-intel >= 2.19
Gentoo
x11-drivers/xf86-video-intel >= 2.19
PCLinuxOS
x11-driver-video-intel >= 2.19
Run Zandronum/GZDoom, start a new game, open console and type vid_fps 1, see how many FPS
are displayed and exit Zandronum/GZDoom.

Enable SandyBridge's New Acceleration


If your Intel driver version is 2.21.14-1 / 2.21.15-2 or greater, go to the next part.
Intel SNA is useful on all Intel Graphics, not just SandyBridge.
Make 99-intel.conf:
touch 99-intel.conf

Copy and paste the following to 99-intel.conf:


Section "Device"
Identifier "Intel Graphics"
Driver "intel"
Option "AccelMethod" "sna"
EndSection

and save.
Verify if the xorg.conf.d directory already exist:
ls /etc/X11

If it doesn't exist, as root/superuser, make it:


mkdir -pv /etc/X11/xorg.conf.d

As root/superuser, copy 99-intel.conf to /etc/X11/xorg.conf.d:


cp -v 99-intel.conf /etc/X11/xorg.conf.d

and logout and login.

Disable Vertical Synchronization for Zandronum/GZDoom


Open a terminal, go to your user home directory and verify if the .drirc file already exist:
cd "$HOME"
ls -la

If it doesn't exist; make it:


touch drirc

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.

Revert All Changes


Remove .drirc:
cd "$HOME"
rm -fv .drirc

As root/superuser, remove 99-intel.conf:


cd /etc/X11/xorg.conf.d
rm -fv 99-intel.conf

and logout and login.

Das könnte Ihnen auch gefallen