Welcome to the Quake Technical Information file!

==========================================
==     Introduction to the Console      ==
==========================================

Throughout this document, examples of commands are given, all of which
are typed in at the console. To bring up the console, press the tilde ('~')
key or press ESC to bring up the menu, select Options, and select Console...
from the options menu. To exit the console, press ESC.

The console provides a way to change console variables and also accepts
commands that change game settings such as movement keys, video mode, as
well as providing an interface for key binding and command aliasing (more
on that later).

The console also has a command history with which you can browse through
previous commands. Use the up and down arrows to navigate through the
command history and press <enter> to re-issue a command.

Partially typing a command and then pressing the TAB key will complete the
currently typed text with the first matching console variable or command.
(Yes, this is a good way to look for console commands.)

To review previous actions by page, use the PGUP and PGDN keys.

Performance
-----------

Quake's graphics should be adequately fast in mode 0 (320x200) on all
Pentium-class machines. If you feel Quake is running slowly, set the
showturtle console variable to 1; you will then see a turtle icon
appear in the upper left corner of the screen if the frame rate drops
below 10 frame/second.  If you are getting the turtle, you are probably
not getting great gameplay.  Performance can be improved in several ways:

* size down the screen with the minus key

* select a lower-resolution mode, if possible

* use a VESA mode

* if you're using a VESA mode and vid_wait is set to 1 (wait for
vertical sync) by default (you can check by typing vid_wait<enter>
in the console), you can try setting vid_wait to 0 or 2, as detailed
in the discussion of the vid_wait command above.  Be aware that
risks of screen glitching or hung machines are associated with
overriding a default vid_wait 1 setting in VESA modes.

To see how exactly fast Quake is running, bring up the console and type

host_speeds 1<enter>

You will see a display at the top indicating total frame time in
milliseconds, and also server, graphics, and sound frame time in
milliseconds.  (Note, though, that unless you also do

snd_noextraupdate 1<enter>

sound time will actually show up as graphics time.  However,
snd_noextraupdate 1 can cause sound to get choppy, so it's not
generally recommended.)

Lower numbers are better.

Type

host_speeds 0<enter>

to turn off the frame time display.

==========================================
==   CD Audio Subsystem Documentation   ==
==========================================

Overview
========
Quake is designed to play background music off of a CD-ROM.  The Quake CD has
music tracks on it and each level has been assigned a track that will be
played.

Command Line Parameters
=======================
-nocdaudio
   This will prevent the CD audio system from even attempting to initialize.
   No CD commands or functions will be available.  The game will just run
   with no music.

Commands
========
There is normally no reason you would need to use any of these commands.  If
you are playing Quake with the Quake CD in your CD-ROM drive, the appropriate
music track will be played automatically.

cd on
   Re-enables the CD audio system after a "cd off" command.

cd off
   Shuts down the CD audio system.  No more music will be played unless it
   is re-enabled.

cd reset
   Causes the CD audio to re-initialize.  This is useful if you change
   CDs or insert the CD after you've already run Quake.

cd play <track number>
   Plays the specified track one time.

cd loop <track number>
   Plays the specified track.  It will be repeated until either it is
   manually stopped or another track is started.

cd stop
   Stops the currently playing track.

cd resume
   Will resume playback of a stopped track.

cd eject
   This is for CD players that do not have a manual eject button.

cd remap <track1> <track2> <track3> ...
   Allows you to switch what tracks are played.  This is especially useful
   if you want to play music other than that on the Quake CD.  If the CD
   audio system is told to play track 1, it will instead play the 1st
   track you specified.  For example: assuming a CD with 1 data track and
   8 music tracks, the command "cd remap 1 9 8 7 6 5 4 3 2" would leave
   the data alone and play the audio tracks as if they had been placed on
   the CD in the opposite order.

cd info
   Reports information such as the number and types of tracks on the current
   CD, what track (if any) is currently playing, and the playback volume.


