Professional Documents
Culture Documents
Readme
Readme
2 - Version history.
3 - Setting up.
3.1 - Installation and use.
3.2 - Starting a coop game.
5 - Custom features.
5.1 - Custom bot config files.
5.2 - Custom bot chat files.
5.3 - Custom level config files.
5.4 - A list of cvars and commands.
5.5 - Team bot cooperation (chat ordering).
7 - Bugs, etc.
8 - Copyright/legal things.
1 - GENERAL INFORMATION
-----------------------
2 - VERSION HISTORY
-------------------
2.4:
A new bot leader/squad system has been added. In teamplay games, squad
leaders will be assigned and will tell other bots in their squad what
to do by using chat commands. Players can also easilly take control of
a squad leader or the members of a squad by using the bot ordering chat
commands (listed in the readme.txt). celtic88 (over at the Bot Epidemic)
inadvertently reminded me that I wanted to add this feature a while ago.
Bots will now snipe on purpose (as an option). If bot sniping is enabled,
sniper bots will be issued randomly. Sniper bots will go after a sniper
weapon if it is on the map (the crossbow) and then go to a snipe point
and sit there sniping at enemies as long as their sniping conditions
remain acceptable (meaning they have enough health, ammo, are not in the
middle of reloading, etc).
Bots can now camp better (as an option). If bot camping is enabled,
camper bots will be issued randomly. Camper bots find powerful weapons
and/or items and camp on them by moving only within a certain distance
from the weapon or item and frequently sitting by the item and looking
at possible directions an attacker could approach from. Camping was
suggested by TriNitro.
I've added a new option, which I will refer to as the "realistic game
option". If you enable this option, it will sort of automate everything
and make things seem more like a real server. Bots will chat randomly
to each other, leave and join at random, and quite a few other things.
The cvar for this mode is bot_realgame.
A moron type bot has been created for the realistic mode. Moron bots
will be added every once in a while when realistic mode is on. These
bots use completely seperate configuration files for their names and
chat abilities, and will also tend to do horrible stupid things (some
of these things are done "accidentally on purpose").
Chat capabilities have been extended. Bots talk to each other, greet
each other, say good bye to each other, and more things which I've
forgotten about. Moron bots also utilize all of the new chat features.
Added a morons.cfg file and a exchat.cfg file, which allows the user
to customize all of the new chat options for bots and moron bots.
Bots can now better avoid snipers and other unseeable enemies by using
evasive navigation routines while under fire.
Bot hearing has been tweaked so that the bot's hearing distance is more
realistic (in accordance to that of a player's).
Higher-skilled bots can now avoid grenades, satchels, and other objects
with the flag of evilness by making more intelligent path decisions.
This can be disabled by using the newly added bot_objavoid cvar.
Lower-skilled bots will sometimes stop strafing and sit still while
shooting at their opponent. This addition was suggested by snakebite.
Bot accuracy now better factors in the movement of both the bot and
the bot's target.
A makewp_snipe command has been added to allow the user to easilly add
good sniper points to JRF files in edit mode. The way this command works
will also allow users to easilly create sniper points in existing JRF
files with very little effort and without changing any other part of
the JRF file.
The old chat file format is now obsolete. exchat.cfg is the new version
of "botchat.cfg". The new format is much more stable and easy to edit.
Got rid of a possible memory leak in the general bot info routines.
---
2.3:
Gauss jumping has been improved, and bots will use it to take
shortcuts if they have somewhere they want to be (they will gauss
jump straight up toward the turrets in doublecross instead of
taking the ladder up, for example).
Bots will now use the longjump module during straight navigation
routines if they have it, in order to cover long distances faster.
The waypoint system has had a major fix-up, and the entire edit
system has had many improvements and a partial rewrite. Waypoints
can now be added and removed in the middle of trails easilly, and
you can get information about any waypoint on the level by looking
at it.
Bots now react to sound and sight when using health/suit chargers.
The AI for when a bot should engage in straight combat has been
improved, so bots will have a better sense of when to run and when
to not.
Combat AI has finally been improved. Bots should not get stuck on
things so much when after a target (I am sorry for not touching
that for so long).
Bots can handle broken routes. This means that if the bot cannot
reach its destination point, it will figure out a different place
to go (results in bots working much better on levels with filthy
poorly-done route files).
Rocket launcher usage has been improved somewhat, so bots are now
even less likely to murder themselves by shooting rockets against
walls.
Bots will no longer get stuck on lifts and ladders while running
away from other players/bots.
I've fixed and optimized a bunch of things and got rid of some
no-longer-needed hacks that I'd made to fix old SDK problems.
Bot aiming has been tweaked to look more smooth and human-like as
well.
Fixed up the horrible, horrible FOV code (which also fixed a bug
with turret usage).
Bots don't get added in waypoint edit mode. Perhaps this will cut
down on the "HEY WEHN I JUMP THERE AER THINGS UNDRE ME AND TEH BOTS
R ALL STPUID WHY?????" e-mail. Yes, how I love getting e-mail from
those who do not understand what a readme.txt file is.
Compiled with MSVC++ 6.0 Pro rather than 5.0 (I don't know how much
of a difference if any this makes, but it does decrease the DLL size
a significant amount).
---
1.7:
Made it so default map CFG is executed every level right before
level configs, so level settings can be applied on top of the
default settings.
Changed enemy hunting so that bots will first try to gather weapons
on the level, then hunt down enemies purposely when they become
strong (this is all done realistically with use of hearing and other
senses).
Tracing to a point path is now more optimal and bots should not get
stuck even on poorly done JRFs.
Bots treat getting to advantage points (like high-up turrets) as
goals and will make a significant effort to get to powerful weapons
as well.
Other things I've forgotten about that you probably won't notice.
---
1.2:
Added a bot_weaprun cvar to allow users to set how bad a bot's
weapon has to be before it will run, despite what weapon it has.
Fixed turret usage to work better (bots shouldn't get stuck now).
Fixed the old item-over-ledge code that hadn't been touched for a
very long time. It was doing bad evil things (pointcontents is a
very bad method for ledge-tracing).
Added a wp_vis cvar for when adding waypoints. This makes the last
50 waypoints in a trail have particle streams on top of them. The
reason for this is that waypoints no longer look like crossbow bolts
and have no model, because they do not take up edict slots any longer
(pretty much the only drawback of an array system, but the particle
streams should be fine). The color of the particles is also different
depending on the type of waypoint, so you can easilly tell jumping,
crouching, and regular waypoints apart.
Tested mapcycle options and such with the bot to make sure they
work correctly after finding an unused character array which
had memory allocated for it in the level change function. This
might be what was causing some servers to crash at level changes.
---
0.8:
Added option to have the bot's skill in the bots.cfg (this
makes it easy to have bots of different skill levels in the
same game).
Bots can now tell which weapons they can and can't use
while under water.
Bots can see through water that normal players can see
through.
Made a debug build and ran in dev mode, found and fixed a
large amount of assertion failure errors (these seemed to
be happening at points where people were reporting errors
on some systems, so I believe this release may help them).
Added to the bot's tracking AI. The bot will now track its
enemy down by searching around the spot it last saw its enemy
at.
When running away, bots will calculate the best path to use
in order to escape their opponent.
Improved random roaming more. Bots will never just sit there
anymore like they did on some levels before.
Bots can now track enemies while going after items, which
makes them less vulnerable during those times.
Added an option to add "random" bots (also never chooses the same
bot twice unless it's used all the bots in a config file). This
chooses a random bot profile out of a bot profile file of any size
rather than adding bots in order.
Fixed bug with random crashing at times when removing bots from
the server.
Fixed a bug in the waypoint code that may have been causing
bad edict errors on some systems.
Problem with client slots not being freed over level changes is
now fixed.
Hopefully fixed the problem with some systems crashing after chatting
was enabled for a while.
Fixed problem with real clients not being able to chat with eachother
while running the bot.
Weapon selection bug fixed (bots ignored many of the regular weapons
even if they had them).
There is now a cvar to set the name of the file which the bot's name,
model, etc. is read in through, so you can have an endless number of
bot configuration files.
Chat support is now fully working. Chat files are selectable just as
bot configuration files are.
Quotes can now be used in the bots.cfg file to indicate that a name has
a space in it (e.g. "Lera Yvette" instead of Lera_Yvette).
Chat files can now have anywhere from 3 to an infinite number of lines
for each section (they are no longer limited to 30 lines each).
Added edge clipping for items, combat, etc (bots will not jump off of
uncrossable ledges after items and will not fall off of ledges while
strafing to avoid fire during combat).
Cooperative play support added. See the "STARTING A COOP GAME" section
for details on how to use it.
----
0.1:
First release. Features include standard server-side client emulation,
full weapon support, a new full level navigation system, and more.
3 - SETTING UP
--------------
Extract the zip file WITH DIRECTORY STRUCTURE directly to your Half-Life
directory. If you did it correctly, you'll have a new "jumbot" folder
under your Half-Life folder. Now start Half-Life with the console
(-console at the command line). Once in the menu, use the custom
game option to activate the Jumbot. Now just start a regular LAN game
through the menu (note that if you want to use the bots on teams, just
set up the game to use Teamplay as you normally would) and use the console
(~ key) to enter commands and change values (which are listed below).
If there is no waypoint file for the bot, you'll need to place waypoints
yourself and save them to a file once you're happy with their placement.
See below for the various waypoint management commands and values.
Before getting into a game with the bot, you'll probably also want to
edit the jumbot.cfg file in your hl\jumbot folder and change it to fit
your own preferences.
STEAM NOTE: If you are using the latest Steam/Half-Life version, this
will be slightly different. Your Half-Life folder will be somewhere
like C:\Valve\Steam\steamapps\username\half-life, where C:\Valve\Steam
is wherever you have steam actually installed, and username is your Steam
user name. So you would want to extract the Jumbot to there, and end up
with a username\half-life\Jumbot folder. From there, start steam (make
sure Steam was not running when you extracted the Jumbot), and go to the
"My games" tab. The Jumbot will be listed there as a third party mod,
and you can just doubleclick to run it and start up a multiplayer game
as usual.
disconnect
deathmatch 1
coop 1
sv_cheats 1
map <mapname>
If you want to load another level, repeat the same process. <mapname>
should be the level that you want to load. However, it is important
to note that coop support was never even actually finished in
Half-Life. So, it is more than likely that you'll get errors or
crashes if you try to play on the original single player levels. I
recommend using some of the many available "scientist death maps"
or any single player level that isn't cut up into sections.
After you've started the game, you can use the coop_scikill and
coop_killmeth cvars to change how the bot behaves. Details on using
the cvars are below under "SETTINGS AND COMMANDS".
waypoints 0
bot_thinkspeed 1
Setting bot_wppref to 0 can also give you a good speed boost. Also
note that any extra things like gauss jumping use up extra CPU power,
so disabling them well help speed things up as well.
If you're getting crashes for any reason, make sure you have version
1.1.0.1 or later of Half-Life, and it would help to make sure you
have a JRF file for the level you're playing on as well.
If you are having any problems and have the latest version of this
bot and of Half-Life, then you've most likely edited a setting in a
way that is causing problems. I recommend deleting your Jumbot
installation and re-extracting the Jumbot zip file, and also do not
use any launchers or installers with the bot. Keep all of the
settings at their default, then try running the bot and see if that
helps.
5 - CUSTOM FEATURES
-------------------
removebot (command): Removes the last created bot from the server.
botfov (cvar): Sets the bot's field of vision. Works just like the
player's "fov" cvar. Default is 90.
botaccuracy (cvar): Allows you to set the accuracy of the bot. The
default is 10. The lowest is 0, which is perfect, and the highest is
160, which is extremely bad.
bot_longjump (cvar): Bots will use the longjump module (if they have
it) to get places faster in standard navigation if this is set to 1.
bot_rpgaimlow (cvar): Enables and disables bots aiming for feet with
the RPG. Default is 1 (enabled).
bot_crowbar (cvar): Toggles the bot's use of the crowbar only on and
off. 1 is on, 0 is off. Default is 0.
bot_yawspeed (cvar): Changes how fast the bot can turn. Higher is
faster, lower is slower. Default is 25.
msec_min (cvar): Minimum value the msec value can reach when botmsec
is set to auto-adjust.
msec_max (cvar): Maximum value the msec value can reach when botmsec
is set to auto-adjust.
botcfgfile (cvar): Changes the name of the file used to get bot
names, models, etc. from in your Jumbot directory. The default
is bots.cfg.
bot_distance (cvar): Sets how far the bot can see (maximum distance).
The default is 4096.
chatfreq_died (cvar): Sets how often a bot will speak after it dies.
Should be between 0.1 and 10. 0.1 would be hardly ever, 10 would be
every time.
chatfreq_killed (cvar): Sets how often a bot will speak after it kills
someone else. Should be between 0.1 and 10. 0.1 would be hardly ever,
10 would be every time.
bot_viewdelay (cvar): Sets whether or not the bot will delay after
noticing things. Default is 1 (enabled).
b_name (cvar): The bot being added uses this value as its name if
nobotcfg is set to 1. This is also used after the bots.cfg file
runs out of profiles.
b_model (cvar): The bot being added uses this value as its model if
nobotcfg is set to 1. This is also used after the bots.cfg file
runs out of profiles.
b_topcolor (cvar): The bot being added uses this value as its shirt
color if nobotcfg is set to 1. This is also used after the bots.cfg file
runs out of profiles.
b_bottomcolor (cvar): The bot being added uses this value as its pants
color if nobotcfg is set to 1. This is also used after the bots.cfg file
runs out of profiles.
wp_vis (cvar): Causes all of the waypoints placed to have particle streams
on top of them. The particle colors are also different depending on the type
of waypoint. Regular waypoints are yellow, crouch waypoints are pink, jump
waypoints are red, and the last waypoint in a trail is multi-colored. The
default for this cvar is 1 (enabled). Setting it to 2 will use the alternate
display method to eliminate flickering, but it requires more CPU power.
makewpj (command): This will add a jump waypoint at your current location.
Each time the bot comes to a jump waypoint it will jump.
makewpe (command): This will add a special waypoint that the bot will only
move to when an object is below the point.
makewp_l (command): This will add a waypoint in the middle of a trail. Just
look at a waypoint (so that the waypoint is highlighted) while using this
command and a waypoint will be inserted into the trail after that waypoint
at your current location. You can also add a number after the command to
manually inserted a waypoint after any given waypoint ("makewp_l 53", for
example, would insert the waypoint after waypoint number 53 in the trail
if it existed, as waypoint number 54, and waypoint 54 would be pushed up
to 55, and so on).
remwp_l (command): Works the same as makewp_l, except it's for removing
waypoints instead of inserting new ones.
Commands are given to bots through chatting. To give a chat command, talk
as you normally would to other players, and say "<bot's name> <command>".
Commands can only be given to bots on your team. An example would be:
yoshiki follow
You can dress this up if you wish, as well, by perhaps saying something
along the lines of:
The examples assume the bot's name is Yoshiki. If not, substitute Yoshiki
with whatever the bot's name is. A list of commands to put in place of
follow are:
stop - Tell the bot to stop following you or to stop waiting in position.
follow - Tell the bot to follow you. If the bot is not near you, it will
try to track you down in the level when you tell it to follow you.
watch - Tell the bot to watch what you're doing and remember it. This
will only work if the bot can see you and is following you. If you fire
at a location or use a button, the bot will watch and see what you did,
then remember it for later.
position - Tell the bot to get in position to execute its current memorized
action.
turn left - If the bot is in position, this will make it turn left slightly.
execute loop - Execute the action until instructed to stop with a stop
command.
attack - Tells the bot to attack an enemy on the other team. You must also
specify the name of the bot on the other team. If Yoshiki is on your team
and hide is on the opposing team, then to have Yoshiki attack hide you would
say something like this:
The word "kill" can also be used in place of "attack", if you prefer.
Those are currently all of the commands. Note that you can also give orders
to multiple bots on your team in one line. The following would work, for
example:
1. Always make sure each waypoint is visible from the previous waypoint
and the next waypoint if it's possible.
2. Make sure you stay crouched while placing waypoints in areas that
require the player to crouch to avoid certain obstacles.
3. Try not to go off any ledges that you can't climb back up.
4. When you are making a waypoint trail through a doorway, try to place
a waypoint close to each side of the door.
5. Place waypoints close to buttons that need to be used, so the bots
will know to use them.
9. When using ladders, place a waypoint at the head and foot of the
ladder.
10. Try to place a waypoint right on top of every decent accessable weapon
or item you see (this makes the bots more likely to be able to track
that weapon or item through the level if they need it).
11. Remember to use makewpe points with moving platforms and with lifts
(with lifts, place the point on the lift in the lift's starting
position). Don't misuse the points, though, as it can result in the
bot standing there waiting for a very long time for no reason.
12. If the bot seems to fall off of things or just not behave very well
on a level even though the waypoints are placed well, try setting
bot_smoothnav to 0.
13. Remember to use sniper waypoints at good spots if you want bots to
snipe well on levels. See the documentation on the makewp_snipe command
above for information on how to place sniper points.
After you've finished constructing your waypoint file, use the writewpfile
command to save the waypoints to a JRF file and then restart the level. The
JRF will be automatically loaded each time the level is loaded from now on.
If you don't like the job you did on the JRF and want to redo it, simply
delete it from your Jumbot\wpfiles directory and reload the level. You can
also edit the existing JRF file with the in-game edit mode (see the waypoint
management commands and cvars section for details). Each JRF file will have
the same name as the level it is for (boot_camp.bsp is boot_camp.jrf, etc).
7 - BUGS, ETC.
--------------
There are currently no bugs that I know of that are very serious.
Please don't send bug reports, since I have people to test the bot for
me under pretty much all conditions and I'll eventually find a bug
if it exists. If you're having odd obvious problems, make sure you
have the latest version of Half-Life. There may be a couple problems
around, but there's always some way around them.
8 - COPYRIGHT/PERMISSIONS
-------------------------
The bot may only be distributed if this file and all the other files that
came with it are included in the redistribution, and no money is charged
for the product being distributed. This excludes such things as video
game magazines which include a CD and things such as that, which are
permitted to include this bot (provided they meet the requirements above)
as long as they notify me before doing so and get my permission through
e-mail or some other form.