|
|
|
Mystery Bot v0.67
Introduction
We, as fellow Quake enthusiasts, have become accustomed to playing the game
with computer-controlled, automated deathmatch opponents. We often call
these opponents bots which is short for robots. The majority of these bots
are actually executed by Quake itself using its built-in interpreter for the
language called QuakeC. Thus, these bots are written in QuakeC. Bots come in two varieties: server-side and client-side. For bots written in QuakeC, we call
these bots server-side bots. The other type is not actually executed
by the server itself. These are not executed by Quake. We call
these bots client-side bots. These client-side bots can be further sub-divided into several categories or types. There is an article that
discusses the different types of client-side bots. Please feel free to read
it if you are confused as to what these types are.
The type of client-side bot we are talking about in this review is the type that is "fully autonomous".
The Mystery Bot is a
fully automated, computer-controlled deathmatch opponent. That is, the
computer controls the bot completely including the ability to move around the
level. The difference between this bot and
server-side bots is that the computer doing the controlling can be someplace
else. These bots can log on to the Quake server as if it was a real human.
Therefore, the Quake server will not be bogged down operating the bot. It is
free to do other things. And since the Mystery bot is NOT
a patch, then you will not get that message telling you that you
need the registered version of Quake to use this bot!
To my knowledge, there are not many reviews being written that discusses any
client-side bots. This limits greatly the amount of information that the
general public can gather concerning these client-side bots. This opens the
door for propagandists to spread a little gloom-and-doom about these bots.
The only information that is actually out there comes from the authors of
these client-side bots. And, not surprisingly, many people do not trust these
authors and even accuse them of creating a product that can destroy Quake.
This review will hopefully shed a little light on how these bots actually
behave in Quake. This review on the Mystery Bot is, to my knowledge, the
first review ever written on a "fully autonomous" client-side bot. Be warned, this review contains a lot of screen shots. The shots are not presented in the same order in which they are taken. The shots are placed within an appropriate category.
Making it work
As you may imagine, getting this bot to log on is not as easy as getting
server-side bots to work. Follow the instructions provided with the package.
That is, make sure you have a mystery sub-directory under the Quake directory.
Make sure that you do NOT place the files in
the ID1 sub-directory. This is one of the common mistakes that people make.
They even go so far as delete a file or two or modify the files in that
directory. Not surprisingly, they go to the newsgroups or e-mail the authors
bitching and moaning why Quake does not even work anymore. Quake will sometimes
give you the message that you can not run a patch without the registered version
even though you do have the registered version. The instructions
clearly did not include anything about deleting or modifying files in the
ID1 directory. So naturally, they make up the instructions as they go along
and then blame the authors of the products for making that mistake. The
ONLY thing you CAN do within the ID1 directory is to add a sub-directory within this
directory called maps and place your maps (*.bsp files) in this maps directory.
Only do this if you want to place all your maps in one place. For Mystery bot,
this is probably a good idea since it has a hard time finding the maps.
After you followed the instructions carefully and, hopefully, you did not make
up a few instructions along the way, load Quake. For me, I often load Quake
by typing the following in a DOS window of Windows 95, "q95 -game dme". When
Quake is loaded, start a new multiplayer game. Now the next most common mistake
is to type "deathmatch 1" at the console followed by "map dm4" (or some other
level). This is the WRONG way to do it. Why?
Because you are actually playing a single-player game using deathmatch 1 rules.
To start a multiplayer game, you will need to specify the "-listen" parameter
when loading Quake or select multiplayer at the menu.
After starting a new MULTIPLAYER game, open up a new DOS window. In
that window, change to the Mystery bot sub-directory then type "qb +connect local"
at the DOS prompt. You should get a message saying
Connection Accepted. If you do not get this message, then stop this
program (it will stop by itself eventually) and exit Quake. You will then need
to restart Quake following the same steps as before. For some strange reason,
both the bot and Quake are out-of-sync and can not connect. If you get a message
saying that it can not find a certain *.bsp file, then copy that *.bsp file into
the maps directory in the ID1 directory under Quake.
Now once connected, you should see the Mystery bot in the game. It will show
up on the status bar and on the TAB scoring table just like real players. Unfortunately, for
some strange reason the bot sometimes refuses to fight. If it refuses to fight, let the
bot roam around for 20 seconds or so and quit Quake. Reload Quake again from
the beginning and load the bot again following the same steps as above. The
bot should fight back this time around. If it doesn't start over again.
First Impression
Seeing a computer-controlled character move around like real players is a
pretty cool experience. This is one of the benefits of making a client-side
bot. Client-side bots like the Mystery bot are limited in the same way that
real players are when it comes to movement, choice of weaponry, and so on.
For server-side bots, the movements for these bots are programmed by their
creators. BGBot, a server-side bot, for instance can jump higher than real
players. Mystery bot can not jump higher nor shoot faster. Even if the
creator wants his bot to have these abilities, the programmer can not give
the bots super abilities. Quake automatically limits the abilities of all
clients--including client-side bots.
|
|
| Mystery bot fires from a distance
| Mystery bot, up front and personal
|
A few moments after logging on, the bot will inform all participants
on the server that it is a bot. So, there should be no surprises. This gives
the whiners the chance to leave the server or by simply following the instructions
that the Mystery bot gives, they can tell the bot to leave.
|
|
| Mystery bot introduces himself
| Mystery bot tells you how to get rid of him
|
The nice thing about client-side bots like the Mystery bot is that you can
use it with other patches. If you want to use the Stephen Polge's Reaper bot
with capture
the flag, you will need to merge the CTF patch together with the Reaper bot.
This requires some programming skill on your part to accomplish this feat.
Mystery bot, however, comes with the CTF patch so you can play CTF against
the Mystery bot. If you want to play Jonathan Wright's Zeus bot with Wes
Morrison's Multi-Weapons patch, you will need to merge the two patches
together. With the Mystery bot, you do not need to do any of that. Simply
load the multi-weapons patch like you normally do, then execute the Mystery
bot in the same way I described it earlier.
|
|
| Mystery bot finds my flag
| Mystery bot takes my flag
|
|
|
| Mystery bot finds his home base
| Mystery bot is about to get a bonus
|
|
| Mystery bot takes a warm bath with
|
| a lightning gun in hand
|
Combat
Of all the aspects of bot programming, combat is probably the one aspect that gets the
most attention especially by low-skilled players or by people who simply
love to bitch and moan about anything that is "new". In some respects, this
attention is well deserved. Unfortunately, humans have this really annoying
tendency to exaggerate the abilities that bots have. One of the most annoying
complaints that players have about bots (all bots, not just client-side bots)
is that these bots do not miss especially with "instant hit" weapons like
the lightning gun. The bot's ability to predict where a player will be also gives them an non-player-like ability to be deadly with projectile weapons such as rocket launchers.
NONE OF THIS IS TRUE!
|
|
| Mystery bot firing the nailgun
| Mystery bot firing the lightning gun
|
The above pictures clearly shows the Mystery bot missing the target. As you
can plainly see, not all the nails from the nailgun were going to actually hit
me. In fact, all the nails except for the ones towards my left actually sailed over my head since I had enough time to take the screen shot and then drop back down into the pool. The bot missed me completely. The lightning is too far to my right to do any damage. This is probably
the most exaggerated aspect of bots. Bots do miss. The problem is that people
will remember the hits but refuse to remember the misses. It takes screen shots
such as these to prove these people wrong. Now imagine that I was hit by the
lightning. All I would see is a red screen and that is the only thing I would
remember. I would not remember the bot actually missing. And the one thing
that is not shown in the pictures is that I was not moving until AFTER I took the shots.
If you are curious, I was indeed killed by the bot with that lightning gun.
Try to figure out why that is. First, I was too busy trying to get screen shots so I was not trying to move out of the way. Second, each hit from a lightning gun takes up 30 health points. I can only absorb 299 points of damage before I die. Since the lightning gun can shoot every 0.1 "game" seconds, then it should be fairly easy to figure out that it does not take long to kill an enemy if you use a lightning gun. If you ever wondered how a low ping bastard using a mouse can kill you so fast with a lightning gun, then this is the answer: each hit does 30 points of damage and he or she can fire that weapon very, very, quickly. A high ping target can not react fast enough to move out of the way. Hence, the high pinger is dead. Think about this the next time you see yet another propagandist with a cable-modem, ISDN, or a T1 line claim that ping does not matter.
Unlike most bots, these bots do not specifically target "players" or target entities that have the FL_CLIENT flag. All entities can have a value for its takedamage variable. In the case for shootable doors, the value is DAMAGE_YES. A value of DAMAGE_NO means it can not be hurt. If the value is DAMAGE_AIM, then that entity can not only be hurt but also bleeds. This bot targets anything that bleeds. This includes bots like the Reaper and, of course, players too. If you are using a patch that includes an observer mode (like the Reaper bot patch), the Mystery bot will STILL go after you.
The weapon selection scheme appears to be simplistic. It will pick a lightning gun over the rocket launcher except when it is in water. So if you are far away, the bot will fire the lightning gun instead of the rocket launcher.
As you may already imagine, these bots move while firing their weapons just
like real players. Mystery bot can strafe left and right or even circle
strafe so it will be behind you. The bot will try to avoid grenades or
rockets but it does not understand the concept of splash damage. Just shoot
for the walls and you will get him. At very close range, it is not uncommon
for you to gib the bot with a rocket. Mystery bot can also jump strafe. Not
many bots, client-side or server-side, has the ability to jump strafe. This
will make the bot a little bit harder to hit.
Unfortunately for the Mystery bot, its strafing is not the best in the world.
It is not uncommon for this bot to strafe itself into a corner for a very
brief moment or strafe directly into lava even if that lava pool is BEHIND
the bot. It does not even recognize that certain weapons have a range to them.
For instance, a lightning gun has a relatively short range. And once it strafes
itself out of line-of-sight, it forgets that you even exist. In the above
picture showing the bot firing the nailgun, it did not even try to strafe in
the opposite direction so it can fire again. But unlike some server-side bots
like the Reaper bot, Mystery bot does not know what weapon you have in your hand.
It will not know until you fire it.
Like most bots, the Mystery bot is fearless. It will not run away like the
Reaper bot would. So if you ever face this bot in combat, you have several
options: a) hope that the bot strafes itself out of line-of-sight, b)
kill it, c) get yourself killed or d) hope that the bot kills itself.
|
|
| Mystery bot strafes backwards into the lava
| Mystery bot fires the lightning gun
|
Navigation
In many of the screen shots shown so far, what is the one thing that you should
have noticed? You should have noticed that the Mystery bot often has a negative
score. This is because the bot's ability to navigate around the map is that
of an imbecile. What does the picture showing the bot firing the nailgun tell you?
Well, that picture should tell you that the bot recognized a gap to jump over
and it did jump over it. It jumped over the lava gap on the START map to get to
the nailgun. This requires that the bot recognizes ledges. Unfortunately for
the Mystery bot, it is a complete idiot when it comes to ledges. It often
falls right off the ledge and into lava. Now, don't get me wrong, its ability
to detect ledges is much, much better than the oldest client-side bot, the Terminator,
which has no ledge detection. But the problem is that, this ledge detection code
is not good enough.
On occasion, I have serious doubts that the bot can actually detect ledges. Maybe by chance the bot just happen to be jumping around and it just happen to jump over a gap and picked up the nailgun. The ledge detection code is that poor.
Besides poor and virtually non-existent ledge detection, the bot is unable to roam the map intelligently.
It roams the map much like the server-side bot called Roam bot does. That is,
it just walks around hoping to find something interesting to shoot. Unlike
the Roam bot, however, it follows the walls very well. The Roam bot simply
picks a direction randomly and walks in that direction for a while. The
Mystery bot will change direction when it hits a wall. Sometimes, it
simply follows the wall instead until it hits a corner, then it changes directions.
This is obviously not a very effective way to move around the map. It is not uncommon
to find this bot "camp" at certain parts of the map before proceeding to other
areas. Without an effective ledge detection code, you might find this bot camping
in lava.
On the START map by the pool of water, when you look down into the water, what
do you see besides water? Nothing. Absolutely, nothing. You can not see through
water and neither can the bot. So if it is swimming on the surface of the water,
it is blind to anything underwater. You can imagine how relatively easy it is
to kill a blind bot. Sometimes it is even blind to anything ABOVE the water
also. But at least, the bot is good enough not to drown. If you ever get into trouble, head towards water!
|
|
| Mystery bot swimming on the surface
| Mystery bot did not notice me get the armor
|
|
|
| Mystery bot still does not notice me
| An easy kill!
|
|
| Mystery bot, blind to what is out of water
|
The bot CAN jump out of the pool. It can not help it. If a player is holding down the space bar [jump button] to swim and the player happens to approach a ledge, then the player will automatically jump out of the water. This is also true for the bot. Since it is swimming on the surface, it is "pressing" the space bar. Sometimes, the bot is not pressing the space bar fast enough so it is not at the right "height" to jump out of the water. In the above picture, the water level is not low enough for the bot to jump out. The water level should be almost towards the middle of the chest for the bot to jump out. The picture shows the water level being at the upper-chest area.
Item Acquisition
As you might expect, the bot is capable of picking up any item that it sees. It
can even fight while heading towards an item. However, without the ability to actually know how to get to items, this bot often does
not have the best weapons, the best armor, powerups or much health. This is
a huge advantage for human players. Without armor or without the ability
to find health, the bot is an easy target. If you noticed the scores I obtained
on the START map while playing against the Mystery bot, you would probably conclude
that I beat the bot quite easily. Those scores were obtained without the services
of the Quad. I simply used my knowledge of how to get to key items such as armor
to defeat this bot.
Now you may be tempted to conclude that this bot does a lot of "window shopping". In reality, it does not. If this bot sees an item, then it will naturally head towards it. However, if it hits a barrier before it reaches the item, then it does not bother with it, changes directions, and moves on. Of course, it will again re-target that unreachable item but the point is that it will not just sit there and be an easy target. An included demo mentioned later shows a bot on E1M1 targetting the ammo shells. You get to see first hand how the bot treats unreachable items.
Suicide Is Painless
To say that this bot has suicidal tendencies would be a gross understatement.
The following picture should be proof-positive about its "tendencies". And yes,
the picture does show that I did die in the hands of the bot.
|
| A close game!
|
Miscellaneous
If you are hoping that this bot can help you in coop games, you can forget that
silly idea. It is meant to be a deathmatch bot but it does recognize team play.
The problem is that this bot does not recognize buttons or doors to shoot. It
ignores such things altogether. This will make coop play a tad bit difficult.
The thing that makes it most difficult is the fact that the bot will still attack
you and they ignore monsters. This will definately make coop games more
challenging.
A nice feature of the Mystery bot is that it will record a demo every time
it logs on to a server. By watching this demo, you can see what the bot saw.
You will see first hand that the bot did not have some super-human ability
to shoot faster or jump further or see through walls or any other non-sense
that whiners claim that these client-side bots possess. The drawback is that
the demo recording is automatic; you can not turn off this feature. I have
included a sample demo.zip (98k) for you to look at.
This demo requires that you either have ThreeWave Capture-The-Flag installed in your system or you download the Mystery bot since the package includes CTF.
Recommended Levels
For God's sake, avoid E1M7! Do not play the Mystery bot on any map that
contains ledges for the bot to fall into either slime or lava. Avoid maps
with lots of water also. Even though the bot will most likely not drown in
water, it is a very easy target while in water.
Maps that I have found this bot satisfactory or even very good are the two
maps that was included in the package. DM6 is an excellent map to use this
bot in. Maps E1M2, E1M3, E1M4, and E1M5 are good shareware levels to
play this bot in. E1M1 is also a good map if you are the one who presses the
button so the bot will not keep falling into the slime so damn often.
Worth the download
In comparison to other client-side bots that have been released, the Mystery bot
is THE BEST BOT so far. I am not being sarcastic.
The Terminator bot, for instance, can kill itself 40 times in 10 minutes on E1M7 but
the Mystery bot can cut that figure down into the 20s. There are other client-side
bots being created as we speak. But these bots are not released and all we get
is promises, promises and more promises. If you are looking for the best client-side
bot today, then I strongly suggest that you download the Mystery bot.
|
[an error occurred while processing this directive]
|
|