Installing DOOM on a Linux Server


Installing the Linux/UNIX port of DOOM is not easy - there are a lot of disparate packages to compile and install. There is not an RPM based version (that works) available either.

This guide details the steps needed to install the PRBOOM port of id Software's original source code.

The final result it worth it - the finished product is an improved version of the classic DOOM II game.

See the README files within each tar file for the appropriate credits.

Red Hat 7.1: See instructions at the bottom of this page.



===========================================================
Requirements
===========================================================

Minimum Machine Requirements:

- Linux/Solaris machine, with X Window system, gcc
- 486 or better CPU
- 16 MB RAM
- Soundcard
- Video - minimum requirement: VESA card
- 80mb free in /usr/src
- 50mb free in /usr/local


===========================================================
Install Overview
===========================================================

Below is a detailed list of all the required components.



SDL-1.2.2

This is the Simple DirectMedia Layer, a generic API that provides low
level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL,
and 2D framebuffer across multiple platforms. See http://www.libsdl.org


GUIlib-1.1.0

This is a very simple GUI framework, for use with SDL.
It is very flexible, but is by no means a complete windowing system.
It contains a C++ GUI class with a very rudimentary C interface,
and a set of useful widget classes.
http://www.devolution.com/~slouken/SDL/projects/GUIlib


smpeg-0.4.2

SMPEG is a free MPEG1 video player library with sound support.  Video playback
is based on the ubiquitous Berkeley MPEG player, mpeg_play v2.2.  Audio is
played through a slightly modified mpegsound library, part of Splay v0.8.2.
SMPEG supports MPEG audio (MP3), MPEG-1 video, and MPEG system streams.
Berkeley MPEG player   http://bmrc.berkeley.edu/frame/research/mpeg
Splay                  http://my.netian.com/~polarb
SDL                    http://www.devolution.com/~slouken/SDL


SDL_net-1.1.1

This is an example portable network library for use with SDL.
http://www.devolution.com/~slouken/SDL/projects/GUIlib/


SDL_mixer-1.1.0

Due to popular demand, here is a simple multi-channel audio mixer.
It supports 8 channels of 16 bit stereo audio, plus a single channel
of music, mixed by the popular MikMod MOD, Timidity MIDI and SMPEG MP3
libraries. The latest version of this library is available from:
http://www.devolution.com/~slouken/SDL/projects/SDL_mixer/


TiMidity++-2.10.2

TiMidity was originally a converter that converted MIDI files to WAV
audio files. But now TiMidity++ is not only a converter but also a
real-time player that can play a MIDI file in real time. TiMidity does
not requires an external MIDI instrument module to play MIDI file; it can
perform with software power only.
The latest release of TiMidity++: 
http://www.goice.co.jp/member/mo/timidity/  


goemon

Goemon's timidity patchkit ;  contains all the sound samples required for 
the music tracks.  
http://www.alsa-project.org/~goemon ; also goemon@anime.net
goemon.tar is 12mb in size.

  [[ An alternate is timidity-eawpatches-10-1.noarch.rpm, which is 28mb in size.
     This install is not detailed here. ]]


svgalib 1.4.3  (optional)

To run Doom outside of the X Window environment, you'll need the latest
version of svgalib.  Be sure to test you video card by running vgatest
in the demos directory.  prboom 2.2.1 or higher is required also. 
Other tasks:

- make sure the chipset and modes are set up as needed in /etc/vga/libvga.config

- before making SDL, run the configure as follows:
  ./configure --enable-video-svgalib

- Add this line to your startup script to allow
  SDL to operate using svgalib:   export SDL_VIDEODRIVER=svgalib



prboom-2.2.1

PrBoom is a version of the classic 3D shoot'em'up game Doom, originally 
written by id Software. 

PrBoom is a game engine - it provides a program to play Doom levels, but 
it doesn't include any levels itself. More importantly, you need all the 
sounds, sprites, and other graphics that make up the Doom environment. 
So to play PrBoom, you need one of the main Doom date files from id 
Software - either doom.wad, doom2.wad, tnt.wad or plutonia.wad from one 
of the commercial Doom games, or the shareware doom1.wad. This file 
is called the IWAD.

PrBoom also supports playing Doom add-on levels, called "PWADs", which 
are small extra .wad files which just contain extra levels or other 
resources. PWADs are ONLY ADD-ONS, you still need the original IWAD 
that they are designed to work with. In practice, most PWADs on the 
Internet require doom2.wad (although some work with doom.wad). 
See http://prboom.sourceforge.net/about.html



===========================================================
Installation
===========================================================


1)  Obtain these tar files ( higher versions are usually preferred )
    ( will be available on a single FTP site soon )

            SDL-1.2+
            GUIlib-1.1.0
            smpeg-0.4.2
            SDL_net-1.1.1
            SDL_mixer-1.1.0
            TiMidity++-2.10.2
            prboom-2.2 +
            goemon.tar


2) In the /usr/src directory, install ( tar xvf ) each of the
   above tar files.  

3) In the LISTED ORDER detailed above, go into each 
   directory, and type:

./configure    or   ./configure --prefix=/usr
make
make install


Important Notes:

    - change one file before building the prboom modules, 
    prboom-2.1.2/src/g_game.c ;  change NUM_KEYS from 256 to 512.
    This will allow the numeric keypad/arrow keys to function
    properly.

    - skip goemon.tar here, it's used in step 4


4)  Next install ( tar xvf ) the file: 
       goemon.tar
    to
       /usr/local/games

    A new directory, "goemon" will be created.  This contains the
    required MIDI samples for the DOOM music.