Variables
=========
bgmvolume
   The background music volume.  Valid values are 0.0 though 1.0.  Changes
   will normally be made using the options menu.

   Not all CD-ROM players support variable volume.  The 0.0 to 1.0 value
   translated to a value from 0 to 255 before it is passed to MSCDEX.  How
   this value is interpreted varies from drive to drive.  The only thing
   required by the MSCDEX specification is that 0 is off and anything else
   is on.  Some CD-ROM drives only have on and off so change to bgmvolume
   will have have no effect on volume once it is on.


Messages
========
CD Audio Initialized
   Indicates that the CD audio system has successfully initialized.

CDAudio_Play: Bad track number N.
   We attempted to play a track number that that is outside the range of
   tracks recorded on the CD currently in the CD-ROM drive.  Probable causes
   are that a CD other than Quake is in the player, or a custom level has
   specified an invalid track number.

CDAudio_Play: Can not play data.
   A valid track was requested to be played, but it was a not an audio track.
   The probable causes are the same as for a bad track number.

CDAudio_Play: track N failed
   A valid audio track was going to be played, but the play command to MSCDEX
   returned an error.

CDAudio: media changed
   This is simply a notification.  It can only occur if the "-cdmediacheck"
   option was specified on the command line.

CDAudio: Error - playback stopped N
   An error occurred while the CD was playing audio.  Playback has been
   stopped and no further automatic play will be attempted; the game will
   proceed without music.

==========================================
==    Network Subsystem Documentation   ==
==========================================

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.

Most normal configuration can be done via the game menus.

There are two types of Quake servers: dedicated and listen.  A listen server
is a machine that is used to play the game and also hosts the game for other
players.  A dedicated server only hosts the game; it runs in text mode and
does not let anyone play on that machine.  A single player game is really 
just a 1 player listen server that doesn't listen for network connections.

Dedicated vs Listen.  I'll try to make this simple: it is always better to
use a dedicated server.  Why? Fairness and playability.  With a listen
server, the person on the server always has advantages.  They will always be
the first person into a level, they will always have zero latency, and they
will get a server update on each and every frame.  On a dedicated server
everyone gets equal treatment.  Getting into the server is a first come,
first served proposition; latency is determined by each player's connection;
and everyone is sent the same number of updates.  It's about as fair as life
gets.  By the way, a good 486 machine works nicely as dedicated server.

Another suggestion.  Until there is a native Win95 version of Quake, IPX will
usually provide better gameplay on a local area network.  This is due to the
delicate balancing act that is required to let a DOS program use the Win95
TCP/IP stack.

To start a Dedicated Server, you invoke Quake with the "-dedicated"
command-line parameter.  When the server starts, you can type any command
that you would normally type in the Quake Console, such as "map e1m1" to
start the server on a specific map.  This can be done from the command-
line as well by typing "quake -dedicated +map e1m1".  If a value is entered
after "-dedicated", that is the amount of players allowed to connect, up
to a maximum of 16 players. A dedicated server will quit to the OS whenever
a fraglimit or timelimit is reached.  Example: "quake -dedicated 16" will
start a 16-player dedicated server.

To start a Listen Server, you invoke Quake with the "-listen" command-
line parameter, or use the Multiplayer menu in the game.  Starting a listen
server from the command-line will allow you to handle more than 4 players,
as 4 is the limit when starting a game from the Multiplayer menu.  If a
value is used after the "-listen", that is the maximum amount of players
allowed, up to 16 players.

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

Command line parameters
-----------------------
-nolan
   Disables IPX, TCP/IP, and serial support.

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

-mpath
   Enables support for code to use Win95's TCP/IP stack.  Do NOT use this
   under DOS!

-listen [n]
	Starts Quake ready to be a non-dedicated server for up to <n>
	players.  If you do not specify a number <n> after -listen it will
	default to 8.  The maximum allowed value is 16.

