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

Programmed by Sergey Makovkin (sergeym@comail.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@comail.ru or 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
              * Windows 9x/ME/NT/2000
              * Linux
[3] Running csDoom
       *1* Client Portion
       *2* Dedicated Server Portion
              * DeathMatch or TeamPlay
              * Cooperative Play
[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 9x/ME/NT/2000

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

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!

* DeathMatch or TeamPlay

To host your own dedicated server running DM or Teamplay, 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>] [+fraglog]
              [+fragstats "http://..."]

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.

* Cooperative Play

To host the dedicated server running Cooperative Play, run the following:

   doomsv.exe +exec coop.cfg [-warp <01-32/e1m1-e4m9] [-port <port #>]
              [-file <wadname>] [-maxclients <max # clients>]

If run without any optional (in []'s) parameters, the program will start on
MAP01 or E1M1 and be set to classic Co-op play like in the original Doom.

#NOTE#: To Linux/FreeBSD dedicated servers:  To run the csDoom dedicated
        server in the background, add the command-line parameter -bg.


--------------------
[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
        is included 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)       -       5000

#NOTE#: Don't use a rate higher than 5000. Some people figure "the more the
        better", but that is not the case here. Using an extremely high rate
        may max out the server's CPU/bandwidth.

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.

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.

fraglog
This console command enables frag logging; or you can run your server with
the "+fraglog" parameter.  csDoom will then generate frag_XX.log files. A
program which generates an HTML page using these .log files is called
Fragstats. It's available at http://quake.tip.net.au/fragstats.html. You can
also see some examples of frag stats there. Any player can always see who
is the best player on his favorite server!

fragstats "URL"
default: "No"
If you have installed the Fragstats utility, type this command in the
server's console, where URL is a location of your Fragstats page.

#NOTE#: The URL must begin with "http://" or "www" otherwise the csDoom
        Launcher won't work properly. But ZDoom can't read "http://" from
        zdoom.cfg. It thinks that "//" is a comment. So if you want to use
        http:// (for example, a URL that doesn't contain "www"), you have to
        execute the "fragstats" command every time you start your server, as
        shown in the section "Running csDoom: Dedicated server portion:
        DeathMatch or TeamPlay."

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: 21572 (4 + 64 + 1024 + 4096 + 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 (DM)
     2  Do not spawn powerups (DM)
     4  Weapons remain after pickup (DM)
     8  Players sustain falling damage
    16  Players cannot hurt teammates (friendly fire avoidance)
    64  Stay on the same map when someone exits (DM)
   128  Spawn players as far as possible from other players (DM)
   256  Automatically respawn dead players (DM)
   512  Do not spawn armor (DM)
  1024  Kill anyone who tries to exit the level (DM)
  2048  Don't use any ammo when firing
  4096  Don't spawn monsters
  8192  Monsters respawn after being killed
 16384  Powerups other than invulnerability and invisibilty respawn
 32768  Monsters are fast
 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 host of 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@comail.ru)
Readme written by Bill Koch (Bloodshedder)  (bloodshedder@hotmail.com)