5)  Move the DOOM executables from  /usr/local/games to /usr/local/games/doom

    Obtain doom2.wad and/or doom1.wad, copy to this directory.
    See idsoftware.com for ordering info here.

    If you don't own any of the Doom games, get the shareware doom1.wad 
    from Doomworld's shareware download page. You won't be able to play 
    most add-ons. http://www.doomworld.com/shareware

    Next, get some WAD files, and put them in /usr/local/games/wad


6)  Create a file:  /usr/local/games/doom/timidity.cfg, using this source:
    ( All the commented out lines are examples of other sound setups )

          ##############################################################################
          # 
          # Instrument configuration file for timidity
          #
          # Specify library directory:        dir 
          #
          # - Multiple library directories may be given. The ones given last will be
          #   searched first so you can override them in later configuration files.
          #   Extra configuration files and MIDI files will also be searched in these
          #   directories.
          #
          # Set tone bank or drum set to modify:  bank 
          #                   drumset 
          #
          # Map program number to patch map:   
          #
          # - If the patch can't be found in the library directories, TiMidity will 
          #   search again with ".pat" appended to the name.
          #   Programs without a loaded patch will be silent, except that for
          #   banks/drumsets >0, the corresponding patch in  bank/drumset 0 will
          #   be used (if one exists).
          #
          # Read another configuration file:  source 
          #

          ##############################################################################
          # If you've moved things around since compiling, uncomment and edit this to
          # point to the library directory: 
          #
          #dir /usr/local/lib/timidity
          #
          dir /usr/local/bin/timidity


          ##############################################################################
          # This sets up the default patches in the TiMidity support package
          # "timidity-lib-0.1.tar.gz":

          ##bank 0
          ##   0 patch/acpiano.pat
          ##  24 patch/nylongt2.pat

          ##############################################################################
          # If you have Dustin McCartney's "wowpats" patches, you can source the 
          # config file to set them up for TiMidity:
          #
          # (Note that later entries in config files always override earlier ones)
          #
          #source wowpats.cfg
          #
          # Source files for goemon sound configuration.
          #  
          source /usr/local/games/goemon/goemon.cfg

          ##############################################################################
          # If you have Dustin McCartney's GS drum sets, you can source the config
          # file to set them up for TiMidity:
          #
          #source gsdrum.cfg
          #

          ##############################################################################
          # If you have the GUS General MIDI patch set, uncomment the following lines 
          # and edit the "dir" statement to point to your GUS patch directory. 
          #
          #dir /dos-C/ultrasnd/midi
          #source gravis.cfg
          #

          ##############################################################################
          # If you have the Midia patch set, you can source midia.cfg to set them up.
          # Note that midia.cfg sources gravis.cfg in turn, since the filenames are 
          # almost identical.
          #
          #source midia.cfg
          #


          ##############################################################################
          # Use XG program map.
          # "#extension" is keyword on TiMidity++, not comment.
          #extension source xgmap.cfg


          ##############################################################################
          # End of configuration file


7)   Now, create a script, to run Doom !  Here's an example, which
takes the WAD file as a parameter.  The 2nd parm is optional
and can be used to warp to different levels.  The example below
assumes you have doom2.wad .


#!/bin/bash
#------------------------------
# Run DOOM  (prboom build)
#------------------------------

echo "using wad file ... " $1
cd /usr/local/games/doom
sleep 2

./prboom -width 640 -height 480 -iwad doom2.wad -file /usr/local/games/wad/$1.wad $2


8) Errata

- Log into the X Window system as a normal user, then SU over to root.  This 
  elminates any display/authority related issues.

- Try "export DISPLAY=:0.0" if display issues persist ;
  or "export DISPLAY=hostname:0.0" .

- This install was done successfully on four different Red Hat 6.1 machines:
  a Thinkpad 380, a GW P150, an IBM ValuePoint P100, and a PII 350mhz.

  OSS drivers were required for the SB AWE cards, and the Thinkpad ESS Solo card.
  

===========================================================
Features
===========================================================

What's New

- No more visiplane errors ;  most other bugs have been eradicated.

- Excellent setup screen.

- Several WAD files take advantage of new textures and atmospheric enhancements, 
  check out the "kboom" series at ftp.cdrom.com.
 
- New dashboard ( F5 Key )
 
- New DOOM server program:  prboom-game-server
       To  start  a  network game (often abbreviated to `netgame'), first
       the server is started. prboom-game-server accepts various  parame­
       ters to control the type of game (the skill level, number of play­
       ers, level to play, optional WAD file(s) to load, etc).

       Then each player that wishes to participate runs prboom -net host­
       name,  where  hostname  is  the  name  of the machine on which the
       server is running. Each copy of prboom retrieves information about
       the game from the server, and when the specified number of players
       have joined, the game begins.






Appendix 1: Installing PRBOOM on Red Hat 7.1

Red Hat included some of the libraries detailed above in their 7.1 release. See modified instructions below for running prboom on your 7.1 system.

1) install the SDL source, to /usr/src

2) copy the "include" directory contents to
      /usr/include/SDL

3) create a symbolic link, for SDL library
    cd /usr/lib
    ln -s libSDL-1.1.so.0 libSDL.so

4) install the SDL Mixer source, to /usr/src, then run
     cd 
     ./configure --prefix=/usr
     make
     make install-strip

5) install the SDL Net source, to /usr/src, then run
     cd 
     ./configure --prefix=/usr
     make
     make install-strip

6) install the prboom source, to /usr/src, then run
     cd 
     ./configure --prefix=/usr
     make
     make install-strip

7) install the goemon files, and create goemon.cfg and timidity.cfg
   as detailed above.






Click here to give feedback on this documentation.

Back to Rocket Central

Copyright 1997-2001 © Citisoft, Inc. All Rights Reserved.