Mystery Bot Instructions
========================

Firstly, this is a preliminary public release. Use it at your own risk. If
it crashes your machine or does anything weird, don't blame me. (It shouldn't
though. Its very stable now.) This readme file is still fairly limited. If
you think you could help with the write up, please email me.

Please do *NOT* put a local copy of this bot on your homepage. If you want a
link to it, please use the file from an official webpage:

http://www2.telefragged.com/mystery/mystery.zip

or if you are in Australia:

http://www.wollongong.starway.net.au/~ripper/mystery.zip

Features
========
        - ClientSide Architecture
        - Swims in water (limited)
        - Gets out of lava (still doesn't avoid it)
        - Can see walls (unlike most other client bots)
        - Knows all items except (buttons and teleports) and how to use them.
        - Intelligently chooses items to go for depending on health, etc.
        - Dodges incoming missiles and players (rockets, grenades, nails..)
        - Picks its target based on rank and powerup's and sticks with them
          until dead or out of view
        - Attacks quad-bearers first to eliminate most danger.
        - Knows rules for straight DM, (teamplay 0) Teamplay (teamplay 1),
          and CTF (teamplay > 5)
        - Uses Grapple Hook in CTF.
        - Can continue attacking whilst strafting to desired objects.
        - Uses 3 different attack methods (charge, strafe, and circle)
        - Doesn't require the computer to be on a network like other client
          bots (see below for more details)


Installing
==========

To install the bot:
        Make a directory called mystery in your c:\quake\ directory.
        Unzip the file MYSTERY.ZIP into this directory.
        Move the file mystery.bat to c:\quake\

Thats it!


Running The bot
===============

To run the bot you now simply run mystery.bat from the quake directory

There are no options you will have to type. This is all taken care of.
The game defaults to CTF. If you want to play a DM teamplay game, fisrtly
load the bot by running mystery.bat and then type the following at the
console *BEFORE* the bot enters. (If you type this after the bot has entered
and already received the rules from the server, it will not have any
noticable effect on its behaviour):
        teamplay 1
        changelevel mystmap2

straight DM is:
        teamplay 0
        changelevel mystmap2

NOTE: There is only one time during the game when MysteryBot can read the
teamplay, gravity and other rules from the server. This is at the very
first part of connecting to the server. For this reason, if you change these
values whilst the bots in the game, it wont know about them. MysteryBot has a
20 second delay before it enters a level. If you want to change teamplay mode
you HAVE to do it before these 20 seconds are up. Alternatively, you can edit
the autoexec.cfg file in the mystery directory and change the teamplay
setting in there. You can also increase the 20 seconds delay be editing the
mystery.bat file.

Whats this about the bot only working if I'm connected to the net?
==================================================================

On versions prior to v0.67 you had to have your own IP address for the bot
to function properly. For many people, this meant connecting to the internet
which can be costly. This version can function without your computer having
to have one of these unique addresses. You may however have to have TCP-IP
networking installed on your computer. A simple test here is if you can use
internet, then you should be able to use the bot but remember...

        YOU NO LONGER HAVE TO BE CONNECTED TO THE NET WHEN PLAYING IT!

I hope this will allow more people to use the bot and have less troubles
since most of the problems were related to this in some way..

I'm sick of this map!
=====================
To play another level just use the command changelevel at anytime during the
game.
eg.     changelevel <mapname>

You can also use the bot with other quake patches. (Using the bot with
weapons patches can cause it to act unpredicatabily)

MysteryBot and other quake patches
==================================
Since mysterybot is not an actual quake patch but a program, its possible
to mix mysterybot and quake-c patches such as reaper bots for a bot vs bot
type game where you can join either team.

Patches that are known to work are any of the bots, CTF, and hypnotic patches.
Patches that dont work are patches like powerball, teamfortress and fvf.
to load the bot with a patch type:
        mystery -game xxxxxx
where xxxxxx is the subdirectory where the game patch is. (the same way you
load it in normal quake)


What maps should I use?
=======================
The map defaults to the mystmap1. This is the test map I have been using to
create and debug the bot. This map is good for the bot because at least half
of the level is visible at any one time. Since the bot can't remember
objects or how to get around corners, this map has less chance of it getting
lost. There is now also a variation of this level called mystmap2. This level
is not quite so open and easy to get around in although it is still the same
size. Other almost as good levels are quakes DM set, DM1 probabily being the
next best. To run the bot using one of these maps instead of the default,
type:
        mystery +map mystmap2


Can other Bots or Players join the game?
========================================
Other players can connect to the computer running the bot just like any other
server. In the same way, other copys of the bot can connect to this server.
You can also run mystery against reaper bots. (But this requires you to load
the bot manually.) The bot can be specifically told to join a particular
server at the command line by loading it like this:
        qb <address> <port>
For local games where you dont plan on running an open server or are unaware
of your computers IP address, you should launch the bot by typing:
        qb local 26000
In the same way, other players can join a game that a bot is in. 

Demos
=====
The bot records demo's of all of the levels it plays, these demo files will
be called demo00, demo01, demo02, etc.. and are in the mystery directory.
There is no way of turning off demo recording but each time you restart the
bot the old set of demo's are recorded over.  These demo's can be used to
view the game from the bot's point of view. The demos are copyed over each
time you restart the bot so if you find a demo that you like, be sure to
rename it. To view a demo, type "playdemo demo00" at the console.


If its a clientbot, whats with the progs.dat?
=============================================
Ok... The CTF the quake server in previous versions was running CTFBot 1.1.
This was causing a little confusion between which bots were mine and which
were CTF bots. So I have taken this patch out. If you still want to play
my bot vs CTFBots, download and install the CTFBot patch from ftp.cdrom.com
and load the bot as specified above. (ie. mystery -game ctfbot) The server
patch now included is the standard threewave CTF 3.5.

Help! I'm getting slaughtered...
================================
There are several things you can do. You can run quake with another bot
in it that you can team up with, (reaper bots are a good one) you can also
get friends to join in your game over a network the same way you connect to
any other server on the network. (by going to multiplayer/tcpip/type address,
etc..) If that still doesn't work.. Well... Your outta luck. keep practicing!
:)

