Installation • Kernel & Hardware • Networks • Portage • Software • System • X Server • Gaming • Non-x86 • Emulators • Misc |
Quake III Arena and Enemy Territory are FPS (First Person Shooters) designed around multi-player gameplay using ID's FPS engine.
Contents
|
emerge quake3
Quake 3 requires Pk0.pk3 files from the CD to be copied to your /opt/quake3/baseq3 code> directory.
emerge enemy-territory
When attempting to play Quake III or Wolfenstein: Enemy Territory error will return /dev/dsp: Input/output error Could not mmap /dev/dsp. These games only support /dev/dsp -- which is now deprecated.
First make sure that ALSA and ALSA-OSS are configured correctly.
There are different methods may work that activate audio for these games:
Set Parameters for OSS
As root specify the OSS device is playback only, the second line is optional ( disable capture ) but may be needed by some games.
echo "quake3.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss echo "quake3.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss
echo "wolfsp.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss echo "wolfsp.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss echo "wolf.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss echo "wolf.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss
echo "et.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss echo "et.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss
Quick explanation of this trick:
Most audio cards have two devices that can be used. One of these devices (the default) does playback and capture. The first (default) device is /dev/dsp. This device is used with a mic and basic output. There is typically a second device that supports playback only. This second device is /dev/adsp.
et-sdl-sound (Run ET With ALSA)
There is an alpha hack which is around that makes Return To Castle Wolfenstein Enemy Territory play with ALSA by replacing standard sound system functions in runtime as aoss won't work for ET. I found this necessary when wanting to run TeamSpeak 2.XX at the same time.
It's located at nullkey.ath.cx/~stuff/et-sdl-sound/
Simply download the latest tarball nullkey.ath.cx/~stuff/et-sdl-sound/et-sdl-sound.tar.gz
1. Extract
2. Copy et-sdl-sound.so file to /opt/enemy-territory/
3. Open your favourite text editor and add the following lines and save as et_sdl_sound.sh:
#!/bin/bash export ETSDL_SDL_LIB="libSDL.so" export SDL_AUDIODRIVER="alsa" cd /opt/enemy-territory/ LD_PRELOAD="/opt/enemy-territory/et-sdl-sound.so" ./et.x86 $*
4. chmod +x et_sdl_sound.sh
5. ./et_sdl_sound.sh
Note if you want to hook this up to XQF you need to tell XQF that the "Command Line" is "/opt/enemy-territory/et_sdl_sound.sh" and the "Working Directory" is "/opt/enemy-territory/"
Note: If it fails to compile with GCC 4.3x with the following error, add #include<limits.h> to the hooks.cpp.
hooks.cpp: In function unsigned int calculateProcCRC32(): hooks.cpp:377: error: PATH_MAX was not declared in this scope hooks.cpp:380: error: filename was not declared in this scope hooks.cpp:384: error: filename was not declared in this scope
In-game fix
Some may only need to instruct the game of the new parameters. Start Quake3/Enemy-Territory, then press "~" to bring up the console. Write:
set +snddevice /dev/dsp
Then restart the game.
Esound
If you have esound running, this may not work. To stop esound type :
# /etc/init.d/esound stop
and later (after you're done playing)
# /etc/init.d/esound start
to start esound again. A simpler way to pause esound as a non-root user is to run:
esdctl off
to suspend esd, run your application, and then
esdctl on
after exiting.)
In Addition: If that trick above doesn't work (on some exotic soundcards like ESI Juli@) try running et/q3 above arts layer if you have installed arts.
artsdsp -m et
You don't need root for running that command. Run it as a normal user.
In some cases, you may have to use esound or artsdsp if your audio chipset does not support the audio format used by et in mmap mode. ICE1712 is one that does not. To use esound:
esddsp --mmap et
If you have errors in the process there may be a couple things you can to do to help.
if you cant run
echo "et.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss
because you get this error
bash: /proc/asound/card0/pcm0p/oss: No such file or directory
You will need to rebuild you kernel to include optional proc filesystem support:
CONFIG_SND_VERBOSE_PROCFS: Say Y here to include code for verbose procfs contents (provides usefull information to developers when a problem occurs). On the other side, it makes the ALSA subsystem larger. Symbol: SND_VERBOSE_PROCFS [=y] Prompt: Verbose procfs contents Defined at sound/core/Kconfig:143 Depends on: !M68K && SOUND && SND && PROC_FS Location: -> Device Drivers -> Sound -> Advanced Linux Sound Architecture -> Advanced Linux Sound Architecture (SND [=y])
Optionally you can use the alsa-driver as it will provide this function as well.
If you have Verbose procfs set, and you still get bash: /proc/asound/card0/pcm0p/oss: No such file or directory, make sure you have the oss modules loaded. You need snd-pcm-oss, snd-mixer-oss, and snd-seq-oss.
If you are on the amd64 platform and you have a chipset with OSS problems, install the app-emulation/emul-linux-x86-soundlibs package. You'll then need to start et like this:
esddsp32 --mmap et
or, if you prefer arts:
artsdsp32 -m et
See https://bugs.gentoo.org/show_bug.cgi?id=77031#c10 for more background.
/proc code> is a temporary file system and therefore it's settings are flushed on reboot. To retain the settings you can add them to your local.start file.
nano /etc/conf.d/local.start
echo "quake3.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss echo "quake3.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss
or
echo "et.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss echo "et.x86 0 0 disable" > /proc/asound/card0/pcm0c/oss
Some people reported game freeze at map start. Set a negative value to the music volume fix it.
quake3.x86 +set s_musicvolume -1
This is kinda a no win situation. The developers have done a few odd things with the settings which can make saving them and keeping them consistent difficult. A lot of times setting will appear lost or change seemingly randomly. This is because each profile and mod can have it's own settings. To help keep a consistent environment:
? Mods use their own settings to so you will have to enter all your setting once again per mod.
There is a rather easy way to make your settings persistent (even when using different mods). How? By making use of the file autoexec.cfg which may initially be located in your ~/.etwolf/etmain directory (if it isn't, create it). autoexec.cfg will be executed at every start of the game.
What is supposed to be in autoexec.cfg? It makes sense to keep in it all settings you want to make persistent. Initially you can use those found in the file ~/.etwolf/etmain/etconfig.cfg (which is created once you started (and ended) the game). If you are unfamiliar with the stuff you find in that file, check out ET 4 newbies and this (scripting for newbies).
Now that you have a basic idea what should be in your autoexec.cfg, it is time to edit it. Keep in all your important settings and get rid of the rest. You can come back any time to make adjustments or additions.
As soon as you start the game, your autoexec.cfg will be loaded/executed. (if the game is already running there is no need to restart the game; simply invoke the console and enter the following: /exec autoexec.cfg)
In case you have other mods (like etpro, jaymod, etpub) installed, you can create symbolic links. This has a distinct advantage: only one autoexec.cfg will be used, which makes it easy to keep your settings up to date for all installed mods. Assuming you have etpro installed, what you need to do is the following:
cd ~/.etwolf/etpro ln -s ../etmain/autoexec.cfg
Use the same method to create symbolic links for all your other mods and you will be set.
Punkbuster is an optional client but required by numerous servers to prevent online cheating. If you want to be able to play on these servers you'll need to have an updated punkbuster:
~/.q3a/pb code> or ~/.etwolf/pb code>
. .