               C l i e n t / S e r v e r    D O O M
-------------------------------------------------------------------------------

Programmed by Sergey Makovkin (sergeym@mail.infotel.ru).
Readme written by Bill Koch (bloodshedder@hotmail.com).

Original game & sources by: Id Software.

csDoom web site: http://csdoom.sourceforge.net
        mail to: sergeym@mail.infotel.ru

csDoom is based on ZDoom 1.22 (http://zdoom.notgod.com/)

-------------------------------------------------------------------------------

-----------------
Table of Contents
-----------------

[1] What client/server Doom is
[2] Installing csDoom
       *1* System Requirements
       *2* Procedure
[3] Running csDoom
       *1* Client Portion
       *2* Dedicated Server Portion
[4] Console Commands
       *1* Client Settings
       *2* Server Settings
       *3* The Remote Console
[5] Disclaimer


------------------------------
[1] What client/server Doom is
------------------------------

You probably have tried to play Doom DeathMatch over the Internet before.
Unless you have a high speed connection, the games were probably very laggy,
or you couldn't get it to work at all. Client/Server Doom (csDoom) is designed
for people with slow connection speeds.  Having a dedicated server on a high
speed line to host players allows better pings and fewer dropped packets.  But if
you don't know what those things are, don't worry.  Just have fun playing Doom
DeathMatch over the Internet.  But watch out for those LPB's!

csDoom will do for Doom what QuakeWorld did for Quake:  revolutionize Internet
DeathMatch by optimizing settings for modem users, and possibly open up a
whole new world of Doom multiplayer DeathMatch Modifications!


---------------------
[2] Installing csDoom
---------------------

*1* System Requirements

14,400 bps modem
A computer that can run ZDoom (http://zdoom.notgod.com/) well.

*2* Procedure

#NOTE#: csDoom REQUIRES that you have version Doom II 1.9 or Ultimate Doom.
        To get patches to upgrade your version, go to:
        http://www.idsoftware.com/archives/doomarc.html
        to upgrade Doom I to Ultimate Doom and
        http://www.idsoftware.com/archives/doomii.html
        to upgrade Doom II to version 1.9.

* Windows 95/98/NT

Unzip all files included in the archive into your Ultimate Doom/Doom II
directory. It's that simple.

* Linux

First, get Hermes and install it if you haven't already. You can get it from
http://www.halyava.ru/fly/Hermes-1.3.1-1.i386.rpm or from
http://hermes.terminal.at

Untar the binary distribution into /usr/local/csdoom directory. Copy your
DOOM IWAD files to /usr/local/csdoom.  csDoom will also look for IWADs in
~/.zdoom and $DOOMWADDIR. Copy libzdoom-x.so and libzdoom-svgalib.so into
/usr/local/lib directory. If you aren't going to run the csdoom client, you
don't need libzdoom-x.so and libzdoom-svgalib.so files.

------------------
[3] Running csDoom
------------------

*1* Client Portion

The easy way:

Simply run the csDoom Launcher in your Doom(2) directory (csdLauncher.exe).
This program connects to the master server and retrieves a list of all the
running game servers. To play, simply select one, put in any extra
parameters in the Additional Settings box, and hit the Launch button.

About custom wads:  To play on servers running custom wad files, you first
must specify which directories that csDoom will look in to find them.  To do
this, go to the "Tools" menu and choose "Settings..." You will see a box pop
up that will allow you to type in and add the directories where your custom
wad files exist.

If this isn't working for you, or you have the Linux version, see below.

The hard way:

To join a game manually, run doomcl.exe, go to the console, and type
"connect <internet address>".  Or, you can run doomcl.exe like so:

   doomcl.exe -connect <internet address>

Be sure to (duh!) replace <internet address> with the actual IP number or
host name you are connecting to. If the server is running on a port other than
10666 (default), type "connect <internet address:port>" in the console or run
doomcl.exe like so:

   doomcl.exe -connect <internet address:server port>

If, for some reason, that the default port the client uses (which is 10667)
is in use on your machine, you must start the client like this:

   doomcl.exe -connect <internet address:server port> -port <client's port>

This tells the server that the client is using a port other than the default
10667, and that the server should send packets to the specified port.

To disconnect from the server, just type "disconnect" in the console.
To reconnect to the server you were just connected to (or if you get booted
off), type "reconnect" in the console.

#NOTE#: About teamplay:  Before you can play on a server that has teamplay on,
        you must have your team (red or blue) specified BEFORE you connect.
        But the first time you connect to a teamplay server, you will likely
        not have your team specified, so, you will be kicked off.  Just
        specify your teamname with "team <redorblue>", type "reconnect",
        and you're ready for playing on that and any other teamplay server
        (your team is stored in zdoom.cfg).

*2* Dedicated Server Portion

#NOTE#: To host your own dedicated server it is HIGHLY recommended that you
        have a DSL line, equivalent, or faster.

To host your own dedicated server, run the following:

   doomsv.exe [-skill <1-5>] [-warp <01-32/e1m1-e4m9>] [-port <port #>]
              [-file <wadname>] [-maxclients <max # clients>]
              [+set dmflags <value>] [+teamplay <1|0>]
              [+exec <scriptname.cfg>]

If run without any parameters, csDoom server starts on MAP01 or E1M1, skill 5,
port 10666, and weapons stay, items respawn. -deathmatch and -nomonsters
parameters are not needed, because the server is always set to be DeathMatch
and there are never monsters.  csDoom supports up to 8 players. To connect
to your local server with a local client, start the client and type
"connect 127.0.0.1" or "connect localhost" in the console. But this would
likely be unfair because you would have a VERY low ping!

#NOTE#: To Linux/FreeBSD dedicated servers:  To run the csDoom dedicated
        server in the background, add the command-line parameter -background.
        This will allow you to do other stuff in the OS, among running
        the server.

--------------------
[4] Console Commands
--------------------

#NOTE#: This section describes ONLY the new console commands in csDoom.  To
        see descriptions of all the commands in ZDoom, read commands.txt that
        comes with ZDoom.

*1* Client Settings

rate <setting>
default: 2500
This setting limits the speed the server sends data to you by dropping data
internally.  This is more efficient that losing packets externally. To
change the setting, type "rate <whatever>" in the console.
Best settings are:

14,400 Modem                            -       1400
28,800 Modem                            -       2500 (default setting)
33,600 Modem                            -       3000
56k, ISDN                               -       4000
Really fast (DSL, cable, Tx, OCx)       -       More than 5000,
                                                whatever you can
                                                handle

cl_predict_players <1|0>
default: 1
This command toggles player prediction on or off. When prediction is turned
on, players should move smoother. csDoom does not try to show the real position
of players as QuakeWorld does using "pushlatency". It just predicts players'
movements while waiting for the next packet from the server. When the
client receives the packet with player coordinates, it sets the player's new
position. It is advised that you leave prediction on even if you have a fast
connection. To turn it off, change its value to 0.

The "stat net" console command shows a string that shows you how many bytes
you are receiving and sending per second.  It will like something like this:

  "in = 2237  out = 1050"

To watch a ping value or see frag counts, bind a key to +showscores from the
console (for example, bind tab "+showscores").

*2* Server Settings

To set up map cycling on a server, you must first add the map name to the
cycle list with the "addmap" command. The "maplist" commands shows the maps
currently in the cycle list.  To clear the cycle list, simply type
"clearmaplist". For example:

addmap map01
addmap map07
addmap map16
fraglimit 100
timelimit 60

When either the frag or time limit is reached, the server will load the next
map in the list. "maplist" would show map01, 07, and 16 in the list. If you
are unhappy with the list, just clear it. You can add more maps to it at
any time. An easy way to set up map cycling is to write a separate config file,
name it something like mapcycle.cfg, and add "+exec mapcycle.cfg" to the
command line when launching the server.

fraglimit <number>
default: 50
If this cvar is non-zero, the game will automatically advance to the next
level in the cycle list once anyone gets this many frags. If you haven't
set up any maps in the cycling list, the game will restart on the same map.

timelimit <number>
default: 30
When this cvar is non-zero, the game will automatically advance to the next
level in the cycle list after this many minutes have elapsed.

dmflags <number>
default: 17412 (4 + 1024 + 16384)
This cvar controls the behavior of several aspects of gameplay. To
determine what value to store in this cvar, select the desired features
from the table below and add their values together.

Value  Description
-----------------------------------------------------------------------------
     1  Do not spawn health items
     2  Do not spawn powerups
     4  Weapons remain after pickup
     8  Enable falling damage
    16  Players cannot hurt teammates (friendly fire avoidance)
   128  Spawn players as far as possible from other players
   256  Automatically respawn dead players
   512  Do not spawn armor
  1024  Kill anyone who tries to exit the level
  2048  Infinite ammo
 16384  Powerups other than invulnerability and invisibilty respawn
 65536  Don't allow jumping
131072  Don't allow freelook
262144  Invulnerability and invisibility respawn

master <1|0>
default: 1
This command lists the server you are running on the master server list when
its value is 1. To make your server more private and not have the master
server list it, simply change its value to 0.

hostname "name of your server"
default: Unnamed
To give your server some personality and give it a name, simply change this
setting. It defaults to "Unnamed" (which is kind of lame) if you don't give
it a name. It can contain spaces and stuff, so go wild.

*3* The Remote Console

The remote console allows the client to change server settings.  The server
must set a password (5 or more letters) to allow the client to use the
remote console feature.  To do this in the server, type "rcon_password
"PASSWORD" in the console.

Now, in order for the client to change settings on the server, the client
must know the password also.  If you are running the client and you know
the remote console password, type "rcon_password PASSWORD" in the console.
There will be no confirmation message.  This enables the remote console
from your side. If you wish to change settings on the server, simply
type "rcon" before the setting you wish to change, for instance:

rcon map map08
rcon fraglimit 20
rcon quit

As you may see now, the remote console is as powerful as the server itself.
You can also do many other things too, including clearing the map cycling
list, adding maps to that, changing dmflags; anything that can be changed
on the server can be manipulated with the remote console. If you are
wondering if a certain setting can be changed, just try it! You never know!

#NOTE#: rcon quit may tick certain people off (the least of which, all the
        clients and the server itself), so use it at your own risk :)

--------------
[5] Disclaimer
--------------

Even though you can frag people in real-time, this program should not
promote you killing family, friends, others, or self.  Remember, it
is just a game.

Client/Server Doom by Sergey Makovkin (Fly)  (sergeym@mail.infotel.ru)
Readme written by Bill Koch (Bloodshedder)  (bloodshedder@hotmail.com)