-dedicated [n]
	Starts Quake ready to be a dedicated server for up to <n> players.
	If you do not specify a number <n> after -listen it will default to 8.
	The maximum allowed value is 16.  A dedicated Quake server stays in
	text mode.  This is the Quake console with most commands still
	available; those that make no sense (like vid_mode) are ommitted.

Console 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".

sys_ticrate
   Only used by dedicated servers.  This determines the rate at which the
   server will send out updates to the clients.  The default value is 0.05
   (20 updatesper second).  For servers where bandwidth is limited, using
   modems or the internet for example, it is advisable to lower this value
   to 0.1 (10 updates per second).  This will have a very minor effect on
   responsiveness, but will half to outbound bandwitdh required making the
   modem players a lot happier.


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

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

slist
   Looks for Quake servers 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.

IPX
---

Quake for Linux has no IPX support.

==========================================
==        Key Binding and Aliases       ==
==========================================

Pressing the tilde key ("~") will bring down the console (pressing the
tilde key or ESC while in the console will close the console). From the
console you can adjust your player controls, this is done by "binding"
keys to commands.  The format for binding keys is as follows:

bind <key> <command>

Where <key> is a valid key control and <command> is a valid quake command.

Example:
To bind the j key to the 'jump' command, you would type:
bind j +jump			
and press enter.

Non-printable keys such as 'page up' and buttons from the mouse/joystick are
bound in the same manner as printable characters. A list of bindable keys can
be found at the end of this file.

Example:
To bind the page up key to the 'jump' command, you would type:
bind pageup +jump
and press enter.

To bind the right mouse button to the attack command, you would type:
bind mouse2 +attack
and press enter.

The alias command is used to create a reference to a command or list of
commands.  When aliasing multiple commands, or commands that contain
multiple words (such as "fraglimit 50"), you must enclose all the commands
in quotation marks and separate each command with a semi-colon.

Example of an alias that changes some Deathmatch server parameters:

alias net_game "hostname my_server ; fraglimit 15 ; timelimit 15"
bind INS net_game

Once the server is spawned (you must be the one running the -listen server),
you just push the Insert key to set the hostname, frag limit and time limit
of the server. So now the first person to 15 frags, or with the one with the
most frags in 15 minutes, wins.

Another example would be to change to the Rocket Launcher, fire one rocket,
and change back to the Double Barrel Shotgun, when you press the "," key:

alias rl_dbsg "impulse 7 ; +attack ; wait ; -attack ; impulse 3"
bind , rl_dbsg

Aliasing is very powerful, allowing you great flexibility, so you should
experiment by aliasing different commands in various ways.

A list of common commands can be found in the next section.


==========================================
==    Quake Keys and Common Commands    ==
==========================================

The following keys can be bound:

A-Z                     0-9
*F1-F12                 *TAB
ENTER                   SPACE
BACKSPACE               UPARROW
DOWNARROW               LEFTARROW
RIGHTARROW              ALT
CTRL                    SHIFT
INS                     DEL
PGDN                    PGUP
HOME                    END
PAUSE                   SEMICOLON

MOUSE1 (mouse button 1)
MOUSE2 (mouse button 2)
MOUSE3 (mouse button 3)

*~ (tilde)

* Can only be bound on the command line or in a .cfg file.

The ESC key cannot be bound. 


==========================================
==         Making a Config File         ==
==========================================

The commands (bindings and aliases) discussed above can be included into a
file containing all of your personal configurations, known as a "config"
file.  This file can then be loaded during game play to enable all your
personal bindings and settings.

To do this, use your favorite editor to create a new file, such as
"fragmstr.cfg".  Your .cfg file MUST be located in the quake\id1 directory
or quake won't find it.  Then after launching Quake, you would type "exec
fragmstr.cfg" and press enter, from the console.  You can also exec you .cfg
file from the DOS command prompt by typing "quake +exec fragmstr.cfg".
When you exec a config file, it is the same as typing all the lines in your
config file into the console, only Quake does it for you.  Here is an
example config file (c:\quake\id1\bear.cfg) and the meaning of all the
bindings, aliases and settings:

