How-To: IOQuake3 Linux Tips n’ Tricks

I had to build a copy of IOQuake3 (Q3 from now on) the other day, as the version I had wouldn’t spawn bots on 64-bit Linux. Did that – worked well, but I found out a couple of other things you can do and fixes you can make to maximise the entire Q3 experience, so I thought I’d jot ’em down…

Run At Any Resolution

By default, Q3 gives you a rather poor list of available resolutions – to see what’s available, just hit the tilde key (i.e. ` – backtick, just left of the “1” key) and type: \modelist and you’ll see something like this:

ioquake3 - modelist

Well, we can do better than that – just enter the following couple of lines (changing the width and height to any valid, known resolution) and you’re set! Personally, I use these:

\r_mode = -1
\r_customwidth 1920
\r_customheight 1080

And presto – full resolution! Be aware than if change any options in the Options | System part of Q3 it’ll override your custom resolution, so you’ll need to set it back by repeating the above lines.

ioquake3 - custom resolution

You might see some people talking about changing \r_customaspect (which by default simply has the value 1), but I didn’t really see it doing a great deal. But if you want to experiment yourself, your aspect ratio is just your horizontal resolution divided by your vertical resolution, so for me it’d be 1920 divided by 1080, which gives 1.7777778, so I might put it just as 1.7 or 1.8 – but really, I didn’t see much if any difference when I’ve messed with it, apart from a possible slowdown when I actually used 1.77777778, which could have just been my perception of things… I did a quick side-by-side comparison with different r_customaspect values and did a \vid_restart between each one:

ioquake3 - custom aspect difference [None!]

Record and Play Demos

To record demos (i.e. record you playing against your mates or randoms) you need two commands which you can happily issue from the command window (i.e. stab tilda and type ’em):

  • record – records a demo
  • stoprecord – you guessed it, stops the recording…

However, typing these at the prompt can be a pain, so why not just bind them to some keys? You can do this easily enough by opening the file ~/.q3a/baseq3/q3config.cfg and adding the following lines somewhere in it (then saving it, obv!):

bind F5 "record"
bind F6 "stoprecord"

Now, all you need to do is stab F5 to start recording a game and F6 to stop the recording. You might see some moaning about needing g_syncronousclients 1 set, but you can safely ignore it as it’s a legacy requirement that doesn’t even exist in recent versions of Q3.

Your demo will be recorded with the filename demoXXXX.dm_68, where XXXX is a number starting at 0000 and going upwards with each demo recorded. It’ll be saved in the folder ~/.q3a/baseq3/demos/, but when you go to play it from the Demos part of the main menu – it won’t play. Instead, it’ll come up with the error “Couldn’t open demos/demo0000.dm_68” or the like:

ioquake3 demo error

The fix/workaround for this is to go to the location of your demos (~/.q3a/baseq3/demos/) and RENAME THE FILE TO ALL CAPITALS! No, really. I guess this is a really old error which has reared it’s ugly head because Windows systems aren’t case sensitive (so myfile.txt, MYFILE.TXT and MyFiLe.TxT are all seen as the same thing to Windows) whereas Linux takes case sensitivity into account… I’m tempted to go digging in the code and apply an upcase statement to the demo filename retrieval mechanism…


I guess those are the main two things I’ve been concerned about getting working properly, besides getting the thing to work in the first place, so I guess I’ll leave the VOIP stuff until I’ve got some more time… Got any comments, suggestions, improvements? Sling ’em in the comments! Cheers! :D

One thought on “How-To: IOQuake3 Linux Tips n’ Tricks”

Leave a Reply

Your email address will not be published.

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