[Baseline] [Command-Line] [Console Commands] [Overclocking] [Refresh Rates] [Comparison] [CPU Speeds]
GLQuake Tune-Up
This page refers specifically to Quake I using the OpenGL miniport. Except
where noted, all commands apply to GLQuakeWorld as well. QuakeWorld is an
add-on to Quake that includes optimizations to compensate for lag on the
Internet, features that were incorporated in Quake2 from the ground up.
These tests were done to test performance under the heavy system stress of a 16-player fragfest.
Performance Baseline |
[Command-Line] [Console Commands] [Overclocking] [Refresh Rates] [Comparison] [CPU Speeds]
All benchmarks were performed using the Hercules Thriller 3D 4meg PCI under the following conditions. Benchmarks were performed only once because of the length of the demo and the consistency of the results. For system info, click here.
The baseline value is 21.5 fps at 640x480 using BigAss1, a 16-player demo created by sCary. It has become something of a standard for testing multiplayer performance in Quake1.
The benchmark was conducted in the following manner:
1) Hit the "~" key to bring down the console.
2) At the console type:
timedemo bigass1;
toggleconsole <Enter>
3) The demo was run to completion and the results recorded.
This baseline is for GLQuake 1 version 0.97; fullscreen; 120Hz refresh rate;
crosshair on. The command line used was:
glquake.exe -nojoy -nocdaudio
-heapsize 32000
The minigl.dll is dated January 9, 1998 and the v2000gl.uc is dated December 23, 1997.
The effects of all modifications to the baseline will be reported as a difference. For instance, if changing a setting produces 23.0 fps, then a value of +1.5 would be listed (23.0 - 21.5 = +1.5)
Command-Line Settings |
[Baseline] [Console Commands] [Overclocking] [Refresh Rates] [Comparison] [CPU Speeds]
Certain settings in GLQuake can be executed only from a command line. They must be added after the glquake.exe in your command line, with a space separating them. For instance, the -heapsize 32000 command will reserve 32megs of memory for GLQuake's use. The command line would look like this:
glquake.exe -heapsize 32000
Setting | Description | Speed |
-window | Tells GLQuake to run in a window. Not sure why you would want to do this. | |
-heapsize | This command reserves memory for GLQuake's use. It must be followed by
a number equal to the megs of RAM you want followed by 3 zeros. 24megs would be -heapsize 24000. In general, you do not want to reserve more than half your system memory. So if you have 32megs of RAM, don't exceed a value higher than 16000. In any case, Win95 will insist on using about 12-14megs for itself, so if you use too high a value, you may decrease performance by increasing the use of your swapfile. |
n/a |
-zone | This setting determines the size of the memory for your keys and messages.
It must be followed by a value, and I believe the value must be a power of 2. 48 (which reserves 48kb) is the default. -zone 512 is common and -zone 1024 is used by people with highly customized key bindings and aliases. If you don't know what that is, then don't worry about this setting. |
n/a |
-nojoy | This stops Quake from polling your joystick port. If you do not have
an accelerated joystick port, joystick polling can be very taxing on your system. I saw one test that showed 20% CPU using just for the joystick. In any case, if you don't use the joystick, then this is a no- brainer. |
n/a |
-nocdaudio | Disables CD music. Even if there is no CD in the drive, your system will
still poll the drive to see if a CD was inserted, which will cost you CPU cycles. When I enabled CD audio on my system, it did not affect performance. That might be because I have bus-mastering drivers installed and I enabled bus-mastering for the CD in Win95's Device Mangler, er, I mean, Manager. |
+0.0 |
-primarysound | This setting tells GLQuake to use DirectSound primary sound buffer output
instead of the secondary buffer. Many people report problems with this, especially with older drivers, but it works fine on my system. DirectX 5 might be necessary. |
+0.3 |
-noipx | This disables IPX for GLQuake. Quake's support for TCP/IP makes IPX
unnecessary. -noudp would disable TCP/IP and -nolan would disable both, but then who are you going to play with? |
+0.2 |
-dinput | This setting tells GLQuake to use DirectInput for your mouse and/or joystick.
It can create a smoother feel, but you probably need DirectX 5 installed for it to work. |
n/a |
Video resolution must also be set from the command line only:
Setting | Description | Speed |
-width 400 -height 300 | 400x300 resolution. Runs only in a window for the Thriller 3D | n/a |
-width 512 -height 384 | 512x384 resolution. My recommendation for net play. | +5.8 |
-width 640 -height 480 | 640 by 480. Actually, you don't need to enter these settings at the command
line as this is the default. |
baseline |
-width 800 -height 600 | Probably needs an 8meg card to run. Not tested because in GLQuake2, it
froze my system every time. |
n/a |
A good command line for Internet play (using a mouse) might be:
glquake.exe -heapsize 32000 -width 512 -height 384 -dinput -primarysound -zone 512 -noipx -nocdaudio
You have to be careful, however, because your command line must be 127 characters or less. Make sure you don't have any spaces at the end of the line.
Console Commands |
[Baseline] [Command-Line] [Overclocking] [Refresh Rates] [Comparison] [CPU Speeds]
These are only a few select commands that are directly related to performance. For a more complete console command list, check out Stomped. Another great resource is Brett Jacobs' GLQuake & QuakeWorld Guide that you can get here, here, or here. Much of the info in Brett Jacobs' guide is specific to 3Dfx Voodoo cards, so read carefully.
Console |
Default |
Valid |
Description |
Speed |
r_wateralpha | 1 |
0.1-1.0 |
"1" leaves the water surface opaque, "0.7" is somewhat "realistic", "0.4" is like very clear water. This command will do nothing unless you use the r_novis 1 command (very slow) or you vis your maps. You can get utilities and instructions on how to vis your maps here and here. Vis-ed maps run a little slower, but not nearly as slow as using the r_novis 1 command. A value of "0.4" was tested here. |
+0.1 |
r_novis | 0 |
0 or 1 |
When set to "1", vis data for transparent liquids will be computed on the fly. This is needed to have transparent water if your maps have not been vis-ed. |
-3.9 |
r_shadows | 0 |
0 or 1 |
Setting this to "1" turns on dynamic shadows. Everything seems to case a shadow, even the lightning from the lightning gun. Pretty ugly, IMHO. |
-1.7 |
r_mirroralpha | 1 |
0.1-1.0 |
Any setting besides "1" will enable some mirror reflectivity, with lower numbers being more reflective. Very few mirrored surfaces are present in GLQuake. Pretty much just the stained glass such as the window in the Easy Hallway on the Start level. |
+0.0 |
r_lightmap | 0 |
0 or 1 |
When set to "1", all world textures are replaced by the lighting effect only. |
+0.5 |
r_fullbright | 0 |
0 or 1 |
Setting this to "1" changes all colors to full brightness. Nowhere to run, nowhere to hide. Normal timedemos will run at lightning speeds, but this setting is considered a cheat and is therefore disabled in net play. |
n/a |
gl_flashblend | 1 |
0 or 1 |
The default of "1" makes a glowing haze surrounding rockets, explosions, firing players/monsters, and people with powerups. Setting this to "0" replaces the glowing haze with good old dynamic lighting, just like in normal Quake. |
-0.7 |
gl_polyblend | 1 |
0 or 1 |
Setting this to "0" will disable the haze effect /color shift that
occurs when underwater, getting injured, or using a power-up. This can make you more competitive simply because you can see better. |
+0.8 |
gl_subdivide_size | 128 |
128, 256, |
This is called the "sky fix" because it is designed to increase performance in wide-open areas with sky (originally very slow). Increasing this value muddies the sky resolution, but not many people care. |
n/a |
gl_playermip | 0 |
0 |
Each number above "0" halves the amount of memory used for players' skin textures. If the video card runs out of video memory for texture storage, it will have to pull textures from system memory, resulting in choppy play. In Quake2 this setting made almost no difference. In Quake1, it is quite important. This would not be an issue with an 8meg v2x00 card. |
baseline |
gl_picmip | 0 |
0 |
Each setting above "0" halves the memory used for all the textures except players /creatures and weapons. See "gl_playermip". |
baseline |
gl_ztrick | 1? |
0 or 1 |
When set to "1", GLQuake does not clear the z-buffer (depth information). This sometimes causes a flashing status bar and console. "0" is tested here. |
-0.1 |
gl_keeptjunctions | 0? |
0 or 1 |
Setting this to "1" fills in the gaps between textures, or actually, colinear vertices. |
-0.6 |
gl_triplebuffer | 0 |
0 or 1 |
Setting this to "1" replaces double-buffering with triple-buffering. This setting is really for cards with frame buffer memory to spare, like an 8meg card playing at 640x480 or lower. |
+0.1 |
What is the cumulative effect of some of these settings? These next
benchmarks were run using the following tweaks in the autoexec.cfg file
(located in the \Quake\id1 folder).
r_mirroralpha "1"
r_shadows "0"
gl_polyblend "0"
gl_playermip "2"
gl_flashblend "0"
gl_ztrick "1"
gl_subdivide_size "512"
r_wateralpha "1"
gl_picmip "1"
The following command line was also used:
glquake.exe -heapsize
32000 -dinput -primarysound -zone 512 -noipx -nocdaudio -nojoy -width 512
-height 384
How was performance affected using these tweaks?
Resolution | Tweaks? |
Overclock |
Notes | Performance |
640x480 |
No |
No |
Baseline | 21.5 |
512x384 |
No |
No |
+5.8 |
|
512x384 |
Yes |
No |
Slower than without the autoexec.cfg because of gl_flashblend "0" setting. |
+5.0 |
512x384 |
Yes |
No |
Same as above except gl_flashblend set to "1". | +10.0 |
512x384 |
Yes |
Yes |
+6.6 |
|
512x384 |
Yes |
Yes |
Same as above except gl_flashblend set to "1". | +12.1 |
Overclocking |
[Baseline] [Command-Line] [Console Commands] [Refresh Rates] [Comparison] [CPU Speeds]
Card | Memory Speed | RISC speed | Performance |
Thriller 3D | 132.4 MHz |
66.2MHz |
+0.9 |
For more information on overclocking your Vérité card, check out the overclocking section.
Refresh Rates |
[Baseline] [Command-Line] [Console Commands][Overclocking] [CPU Speeds]
Not surprisingly, switching refresh rates had an effect on performance. What was surprising was that the effect was the opposite of what I initially suspected. I believed, falsely, that higher refresh rates would slow down game performance because of the added stress on the video card. The opposite turned out to be the case. Look at the following results.
Refresh Rate | Performance |
120Hz |
21.5 |
75Hz |
20.9 |
I think the reason for this effect has to do with video synchronization. Normally, the video card must wait for the monitor's electron gun to finish painting a screen before updating the display with a new image. Meanwhile, the video card is idle. At a higher refresh rate, there is less waiting time between screen refreshes, and seemingly, less idle time. I believe that is why my system performed better at 120Hz than at 75Hz. Try it out for yourself.
It would be even better if future drivers had the option of turning off video synchronization (sometimes referred to as vsync). That way the video card will automatically begin updating the screen, even in the middle of a refresh. It can result in image tearing as the top and bottom parts of the screen may contain data from two different images, but sometimes speed is more important than visual quality.
Comparison |
[Baseline] [Command-Line] [Console Commands][Overclocking] [Refresh Rates] [CPU Speeds]
All results below are for 512x384 using the following command-line options:
-heapsize 32000 (-winmem 32 for DOS and VQuake)
-dinput (does not apply to DOS or VQuake)
-primarysound (does not apply to DOS or VQuake)
-zone 512
-noipx
-nocdaudio
-nojoy
-width 512 -height 384 (or 512x384 was set in video options)
Renderer | Comments | Speed |
DOS Quake | Using d_mipcap 1 and r_waterwarp 0. | 19.8 |
WinQuake | Using d_mipcap 1 and r_waterwarp 0. | 20.8 |
VQuake | Using r_waterwarp 0, r_surfacelookup 0, and d_mipcap 3. Ugly, but pragmatic. |
34.1 |
VQuake | Same as above, but d_mipcap set to a more reasonable "1". |
29.6 |
GLQuake | Using tweaked autoexec.cfg file and command line listed earlier, plus gl_flashblend 0. |
26.5 |
GLQuake | Using tweaked autoexec.cfg file and command line listed earlier, plus gl_flashblend 1. |
31.5 |
For intense netplay, VQuake seems to hold up as a good option when speed matters more than water transparency. Sadly, however, there is no VQuakeWorld.
CPU Speeds |
[Baseline] [Command-Line] [Console Commands] [Overclocking] [Refresh Rates] [Comparison]
I re-ran the baseline tests at two different CPU speeds to note the effects. Here are the results:
CPU Speed | Bus Speed | Performance |
166 MHz |
66 MHz |
not tested yet |
225 MHz |
75 MHz |
not tested yet |
For information on overclocking your CPU, check out Tom's Hardware Guide.
For information on other CPUs, check out my CPU page.
Benchmarking System |
[Baseline] [Command-Line] [Console Commands] [Overclocking] [Refresh Rates] [Comparison] [CPU Speeds]
Relevant Hardware (latest non-beta drivers as of Jan 21, 1998)
Intel Pentium 166 MMX overclocked to 200MHz.
Megatrends HX-83 Motherboard
64mb 60ns EDO RAM (Micron)
Hercules Thriller 3D 4meg PCI
3.2gig Quantum Fireball EIDE Hard Drive
Soundblaster AWE64 Value
Diamond Monster Sound
Relevant Software and Settings
Win95b (OSR2)
1280x1024x16-bit Desktop Settings