Mystery Bot v0.67

Author Aaron Drew
Homepage Mystery Bot Home Page
Download Windows 95 Mystery Bot
Executable (1440k)
Reviewer legion



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.