How-To: Fix Missing Bots in ioquake3 in Linux

I don’t do a lot of PC gaming these days, preferring more to just sling a disc in the 360 or PS3 to get my jollies without all the patch/driver hassle, but you’ve got to have a couple of linux games installed to vent the occasional blood-lust. With that in mind, I grabbed the latest version of ioquake3 earlier, and tried out a single player game, but no bots would join the match, and a look at the shell showed errors along the line of:

^1Error: file bots/default_c.c, line 2: file charsh” not found
^3Warning: couldn’t find skill 1 in bots/default_c.c
^1Error: file bots/default_c.c, line 2: file charsh” not found
^1Error: file bots/default_c.c, line 2: file charsh” not found
^1Error: file bots/default_c.c, line 2: file charsh” not found
^3Warning: couldn’t load any skill from bots/default_c.c
^1Error: file bots/kyonshi_c.c, line 2: file charsh” not found
^3Warning: couldn’t find skill 1 in bots/kyonshi_c.c

Apparently it’s only been an issue with the 64-bit version – but even the older version I had was showing the same problem (which I don’t quite get how) – anyways, I recompiled ioquake3 and it’s all fixed up – and thought that if anyone else was up against the same issue it might be useful to know how to fix it quickly and easily.

1.) Get the source

For this we need to have git installed to download the source code, if you do – great!, if not, then run this first:

sudo apt-get install git

With git in place, grab the source code with:

git clone

2.) Build it

Go into the downloaded ioq3 folder cd ioq3 and then build that bad-boy with this complex command:


Geez, linux is tech ;) To be fair, you’ll need the sdl-dev packages installed (for example: libsdl1.2-dev) and of course build-essential – I didn’t have to get any extra packages, it just built.

3.) Pick a place to stick it

Because I’m the only user of my laptop, I have a folder called Games in my home directory, so I just created ~/Games/ioquake3 and then copied all the files from the build/release-linux-x86_64 sub-folder (created when you successfully built ioquake using that complex make command – your folder won’t have _64 on the end if you built it on a 32-bit system) to ~/Games/ioquake3/, and then copied the pak0 to pak8.pk3 files from my original Windows install of Quake III into the baseq3 subfolder of the ioquake3 folder.

4.) Frag on!

Launch ioquake3.x86_64 and get your game on =D

I have absolutely no idea how they’ve got motion blur on the game (unless it’s applied post-game to the captured footage) – but it looks AWESOME! Want! If you know how they did it please feel free to smack me with the clue-stick in the comments! Cheers! =D

Update: It turns out they’re using the Excessive Plus mod in the video (which works fine with ioquake), still no clue about the motion blur though…

Another Update: Turns out this issue exists in the 64-bit version of OpenArena as well as ioquake3. I rebuilt openarena using the 0.81 version from the svn here – but still no dice with getting bots to spawn. Apparently the 32-bit version of OpenArena is unaffected.

13 thoughts on “How-To: Fix Missing Bots in ioquake3 in Linux”

  1. Have this same problem, with both IOQuake and OpenArean since installing 64-bit Lucid. I did not find that recompiling and reinstalling as described above would fix the problem, however.

    1. Well, that’s really odd…

      I didn’t have any problems at all with OpenArena as installed through synaptic – it just worked straight off the bat, it was only ioquake which couldn’t spawn bots. Actually, my bad, OpenArena does not spawn bots, so that’s broken – but the rebuilt ioquake is definitely working fine for me…

      The only other thing I can think of is that there was a lot of cruft in my baseq3 folder from having it on windows with lots of mods installed and I was using a symbolic link to the windows-partition-located baseq3 folder.

      As part of the experimentation to try to get ioquake working I just copied the files pak0.pk3 to pak8.pk3 into the ioquake baseq3 folder, which leaves it pretty untainted. If you’re using a baseq3 folder from any previous installs, it might be worth making sure you’ve got a clean baseq3 folder which should have these (and only these) files n’ folders in it – including the .so files which were built with the new version of ioquake, not the leftover ones from any other install:

      Clean ioquake baseq3 folder

      Alternatively, and I only mention this for completeness, make sure that you’re actually running the newly built version of ioquake, not the existing non-working version by accident! ;)

      Let me know how it works out – because the rebuild and clean-up worked perfectly for me on 10.04 64-bit!

  2. Here’s a quick que on fixing the bots without the pain of recompiling – just copy a file “botfiles/chars.h” from “pak0.pk3″ and rename it to charsh” the quotation marks are nessesery (there is a typo in the source, but well, instead of recompiling it’s quicker to rename the darn file).

  3. Hello,

    Many thanks for posting that – my Intel 64 Ubuntu system has exactly the symptoms you described, and rebuilding the package using your guide sorted it out for me.

    Thank you – wanted to play Q3 on Linux for years and have never managed it up until now!!!


  4. Can’t get it to “make”… it returns me the following:
    In file included from code/client/cl_main.c:28:0:
    code/client/../sys/sys_loadlib.h:39:19: fatal error: SDL.h: No such file or directory
    compilation terminated.
    Makefile:2624: recipe for target ‘build/release-linux-x86_64/client/cl_main.o’ failed
    make[2]: *** [build/release-linux-x86_64/client/cl_main.o] Error 1
    make[2]: Leaving directory ‘/home/jorge/ioquake3/ioq3’
    Makefile:1325: recipe for target ‘targets’ failed
    make[1]: *** [targets] Error 2
    make[1]: Leaving directory ‘/home/jorge/ioquake3/ioq3’
    Makefile:1276: recipe for target ‘release’ failed
    make: *** [release] Error 2

    Can someone help me? I’m a linux noob…

    1. You need to install SDL, these days that’ll be SDL2.

      So, for example, if you were using Ubuntu the required packages would be (I think) libsdl2 and libsdl2-dev, while on Arch linux just having the sdl2 package was enough for me to successfully build ioquake3.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.