|
C R E D I T S |
This bot is based upon the Ping Of Death Bot v2.6 Source code, which was
originally developed by Markus Klinge.
Bot Programming
and Documentation: Wei Mingzhi
and Dmitry Zhukov.
Waypointers / Testers: Bots-United Members,
CoCoNUT, headshot26, Ek, MarD, ZmifF, RR99i,
FFreJuSE, TeMP,
SaTaN, SpArK...
Special Thanks: Ancient (CFE-Games
Admin), KWo (POD-Bot MM Developer),
THE_STORM (e[POD]Bot Developer), Donny
(Logotype)... |
|
L I C E N S E |
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list
of conditions and the following disclaimer in the documentation and/or other materials
provided with the distribution.
Neither the name of the YaPB nor the names of its contributors may be used to endorse
or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE. |
|
A B O U T B O T |
Yet Another Ping Of Death Bot is an special program that adds computer
controlled players (bots) to a game called Counter-Strike.
The Bots will automatically know the goals of the map. Counter-Terrorists
will go for hostages or defuse the bomb, Terrorists will plant the bomb. VIP Bots
will try to reach the Rescue Points. The goal selection is done dynamically and
will be affected by several factors like Personality, Health, Team-mates near &
Items the Bot is carrying. The Bots will also try to support team-mates and take
cover when they think it's needed. They can use some buttons like for light-switches
and for some doors triggered by the button. It's possible usage of lifts by bots
(but it's not recommended - because of the possiblity getting stuck by them in some
ways normally not used by human-players).
You can join a network game over the Internet or on a LAN without the
necessity to uninstall the Bot. You cannot spawn bots when connected to an Internet
server unless it is your server that's hosted, but you can spawn bots on a LAN if
you are running the server (Listenserver).
The Bot currently only works in
Counter-Strike 1.1 - 1.6. If you haven't
updated your CS version to 1.1 (or higher) you will HAVE to do so before using it. |
|
I N S T A L L A T I O N |
Bot installation is done, by install using automated installer, or
extracting yapb install archive to cstrike/czero directory, and editing necessary
files. To install bot from archive, you need to replace line gamedll "dlls\mp.dll",
to gamedll "addons\yapb\dlls\yapb.dll" in liblist.gam, or if you have metamod already
installed on your server, by adding win32 addons/yapb/dlls/yapb.dll, line
at the bottom of your plugins.ini file.
Linux version of bot is located on the yapb server may not work correctly
with whole load of linuxes, so if you encounter any problems with default build.
please recompile it using source included in separate archive for download. Linux archive
can be downloaded as well as windows package from bots-united forums or russian
support website. (For the links to archive take a look at Useful links section).
There are no AMD64 binary for YaPB, for some reasons, but you can still
use original linux binary and run dedicated server in 32bit mode. There are severeal
reasons todo so. First Valve halted support for their AMD64 dedicated servers, and
the second, that
i have no linux64 crosscompiler (and cannot download it, since my
internet connection). If you really need AMD64 binary you can compile it from the
bot sources. |
|
W A Y P O I N T I N G |
Waypoints are locations in the maps that the bots will use when navigating.
They allow the bot to roam about the map without having to blindly bump into walls.
Waypoints can be thought of like the bread crumbs in the Hansel and Gretel story.
They are something marking a path to make it easier to follow. The waypoints are
not displayed while the game is being played. The bots "know" which way
to go by following the path laid out by these waypoints.
In order to get the bots to cover the entire map when playing the game,
waypoints should be laid out all over the map. Without the waypoints the bots will
just randomly run around and will tend to stay in the same area. Waypoints also
allow the bot to know where specific goals are in the game. You couldn't play capture
the flag unless you knew where the flag was and where the flag needed to be taken
after being captured. Waypoints are what makes all of these things possible. Bots
with sufficiently advanced waypoint information and algorithms would be able to
find the shortest distance between points in the map and navigate from their current
position to some goal on the other side of the map.
This document describes the commands needed to create or edit a waypoint
file (to be used with the YaPB). When creating or editing a waypoint file it is
best NOT to have any bots wandering around at the same time. Create a LAN game,
and join the game then start laying out waypoints for
a map. Save the waypoint file, disconnect from the server, then start the game again,
this time with the bots to see how well (or poorly) they follow the waypoints you
have created.
The waypoints are displayed using vertical lines that
look like lightning or electric streams. The vertical line used to draw the waypoint
is the same height as the player. The point in space at the center of this vertical
line is what is actually used as the waypoint. Different Types of waypoints have
different colors.
Waypoints are stored in a file with the same name as the map file name
but using the extension ".pwf" instead of the map file extension
of ".bsp". For example, the waypoint file for the map de_dust
would be de_dust.pwf. It will be stored in the <csdir>\addons\yapb\wptdefault.
Waypoint files are automatically loaded when the map is loaded (if
they exist). If the waypoint file does not exist, you will need to create it using
the directions contained in this document.
The following Waypoint commands are available (note these
are NOT case sensitive), For full listing of available console commands for waypoints,
type "yb help ?" in the console.
To use the waypoint commands, you will have to use the console. Use
the '~' key to bring down the console. Enter the console commands that you wish,
then use the '~' key again to return to the game.
You can make things easier by binding console commands to keys on the
keyboard. Just type "bind" followed by the key you want to bind to, followed
by the console command. You will have to use double quotes on the console command
if it's more than one word. Here's an example of console commands that I use when
editing waypoints...
bind a "yb wp add"
bind d "yb wp delete"
bind l "yb wp load"
bind w "yb wp save"
The 'a' key will manually add a waypoint. The 'd' key will delete a
waypoint. The 'l' key will load the most recently saved waypoint file (useful if
you have added some waypoints but don't want to save them and want to go back to
the previously save waypoint list, sort of like an "undo"). The 'w' key
(for "write waypoints") will save the list of waypoints to the waypoint
file. I tried using 's' (for "save waypoints"), but I kept hitting 's'
by mistake when I wanted to add or delete a waypoint.
Using "yb wp add" will place a
waypoint at the location that the player is currently at in a map. Waypoints can
be placed anywhere the player can go. Waypoints can even be placed in mid-air (as
long as the player can get to that location). One way to do this is by jumping or
running off of a ledge or cliff. When placing a waypoint, you will hear a sound
to indicate that the waypoint has been dropped (the sound is the same sound the
crossbow bolt makes when striking an wall). You then have to specify the Type of
waypoint you want to place here.
"Normal Waypoint" sets a Waypoint
which is used for normal walking from one point to each other. From V1.4 on you
should place lots of them, since the Bots use them for hiding and varying their
paths. Color is green.

