+----------------------------------------+
| The Official Quake Deathmatch TEST     |
| Released Saturday, February 24th, 1996 |
| Copyright (C) 1996 id Software, inc.   |
+----------------------------------------+
| Network Subsystem Documentation        |
| by John Cash                           |
+----------------------------------------+

Overview
========

Quake is a client/server game.  You are always
running over some type of network.  In a standalone game, you are
using a loopback network; it just passes messages back and forth
in memory buffers.  This readme is talking about real networks and
multiplayer deathmatches.  There are three main sections: commands,
LANs, and Serial.


Command Line Parameters, Commands, and Variables
================================================

Command line parameters
-----------------------
"-nolan"
Disables both IPX and TCP/IP support.

"-netlog <filename>"
Records all network messages into the specified file.  This is for
debugging use only and will slow your game down *a lot*.

"-record"
Server only.  This will create the file quake.vcr and records the game.
This is for debugging server bugs and is NOT a ".lmp"-style demo recording.

"-noudp"
Disables support for TCP/IP.

"-udpport <port#>"
Specifies a UDP port to be used other than the default of 26000.

"-noipx"
Disables support for IPX.

"-ipxport <port#>"
Specifies a IPX port to be used other than the default of 26000.

"-noserial"
Disable serial support.


Variables
---------

"net_messagetimeout"
Specifies how long Quake should wait for a message to arrive before
deciding the connection has died.  The default is 3 minutes.  For
reference, messages usually arrive at the rate of about 20 per second.

"hostname"
This is the name for your server that will show up on an slist
(see below).  The default value is "unnamed".

"net_speeds"
Setting this variable to 1 will cause diagnostic network information
to be displayed once per second.


Console commands
----------------

"net_stats"
This is for debugging. It displays various network statistics.

"slist"
Looks for Quake server on a local LAN (or over a null modem
cable).  This will NOT go outside the local LAN (will not cross
routers).


LANs
====

Here are the LANs that are supported by the Quake test
release.  For each one, you'll be told how to connect to a server
*if it is not on your local network*.  If it is, you can use the
"slist" command and connect by hostname.  See the main readme for
a discussion of the connect command.

Beame & Whiteside TCP/IP
------------------------

This is the only DOS TCP/IP stack supported in the test release.
It is not shareware...it's what we use on our network (in case you
were wondering why this particular stack).  This has been "tested"
*extensively* over ethernet and you should encounter no problems
with it.  Their SLIP and PPP have not been tested.  When connecting
to a server using TCP/IP (UDP actually), you specifiy it's "dot notation"
address (like 123.45.67.89).  You only need to specify the unique portion
of the adress.  For example, if your IP address is 123.45.12.34
and the server's is 123.45.56.78, you could use "connect 56.78".

IPX
---

Quake has been run with Novell's ODI IPX stack under DOS,
PDIPX with packet drivers under DOS, and the Microsoft IPX stack
in a Win95 DOS box.  If you use PDIPX, see "known problems" below.
When connecting to a server using IPX, you specify its network:node
address (like 12345678:1234567890AB).  If you are on the same
network, you can just specify the node address.

Other
-----

We're talking about PPP, SLIP, Kali... anything besides
IPX or B&W as described above.  The answer is: we don't know, we
haven't had time to test it all (doesn't matter what the question
was).

Playing over the Internet
-------------------------
Yes, you can play Quake over the Internet.  How many people can be in
the game? That depends.  How smooth will the game be?  That depends.
There are just too many variables (bandwidth, latency, current load,
etc...) for us to make any kind of promises about Internet play.


Serial/Modem
============

The Quake serial driver supports two COM ports.  Although they are referred
to as COM1 and COM2, you can configure them to use any normal hardware
COM port (1 thru 4 on most PCs).  The com ports are used with interrupts,
so their IRQ may not be used for another purpose (such as a LAN adapter
or sound card).  The IRQ may not be shared with another device either;
not even another COM port.  A client can only be connected to one server
at a time, so multiple ports are really only useful on a server.
When using modems, the client must originate the call and the server
must answer.  This holds true even for a two player, non-dedicated
server configuration.

*** Modem support does NOT work at this time ***
Serial play is only supported via direct connection (null modems cables).
It *might* work to establish a modem connection before running Quake
and then treating it like a direct connection... *BUT* this has
not been tried or tested.

The COMx commands
-----------------

There are two commands to support serial/modem play for Quake.  They
are: COM1 and COM2. Entering one of these commands with no arguments
will display the status of that serial port, similar to this:

Settings for COM1
enabled:   true
connected: false
uart:      16550
port:      3f8
irq:       4
baud:      28800
CTS:       honored
DSR:       honored
CD:        honored
startup:
shutdown:

When used with arguments, these commands change the settings and
status of the COM ports.  The possible arguments are listed below;
examples follow.

enable | disable
"enable" means that your configuration is complete and you want to use
the COM port.  "disable" is used to turn off a COM port, usually to
change its settings.  The default (initial) state is disabled.


