- 1 Windows
- 2 Mac OS X
- 3 Linux
- 4 Android/iOS
- 5 HD/High Resolutions
- 6 Using HTTP/FTP Download Support
- 7 QuakeLive mouse acceleration
- 8 SDL Keyboard Differences
- 9 Help! Ioquake3 won't give me an fps of X anymore when setting com_maxfps!
- 10 Using shared libraries instead of qvm
- 11 Using Demo Data Files
- 12 Useful Console Commands
Where are my files? I'm used to them being in the Quake 3 directory!
On Windows, all user specific files such as autogenerated configuration, demos, videos, screenshots, and autodownloaded pk3s are now saved in a directory specific to the user who is running ioquake3.
In order to access this directory more easily, you can also type
%APPDATA%\Quake3\ in the file explorer and hit enter
On Windows 98 and ME, this is usually a directory named:
On Windows 2000 and XP
C:\Documents and Settings\%USERNAME%\Application Data\Quake3\
On Windows Vista, 7, 8, 8.1, and 10
I don't like this!
You can revert to the old single-user behavior by creating a shortcut to your ioquake3 executable with the
fs_homepath cvar set to the directory where ioquake3 is installed. For example:
ioquake3.exe +set fs_homepath "c:\ioquake3"
Mac OS X
We don't currently have an official version of ioquake3 for mobile devices, there are many versions of ioquake3 that you will find if you search app stores for Quake 3. We didn't make them, we can't fix them.
You’re in luck, not only do we have instructions for setting a non-standard resolution, but in HD modes we will display Quake 3 more properly than id’s last version. You can find out your screen resolution from this link. For an older macbook, I’d use these commands in the console:
then if I’m in-game I would use
/vid_restart to restart ioquake3’s video system with the new display resolution.
If I want the game to be fullscreen you can use the
/r_fullscreen 1 command. To set it back to windowed mode you can change the 0 to a 1
Note that the in-game video preferences will not list your new resolution.
Using HTTP/FTP Download Support
Want to download maps and mods faster? If the server you're using supports it, you can!
/cl_allowdownload 1 in the console and hit the enter key.
Changing that number to 0 will disable downloads, here are some other options
- cl_allowdownload 1
- Enable HTTP/FTP and UDP downloads.
- cl_allowdownload 2
- Disable HTTP/FTP downloads, but enable UDP downloads.
- cl_allowdownload 4
- Disable UDP downloads, but enable HTTP/FTP downloads
QuakeLive mouse acceleration
(patch and this text written by TTimo from id)
I've been using an experimental mouse acceleration code for a while, and decided to make it available to everyone. Don't be too worried if you don't understand the explanations below, this is mostly intended for advanced players: To enable it, set cl_mouseAccelStyle 1 (0 is the default/legacy behavior)
New style is controlled with 3 cvars:
The old code (
cl_mouseAccelStyle 0) can be difficult to calibrate because if you have a base sensitivity setup, as soon as you set a non zero acceleration your base sensitivity at low speeds will change as well. The other problem with style 0 is that you are stuck on a square (power of two) acceleration curve.
The new code tries to solve both problems:
Once you setup your sensitivity to feel comfortable and accurate enough for low mouse deltas with no acceleration (cl_mouseAccel 0), you can start increasing
cl_mouseAccel and tweaking
cl_mouseAccelOffset to get the amplification you want for high deltas with little effect on low mouse deltas.
cl_mouseAccel<code> is a power value. Should be >= 1, 2 will be the same power curve as style 0. The higher the value, the faster the amplification grows with the mouse delta.
<code>cl_mouseAccelOffset sets how much base mouse delta will be doubled by acceleration. The closer to zero you bring it, the more acceleration will happen at low speeds. This is also very useful if you are changing to a new mouse with higher dpi, if you go from 500 to 1000 dpi, you can divide your
cl_mouseAccelOffset by two to keep the same overall 'feel' (you will likely gain in precision when you do that, but that is not related to mouse acceleration).
Mouse acceleration is tricky to configure, and when you do you'll have to re-learn your aiming. But you will find that it's very much worth it in the long run.
If you try the new acceleration code and start using it, I'd be very interested by your feedback.
SDL Keyboard Differences
ioquake3 clients have different keyboard behavior compared to the original Quake3 clients.
SDL > 1.2.9 does not support disabling dead key recognition. In order to send dead key characters (e.g. ~, ', `, and ^), you must key a Space (or sometimes the same character again) after the character to send it on many international keyboard layouts.
The SDL client supports many more keys than the original Quake3 client. For example the keys: "Windows", "SysReq", "ScrollLock", and "Break". For non-US keyboards, all of the so called "World" keys are now supported as well as F13, F14, F15, and the country-specific mode/meta keys.
On many international layouts the default console toggle keys are also dead keys, meaning that dropping the console potentially results in unintentionally initiating the keying of a dead key. Furthermore SDL 1.2's dead key support is broken by design and Q3 doesn't support non-ASCII text entry, so the chances are you won't get the correct character anyway.
If you use such a keyboard layout, you can set the cvar cl_consoleKeys. This is a space delimited list of key names that will toggle the console. The key names are the usual Q3 names e.g. "~", "`", "c", "BACKSPACE", "PAUSE", "WINDOWS" etc. It's also possible to use ASCII characters, by hexadecimal number. Some example values for cl_consoleKeys:
"~ ` 0x7e 0x60" Toggle on ~ or ` (the default) "WINDOWS" Toggle on the Windows key "c" Toggle on the c key "0x43" Toggle on the C character (Shift-c) "PAUSE F1 PGUP" Toggle on the Pause, F1 or Page Up keys
Note that when you elect a set of console keys or characters, they cannot then be used for binding, nor will they generate characters when entering text. Also, in addition to the nominated console keys, Shift-ESC is hard coded to always toggle the console.
Help! Ioquake3 won't give me an fps of X anymore when setting com_maxfps!
ioquake3 now uses the select() system call to wait for the rendering of the next frame when com_maxfps was hit. This will improve your CPU load considerably in these cases. However, not all systems may support a granularity for its timing functions that is required to perform this waiting correctly. For instance, ioquake3 tells select() to wait 2 milliseconds, but really it can only wait for a multiple of 5ms, i.e. 5, 10, 15, 20... ms. In this case you can always revert back to the old behavior by setting the cvar com_busyWait to 1.
To force ioquake3 to use shared libraries instead of qvms run it with the following parameters:
+set sv_pure 0 +set vm_cgame 0 +set vm_game 0 +set vm_ui 0
Using Demo Data Files
Copy demoq3/pak0.pk3 from the demo installer to your baseq3 directory. The qvm files in this pak0.pk3 will not work, so you have to use the native shared libraries or qvms from this project. To use the new qvms, they must be put into a pk3 file. A pk3 file is just a zip file, so any compression tool that can create such files will work. The shared libraries should already be in the correct place. Use the instructions above to use them.
Please bear in mind that you will not be able to play online using the demo data, nor is it something that we like to spend much time maintaining or supporting.