Normal Waypoint.
"Terrorist Important Waypoint" and "CT
Important Waypoint" These are strategical waypoints for that team.
Bots use these waypoints to patrol the map. How they use this, heavily depends on
the map type. In a DE Map you should place a lot of CT Waypoints around the Bomb
Plant Zone and only 2 or 3 strategical waypoints for Terrorists. On a DE Map Counter
Bots will most of the time pick a Counter Waypoint as a destination and only sometimes
pick a Terrorist waypoint. Terrorists are allowed to pick any of them as a goal
waypoint. This behaviour changes with the maptype, in a CS map for example it is
vice versa. You NEED to have some of these, but don't place too many. Average count
for this is below 10 for each. Terrists WP Color is red, Counter Waypoints are blue.

Point for CTs - blue, for Ts - red.
"Block with Hostage Waypoint" and "Ladded
Waypoint" If you set this flag on a waypoint, bots won't take
this waypoint if a hostage is following them.

Ladder Waypoint (Block with Hostage, if not on Ladder).
"Rescue Waypoint" This is only needed on
Hostage Maps. It's the location where you want the CT Bots to rescue the hostages.
Usually only 1 is needed. Color is white.

Rescue Point.
"Goal Waypoint" Place this at a position
where Goals of the Map need to be achieved. In DE maps this is a bomb plant spot
and on cs maps Counter look here to rescue some hostages. In AS maps these are the
Escape points for the VIP. Color is purple.

Goal Waypoint.
"Campstart Waypoint" This is a camping
(or sniper if you prefer) waypoint. To place it, look into the direction you want
the Bot to start looking at when camping. To let him crouch at that position just
press the duck button while adding it. You also need to specify the "Campend
Waypoint" Selecting this will set the end direction for the Bot
to look at when camping. Look straight into the direction where you want the Bot
to look and select it. Note: you can't set a campend waypoint before doing a campstart
waypoint. Normal Color is cyan, if you made it team specific it will have a touch
of red if Terrorist WPT or blue if CT.

Camp Waypoint.
"Jump Waypoint" By selecting it, your moves
will be monitored and if you jump, a normal waypoint will be placed at the position
you started to jump and another will be placed where you landed. The Waypoint Type
as said before is a standard waypoint but a red connection line will show you that
there is a jump connection between the two. You can also create jump connections
between already existing waypoints, just make sure you're in the near of the first
when jumping and land in the near of the destination waypoint. Note that this will
adjust the waypoints origin on the average position of the previous position and
your jump position. You can even have the bots jump to a ladder or do several jumps
after each other !