-------------------------------cut here-------------------------------------
name player1            // Sets player name to player1 (lets your opponent
                        // know who fragged them)

sensitivity 4           // Sets the mouse sensitivity to 4

scr_conspeed 5000       // Sets the console raise/lower speed

lookspring 0            // Sets Mouse Look Spring to 0 (0=keep looking,
                        // 1=spring back, when mouse button is released)

vid_mode 10             // Sets Video Mode to mode 10 (360X480 resolution)

gamma .8                // Sets Gamma Correction to .8 (<1=Lighter, 1=normal
                        // and >1=darker)

viewsize 70             // Sets the Screen View size to 70 degrees

bind mouse1 +forward    // Binds the left mouse button to Move Forward

bind mouse3 +attack     // Binds the middle mouse button to Fire

bind mouse2 +mlook      // Binds the right mouse button to Mouse Look

bind HOME "save bear1"  // Binds the Home Key to quick save, saves to
                        // bear1.sav

bind ENTER +showscores  // Binds the Enter key to show Deathmatch Scores

bind SHIFT +speed       // Binds the Shift key to Run

bind CTRL +jump         // Binds the Control key to Jump

bind ; +mlook           // Binds the ; key to Mouse Look also

bind . +moveleft        // Binds the . key to Strafe Left

bind / +moveright       // Binds the / key to Strafe Right

color 3 4               // Makes Uniform Top green and Pants Red for Net play

alias rl_dbsg "impulse 7 ; +attack ; wait ; -attack ; impulse 3"

bind , rl_dbsg          // Aliases single rocket attack command and binds
                        // it to the ',' key.
-------------------------------cut here-------------------------------------


==========================================
==                Demos                 ==
==========================================

The standard Demos
------------------

Quake has 3 standard demos that start playing when you first run the game.
It will cycle through these demos until you start or join a game.

Recording a Demo
----------------
"record <demoname> <map> [track]"  This starts up level <map> and begins
recording a demo into a file name <demoname>.dem.  You can specify the
optional <track> to choose a background music from the CD, otherwise the
default selection for that map will be played.

Playing a Demo
--------------
"playdemo <demoname>"  This command will open the file <demoname>.dem and
play the demo.

How to not play the standard demos at startup
---------------------------------------------

So you've seen the Necropolis demo 10 billion times now and really don't
ever want to see it again?  Here's how.

The easy way is to start Quake with a "+map" command.  You could do
"quake +map start" and you'll start on the single player start level.
Or you could do "quake +map nonsense" and you'll wind up at the Quake
console since there is no map named nonsense.  You can accomplish the
same thing with a "+connect" too.   "+connect" by itself will look for
Quake servers on the local network, "+connect 192.12.34.56" or
"+connect host.timbuktu.edu" will try to connect the the specified
Quake server.

There is another way to not show the demos; one that also keeps your
customizations in a seperate directory from the data files in the
Quake distribution.

Do this in the quake directory (the directory where you installed Quake;
where you find "quake.exe" and "the id1" directory).  Create a file named
"quake.rc".  Its contents should be:

exec default.cfg
exec config.cfg
exec autoexec.cfg
stuffcmds
menu_main

Create a batch file to run Quake in the quake directory.  "Q.BAT" is a good
name. It's contents should be:

quake -game . %1 %2 %3 %4 %5 %6 %7 %8 %9

If you normally use the Q95 batch file, just add the "-game ." part to
that file.

Now you can run "q" and quake will start off with the main menu displayed
instead of running the demos.

You can also make a seperate subdirectory for this if you'd like.  For
example, make a directory named "mine" in the quake directory.  Create
the "quake.rc" file as specified above in this directory.  Use
"-game mine" instead of "-game ." in your batch file.

Important note:  The directory specified by "-game" is where Quake will
look for config.cfg, load and save games, and record and play
demos.


==========================================
==         Reporting Quake Bugs         ==
==========================================

See the file SUPPORT included with this package for bug reporting and
support options.

                                                                          