(Also see section "Can other bots or players join the game?")

Thats the basics of running the bot..

HELP ME! The bot joins the game and then quits straight away or acts really
weird. What do i do?!
===========================================================================

This is a bug in the code that I am having trouble finding (one of two). It
has to do with quake v1.07 and up. If you are running one of these versions
I recommend running the bot with an older version to get around the problem.
v1.06 seems to run fine.

Credits
=======

Server/Client Codebase - James F. Rorrie
AI Code - Aaron Drew
Navigation Code - Aaron Drew
Bsp code - Aaron Drew
Attack Code - Aaron Drew
Evasive Code - Aaron Drew
CTF Code - Aaron Drew
Teamplay code - Aaron Drew
etc...

Thanks James for making your QuakeBot C/S source code publically available
and also Oliver Montuany who released the source code to his Terminator Bot.
These two peices of material have proved a great help in overcoming some of
the problems I faced when writing this bot. Also thanks to the authors of
the reaper and CTF Bots for their voluntary efforts that have given quake
players competition where ever they are. I hope this bot can do the same.

Thanks go out to:

* The QuakeZone people at Wollongong Spidrweb cafe for providing help and
  encouragement.
* Daniel Burke for the help with the IP address problem.
* Jim Rorie for his excellent QuakeBot C/S source code.
* Oliver Montuany for releasing his Terminator Bot's source.


Also, Thanks go to the following quake people: MadMax, Shadow/Slider, Spidr,
Paradox, Black Vicar, Bone Crusher, Pru Crusher, Satan, and anyone else I
may have forgotten that helped out with some aspect of the bot.

Have Fun!
=========

Enjoy,
Aaron Drew (ripper)
ripper@wollongong.starway.net.au
