QuakeBots - Frequently Asked Questions
Q: How does a client bot work?
A: It emulates the operation of a Quake client by transmitting the same game information as would be sent by a human player running Quake. Clients bots are written in a native language such as C/C++.
Q: How does a QuakeC bot work?
A: It patches the Quake server and allows changes to the normal execution of the game. These changes can be pretty extensive and are written in a script type language, QuakeC, hence the name.
Q: What systems do bots run on?
A: QuakeC bots run on the servers, so they will run on any platform that the Quake server supports. Client bots are written in C/C++ so that they are portable to most platforms. Win95/WinNT are the most widely supported O/S's, but some bots support UNIX and Linux. DOS is not supported and probably wont in the future due to the limitations of the environment.
Q: How do I run a bot?
A: QuakeC bots require a patch to be loaded when you start the server. An example would be:Quake -game <patch name> +map e1m1
This will load the patch and run level e1m1. You should be able to compete against the bot once Quake starts up.
Client bots are different in that they need to connect to server. Examples for running client bots are:
For the Terminator bot:Bot <Server IP>
For QuakeBot C/S V.80QuakeBot +connect <Server IP> +name <Bot Name>
and QuakeBot C/S V.79 and earlier:QuakeBot <Server IP> <Botname>
Q: Why can't I get more that one client bot to run on my machine at a time?
A: This is a limitation of the Quake server, currently. It is only able to handle one connection from a given I.P. because it doesn't keep track of the source port addresses. This may resolved in the future.
The Terminator Bot appears to have overcome this problem to a certain extent. When compiled under a Linux kernel that supports IP Aliasing, you can have several bots running on a machine all connected to the same server. Unfortunately, this has some limitations in that the alias IP's being used must not exist in the current segment. In a standalone network, this is not a consideration.
Q: How many client bots can I run on a server simultaneously?
A: As many as the number of players the server supports. Client bots connect in the same way as a Quake client. The server cannot tell the difference.
Q: Can I play against a bot on the same computer?
A: Yes, with both QuakeC and client bots. QuakeC bots just require you to load the patch when you start the server. The bot should appear when you start the level. Client bots will also work, but the results may be less than expected because of the amount of CPU time allocated to background processes. You are effectively running two Quake clients in this setup. Proxy bots may need to have their proxies disabled or reconfigured in this situation since they operate on the same port as the Quake server.
Q: How can I see what my bot is doing on a server?
A: This varies. Both QuakeBot C/S and the Terminator bot allows a proxy connection so that you can use a Quake client to watch your bot. Zaphbot allows recording of the sessions in the DEM (Demo) format and can be played back later under Quake.
Q: What is a proxy bot?
A: A proxy is a program that forwards network communications from another system. It operates as a relay in some respects. A proxy bot connects to a quake server, runs a bot and allows connection from another Quake client. The connected client can then monitor the action of the proxy bot. The following diagram shows a Quake network environment with a number of clients in different configurations.
In this example, there are three clients connected to 192.168.1.3, a typical Quake server. Client #1 is a system running Quake connected normally to the server. Client #2 consists of two computers, 192.168.1.1 and 192.168.1.2 working in a proxy configuration. 1.2 is a bot connected to the Quake server and also running a proxy server. 1.1 is a Quake client connected to 1.2 as if it were a normal Quake server. In this configuration, 1.2 is the proxy, forwarding the packets received from the server to the Quake client and vice versa. Finally, Client #3 is a similar configuration, but with both the bot and Quake client running on the same system.
Q: So all proxy bots use Quake like a display?
A: No. The previous example is a simple proxy. It just shows you what is happening with your bot. There are also enhanced proxies that manipulate the data radically to perfrom certain tasks. Bots such as the Terminator and Stanford Stoogebot allow you to strengthen your gameplay by letting the bot control some of your actions automatically. This can be as simple as rocket avoidance or as complicated as player targeting. Regardless of the added complexity, they operate in the same way as simple proxy bots.
Note: Quake purists get rather bunged up when they find out your using an enhanced proxy.
Q: Ok, so how do I make a proxy bot work?
A: A proxy bot acts by fooling the Quake client into thinking that it is a true Quake server. To operate a bot in proxy mode, first you need to connect the proxy bot to a server. Once connected, you start Quake and connect to the IP address of the machine that is running the bot. An example session using QuakeBot C/S V0.80.
From a DOS box in Win95 running on IP 192.168.1.1 and a Quake server at 192.168.1.3:QuakeBot +connect 192.168.1.3
Then from another machine or another DOS box on the same machine:q95 +connect 192.168.1.1
Output from the bot should begin to appear on the Quake client.
Q: Can I use a client bot in a null modem or IPX connection?
A: Not currently. All existing client bots use IP for communicating with a server.
Q: Can a client bot compete against a QuakeC bot?
A: Yep. The server must be running the QuakeC bot patch and then you must connect to it with the opponent client bot.
Q: Which are the most evolved bots?
A: Depends on your point of view. The best deathmatch competitors are the QuakeC bots. Currently, the Reaperbot stands out. It can navigate moving platforms. The client bots are still evolving, with the Terminator being the most advanced.
Q: Why is this client bot so stupid!?!?!?!?!?
A: The QuakeC bots have been out for a while since they were easier to make. The specification for the language was immediately made available by id software. And communication is not a factor with QuakeC bots, since they are a part of the server. Therefore, there were developments in QuakeC bots within weeks of the shareware release of Quake.
Client bots, on the other hand, have it rough. They must work from the outside. There is no official protocol specification from id, so programmers/hacks had to use network analyzers and elbow grease to see how the game talked. Once this was done, a network layer had to be created that would emulate this protocol.
This was just to connect to the game!
Next, the client bot developers had to figure out how Quake kept up with stuff in the game. Fortunately, some of this is well documented. This allows the tracking of players. Finally, the bot need to know where is at. This is determined by reading the most ungodly file format on the planet, BSP. Now, that we have done all that, comes the AI.
Give us a break, we are workin' it!
Q: So deathmatch is all that they are good for?
A: No. Several people are using the core client bot communications code to develop their own different applications. One group is recording demos another is keeping clan stats. I see other projects such as using bots as referees in complicated games, but this is a ways off.
Q: What will happen to bots when QuakeWorld comes out?
A: QuakeC bots should be ok, although they may have to be recompiled for the new server. The client bots however, may need to have the network protocol overhauled. Oliver Montanuy has a QuakeWorld Network Protocol Specification that covers the new version. He also has plans to implement a version of his bot to work in the new environment.
Return to The Quakebot Page