Deathmatch With Bots

If you're in the mood for some deathmatch but can't find a good online game, Quake still has you covered. Grab a "bots" mod and get simulated opponents to frag and be fragged by. Work off your stress with AI punching bags and explore hundreds of maps.

This guide is also hosted at the Steam community site: Deathmatch With Bots
If you have comments, questions, corrections, or additions, please post a comment on the guide over there. Or, you can send me an email at my address at the bottom of this page.

Table of Contents

Bots?

Artificial intelligence opponents – “bots” – are not available in the plain vanilla Quake game as originally released by id software, but mods (add-ons) to provide bot skirmish functionality have been among the most popular Quake third-party content almost since the beginning.

(Left: a screenshot I took in 1997 playing against an Omicron bot; Right: FBCA bots moshing in 2013)

The purpose of a bot mod is to let you play a multiplayer gametype, such as FFA or team deathmatch, with the bots standing in for human opponents. Now, bots are never really an accurate replacement for humans, since even the smartest Quake bots don't have much brainpower in the “high level” game like predicting opponent routes or coordinating team strategies. But bots can be a fun way to learn a map or just burn some time shootin' stuff. And if you're playing FFA then a bot game can be nearly indistinguishable from a game on a public server.

The first widely used Quake bot was the Reaper bot by Steven Polge, who eventually went on to work at Epic. It was never quite finished and polished up, but the Reaper (along with Cameron Newham's Eliminator bot) was a cool demonstration of possibilities that kicked off a long history of bot mods in Quake and other games.

The Reaper bot probably isn't what you would want to play with these days, so this guide is going to cover some of the later bot mods that would be a better choice:

  • Omicron
  • FrikBot X++ (FBX++)
  • Frogbot Clan Arena (FBCA)

If you'd like to learn more about these bot mods (or their progenitors) you might be interested in the websites for Omicron, FrikBot X, and Frogbot. But I'd recommend not getting any downloads or following instructions from those sites; they're outdated in various ways. Follow the guide below!

What to Read

This guide is fairly comprehensive… basically a reference. If you're a complete newbie or just impatient, you probably want to hit the “Quick Start” section and play around with that stuff for a while. Finish the rest of the guide when you want to figure out what is really going on and how to reconfigure your games.

If you're already familiar with Quake and mods, and you want to get your hands dirty: you can jump right to the “Mod Files” and “Extra Map Support” sections. Come back and check the other sections later, or if you run across some confusing behavior.

If you already know what file you want and you're just coming back to this guide to get a download link, head for the “Link Recap” section at the end.

Quick Start

As you can see from the size of this guide, multiple bot mods exist and they can be configured in many different ways. If you want to get started as quickly as possible, the downloads in this section should help. When you want to know more then you can check out the rest of the guide.

If you use one of these quickstart bundles without changing anything, then you will be launching Quake into a free-for-all bot match. Press “b” to add a bot or “n” to remove a bot. Whenever the fraglimit is hit then Quake will randomly pick a new map to play on.

See the included quickstart readme file for more details. You can also look at the “quickstart.cfg” file inside the mod folder to see how it is configuring the game, and edit that file if you like.

• For most Quake engines…

If you like to play Quake using the original Quake (WinQuake) or GLQuake programs, then the FBX++ mod is a good choice. (But see the “GLQuake Issues” section below.) This mod will also work if you use many of the modern Quake engines: DarkPlaces, QuakeSpasm, Fitzquake Mark V, DirectQ, qbism Super8, ProQuake, or Qrack.

Grab the FBX++ quickstart bundle. This contains the FBX++ downloads from throughout this guide, ready to go in a mod folder named “frikbot”. Just put the “frikbot” folder next to your “id1” folder.

The “frikbot_quickstart_readme.txt” file describes the command-line options that you should use to launch Quake in order to play against these bots. The “glquake-bots-ffa-cycle.bat” batch file can be used to launch the Windows version of GLQuake with the right options; if you are using some other Quake engine then you can of course edit the batch file to change the name of the Quake executable, or create other batch files or shortcuts.

Note: there is also a version of FBCA available for these Quake engines. It'll take me some time to work those details into this guide; for now, just see the description for NetQuake FBCA in the “Alternatives” section near the end of the guide.

• QuakeWorld

If you really prefer the QuakeWorld style of play, then the easiest way to get some bot matches going is to use the ezQuake engine and the FBCA mod. For what it's worth, this is the combo that I like.

You can get the ezQuake engine by itself or as part of the nQuake package. (nQuake actually includes some bot code but in this quickstart I'll ignore that… the rest of the guide goes into more details.)

Grab the FBCA quickstart bundle. This contains the FBCA downloads from throughout this guide, ready to go in a mod folder named “fbca”. Just put the “fbca” folder next to your “id1” folder.

The “fbca_quickstart_readme.txt” file describes the command-line options that you should use to launch Quake in order to play against these bots. The “ezquake-bots-ffa-cycle.bat” batch file can be used to launch the Windows version of ezQuake with the right options.

(The FTE engine can be used similarly to ezQuake. If you have a recent build of FTE, you can edit the above batch file to make it launch the FTE executable instead, using the same command line options.)

The original QuakeWorld and GLQuakeWorld programs are harder to use for playing bots; more about that in the “Multiplayer Info” section below.

GLQuake Issues

The original GLQuake engine has a bug that can occur when switching maps. If the new map uses a texture that has the same name as one of the current map's textures, but has different pixel content, then GLQuake will crash with a “GL_LoadTexture: cache mismatch” error dialog.

This bug doesn't have anything to do with bots specifically, and it doesn't happen often. But it becomes a little more likely to happen if you are randomly playing through a lot of maps. If you absolutely can't deal with the occasional crash in a sequence of bot matches, then use some other Quake engine.

Multiplayer Info

A game played against bots is a multiplayer game. It doesn't just look like a multiplayer game; as far as Quake is concerned, it really is one. You can even have other human players join in if you like. Quake is just running some modified code to generate AI players which take up some or all of the player slots that would normally be occupied by humans.

Because of this factoid, you need to understand at least a little bit about Quake multiplayer before you choose and use a bot.

• NetQuake vs. QuakeWorld

These are the fundamentals of Quake multiplayer technology:

  • There are many different Quake engines (programs that can run Quake). You get four Quake engines from Steam, but there are other more modern Quake engines that you can freely download.

  • There are two different Quake multiplayer technologies: NetQuake and QuakeWorld.

  • A Quake engine may be able to join a NetQuake multiplayer game (as a “client”) or host the game (as a “server”). A Quake engine may also be able to act as a QuakeWorld client or server. A Quake engine may be able to handle one, two, or even three of those roles – but no single program can do all four, as far as I know.

  • A mod that changes Quake code, like bot mods do, must be written to support either NetQuake or QuakeWorld. If the mod author is feeling spunky they can provide code for both NetQuake and QuakeWorld, but it's definitely additional work. Often a mod only supports one or the other.


So you have to make sure you use an appropriate mod with your flavor of Quake engine. For example if you really want to run a particular mod that only supports QuakeWorld, then you'll have to use a Quake engine that supports QuakeWorld.

It's not as confusing as it might sound! I'll put in a handy chart below to help, in the “Choosing the Bot for You” section. Also if you want to learn more about modern Quake engines then hop over to the Quake Engines guide: Quake Engines, Old and New

• Dedicated Server vs. Listen Server

There are two different ways to launch and play in a multiplayer game:

  • You can run a server program that loads the mod, and then run a separate client program that connects to the server. This is known as using a “dedicated server”. The server might or might not be running on the same computer as the client.

  • Or you could run a single program that loads the mod and supports acting as both client and server. This is known as using a “listen server”. (If you use the in-game menus in Quake to create a multiplayer game that other players can join, you are creating a listen server.)


There are various reasons to use a dedicated server, but most of them don't apply if you are playing by yourself and you are using a computer from the 21st century. Two reasons that you may still care about:

  • The original QuakeWorld and GLQuakeWorld programs cannot be used as listen servers – they are only client programs. If you insist on using either of those clients then you'll have to use a dedicated server to run the mod. However, I would instead recommend using a modern Quake engine that can act as a QuakeWorld listen server (ezQuake or FTE).

  • Player movement physics can behave a little differently between dedicated server and listen server. So if you're trying to perfect some difficult movement tricks that you want to use in “real” multiplayer games on some internet public server – which will be a dedicated server – then you could want to use a dedicated server in your practice.


Speaking just for myself: if I want to blast through some bots for a while then I don't care about the physics nuances of listen servers (and honestly I'm not a good enough player for it to matter anyway). I run a modern Quake engine as a listen server when I want to play with bots, as do most folks, and so for now this guide will mostly assume that you are using a listen server.

If you want to use a dedicated server then almost everything in this discussion of bot mods will still be useful, but you would need to figure out some additional stuff about getting the right server program, configuring and starting the server, and how to send it commands.

Choosing the Bot for You

• Multiplayer Type

Let's tackle the NetQuake/QuakeWorld distinction first.

Omicron and FBX++ are NetQuake mods.

FBCA is a QuakeWorld mod.

(Note: there is also a version of FBCA available for NetQuake. It'll take me some time to work those details into this guide; for now, just see the description for NetQuake FBCA in the “Alternatives” section near the end of the guide.)

Among the original four Quake engines provided by Steam, Quake and GLQuake are the only ones that can be used as listen servers, and they are NetQuake engines. The QuakeWorld and GLQuakeWorld programs are (surprise!) QuakeWorld clients.

The engine that Steam just calls “Quake” is more usually known as “WinQuake”, because it is a version of Quake rewritten to use the Windows operating system rather than DOS. Just FYI in case you see references to WinQuake elsewhere.

Steam doesn't give you the original DOS Quake engine, but there's not really any reason to use the DOS version these days.


Modern Quake engines act as NetQuake and/or QuakeWorld clients and/or servers as described in the Quake Engines guide linked above.

To make things as clear as possible, here's a table that shows which engine can be used as a listen server for which mod. Note that for most of these engine/mod combos I've only done a very quick test, so if anyone has more experience that contradicts this table let me know.

Engine Omicron FBX++ FBCA
(GL)Quake * *  
(GL)QuakeWorld      
ezQuake     *
FTE     *
Fodquake      
DarkPlaces   *  
QuakeSpasm * *  
Fitzquake Mark V * *  
DirectQ * *  
Engoo      
qbism Super8 * *  
ProQuake * *  
Qrack * *  


Notes:

  • Since DarkPlaces supports NetQuake multiplayer, it should be a candidate for using Omicron bots. However when I've tested Omicron with multiple versions of DarkPlaces, the bots were always stuck in place unable to move.
  • When using Engoo, both Omicron and FBX++ bots have moderate-to-severe difficulties navigating correctly. This isn't entirely a surprise since Engoo's multiplayer support is described as “COMPLETELY UNTESTED”.

• Features

Besides the NetQuake/QuakeWorld distinction, there are a few other criteria that can affect your bot choice.

First, there's just the basic fact that each bot plays a little differently. FBX++ and FBCA have also had more work put into them over the years, compared to Omicron which was last modified in 1998.

All of these bot mods support playing deathmatch with its original 3 varieties of item rules (modes), and as teamplay/duel/FFA. Omicron also supports duel Rocket Arena, and deathmatch mode 4. FBCA also supports Clan Arena, and a few other deathmatch modes.

And finally: all these bots know how to play at least some of the original deathmatch maps, but the mods differ in how they support additional maps. There are various time-intensive methods of creating bot support for a map, but these three mods each have ways to let you take advantage of the hard work that someone else has already done. The “Extra Map Support” section below covers the details.

Mod Files


(each mod gets its own new folder inside your Quake folder)

negke has created a nice guide to using custom maps and mods, which applies to bot mods as well, so you probably want to check that out: Custom Singleplayer Levels

I had a brief description of the process here too, and I'll just leave it in below. Then we'll get to the specific downloads that you need for the various bot mods.

To play a mod, you first need to download and “install” it, but installing a mod generally just involves dropping the files into the right spot in your existing Quake installation.

Every Quake mod is placed into its own folder. This folder should be placed next to your “id1” folder. Usually (at least on Windows systems) this means that you will be creating the mod folder inside the same folder that contains your Quake engine executable.

For a default Steam installation of Quake, the location you're looking for is the “C:\Program Files (x86)\Steam\steamapps\common\quake” folder … that is where your Quake executables and “id1” folder are, and that's where you should create any mod folders. If you've installed Steam somewhere else then look for “steamapps\common\quake” there. (Personally I do like to keep my games, including Steam games, somewhere outside of the Program Files folders.)

After creating the folder for a mod, put the mod's files in there and you're done. Generally you'll receive the mod in a zipfile or some other compressed archive, so you'll need to open up that archive and extract its contents into the mod folder. Any “.dat”, “.pak”, or “.pk3” files go directly into the mod folder; other files will often go into a subfolder, like “.bsp” files go into a “maps” subfolder. The files should already be in the correct arrangement in the archive that you downloaded, so just preserve that arrangement when you put them into the mod folder that you created.

While installing a mod is almost always super-simple, you should always read whatever documentation comes with it. Just in case.

You can install as many mods as you like. When you run Quake you will choose which mod you want to activate for that session; that will be covered in the “Launching a Mod” section below.

Here's the files you would need for installing each bot mod:

• Omicron

Download: Omicron version 1.02 (with fixes)

This is the Omicron bot created by Jan Paul van Waveren (who also worked on the Quake 2 Gladiator bot and was later hired by id software for Quake 3). A few minor fixes by me (see readme-fixes.txt for details). Maps supported out-of-the-box: dm1-dm6. See the “Extra Map Support” section below for more map support.

• FBX++

Download: FBX++

The FrikBot code was created by Ryan Smith. FBX++ has a few additional changes by “Igor9” and a fix by me (see readme_tweaks.txt for details). Maps supported out-of-the-box: dm1-dm6. See the “Extra Map Support” section below for more map support.

• FBCA with nQuake

If you have installed the nQuake package, you already have a version of FBCA installed that has almost exactly the same functionality as the standalone mod.

However, this version of FBCA is different enough that the sections of this guide will split FBCA discussion into two parts: one part for nQuake users, and one part for folks that have installed just the FBCA mod.

If you don't have nQuake, you can take a detour to check it out and see if you want it… if you don't, then skip ahead to “FBCA without nQuake” below.

The Frogbot code was created by Robert Field. The version of FBCA included with nQuake is 1.01kt, a modification of the original Frogbot by “ParboiL” and several other credited folks. The nQuake version also credits “Vegetous”. (I can't tell if extra map support was provided by “Trinca”, but I would guess so.)

The nQuake FBCA content is all contained inside the file “frogbot.pk3” in your “qw” folder. You don't need to do anything to this file… it is ready for playing. If you do want to look inside it, it's just a zip archive with a different-than-usual filename extension. If you'd rather not bother extracting the documentation you can download the docs here.

Unlike the other “bare” mods described in this section, the version of FBCA included with nQuake already has support for extra maps. nQuake comes bundled with some but not (by a long shot) all of those maps; you can get all the maps in the Frogbot Map Pack linked in the “Extra Map Support” section below.

Note: The separate downloadable version of FBCA described below does have just a few more fixes and changes, but personally I don't feel like I have any reason to separately install FBCA if I already have nQuake.

• FBCA without nQuake

Download: FBCA version 1.02kt beta

If you are an ezQuake user, you probably want to name the folder for this mod “fbca”. ezQuake has a somewhat handy in-game menu for launching bot matches, and it assumes that if you have a separately installed FBCA mod (as opposed to the one that comes with nQuake) that you have put it in a folder named “fbca”.

The Frogbot code was created by Robert Field. Frogbot Clan Arena is a modification of the original Frogbot by “ParboiL”, “Tappak”, and several other credited folks. See docs/fbca102kt_eng.txt or docs/fbca102kt_rus.txt for details. Maps supported out-of-the-box: dm3, dm4, dm6, aerowalk, amphi2, crdm2, dranzdm8, e1m2, frobodm2, pkeg1, povdmm4, spinev2, ultrav, ztndm3. See the “Extra Map Support” section below for more map support.

This mod does not come bundled with those extra maps (the ones after dm6 in the list). You can find them at Quake map download sites around the web, or get the Frogbot Map Pack in the “Extra Map Support” section below which includes those maps and many more.

Extra Map Support



(deathmatch map images from wiki.quakeworld.nu)

If you want to play bots on maps beyond the basic deathmatch map set, then you need to download and install a bit more stuff. Different mods require different downloads.

Any additional waypoint files that you download will typically end up in the “maps” subfolder of your mod folder.

The same applies to any map files (“.bsp” files) that are modified to contain waypoint info.

Any unmodified map files can also be placed in the “maps” subfolder of your mod folder, if you only want the maps to be seen by that mod. Or you can place them in the “maps” subfolder of “id1” if you want them to be available every time you run Quake, regardless of mod.

A “.pak” or “.pk3” file that contains maps should be placed directly in the mod folder. Or in the “id1” folder if you want it to always be available to any Quake run.

These are the general rules, but check the instructions that come with the various downloads.

• Omicron

The Omicron bot can learn to play any map, so you don't absolutely need to download anything to play on a new map. But if the bots have to learn a map then they are starting from scratch at the beginning of each game, and it can take them some time to get in the groove.

On Rocket Arena maps I don't think the bots are much handicapped by this. So if you want to play Omicron in its Rocket Arena mode you can just download a pack of collected Rocket Arena maps and go to town. Note that these maps must be played using the Rocket Arena mode of Omicron (or some other mod that has specific Rocket Arena support); they won't work as “normal” deathmatch Quake maps.

When you're playing Omicron with normal deathmatch modes and maps, the story is different. For deathmatch on maps other than dm1-dm6, Omicron will play noticeably better if the map is modified to include waypoint information. So let's see what's involved there.

The “OBOTS.HTM” page that comes with the Omicron download describes how to create waypoint information. Or you can download Omicron waypoint files (“routes”) that other folks have created. There's not a single big bundle of route files, but the archive of Skorpion's Omibot Page has a bunch of routes you can download (don't overlook the subdirectory of route packs).

Once you have an Omicron waypoint file that you have created or downloaded, you need to run through this process:

  • Make a copy of the map file you want to modify.
  • Use the qbsp utility to shove your waypoint information into that new version of the map file, as described in the Omicron docs.
  • Put the modified map into the “maps” subfolder of your Omicron mod folder.


I'm sure that this process is not real attractive to the casual bot-user. Rather than go into more detail about it here, I'll just note that it exists if you want to take advantage of it. But if you want to play on a lot of non-standard deathmatch maps, and you don't think that Omicron learns fast enough on-the-fly, then you might want to try one of the other bot mods instead.

• FBX++

FBX++ supports a few ways to add more map support, but the easiest is to download FrikBot waypoint files and drop them into the “maps” subfolder of your FBX++ mod folder.

For enough map support to keep you busy for a while (506 maps) you should get the Definitive Frikbot Mappack (version 2b) collected by “LightningHunter” and modified a bit by me. This package contains several folders which should be placed in your FBX++ mod folder. It also includes FBX++ in case you didn't get that separately.

Then get the Definitive Frikbot Waypack (version 2) also by “LightningHunter”. Follow the included instructions carefully, since this involves not only getting the waypoint files but also “fixing” some of the maps.

• FBCA with nQuake

The version of FBCA included with nQuake already includes support for 375 maps. Compared to the standalone downloadable version of FBCA, it is only missing support for these maps: br20m, end, oktest1, strafin3. If those 4 missing maps really bother you then you can switch over to the “FBCA without nQuake” style of doing things.

Otherwise just download the Frogbot Map Pack that I collected. This contains almost all of the maps that the nQuake FBCA code supports. The folders in that package can go under “id1” or “qw” since you don't have an FBCA mod folder to put them in.

• FBCA without nQuake

Adding maps to FBCA involves changing the mod's code, but luckily for you someone else has already done this in a big way.

Get an update to the FBCA code (build 379) by “Trinca”. This is a “qwprogs.dat” file that you should put into your FBCA mod folder, replacing the “qwprogs.dat” that was originally there. Your new mod code now supports 379 maps.

Then get the Frogbot Map Pack that I collected. This contains almost all of the maps that Trinca's FBCA code supports.

Launching a Mod

To play a bot match, you need to start Quake in a way that activates the mod and makes Quake ready to host a multiplayer game for some maximum number of players (you+bots). You will also want to make sure that Quake can allocate enough memory. You will need to use command-line options to take care of these things; if you're not familiar with how to use command-line options then read the section about “The Command Line” in this guide: Quake Owner's Manual

You can use the “-listen” command-line option to start Quake as a multiplayer listen server with a certain number of player slots. For example to start with 16 player slots (the max for the original Quake and some other engines) you would use

-listen 16

The actual gameplay will start once you select a map, as described in the “Game Rules” section.

If you use the “Multiplayer” in-game menu (rather than console commands) to start up a game on some map, then that menu action creates a listen server without the need of using the “-listen” option. However with some Quake engines the Multiplayer menu will limit you to 4 player slots, unless you used the “-listen” option to set a higher number of available slots. So the “-listen” option is usually a good thing whether or not you plan to start a game through the menus.

Note that in ezQuake, selecting the Multiplayer menu will start you on a Servers screen that will take a few seconds to find and refresh info about internet servers.

If you see the server refresh happening, you can press ESC to cancel this action so that you can quickly move over to the Create screen.


To make sure that Quake has enough memory to deal with the bots and various configuration scripts, you can use these command-line options:

-zone 2048 -heapsize 192000

Those numbers are in kilobytes so all together that's less than 200MB, which any modern computer should laugh at. Nevertheless if you want to decrease those numbers (or just omit those options altogether) you can, but keep them in mind if you get errors when playing or when executing a configuration script. See the “Limits” section of the Quake Owner's Manual guide, and the command-line documentation linked from that guide, for a few more details.

Which just leaves us with the issue of activating the mod. This can go slightly differently for FBCA than for other mods:

• Omicron or FBX++

Activate the mod using the “-game” command-line option. For example if you want to activate a mod stored in the “omicron” folder, you would use

-game omicron

(For FBX++ users, presumably you have chosen some other folder name. It's just an example!)

Your Quake engine of choice may also provide an in-game menu option to choose a mod folder to activate, so you can of course use that feature if it's available. But the “-game” command-line option will work with any Quake engine.

• FBCA with nQuake

If you're using the version of FBCA included with nQuake, you don't need to use the “-game” option. In the nQuake setup, FBCA is the default code used for QuakeWorld multiplayer games, since “frogbot.pk3” is sitting in the “qw” folder.

If you happen to be using the FTE engine (instead of ezQuake) with the nQuake FBCA setup, there's a quirk you should keep in mind. It's related to the fact that FTE also has some NetQuake support… so when you start a game using FTE it might get confused about whether you want NetQuake or QuakeWorld.

This is not an issue if you use the Multiplayer menu to start a game; that will start a QuakeWorld-style game. It's also not an issue if you've activated a mod folder that only has one kind of code in it, like FBCA which only has QuakeWorld code in the “fbca” folder.

But if you're a) using the console to start a map and b) trying to run QuakeWorld code that is sitting in the “id1” or “qw” folder (such as the FBCA code in “frogbot.pk3”), then you need to make sure to tell FTE what you are trying to do by setting this console variable:
sv_progs qwprogs
After that you can start a map using the “map” console command and FTE will correctly start a game using the available QuakeWorld code.

• FBCA without nQuake

Using the “-game” command-line option may be necessary & doesn't hurt if not. For example, if you want to be sure that a mod in the “fbca” folder is activated, you would use

-game fbca


However, if you're using ezQuake and starting the game using the Multiplayer menu, this isn't necessary. If you use the “Start Bot Match” selection (not “Start Deathmatch”) then ezQuake will automatically activate the “fbca” mod folder.

Game Rules

Once you have Quake running your mod, you need to set the rules of the game.

Some of these rules can be set through the Multiplayer menu if you are creating a game that way, but all of them can be accessed through console variables. Which means that you can either set them manually using the console, or set them on the command line, or put them in a configuration script that you execute. If you're not familiar with the Quake console, check out the sections on “The Console” and “Saving Console Changes” in the Quake Owner's Manual guide: Quake Owner's Manual

The basic settings are shared among all mods, so we'll cover those first before getting into the mod-specific stuff.

One of the most important console commands is “map”, which starts a new game on the map you specify. For example

map dm4

will start a game on dm4. If you already have a game underway when you use the “map” command, the current game will instantly be stopped and a new game started on the specified map.

“fraglimit” and “timelimit” are console variables that set the conditions for ending the game. If “fraglimit” is set to something nonzero, then the game will end when any player gets that many frags; if “timelimit” is set to something nonzero, then the game will end when that many minutes have elapsed. You can set either or both of these limits. Or neither, if you want the game to never end! For example if you want the game to last until some player hits 25 frags, regardless of how long it takes, then you would enter this in the console:

fraglimit 25
timelimit 0


The “deathmatch” variable is another basic setting you should take care of. Its value determines how the weapon/armor/health items behave:

  • deathmatch 1 : An item disappears when it is picked up, then reappears (“respawns”) after a few seconds.
  • deathmatch 2 : Weapon items do not disappear when picked up. All other items disappear permanently when picked up.
  • deathmatch 3 : Weapon items do not disappear when picked up. All other items respawn after a few seconds.

Some mods also support other values for the “deathmatch” variable; check their docs/readme. Higher values for “deathmatch” will mean that players start with all weapons/armor and some amount of health, with various respawn rules for items.

The “teamplay” variable is the last of the basic settings, and it determines how players can damage themselves and each other:

  • teamplay 0 : Appropriate for free-for-all. You can damage yourself or any other player.
  • teamplay 1 : You can't damage the health of players on your team (including yourself), but you'll still damage their armor if you hit them.

Some mods also support other values for the “teamplay” variable; check their docs/readme.

Changes to “deathmatch”, “teamplay”, and some other settings will not take effect until a new game begins.

• Omicron

Read the mod's “OBOTS.HTM” page for details about how to configure games.

The key part is the “menu” console command; this command will bring up an interactive in-game menu that you can navigate using your number keys. The only major thing you can't do with the menu is change to Rocket Arena mode; you have to use the “rocketarena” console command for that.

• FBX++

FBX++ doesn't have any fancy menu for you, so you'll just have to soldier on using console settings/commands described at the start of this section.

Another useful console setting is the FrikBot-specific variable “saved1”. If it is set to 0 (default), then all bots will be removed from the game at every map change. But if you want the set of bots at the end of one map to reappear at the beginning of the next map, set this variable to 1:

saved1 1

This setting will also let players carry their weapons/health/armor from one game into the next.

• FBCA with nQuake

As mentioned before, the nQuake version of FBCA is squirrelled away in a file called “frogbot.pk3” in your “qw” folder. You can extract the documentation out of that zip archive, or just download the docs here.

The FBCA docs can be somewhat confusing because you have the original Frogbot docs in there, then another readme for some experimental Frogbot changes, then another readme about the FBCA changes. But here's the two things you need to know:

1) Along with the FBCA code and docs, “frogbot.pk3” also includes some configuration scripts for setting up all sorts of different gameplay types. These scripts are in the “configs” subfolder and named “duel.cfg”, “2on2.cfg”, “team.cfg”, “arena.cfg”, “clarena.cfg”, and “ffa.cfg”.

The scripts inside “frogbot.pk3” are ready to use; you don't need to extract them. You can though if you want to have a look at the scripts' content; or you can download the extracted scripts here.

You can exec the FBCA scripts from the console to set up and start a game. For example to start a FFA match you would enter

exec configs/ffa.cfg


If you are using the ezQuake engine, then the nQuake installation gave you a configuration that already includes some aliases for doing just this. In the console type “bot_” and press tab to see a list of these 6 aliases. For example a quicker way to start a FFA match would be to enter

bot_ffa


If you use ezQuake's Multiplayer menu to start a bot match, it will execute the appropriate script from that set. (Although the Multiplayer menu doesn't have an option for 2on2.)

2) Once the game has started, enter the “rules” console command to see some other settings that you can play around with. For settings that just have an enabled/disabled state, enter that setting name in the console to flip it.

• FBCA without nQuake

Very similar to FBCA with nQuake, with these differences:

  • If you want to have a look at the configuration scripts, they're in the “configs” subfolder of your FBCA mod folder.
  • No “2on2.cfg” script.
  • No predefined aliases for executing the scripts. Make your own if you like!

Map Cycle


(deathmatch map images from wiki.quakeworld.nu)

When one game ends, another game will start up on the same map unless you have a “map cycle” set up. You could use the “map” command or the Multiplayer menu to start a new game on some map of your choice, but that's annoying if you want to play through a lot of different maps. A map cycle provides some nice automation that rotates your games through a list of maps either in a particular order or randomly.

A map cycle is set up by using console commands. Typically you don't want to have to enter these in the console each time you play; instead you would save them to a script file. For example if you had a sequence of console settings in the file “my_map_cycle.cfg” in your mod folder, you could apply those settings with the console command

exec my_map_cycle.cfg


And there are various ways to make Quake automatically read a configuration when you want it to – using autoexec.cfg, or command-line options, or sticking your settings inside some other script file that is being executed… really it just depends on exactly what you want to do. If you're up to speed on the topics in the Quake Owner's Manual guide and in this guide, then you'll be able to figure it out!

• Omicron

The Omicron mod supports a map cycle with up to 64 entries. The “OBOTS.HTM” page that comes with the mod describes how to set this up, under the “Cycle Map & Map Randomizer” heading.

An Omicron map cycle is set by defining a series of “changelevel” aliases, one for each map in the cycle. For example a very simple three-map cycle that rotates through dm4, dm6, and dm2 would be defined by

alias map1 "changelevel dm4"
alias map2 "changelevel dm6"
alias map3 "changelevel dm2"


The “samelevel” variable is used to control the behavior of the cycle. A positive value will pick maps from the list at random. So you could randomly choose from a 3-map cycle by setting

samelevel 3

(If your cycle size is X, be sure you have defined all the aliases for “map1” up through "mapX".) A negative value will move through that many maps in the specified order, so for example a fixed order for our 3-map cycle would be instituted by

samelevel -3

To ignore the cycle in favor of just repeating the current map over and over, set

samelevel 1


In a randomized cycle, Omicron ensures that you won't see the same map twice in a row.

I don't have any pre-configured Omicron map cycles to provide for download. Be creative!

• FBX++

The FBX++ readme describes map cycles in the “Playing” section under the “Map cycling” heading. It uses the same sort of cycle configuration as Omicron. But instead of a 64-map limit, FBX++ supports an extremely large map cycle that is limited only by the storage available for aliases (which is affected by the “-zone” command-line option) and by the maximum size for config files. As a (slight) downside, a random map cycle in FBX++ doesn't provide any guarantee against getting the same map twice in a row.

If you downloaded all of the extra map support for FBX++, then you have the materials to set up a map cycle that is 506 maps long. Just enter

exec maps.cfg

in the console. This will execute the other config files that begin with “maps-part”; together these config files define one big map cycle, and it's broken up into multiple files just to avoid exceeding the config file size limit.

FBX++ will choose maps from this cycle randomly, because “maps-part1.cfg” sets “samelevel 506”. Remember that a positive “samelevel” value causes random picking.

• FBCA with or without nQuake

FBCA defines a map cycle by using a bunch of “localinfo” console settings. “localinfo A B” means to play map “B” after playing map “A”. For example a very simple three-map cycle that rotates through dm4, dm6, and ztndm3 would be defined by

localinfo dm4 dm6
localinfo dm6 ztndm3
localinfo ztndm3 dm4

If you want to go through the maps in random order you would also define

localinfo ffa_mapqueue 1

Even though that has “ffa” in its name, it works for all game modes. (The queue will be run in-order if the “ffa_mapqueue” localinfo value is unset or zero.)

The size of the mapqueue is limited only by the fact that (most?) Quake engines have a hardcoded limit of storing 32 kilobytes of “localinfo” data.

Some of the predefined config files for FBCA game modes (described in the “Game Rules” section) already set up a map cycle. But you can change the cycle by editing that config file, or by just setting up your own map cycle after executing the game mode's config.

If you downloaded all of the extra map support for FBCA then you have some sample config files for setting up a map cycle, in the “configs” subfolder. See the comments at the top of each of these files for more details.

  • configs/big-cycle-nquake.cfg : Executing this file will set up a map cycle that runs through almost all of the maps supported by the nQuake version of FBCA, except for “arena” maps that don't have weapon items in them.
  • configs/big-cycle-trinca.cfg : Executing this file will set up a map cycle that runs through almost all of the maps supported by Trinca's version of FBCA (from the “Extra Map Support” section), except for “arena” maps that don't have weapon items in them. This is actually only 4 more maps than the nQuake version.
  • configs/ra-cycle.cfg : Executing this file will set up a map cycle of Rocket Arena maps. These maps should be played with the “raspawn” rule enabled, and using some deathmatch mode that spawns players with weapons (because there aren't any weapon items in the maps).
  • configs/dmm4-cycle.cfg : This is similar to “ra-cycle.cfg”, but these are arena maps that were not made for use with the Rocket Arena mod, so they should be played with the “raspawn” rule disabled.
  • configs/ezquake-arena-cycle.cfg : This is a (somewhat experimental) config that will only work with an ezQuake listen server. It cycles through all of the arena-style maps and takes care of setting “raspawn” correctly depending on the map name.


As an example just to make things clear: let's say you're using the nQuake version of FBCA to play FFA. You would first start a FFA game using a configuration for that game mode (as described in the “Game Rules” section). If you're using the default FFA config script that came with nQuake, this will set you up with a randomized 11-map cycle. If you'd rather have a super-huge map cycle, after getting the FFA game set up you could enter

exec configs/big-cycle-nquake.cfg

Joining a Team

Most botmatches are probably FFA or perhaps 1-on-1. But if you want to play a team mode, then you need to put yourself on one of the available teams. So:

In Quake, teams have colors.

In the original NetQuake multiplayer code, players were separated onto teams based on their pants color. QuakeWorld still separated teams by color but added the concept of a team name; generally picking your team name was the important thing, and your color followed from that.

Each bot mod provides a slightly different way of joining a team.

• Omicron

Use the “menu” command to bring up the interactive menu.

If a game is currently running, choose the “stop game” option.

Select the “teamplay” option in the menu until it shows the number of teams you wish to have. (For example, if you want to have 2 teams then select that option twice.)

Now you need to use a console command to join a team. The available commands are “team1”, “team2”, etc. up through the number of teams.

• FBX++

In FBX++, if “teamplay” is set to a value of 1 then you are already on a team. Your team's color is determined by your current pants color. When you first add bots to the opposing team, FBX++ will just choose some other color for that team.

• FBCA with or without nQuake

If you use the provided teamplay game mode scripts, then you will either be automatically be placed on a team or (for Clan Arena) be asked what team you wish to join.

If you are experimenting with your own combinations of settings for teamplay, various things can happen; the bottom line though should be that if the game code doesn't force you to a particular team, then the value of your “team” console variable will provide your team name.

Bot Management

You've got Quake launched with the right mod activated, and the game set up the way you want it… about the only thing left to do is throw some bots in there and play!

You'll also want to determine what “skill” (difficulty) to set the bots at. Whenever you add a bot, it will take on the current skill value. If you later decide to change the skill, your change will only affect bots that you add in the future. If you want to change the skill of current bots you have to remove and re-add them.

• Omicron

Usually you'll want to use the “menu” console command to bring up the interactive menu for starting and stopping games, and adding/removing bots.

Sometimes though it is nice to quickly drop down the console and use one of the Omicron commands (which are listed under the “New console commands” header in the “OBOTS.HTM” page).

The most obviously handy commands are “addbot”, “removebot”, and “removeallbots”. You may want to bind these (or any other) commands to keys, for example

bind b addbot

if you want to add a bot whenever you press the “b” key.

The “skill” console variable controls the difficulty of the next bot that you add. It can be set for any value from 0 to 3. And although the interactive menu only supports values of 0/1/2/3, if you use the console you can set it to fractional values like

skill 2.5

• FBX++

The FBX++ bot management commands are simple:

  • impulse 100 : Add a bot. In a teamplay game mode this will add a bot on your own team.
  • impulse 101 : In a teamplay game mode this will add a bot to the enemy team.
  • impulse 102 : Remove the most recently added bot.


If you don't want to type in impulse commands, you can set up aliases for them and/or bind the commands to keys. The included file “bot.cfg” is an example of some simple aliases. Or for example if you want to add a bot every time you press the “b” key you could do

bind b "impulse 100"


Set the “skill” console variable to an integer value from 0 to 3 to set the difficulty of the next bot added. (Unlike Omicron, you can't use fractional values.)

As noted in the “Game Rules” section, when you change or restart the map all the bots will leave, unless you set

saved1 1

• FBCA with or without nQuake

FBCA has the most in-depth set of bot management tools among these mods, but the basic commands are still pretty straightforward.

The commands “addbot”, “add2bots”, “add3bots”, and “add4bots” will add 1-4 bots into the game. If you're playing in a team mode, the bots will be added in a way to balance the team sizes as much as possible. You may want to bind these (or any other) commands to keys, for example

bind b addbot

if you want to add a bot whenever you press the “b” key.

If you want to add a bot to a specific team, you can use the command "addbotX" where X is a number from 0 to 13 that corresponds to a Quake player color. The bot will be added to the team that is using that color. Commonly used team colors are 13 (blue), 4 (red), 12 (yellow), and 3 (green). So for example to add a bot to the red team you would use

addbot4

However if the “autosteams” rule (no that is not a typo) is enabled to force team balance then the requested color for a bot doesn't matter; it will always choose a team based on team size.

“removebot” removes the last-added bot, and “removeallbots” does what it says.

Unlike in other bot mods, the skill values for FBCA bots range from 0-20. And as far as I can tell, on a listen server you can't just set the “skill” console variable to the desired value. Bot skill starts at 10 by default (5 if using nQuake), and you can easily tweak this by using the “skillup” and “skilldown” commands. Or you can directly set the skill value by using the “skill=” command and then entering an impulse command with the value you want. For example, you can set bot skill to 7 with

skill=
impulse 7


Note that some of the FBCA game modes start out with a warmup period, where everyone can bounce around with infinite health and ammo. Once you're ready to start the game: enter the console command “ready”, or press F3, or else press ESC and choose “ready” from the menu.

Alternatives

• Deathmatch

If you don't like any of the deathmatch bots described in this guide… you're kind of picky, aren't you? But you do have some other options available:

  • If you really like the Frogbot playstyle but you would rather play NetQuake, there's a NetQuake version of FBCA as modified by the prolific Quake engine coder “Baker”. I need to find the time to investigate this more and then work the details into this guide. It does include a lot of the map waypoints created by “Trinca”, and I believe that the Frogbot Map Pack should cover all of those supported maps. This mod should be configurable/controllable in a way that is similar to the QuakeWorld version of FBCA.

  • If you really like the FrikBot playstyle but you would rather play QuakeWorld (which FBX++ doesn't support), then you can try the original FrikBot X. But the QuakeWorld version of FrikBot X can't load waypoint files, only supports deathmatch modes 1&2, and only knows how to play the original deathmatch maps (dm1-dm6).

  • If you're playing NetQuake on a map that doesn't have FrikBot waypoints, and it isn't supported by NetQuake FBCA, and you don't like the Omicron bot… well, you can stick with FBX++ if you are willing to create and use your own waypoint files. The FrikBot X documentation covers this pretty well (but it will involve some work).

  • If you're playing QuakeWorld and you want bot support for a map that isn't covered by FBCA, and you're feeling industrious, you could research the process for creating and using your own Frogbot waypoints. Personally I don't know what's involved there. Or you could use the original FrikBot X which does have a QuakeWorld version, and create FrikBot waypoints. Unfortunately QuakeWorld code prevents you from using waypoint files (long story); you'll either have to save the waypoints into code and recompile the mod, or else insert the waypoints into the map file itself. That's getting serious.

  • There are certainly other Quake bots scattered around the internet that you could search out and try. Look for sites that mention Omicron, Frogbot, and FrikBot… they'll probably have pointers to other bot mods as well.

• Capture the Flag

CTF bots are harder to come by than deathmatch bots.

CTFBot+ by Anthony Distler and Drew Davidson is the only competent one that I know of. Even this mod seems to have some problems with bot pathfinding and smooth movement, and if you want good teamplay you'll have to keep giving the bots specific orders. But if you want to play CTF by yourself then this mod seems to be the only game in town. (If you have other suggestions please share.)

I don't have a lot of experience with CTFBot+, and it's different in many ways from the deathmatch bots in this guide, so I'll just share a few notes about it here instead of trying to work it into the body of the guide.

  • It's a NetQuake mod, so you'll need to use a NetQuake-compatible Quake engine. Basically if you can use a Quake program to play Omicron or FBX++ then it should work with CTFBot+ also.

  • There are a bunch of configuration settings for the mod, and part of the setup actually involves compiling the code. Fortunately it comes with a handy “CTF Bot Coordinator” program (Windows only) that lets you pick your options and then takes care of the setup for you. You can then launch Quake from that program, or create a batch file that you can later use to launch Quake with those settings.

  • “CTF Bot Coordinator” assumes by default that the mod is installed in a folder named “ctfbotp”. You can change this if you want, but using a folder named “ctfbotp” will make setup go smoother.

  • You can play CTF on some of the original deathmatch and singleplayer maps, but you need to use “CTF Bot Coordinator” to create new modified versions of those maps. (In the “Maps” menu, choose “id Map Modification”.)

  • “id Map Modification”, and perhaps other operations, will get confused if the path to your Quake installation has spaces in it. If you have this problem and you'd rather not move your Quake stuff to a new path, it's sort of fixable – open up “ctfcoord.ini” in a text editor and replace any occurrences of your Quake path with the DOS-style “short name” version. For example replacing “C:\Program Files (x86)\Steam\steamapps\common\quake” with “C:\PROGRA~2\Steam\steamapps\common\quake”. Icky, but it works.

Link Recap

For convenience here's a collection of all the files (and outside links) in this guide.

• Original Websites

• Quick Start Bundles

• Bot Mods

• Alternative Bot Mods

• nQuake Stuff

• Extra Map Support

• Misc Utilities

Revision History 'n Stuff

• Engine Versions

The most recent date that I checked out the features of these engines and mods was May 03 2015.

The latest stable version of each engine was:

  • ezQuake: version 2.2 from Dec 2013
  • FTE: “latest build” from Apr 2015
  • Fodquake: version 0.3 from Mar 2012
  • DarkPlaces: build 20140513 from May 2014
  • QuakeSpasm: version 0.90.0 from Oct 2014
  • Fitzquake Mark V: revision 15 from Jul 2014
  • DirectQ: version 1.9.0 from Feb 2012
  • Engoo: version 2.77 from Dec 2013
  • qbism Super8: version 235 from Feb 2015
  • ProQuake: version 4.93 from Oct 2012
  • Qrack: version 2.011.3467 from Aug 2011

The latest version of each mod was:

  • Omicron: version 1.02 (with my fixes)
  • FBX++ (my tweak to FBX+)
  • FBCA standalone: version 1.02kt beta
  • FBCA modified by Trinca: build 379
  • nQuake: Mar 2014
  • FBCA included in nQuake: 1.01kt (modified by Vegetous?)

• Guide Change History

2020

  • Dec 06: What, an update? Just modifying the linked Omicron Bots package a bit. Mainly this update fixes some cases in modern Quake engines where you'd get a lot of console error message spew about problems with some of the soundfiles. Also some fixes included for Linux users.

2019

  • Jul 23: fixing broken links

2015

  • May 03: recent builds of FTE have fixed any issues w/ FBCA
  • Mar 05: checked qbism Super8 version 235
  • Feb 04: checked qbism Super8 version 231

2014

  • Oct 20: checked QuakeSpasm version 0.90.0
  • Jul 19: fixed some minor issues with the FrikBot mappack
  • Jul 14: added links to original bot-mod websites
  • Jul 14: checked Fitzquake Mark V revision 15, DarkPlaces build 20140513, and qbism Super8 version 194
  • May 03: checked new version of DarkPlaces
  • Apr 28: checked new version of qbism Super8; removed description of a fixed problem
  • Apr 19: added info about the qbism Super8 engine
  • Apr 18: checked more recent nQuake version; removed description of a fixed problem
  • Apr 18: added info about the Engoo engine

2013

  • Aug 10: added link to negke's guide for playing third-party maps/mods
  • Jul 14: fixes in reaction to the changes in Steam Guide markup behavior
  • Jun 16: added a brief description of Baker's NetQuake FBCA; need to provide more details later
  • Apr 13: checked Fitzquake Mark V revision 9 and QuakeSpasm version 0.85.9
  • Mar 10: checked Fitzquake Mark V revision 8 and DarkPlaces build 20130304
  • Feb 27: latest nQuake version fixes several issues with FBCA bot scripts
  • Feb 16: added “GLQuake Issues” section to warn about cache mismatch errors
  • Feb 16: added “Quick Start” section
  • Feb 07: better workarounds for the nQuake FBCA Clan Arena menu issue
  • Feb 04: more about teamplay, and an nQuake issue with FBCA Clan Arena
  • Feb 04: info about a problem with the nQuake FBCA configs for 2on2/4on4; and a workaround
  • Feb 02: more details about map cycles with Omicron and FBX++
  • Feb 02: more details about issues using FBCA with the FTE engine
  • Feb 02: updates for nQuake 2.3: “frogbot.pk3” instead of “frogbot.pak”; new versions of extracted FBCA configs
  • Feb 01: added “Link Recap” section



This guide is also hosted at the Steam community site: Deathmatch With Bots
If you have comments, questions, corrections, or additions, please post a comment on the guide over there. Or, you can send me an email at my address below.