ioquake3: “BotAISetupClient failed” error on 64-bit Linux

Post

It’s been more than 10 years since I stopped playing any computer games. My interest ended with the great Commandos 2 but I have some sweet memories of Duke Nukem 3D, StarCraft and Quake III Arena. Out of nostalgia I recently decided to try running Quake III on my 64-bit Ubuntu 13.10. That’s when I encountered the error mentioned in the title and it took me a bit of time to figure out how to fix it.

Quick re-cap of ioquake3 installation

I downloaded the engine and data installer files from the ioquake3 download page and run them. Then I obtained a dodgy copy of the pak0.pk3 data file and copied it into the /usr/local/games/ioquake3/baseq3 directory.  This file is not part of the installation because unlike the engine it’s a licensed file. In my defense, I do own the original Quake III Arena CD but my current machine doesn’t have a CD drive so I had no means of copying the file from it.

“BotAISetupClient failed” error

I run the game, created an arena with a couple of bots and started the fight. I kept running for a minute, praising the bots’ intelligence while mumbling that going into a hide from such a mighty opponent as myself is the only reasonable thing one can do (fact: I actually suck at the game). THEN I realized the bots are simply not there. [sigh] I tried to add them again and noticed the “BotAISetupClient failed” message in the console. After some Googling, I found a post that explains that this can be fixed by re-compiling the game. I didn’t feel like going into that hassle so was happy that somebody in the discussion suggested a simpler fix: renaming one of the files inside the pak0.pk3 data pack. As the .pk3 file is in fact a ZIP file (see Wikipedia), it’s quite easy. For those of you who are new to Linux, follow these instructions:

The game’s directory is probably writable only to root so start by using its account:

sudo su

The next set of commands does the following:

  1. Changes the working directory to the one where ioquake3’s data files are located.
  2. Backups the original pak0.pk3 file.
  3. Renames the crucial file inside the .pk3 pack from chars.h to charsh” (<- double quotation mark at the end)

Let’s do it:

cd /usr/local/games/ioquake3/baseq3/
cp pak0.pk3 pak0.pk3.bak
echo -e "@ botfiles/chars.h\n@=botfiles/charsh\"" | zipnote -w pak0.pk3
  • April 15, 2014 Published: April 15, 2014
  • Tags: technology