QuakeBots


What is a QuakeBot?

A QuakeBot is a program that runs on a system, connects to a Quake server and plays like a human opponent. The idea is to create a opponent that provides challenging deathmatch play. Theoretically, the players in the game shouldn't know the difference, unless the Bot/Programmer wants them to.

Why a QuakeBot?

Simple. Why not?

For starters, the artificial intelligence of the monsters inside Quake, although much better than Doom, is limited. They have a couple different settings based on what difficulty you select. A bot framework could be developed that would allow different personality modules to be "plugged in" allowing a wide arrangement of opponents. A newbie bot could provide a little challenge for the beginning players while a stud bot could rock your world. Think you're a good player? Could you compete against a opponent that could track the regen times of all the objects and weapons in a level and could shoot with deadly accuracy? A bot can. No, we are not talking about cheating here. The bot isn't running local to the server (although it could). It knows what you know. It's just capable of remembering more and processing it quicker. Deal with it.

Have you ever been on a server that was empty? Or maybe on one that had only two players and was huge? Boring! Bots can solve this problem. They could log on and take up the slack left by empty player slots. Once the server started filling up, they could simply begin logging out to allow more room for human players. As players left, the bots could take up some of the room left, giving a more "rewarding" gaming experience.

Bots can enhance game play by joining you in your frag quest. Ever had some weenie shack up in the rocket launcher room with 99 rockets and begin a reign of terror upon intruders? Send a couple of bots in to flush 'em out. Bots can be your buddies, piers or mindless little grunts. Form an army and take control of a wad. Create a new type of game play and let the bots referee. Or take a couple into the rocket launcher room and be the weenie. >:)

How about the technical challenge. Once a basic bot framework is built, the rest would be left to the personality designers. Could a bot be built that cannot be distinguished from a human player? People could gain insight into the gaming mind and produce a better artificial opponent. Got an idea for new monster AI? Test it.

Finally, there is the pure form of the challenge. Do you understand the human/bot psyche? Think so? PROVE IT! Bot vs. Bot: The Ultimate Challenge. Who is the best programmer? This is an easy question to answer. The last bot left standing shall decide. Imagine a bot superbowl in which all the best compete for the honor of "Bot Supreme o' the Universe".

Interested yet?

Why Client/Server?

Flexibility - You can do anything in C. AI can be as complex as you can imagine.

Accountability - You can't cheat the game. You do have some advantages over carbon based players, but they are limited.

Universality - A Client/Server QuakeBot can run on Unix, Linux, Mac's, etc. This limitation is based on the port.

Speed - A client based QuakeBot doesn't hog server resources to perform it's own calculations. It hogs it's own. Therefore it can be as complex as it likes without slowing down the server.

Our Approach

Our project, QuakeBot C/S, consists of developing a functional core around which different developers can contribute their own AI modules. This central core will deal with the communications and low level functions required for basic bot operations. The heuristic or AI of the bot would consist of rulesets that would vary from bot to bot. These AI portions will be modular and replaceable. By simply changing the module, the bot would completely change function. If John Q. Smith comes up with a new AI algorithm and it adheres to the specifications, then you could swap it in like batteries. This way, as time goes along and AI gets more sophisticated, the bot will too.

Additionally, QuakeBot C/S will incorporate InterBot Communications. This is a peer connection via sockets, not say commands, that will allow bots based on the QuakeBot C/S core to communicate. Your bot will be able to query and command other bots as long as you have proper clearance. (We don't want those pesky humans changing the commands, now do we?) Want to make a heard of bots? No problem. Just figure out what commands you want to send. The core will do the rest.

Central to the project is the QuakeBot Handbook. This document covers the Quake Client/Server communications protocol, entity characteristics and guidelines for developing your own bot based on the QuakeBot C/S specifications. These are not necessarily our ideas but yours. Many suggestions have come from individuals involved in their own bot projects and others just wanting to add their 2 cents worth. Check it out and see what you think.

All QuakeBot C/S releases include source. Why? Because I want to. Nothing pisses me off more than a cool executable that doesn't seem to work in my configuration. Besides, the idea is to play and learn. Well, you can. I have no problem releasing source. All I ask is that all derivative works pay proper homage to their origins. After that, go to town.

Developers

- Jim Rorie - Network programmer and hack extrodinare. Can perform incredibly complicated tasks with ease while screwing up simple ones. Dealing with specifications, Client/Server decoding, C++ port, primary development and other mundane tasks.

- John Simmerman - AI creator and idea generator. Usually ends up fixing BigBadJim's screw ups. Great coder if you want it to do something other than spec.

Last Word

This should give you an idea of where we are coming from. It is a big project. Don't think for one minute that one group will achieve this grand design. It will take many people working together to solve the challenges that lie ahead. It is best to work together. Lets us know your ideas.


Return to The QuakeBot Page