dial | answer
Specifying one of these two options indicates that you are using a modem.
"dial" is used for Quake clients and means that you will be initiating the
call.  "answer" is used for Quake servers and means that you will be
receiving the call(s).  Using neither of these means that you are using
a null modem cable and modem processing will be disabled.


reset
This will reset the COM port to its default settings and state.


port <n>
irq <n>
These are used to set the I/O Port and IRQ that your serial port uses.
The default values are: port=3f8 irq=4 for COM1 and port=2f8 irq=3 for
COM2.  Note that the port number is displayed in hexadecimal; to enter
it you would use something like "COM2 port 0x2f8"; the "0x" preceding
the "2f8" indicates that you are giving the value in hexadecimal
otherwise decimal is assumed.


baud <n>
Sets the baud rate.  Valid values for <n> are: 9600, 14400,
28800, 57600, and 115200.  28800 is the default.  Please note that
this is the baud rate used for the uart, not your modem.  It is
perfectly valid to use 57600 on a COM port that is connected to a
28.8 modem.

8250 | 16550
Specifies the type of uart chip in your system. Normally this is
automatically detected, one of these need only be used if your chip
is incorrectly detected.

startup
shutdown
This allows you to specify the startup and shutdown strings needed for
a modem for playing Quake.  If you've found values that previously worked
with Doom, use them here.  If you are playing over a null modem cable,
leave these blank.

-cts | +cts
-dsr | +dsr
-cd  | +cd
These determine if certain serial control lines should be honored or ignored. The "-" means you want
that line ignored, the "+" means to honor it. "cts" is an abbreviation
for "clear to send", "dsr" for "data set ready", and "cd" for
"carrier detect".  Most people will not need to change these values.
The default is to honor all 3 lines.

Quake always uses no parity, 8 data bits, and 1 stop bit; these
values can not be changed.  The baud, port, irq, and uart type can
not be changed on an enabled port, you must disable it first.


Configuration examples
----------------------
Example1: You have a machine with two serial ports you are going
to use as a Quake server.  COM1 will be using a null modem cable and
COM2 will be connected to a 14.4 modem.  You would use commands similar
(the startup string would almost certainly be different) to these:

COM1 baud 57600 enable
COM2 baud 14400 answer startup AT\N0%C0B8 enable


Example2: You are going to use your machine to connect to a dial-up
Quake server with your 28.8 modem connected to COM2.  You would
use a command something like this:

COM2 baud 57600 dial startup AT\N0%C0B8 enable

Note the baud rate is not the same as the modem speed.  This allows
the modem-to-uart communications to occur at a higher rate than
the modem-to-modem communications.

Connecting to a serial Quake server
-----------------------------------

Connecting to a Quake server over a serial/modem connection is done
using the "connect" command.  A "#" is used to indicate that you
are going to connect using a modem.  For example, the command
"connect #5551212" would try to connect to a Quake server at the
phone number 555-1212.  Note: your local phone company would probably
appreciate it if you didn't try this number!

If you are using a null modem cable, you can simply type "connect".
Quake will then attempt to connect to the server.

There is no provision for a dialing directory yet.


Known problems / workarounds
============================
Packet drivers with PDIPX - there is a bug that stops a server running on
this combination from responding to the slist command.  There are
two workarounds.  One, use Novell's IPX stack.  Two, connect by
address (see IPX notes).

Win95 - For Quake to run under Win95, you must have an IPX Networking
Protocol installed.  To do this, open up "My Computer->Control
Panel->Network".  Click on "Add->Protocol -> Add->Microsoft ->
IPX/SPX-compatible Protocol -> OK". If you are not using IPX for network
client services (to a NetWare server), do not bind it to the requester.
Also, you need to pay careful attention to the setting of the "frame type"
under "advanced properties" to make sure it is correct for your network.


Bug Reporting
=============
If you encounter a network-related bug, please fill out the following
form and e-mail it to qtest1@idsoftware.com. There are several problems
that are not bugs, and shouldn't be reported, including:

* modem play does not currently work

* sluggish performance, especially on 486s, heavily loaded LANs,
and the Internet

* IPX servers running on PDIPX will not repsond to the slist command

* Improper frame type selection under Win95

Apart from these, we would very much like to hear about any network
problems you encounter.


-------------------------------cut here-------------------------------------

		       Quake Demo #1 Bug Report


E-mail to: qtest1@idsoftware.com


Date:


Name:

Company:

Street address:

City, state, ZIP:

Phone:

Fax:

E-mail:


Please provide the following information about the server and
clients; be sure to indicate which machine is the server.


Manufacturer/model of LAN adapters:



Network configuration (eg., NET.CFG file):



Drivers, protocol stacks, and versions:  (eg., lsl v2.14, exp16odi
v2.33, and ipxodi v3.01)



What operating system are you running?  (eg., DOS 6.0 or Windows
95):



If there were any error messages or fault information, report them
here:



Execute the net_stats command and give the results for each machine:



Please describe the problem you are encountering, including a
procedure for reproducing the problem:




-------------------------------cut here-------------------------------------
