Quake© is a first person, multi-player, shoot-em-up game created by id Software. A QuakeBot ( Quake (ro)bot ) is an artificial/computer controlled player which can participate in a game of Quake with other players. Properly programmed, a QuakeBot can pose quite a challenge to the best of human players. First of all, a bot has perfect aim -- it can hit with every shot (this can actually be quite annoying to humans actually, more about that later). Second, a bot can have perfect memory. It can calculate when a certain item will respawn, or can recognize patterns in opponents' actions. Finally, it is also possible to have eyes in the back of the bot's head -- it can see 360o all around (which makes it very hard to sneak up on).
There are two general types of QuakeBots, categorized by where the bot program is executed: server side and client side.
Server Side QuakeBot
A server side QuakeBot is a bot program, written using Quake-C, that is controlled by the Quake server. These type of bots can have quite an advantage over a human player. Since they are controlled by the Quake server, the bot can have information that a normal player would not normally have access to -- such as the location and status (health, ammo, etc.) of other players as well as being able to see through walls! Also, since it is run on the server, the bot program must have physical access to the server itself and cannot be run remotely.
Client Side QuakeBot
The second type of QuakeBot is the client side QuakeBot. As the name implies, the bot is not run on the server but on the client (which can be remote or local). To the Quake server, a client side bot is an actual player. The bot connects to the server just like a normal client. Since this type of bot is not run on the server the bot has only the information the server sends it. This way it cannot have any more information than a human opponent would have - well, sometimes maybe a little more information. The server uses quick calculations to determine if an entity (object) is visible by the player, so it may send updates for entities that cannot actually be seen. So the bot may be able to see around some corners, but it is nothing like seeing through walls like a server side (Quake-C) bot. As the client side bot is run remotely to the server, it is a stand-alone program. Thus, it can be written in any language the programmer wishes such as C, C++, Pascal, assembly, Cobol, Fortran, BASIC, etc. Also, because the bot runs on a remote system, there is no limit as to what type of machine (PC, Mac, Unix, etc.) the bot can run on (just so long as it can communicate with the server via TCP/IP, modem, or serial cable).
Since the client side QuakeBot is more for the "average" user to use on remote machines (all of us cannot have an internet Quake server running 24-hours a day), I decided to create Itchy. Some of the information on this page deals with bots in general. However, most of it is intended to address client side bots. It has been a lot of fun working on my bot. I have learned about network programming, graphics, and BSP trees. And I am still learning more every day I work on Itchy.
Copyright © 1997 Chad Dreveny
All rights reserved.