[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.
n/a
-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
Command

Default

Valid
Values

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,
512, 1024,
2028

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
1
2
3
4

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
+4.2
+4.8
+4.9
+4.9

gl_picmip

0

0
1
2

Each setting above "0" halves the memory used for all the textures
except players /creatures and weapons. See "gl_playermip".

baseline
+3.6
+4.0

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
Thriller 3D?

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