q2wf-portable/eraser_readme.txt

734 lines
27 KiB
Plaintext
Raw Permalink Normal View History

================================================================
The Weapons Factory Eraser Bot v1.01 (Final)
by Acrid-
................................................................
================================================================
Title : WFEraser Bot
Author : Acrid-
Homepage : http://www.captured.com/weaponsfactory
Description : Human-like AI for Simulated Quake2
Deathmatch play and Capture the
Flag
Additional Credits to : Ryan Feltrin (aka Ridah)
http://impact.frag.com
id Software for being id Software
Josh Holdaway, creator of Quick Start,
and the Final Eraser installer
The Info-Zip team for the zip/unzip tools
(http://www.cdrom.com/pub/infozip/)
Jeremy Mappus (aka DarkTheties) for
the MapMod source
Grimlock for the colored skins
Rowan "Sumaleth" Crawford, for the consol
background art
Brett "B-MonEy" McMahon, for support
and ideas
Nigel "rkm" Bovey for the linux port
IMP for the Eraser logo
Pete Elespuru for the consol mod
The SABIN Team for some Client Emulation code
(http://www.planetquake.com/botshop/sabin)
Steve Yeager (author of the ACE bot) for tips
on creating a static library for the nav
code (stevey@jps.net)
Paul Jordan for the Camera mode
(http://www.prismnet.com/~jordan/q2cam)
NIQ changes by Mike Fox (a.k.a. Artful Dodger)
SubHuman (http://www.planetquake.com/outpost/)
for extensive testing and feedback
Fred (fred@planetquake.com) for many of the
routes
L-Fire for the built-in View Weapon tips
(LFire@yyz.com)
Anyone else who has contributed in
any way to the development of Eraser.
Build Time : many hours that should have been
spent sleeping
================================================================
DESCRIPTION
The Eraser Bot is a simulated multiplayer opponent, for
use with id Software's Quake2. It has been developed with
speed and accuracy in mind, so that you can play with more
bots, with higher intelligence.
INSTALLATION
WIN95/NT INSTALLER
Double click on the EXE file, then specify your Quake2
folder and press Unzip.
-OR-
ZIPPED VERSION (Win95/NT & Linux users)
Just unzip the files contained in the archive, to your
Quake2 folder, RESTORING PATHNAMES. This means
that if you're using Winzip, you must enable the
"Use Folder Names" option when extracting. For
pkunzip users (bless their souls), make sure
you use the -d option.
RUNNING THE GAME
To run the game, type the following from the DOS Shell
command line, whilst inside your Quake2 folder:
quake2 +set game eraser +map <mapname>
(please read below to find out which maps are supported)
The from within the game, type "bot_num X" to spawn X
number of bots.
If you do not see any bots in the game, then I
advise you to read the Frequently Asked Questions
near the end of this file.
TROUBLESHOOTING
If you've followed all the instruction to the best of you're ability
and yet fate still prevents you from getting Eraser to work, then
point your browse to http://www.telefragged.com/epidemic/guides/ebgide.html
This document contains more than could be said in an email, and is
pretty a failsafe set of instructions.
SUPPORTED MAPS
The Eraser is capable of dynamically learning maps, from
humans whilst playing the game. However, maps that aren't
supported by the release (and hence will require dynamic
learning), will suffer from less intelligent behaviour,
until the map has been played for a while (usually 10-15 mins).
It is now possible to play the Eraser bot on any map, it will learn
the map as you play, so just make sure you move around if playing
a new, or previously unplayed map. You should find the intelligence
pick up after about 5 minutes of play.
The following user-made maps are highly recommended, since they are
best suited for Deathmatch play:
<mapname> <url>
ikdm1 ftp://ftp.cdrom.com/pub/idgames2/quake2/levels/deathmatch/g-i/ikdm1.zip
severed1 http://planetquake.com/cdrom/ramshackle/SEVERED1.ZIP
mpq1 ftp://ftp.cdrom.com/pub/idgames2/quake2/levels/deathmatch/m-o/mpq1.zip
Many thanks to their respective authors.
Follow the installation instructions for each map, they can be installed
as usual, to your quake2\baseq2\maps directory, and will work fine with
the Eraser.
MAP CYCLE
When running a dedicated server, or using the TIMELIMIT or FRAGLIMIT
commands, you may want to specify your own cycle of maps. This is now
possible due to the inclusion of the MapMod code into The Eraser.
All you need to do, is edit the file called "maps.txt" in the Eraser directory,
and within that file, list the series of maps you want to run. When the end
of the list is reached, the map list will cycle back to the first map.
Thanks to Jeremy Mappus (a.k.a DarkTheties) for the MapMod code.
GAMEPLAY SETTINGS
Skill Levels
You can increase or decrease the level of the opponents, using
the "skill" setting. The default being "1", if you set this
to "2", then the general skill levels of all bots will be raised.
They will still maintain their individuality, just some will
be slightly better in areas they may not have been on skill "1".
Note that unless you disable "bot_auto_skill" (see below), Bot's
will vary their skill as they play, to make the game more even.
The skill setting will be used as the starting skill level for
bot's, when auto skill adjustment is enabled.
Values: 0 (beginner) through 3 (advanced)
Bot Names/Personalities
You can edit the names and attributes of the bots, by editing
BOTS.CFG, located in the Eraser directory.
Deathmatch Variations
Using the "dmflags" setting (accessed via the Multiplayer Menu),
you can enable a disable certain rules. Currently, all settings,
other than "Teamplay" and "Infinite Ammo" are supported.
"Weapons Stay" means that weapons will remain after being picked
up, unless they were dropped by another player. This is a
personal favourite of mine, and I think makes the game much
more exciting, if less strategic.
Please see your Quake2 manual for descriptions of the other
settings.
Values: Use the Multiplayer->Start Network Server->Deeathmatch Flags
to set the flags you want to play with
CAPTURE THE FLAG *** new to version v0.8 ***
Eraser now supports CTF! Just copy the pak0.pak file from your CTF
directory to the Eraser folder, then load up one of the CTF maps
(q2ctf1 - q2ctf6). Eraser will detect a CTF map, and will enable the
CTF code.
To summon team members to "Raid the Enemy base", just enter:
rushbase
To summon team members to "Defend our base", just enter:
defendbase
at the consol, or bind a key:
bind r "rushbase"
bind d "defendbase"
bind f "freestyle" (return to normal)
then just press it during play to send all available troops into the
enemy base.
To spawn a group of particular bots on a particular team, use:
sv bluebots <name1> <name2> ... (up to 10 bots at once)
sv redbots <name1> <name2> ... (up to 10 bots at once)
Otherwise, random bots can be spawned, by "ctf_auto_teams <n>" (see Consol Variables below).
To enable advanced use of the grapple hook (which can be quite annoying):
bot_tarzan 1
--- CTF specific commands ---
ctf_auto_teams <n>
This sets the ideal number of players on each team during
CTF play. The program will try it's best to maintain
that number of players by spawning and dropping lowest
scoring bots as players leave and enter the game. If it
cannot do this (there are no bots to drop on a team with
too many players) it will spawn additional bots to keep
the teams even.
ctf_special_teams [0..n]
When ctf_special_teams is set to 1 then each human will have 1 bot to
play against.
It is multiplier, you can increase the value to any number as long as
it does not exceed the number of maxclients. As each human departs the
corresponding lowest scoring bots get dropped.
When all human depart all bots are removed thus saving CPU cycles for
another quake server.
ctf_humanonly_teams 0/1
If this is set then only humans will allowed in a team and bots in the
other.
Once the game has started all humans joining the bot team will be forced
into the team with humans.
Any bots will then be added to the other only.
Note: ctf_special_teams must be set for this to work.
** new to v0.99 **
It is now possible to turn normal maps into CTF maps. To do this, you must drop the flags
using "redflag" and "blueflag" when standing in the desired position of the relative flags.
They won't appear straight away, but will be saved in with the route data. To play that map
in CTF mode, simply type "ctf 1" in the consol, and then restart the map.
NOTE: If you drop a CTF flag in the wrong place or by accident, use "clearflags" to remove them.
NOTE: You can use "toggle_flagpaths" to enable/disable the showing of the direct links between
flagpaths (not the actual routes, since showing all routes will break the network code).
You can also place any other item, using the "ctf_item <classname>" command. These items
will only be spawned in CTF mode. Just move to the desired position, and type the
preceeding command, specifying tha actual classname for the item you want.
For example, "ctf_item weapon_chaingun" will place a chaingun at your current position,
whenever you load the current map with "CTF 1" set.
This is handy for evening out bases, in non-CTF maps (although it will work for normal CTF
maps also).
NOTE: You can clear all ctf_item entries by typing "clear_items" at the consol.
Capture the Flag can be found at..
ftp://ftp.idsoftware.com/idstuff/quake2/ctf/q2ctf102.exe
-----------------------DO NOT USE THESE BELOW-------------------------------
TEAMPLAY
Getting Started
The Eraser bot now fully supports teamplay, with up to 64 pre-defined teams
(configurable via BOTS.CFG). To create a team with you and some bots, type:
"cmd join <teamname>". Currently, you can only join teams that have been defined
in BOTS.CFG (to get a list of available teams in the game, type "cmd teams").
When joining a team that isn't currently in the game, a group of bots will
automatically spawn and join your team. The number of bots that join you,
is dependant on the current value of PLAYERS_PER_TEAM (see CONSOL VARIABLES
section), and the number of bots specified for that team in BOTS.CFG.
To add a team of bots to play against, type "addteam <teamname>". If you
are running a dedicated server you MUST do this in order for teamplay to
function, since in dedicated mode, clients cannot create teams using
"cmd join <teamname>". They can only join teams that are already in the game.
NOTE: if you want to play as a certain member of a team, that has a bot
defined for that team in BOTS.CFG (eg. when I play for IMPACT), you must
set your name to the bot's name + [abbrev], so for example, I play as
"Ridah[IDT]". This way the program knows not to spawn another Ridah bot.
Rules
Currently, the rules of Teamplay are very simple. Your team gets a frag
for every frag you score. It also loses a frag, everytime you suicide,
fall in lava, or kill a teammate. This will be expanded in future releases
to support a wide range of Teamplay rules, similar to that of DMFLAGS.
Scoreboard
The Teamplay scoreboard is somewhat different to that normal deathmatch.
When you join a team, you will start seeing the special Teamplay scoreboard.
This sorts the teams in order, with each team having their sorted players
to the right. Your team is indicated with the Q2 tag behind the Teamname
and score.
Teamplay Commands
players_per_team <n>
This secifies the maximum number of player that are allowed to join
each team.
eg. players_per_team 8
join <teamname> OR <abbrev>
Places you on the specified team. If the Team does not yet exist in
the game, it will be created (ie. bot teammates will be spawned).
eg. "cmd join impact", OR "cmd join idt"
addteam <teamname> OR <abbrev>
Adds the given team to the game. This team must be defined in
BOTS.CFG, or it will not be created.
eg. "addteam impact", OR "addteam idt"
---------------------------------------END----------------------------------
group (key "G" by default)
This tells your fellow teammates that you are starting a new
squadron. Eventually, most teammeats will get to you, but they'll
try and pick up useful items along the way, so they may take
some time if far away. Once they've reached you, they'll follow you
around, attacking enemies and picking up items along the way.
disperse
Tells all squadron units under your control, to immediately disperse.
Advanced Teamplay Tactics (Squadron Intelligence)
As in the "cmd group" described above, you (and the computer) can
form Squadrons, to increase team performance. You can use this
feature to guard a highly valuable area of the map, or simply to
form a posse of destruction. The Eraser is capable of starting it's
own group, and knows how to lead a pack, so expect to encounter
entire bot teams roaming (and guarding) in packs. You'll also
hear your bot teammates start a squadron from time to time, it would
be wise to follow a bot every now and then, it's possible he knows
something that you don't.
VIEWABLE WEAPONS *** new to version v0.8 ***
Eraser also supports the viewable weapons patch! Just copy the pak2.pak
file from your Viewable Weapons directory, to the Eraser directory,
then set "view_weapons 1" in the consol while playing Eraser, and restart
the map.
** NOTE: Viewable Weapons are only supported by the MALE, FEMALE and CYBORG
models. To add support for other models, you will need to edit the
[view weapons] section of bots.cfg.
The Viewable Weapons patch can be found at..
ftp://ftp.telefragged.com/pub/tsunami/vwep_pak.zip
CAMERA MODE *** new to version 0.96 ***
Thanks to Paul Jordan, Eraser now contains a snazzy camera mode, which
lets you watch the action from a TV-like perspective. To enable
the camera, type "cam on" in the consol.
There are two modes to the camera:
NORMAL: automatically moves around the level to where the action is,
good for a demo mode.
FOLLOW: gives you control over who the camera focuses on. Use the ATTACK
button to cycle through players.
To change the current mode, type "cam <mode>" in the consol, so for FOLLOW
mode, just type "cam follow" (must use lowercase).
** NOTE **
Unfortunately, at this stage it is not possible to de-activate the camera,
hopefully this will be rectified in a future version.
CONSOL VARIABLES
The Eraser provides a range of customization commands and settings,
which enable you to populate your server with Bots, when not
many humans are playing. This means people are more likely
to come to your server, since there is more chance of finding
opponents (human or not).
The following commands are available:
bot_num <n>
defines the maximum number of bots
bot_name <name>
spawns a specific bot
bot_auto_skill 0/1 (default = 0)
disable/enable automatic skill adjustment. When enabled, bot's skill
levels will be increased when they are killed (by a human player),
and decreased when they kill another human player.
bot_chat 0/1
disable/enable bot chatting.
lag <n> (CLIENT ONLY)
adds some latency to your controls. <n> should be a number between
0 and 1000. This in effect, adds to your ping time.
eg. "cmd lag 500" gives 500ms latency
view_weapons 0/1 *** new to v0.8 ***
disable/enable view weapons patch. Just copy the pak2.pak from
your view weapons patch directory, to the Eraser directory, then
enable view_weapons. This enables you to see which weapons the
other bots/players are using.
bot_drop <name>
disconnects a the given bot from the game. If you have set bot_num,
then you can expect the program to automatically add a new bot in the
game. So make sure you set "bot_num 0" before using this command, if
you don't want another random bot to join the game.
teamplay 0/1
disables/enables teamplay (see TEAMPLAY section above)
sv teams <team1> <team2> ...
spawns one or more teams at once, by name.
sv bots <bot1> <bot2> ...
spawns one or more bots at once, by name.
bot_tarzan 0/1 (default = 0)
disable/enable so called "advanced" use of the grapple hook.
mapmod_random 0/1 (default = 0)
disable/enable random map progression when using maps.txt. When
enabled, instead of sequentially traversing the maps, a random
map will be selected from the list on each level change.
botpause
pauses the game. this is included, since the normal pause button
doesn't work during deathmatch play.
bot_allow_client_commands 0/1 (default = 0)
disable/enable client-side bot spawning via "cmd bots <n>"
bot_free_clients <n> (default = 0)
specifies the number of client positions to keep vacant
at all times, whilst there are bots playing. So if
you have set "maxclients 32", and there are 20 bots
playing, set this value to 3, so that if the total
number of clients (players + bots) exceeds 29, a bot will
be kicked from the game.
The lowest scoring bot is kicked first, in this circumstance.
As soon as more than 3 slots become vacant, a new bot will
be automatically brought into the game, assuming the current
number of bots is less than the current value of bot_num.
bot_show_connect_info 0/1
Disables/Enables the banner that's shown to clients upon
connecting, indicating that the server is running the
Eraser bot patch.
bot_calc_nodes 0/1
Disables/Enables dynamic node calculation. If you are
sure that this map has been played enough times, that
it is unnecessary for the bot to continue learning the
environment from the humans, just set this to 0. This
frees up some CPU time, which should make things run
a bit smoother if lots of humans are playing.
AUTOMATIC SETTINGS
It is now possible to save your favourite bot commands/setting in
DEFAULTS.CFG, so each time you start the Eraser, these settings
are loaded in.
Be careful when editing this file, if you stuff it up, Eraser will not
perform correctly. So make sure you study the above section carefully
before messing with it.
NEW TO THIS VERSION!
Check out http://impact.frag.com for the latest list of bug fixes,
and features added.
FREQUENTLY ASKED QUESTIONS
Q: When I start up the map "city3" with view_weapons enabled, the game crashes with
"ERROR: *Index overflow". What's going on?
This is caused by the game trying to load too many models at once. The only
way to solve this problem, is to disable view_weapons, or avoid any levels
that show this error.
Q: I start the game, but when I type "bot_num X" it just repeats the command,
like I had said it instead, what's up?
Check your Quake2 directory. If there is a gamex86.dll file in there,
delete it. This solves 99% of such problems. If this is not case for
you, then you have got the command line, or installation wrong.
Q: What sort of actions do I need to teach them most efectively ?
Just make sure you run around, and collect things. If you
camp the whole game, they won't learn much at all. You only
have to do this once, then the data is saved, so the next
time you play the map, you won't have to worry about the learning
at all, since it will be switched off.
Q: Will the learning be establised from both human players or just
the serverside player ?
All human players in the game create node data, when dynamic table
generation is enabled.
Q: When the game starts, it says "ERROR: Game is version X, not Y"?
Eraser is only compatible with Quake2 v3.12 - v3.14, other
versions of Quake2 may not work. To get the latest version of
Quake2, go to "http://redwood.stomped.com/".
Q: The game starts, but I don't see any bots?
To spawn some bots, type "bot_num <n>", where <n> is
a number from 1 to 24. They will then enter game at 1 second
intervals (to try and reduce telefrags).
eg. bot_num 4
You can also spawn a specific bot using "bot_name <name>",
where <name> is the bot's name. You can get the list of bots
from bots.cfg, which you'll find in your Eraser directory.
eg. bot_name cipher
Q: I'm trying to setup an Eraser CTF server, but everytime a client connects
they can't join the game?
That's because the client doesn't have the CTF files installed in
Quake2\Eraser, since that's the directory the server is running. So
you need to do ONE of the following:
1) rename your CTF dir to CTF_back, then rename the Eraser dir to
CTF. Then start the game with quake2 +set game ctf ...
*** OR ***
2) Tell the clients to make an Eraser dir under Quake2, and copy
the pak0.pak file from their CTF dir to the Eraser dir.
Q: The bots sometimes stand around looking bored?
There are still some glitches in the bot decision-making that can result
in bots getting stuck. Usually a rocket up their ass helps get them down :)
MAKING CLEAN ROUTES
Here are a few tips to keep in mind when creating routes for new maps:
Walk up stairs first, where possible. Otherwise a series of jump/landing
nodes will be dropped as you go down, which uses up excess nodes, and
is less accurate than walking nodes.
If you jump off a ledge, try and make a path back to the jumping position
as soon as possible. This will prevent all other nodes from having to
recalculate best routes later on, after the return path is made.
The same applies for teleporters and platforms, try and get back to
the starting position ASAP.
Turn on bot_debug_nodes, then enable the scoreboard. If you see "optimizing
route xxx -> yyy" showing a whole range of numbers, then it's best to stop
here for a bit to let it catch up. You will see this come up fairly often
while building a new map, so not to say you should always stop when it's
optimizing, just that if you complete a link back to a jumping locaiton
(for example) it will need to recalculate a whole bunch of new routes.
Stopping after the link is made for a minute or so, will prevent new routes
from having to be calculated over and over, as surrounding nodes find better
routes.
Also, try to walk a nice line, rather than dodging around picking up items
all over the place. The straighter the line you walk, the more realistic the
bot's will move. Keep in mind that the bots will automatically pick up items
along the way, if they are available, so you don't have to leave a trail that
picks up items, just make sure you walk within the vacinity of all items.
When loading a map, dynamic node placement will be disabled, IF AND ONLY IF,
all items in the level have a node nearby, OR the total number of nodes
exceeds 512 (the absolute limit is 750 I believe).
Only jump when necessary.
Type "cmd showpath" to enable the green line debugger. Just hit fire to
set it's position to where you're standing, then move around and watch
the path change. If it disapear's, i means the path is severed, and needs
to be traversed to fix it up.
If you turn on bot_debug_nodes, then restart the level, you will notice
a list of items listed upon loading the map, unless the map is fully
pathed. Those items listed are not currently reachable by a bot, and they
will glow RED in the game. It would be wise to make sure bot_calc_nodes is
ENABLED and then go around collecting all glowing items.
Use the "bot_optimize" command to speed up the optimization process. This
will slow down the frame rate depending on how large you set this to, but
will often speed up the process by 10x or more.
Try not to die.
Alternate Paths in CTF
It is possible to create alternate paths for bots, when returning the flag
in CTF mode. NOTE: this only work in CTF, and is only used when a bot has the
flag.
To do this:
1. bind a key to "flagpath", eg, 'bind q "flagpath"'.
2. go to the enemy base, and capture the flag.
3. press the flagpath key on the way back to base to drop a SOURCE flagpath. This
should be dropped in a position that will always be touched by a bot on it's way back
to base. So either use a position really close the flag (but not touching) or
in a doorway that is close to the flag, that is the only way out of the base.
4. determine 2 paths that can be taken from this position, dropping a destination
node along each of these 2 routes, far enough away from the SOURCE node, to force
the bot to take an alternate route to the shortest path.
5. repeat steps 3 and 4 to create more "branching" flagpaths as required.
For example, at the end of one of the paths, there may be another choice between 2 paths.
You could create another flagpath branch, by dropping a SOURCE node near the end of the flagpath
you just dropped, and then dropping the 2 destination nodes in positions that would
force the bot to take alternate routes.
6. change to the other team (if you were on the red team, type "team blue").
7. repeat steps 3-5 as required.
Upon touching a SOURCE node while carrying the flag, a bot will then choose a random destination
flagpath that belongs to this SOURCE flagpath. It will then proceed to that position until
it touches the marker. Once it has done that, it will resume heading back to base. So if you
place the destinations too close together, it might take the same route after touching either
destination. It's best to place the destinations as far away from the SOURCE flagpath as possible.
For a running demo of flagpaths being constructed, download the following file, and place it into the
quake2\eraser\demos directory. Then while running the Eraser mod, type: "demomap flagpath.dm2".
Get the demo at: http://impact.frag.com/files/flagpath_demo.zip
DISCLAIMER
This is a BETA release, I therefore will not take responsibility
for your system barfing after playing the game. I can however
guarantee that I have not purposely added any malicious content
to this application. If you believe this to be incorrect, then
I'd be happy to discuss the matter with you.
You may freely distribute this archive, as long as it remains
PERFECTLY intact, as distributed on our home page:
"http://impact.frag.com/". Thanks.
enjoy,
Ryan Feltrin