Waypoints Connected with "Jump Path".
Note: To set a crouch waypoint, just keep
holding your duck key. Also note that placing the "Important" waypoints
differs from maptype to maptype. On defusion maps, Terrorist will be able to choose
a Terrorist Waypoint OR a Counter Waypoint. Counter stay most of the time at Counter
Waypoints. On cs maps, Terrorists choose Terrorists waypoints most of the time and
Counters can walk to any Counter waypoint OR Terrorist waypoint. All other waypoints
will be chosen team independent (even camp spots).
Using "yb wp delete" will remove
the waypoint closest to the player. The waypoint MUST be within 40 units from the
player (about 1/2 the player height) in order to be removed. You will need to stand
fairly close to the waypoint to be able to remove it. This prevents you from accidentally
removing a waypoint on the other side of the room. When removing a waypoint you
will hear a sound indicating that the waypoint was removed (the same sound the tripmine
makes when placed on a wall).
Using "yb wp save" will save
the waypoint data to the waypoint file. The waypoint file will have the same name
as the current map with an extension of ".pwf". The file will be saved
into the "<csdir>/addons/yapb/wptfolder" Folder. Your current
player name will be saved as the waypoint file author.
Using "yb wp load" will clear out all waypoints in the current map and
load them from the waypoint file in the maps folder. This is a good way to "undo"
a bunch of waypoints that you have created but do not wish to save. There is no
way to "undo" a single waypoint. You will have to use the "yb
wp delete" command to remove waypoints one-by-one.
The "yb autowp" command allows
you to automatically drop waypoints as you run around in a map. To turn autowaypointing
on use "yapb autowp on". As you run around the
level waypoints will be dropped every 200 units automatically. No waypoint will
be dropped if another waypoint is already within 200 units of your current position.
So if you want to place lots of waypoints fairly close together you may have to
manually place some of the waypoints using the "yb wp add"
command. Autowaypointing keeps track of where the last waypoint was dropped (either
manually or from autowaypointing) and will place another waypoint when you are 200
units from the last waypoint. If you don't like where autowaypointing placed a waypoint
and want to move it a little bit, you can delete the waypoint using "yb
wp delete" (but turn off autowaypointing before, since it
will place a new waypoint otherwise).
When using autowaypointing, try to stay in the center of narrow hallways
and always place a waypoint on BOTH sides of a door. You may have to place some
of these waypoints manually using "yb wp add"
since places like intersections of hallways and doorway entrances and exits don't
usually fall exactly at the location where autowaypoint would want to place a waypoint.
Whenever you get close to a waypoint yellow or white lines will be
drawn to all of the other waypoints that the bot would consider to be "reachable".
If the connection is a two-way connection the line is yellow, one-way connections
appear white. These "reachable" waypoints would be waypoints that are
clearly visible from the current location. Certainwaypoints will be disallowed as
reachable for one reason or another. For example, waypoints suspended in mid-air
above the bot would not be considered reachable since the bot couldn't jump high
enough to get to them. Also waypoints that are too far away from the current location
would not be considered reachable. You may have waypoints that are close enough
to each other, but across a wide gap that would be too wide to jump. If the far
waypoint is close enough and clearly visible, it would still show as "reachable"
since I currently don't have a method to determine if the bot can get to that waypoint
or not.
The bots will ONLY go from one waypoint to another if there is a path
between them. Get in the habit of turning on the pathwaypoint setting when creating
waypoint files so that you can see the waypoint paths and will know whether or not
a path exists between two waypoints. Also get in the habit of checking that paths
exist BOTH WAYS between waypoints. Just because a path is drawn from point A to
point B, doesn't mean that a path exists from point B to point A.
The "yb pwp add waypointnr" command
allows you to manually assign a path between 2 waypoints. This is needed in some
cases where the waypoints are blocked (by doorways or other objects) and you wish
to create a path between these waypoints. Move close to the waypoint you wish the
path to start from and use the "yb pwp add x"
command.
Of course the "x" must be replaced by a valid waypoint number.
The actual Waypoint Number you're standing on, will be shown in the upper corner
of your HUD (if you turned pathwaypoint on). For example to manually assign a path
between Waypoint Nr. 250 and 251, you first should stand in the near of Waypoint
Nr. 250. Then type in: yb pwp add 251"and it will
get connected.
You should now see a white waypoint path line being draw from the start waypoint
to the end waypoint. Note that this is a ONE-WAY connection. If you wish to create
a path back in the other direction you will have to start with the second waypoint
and end the path back at the first waypoint.
You should now see a white waypoint path line being draw from the start
waypoint to the end waypoint. Note that this is a ONE-WAY connection. If you wish
to create a path back in the other direction you will have to start with the second
waypoint and end the path back at the first waypoint.
The "yb pwp delete x"
command is just like the "add" command except that it removes a path (connection)
from the starting point to the ending point. This is necessary in some cases where
you may have a door that opens from one side and allows you to go through but once
the door closes you can't go back through the other way.
When adding waypoints use the pathwaypoint feature to verify that waypoints
are actually reachable. Sometimes you add a waypoint and it appears close enough
and it also appears to be in plain sight, but the Half-Life engine doesn't indicate
that the waypoint is "reachable". Be sure to check this in BOTH directions
when defining a waypoint path. Usually you don't have to be too careful about waypoint
placement, but in some situations, you may have to spend more time carefully laying
out waypoints to get them to be "reachable" (ladders are a good example).
To set crouch waypoints, simply crouch when adding the waypoint. You
will notice that the waypoint line is shorter than a normal waypoint. Bot will crouch
automatically when approaching a crouch waypoint (if it's not a camping waypoint).
Try placing waypoints at intersections in hallways (do use some "important"
waypoints at crossings). Try not to place waypoints in places where the bots would
bump into corners of walls or other obstacles when trying to get from one waypoint
to the next. Remember the bots won't always take what you consider to be the "obvious"
choice when choosing the next waypoint. Try to limit the choices that they have
to keep them from heading off in the wrong direction. Also remember that the Bots
could go backward in a fight and might not find a waypoint. In that special case
they wouldn't find a near enough waypoint (they only search in-between 200 Units)
and get stuck forever. Since PODBot V1.4 it's important to have a lot of waypoints
together to allow the Bots a wider choice. Also put some waypoints in corners or
behind walls/doors so they can take good cover positions. The Bots will try to take
cover at waypoints
a) not seen by the enemy and
b) the one with the smallest wayzone radius in their range
Bots will pick a point inside this radius for their destination
origin (based on things like orientation etc.), this just makes movement not that
"static". Ladder waypoints, camp waypoints and goal waypoints will always
have a radius of 0. Don't try to change it ! After POD-Bot calculated all Zones
you should walk all over your waypoints to verify that they are reachable within
their radius. Try to be careful with the radius. If your path bends around corners
it's better to lower the radius. You should set the radius to 0 if the Path goes
through some narrow doorways or similar. You manually assign a new value by standing
near to the waypoint and typing "yb wp setradius x". Where x is the value
you want to assign. Valid ranges are 0-128. The bigger, the wider it is. You'll
also notice, if you turned on pathwaypointing some lines will show you the radius
of the actual waypoint (if it's not 0). |
|
B A S I C U S A G E |
You can use some of the Radio Commands to get more support from your
Bots. The first is "Follow Me" which commands Bots in the near to follow you. You
can specify the maximum of following Bots in the podbot.cfg File (defaults to 3).
If a Bot is following you, you can use "Hold this Position" to make
a pause at that Place and look around for enemies. You can use "Go,go,go!" to stop
him from following you again. Note that they won't follow you in 3 cases:
- They don't want to ! The Bots have their own will and
they issue a "Negative" if they don't want to follow you.
- They don't see you.
- They see an enemy and engage the target.
A Terrorist Bot carrying the C4 or picking it up, will also issue a "Follow Me"
sometimes to have some assistance with him. They also do some
other Radio Commands like "Need Backup", "Enemy down", "Enemy spotted", "I'm in
Position" (to tell you he's camping) but not very often, otherwise it would surely
get on your nerves...
First, Bots with low skills will pause/camp
longer and more often. Bots with low skills have a bigger surprise time and they
shoot slower. Bots with low skill are lucky if they hit something. Then there are
minor behaviour differences. For example Bots with a skill above 80 use the knife
more often if you're near them. If you want to get headshots all the time (and really
fast) add some Bots with a skill of 100. You can easily change a lot of skill parameters
by editing the file 'botskill.cfg' with any text-editor. Also take a look into 'podbot.cfg'
to adjust some more things to your liking...
This bot has a special tools called YaPB ConfCenter, which is used
for complete configuring the bot via it's configs. Information regarding bot cvars can be viewed in this tool as well. This tool can be downloaded via Bots-United
YaPB forum, or Russian website. Please note that it is require that you will
have Microsoft .NET framework 2.0 installed on your PC, before trying to launch
configuration application. This documentation containts no information regarding
bot console variable nor bot command. All information available in confcenter application,
or command 'yb help ?' typed
in the server's console. |
|
V E R S I O N H I S T O R Y |
TBA |
|