Fitzquake is a modified glquake based on the source code released by id Software. My primary focus is fixing a lot of the rendering bugs which made glquake inferior to the software renderer. My secondary focus is adding conveniences for mappers and general users. I am also slowly adding support for new modding or mapping features such as skyboxes, fog, and colored light.

While I have made extensive changes to the code, I pretty much use the same OpenGL features that the original glquake uses. Therefore, if you can run glquake, you can probably run Fitzquake.

I am not finished working on this project, so bug reports and feature requests are welcome.

Mac and Linux Users

March 8, 2008 — Kristian Duske (AKA SleepwalkR) has created an SDL port of Fitzquake 0.80. You can discuss it on this thread at Func_Msgboard.

Latest Downloads

May 26, 2005 — The latest version is 0.80. New in this version: map loading 4x faster, change video modes without restarting, cvar control of anistropic filtering, refresh rate and vsync, cvar control of max_edicts, r_showtris support, and a typical long list of bugfixes and optimizations. You can discuss this version in the Func_Msgboard news thread here.


readme

(38k)

executable

(231k)

source

(634k)
Jump to:

commands
variables
known bugs
other files

Notes
Seems like this release was doomed never to happen -- I was originally planning on releasing it last June, and then real life threw a series of curveballs. Anyway, here it is.

3dfx support is reportedly very broken in 0.75, and since I no longer have a voodoo card, the chances of me fixing it are pretty low. So for now, 3dfx cards are officially not supported.

Big plans for the next version include model interpolation, pixel shaders, dynamic light improvements, and a menu overhaul to make all of the new features i've added visible to the casual user (you know, the one who doesn't read text files.)

Commands

Arguments in angle brackets are required (at least for specified behavior), arguments in square brackets are optional. The range of meaningful values for some commands is provided in curly brackets.

alias <name>
Now outputs the current command string, rather than deleting the alias. See command unalias.

bindlist
Lists all key bindings.

cmdlist [substring]
Outputs an alphabetized list of all commands. If substring is present, lists only commands that start with substring.

condump
Writes the console buffer to condump.txt.

cvarlist [substring]
Outputs an alphabetized list of all console variables. If substring is present, lists only cvars that start with substring.

cycle <cvar> <value> [<value> [<value> ...]]
Cycle a cvar through a list of values. Note: this command will get stuck on a list that contains the same value more than once, such as "cycle blah 1 2 1 3". If you're doing anything that complex you can just use aliases.

fly <value>   {0,1}
Force fly mode to be enabled or disabled. (e.g. "fly 1" will enable fly mode regardless of its current state.)

fog <density>
fog <red> <green> <blue>
fog <density> <red> <green> <blue>
Sets global fog, for testing purposes. All four values should be in the range 0...1. Set density to 0 to disable fog.

game <gamedir>
Loads a mod. See command mods.

give a <value>   {0...200}
Gives you armour. If value is between 0 and 100, armortype is green. If value is between 101 and 150, armortype is yellow. If value is between 151 and 200, armortype is red.

gl_describetexturemodes
Lists all texturemodes.

gl_info
Displays opengl info which was previously displayed during initialization: vendor, renderer, version, and extensions

gl_texturemode
Now accepts a number (1 through 6) as well as the name (gl_nearest, etc.)

god <value>   {0,1}
Force godmode to be enabled or disabled. (e.g. "god 1" will enable godmode regardless of its current state.)

imagelist
Displays a list of loaded textures, and their dimentions.

inc <cvar> [amount]
Increments a cvar's value by amount. amount defaults to 1.

mapname
Outputs the short name of the current level (e.g. "e1m5")

maps
Lists all addon levels available (i.e. all levels that are not in id1/*.pak)

mods
Lists all child folders of quake directory which contain either a progs.dat or a pak file. See command game.

noclip <value>   {0,1}
Force noclip mode to be enabled or disabled. (e.g. "noclip 1" will enable noclip mode regardless of its current state.)

notarget <value>   {0,1}
Force notarget mode to be enabled or disabled. (e.g. "notarget 1" will enable notarget mode regardless of its current state.)

reset <cvar>
Resets a cvar to default. Note that this is the engine default, not the default.cfg value.

resetall
Resets all cvars.

sky <skyname>
Loads a skybox, for testing purposes. If skyname is "", this will turn off skybox rendering.

stuffcmds
Stuffcmds now parses the "cmdline" cvar rather than the args actually passed to the program. This means that if you edit "cmdline," and "stuffcmds" is called again, your changes will have effect.

toggle <cvar>
Inverts the value of a cvar (nonzero -> 0 and 0 -> 1)

unalias <name>
Deletes the specified alias.

unaliasall
Deletes all aliases.

viewpos
Outputs (X,Y,Z) pitch yaw roll.

vid_restart
Tries to set a video mode that matches the values of vid_width, vid_height, vid_fullscreen, and, if vid_fullscreen is 1, vid_bpp and vid_refreshrate.

vid_test
Like vid_restart, except that after switching to the new mode pops up a confirmation dialogue. This is useful if you are not sure what modes your monitor can handle, so you don't get stuck with a blank screen. The dialogue has a time limit so that if you don't press a key within 5 seconds, it will revert to the previous mode.

vid_unlock
Used internally.

Console Variables

The range of meaningful/sane values is provided in curly brackets. You should also check out some of the new commands that are useful for dealing with cvars: cvarlist, cycle, inc, reset, resetall, and toggle.

cl_keypad   {0,1}
If 0, keypad keys will respond as in quake.exe (for example, pushing 'KP_END' will be the same as pushing '1'.) Default 1.

cl_maxpitch   {0...90}
Modify client-side pitch clamping. Default 90 (straight down.) Set to 80 to mimic normal quake.

cl_minpitch   {-90...0}
Modify client-side pitch clamping. Default -90 (straight up.) Set to -70 to mimic normal quake.

con_logcenterprint   {0,1,2}
If 1, centerprint messages will be logged to the console in sp/coop. If 2, they will also be logged in deathmatch. Default 1.

gamma   {0.5...2}
Brighten or darken the screen to compensate for differences between monitors. This is now supported by using your video card's gamma support (works on 3dfx cards, too! I think.) Just like in winquake, values less than 1 are brighter and values greater than one are darker. Default 1.

Notes: If fitzquake crashes, your hardware gamma may be stuck at the wrong value. You can use the "display settings" control panel fix this, or you could try lordhavoc's useful "setgamma" utility (available on this page.)

gl_farclip   {1024...16384}
Sets the distance of OpenGL's far clipping plane. Note that the skybox will always be drawn somewhat closer than this value. Default 16384. Set to 4096 to mimic glquake.

gl_fullbrights   {0,1}
Set to 0 to disable fullbrights. Default 1.

gl_keeptjunctions   {0,1}
Now defaults to 1. (note, contrary to the name of this cvar, what are being kept are the extra polygon vertices which eliminate tjunctions. This is a good thing, so i changed the default to 1)

gl_max_size
Now defaults to 0. If 0, textures will be as large as the hardware allows. Positive values can be used to impose a limit smaller than the hardware's reported maximum.

gl_overbright   {0,1}
This variable controls overbright lighting on the world polygons. (For lighting on models, use gl_overbright_models.) If 1, overbright will be enabled and lighting will resemble software Quake. If 0, overbright will be disabled and lighting will resemble GLQuake. Default 1.

gl_overbright_models   {0,1}
If 1, models will be rendered using 2x overbrightening and will appear at roughly the same brightness as they do in software quake, which is noticably brighter than the default fitzquake / glquake appearance. Default 1. Set to 0 to mimic glquake (and speed things up if your card doesn't support texture combiners or multitexture.)

gl_texture_anisotropy   {1...8}
Controls the amount of anisotropy in texture filtering. If 1 or less than 1, texture filtering is normal (isotropic.) If greater than 1, increasing degrees of anisotropic filtering are used, up to the hardware maximum. Set value to 2 for 2x anisotropic, 4 for 4x, etc. Default 1.

host_maxfps   {10...1000}
Sets the maximum frames per second fitzquake will render (also the maximum number of server frames per second.) Clamped to the range 10 - 1000. Default 72. Set to 72 to mimic standard quake.

host_timescale   {0...10}
Scales the passage of time on client and server. Set to 0 or 1 for normal speed, less than 1 for slow motion, and greater than 1 for fast-forward. If greater than 0, overrides host_framerate. Default 0.

max_edicts   {256...8192}
Sets the maximum number of entites on both the client and server. Acceptable values range from 256 to 8192. Set to 600 to mimic standard quake. Changes won't take effect until the next time a map is loaded. Note: if a client connects to a server, and the client's maximum is lower than the server's, the client will probably crash if it ever sees an entnum higher than its local max_edicts. Warning: you may need to increase -heapsize if you want a high max_edicts value. Default 1024.

r_clearcolor   {0...255}
Specify a palette index from 0 to 255. Default 2.

r_drawflat   {0,1}
If 1, polygons will be drawn as a solid color with no lightmap or texture. Default 0.

r_drawworld   {0,1}
If 1, draw world as usual. If 0, don't draw the world. Default 1. (compare r_drawentities)

r_fastsky   {0,1}
If 1, sky will be rendered as solid color, for added performance. Default 0.

r_flatlightstyles   {0,1,2}
If 1, styled lights (torch flicker, etc.) will be displayed as a steady light. If 2, the peak intensity will be used instead of the average intensity. Default 0.

r_particles   {0,1,2}
0 = no particles, 1 = circular particles, 2 = square particles. Default 1.

r_oldskyleaf   {0,1}
If 0, surfaces inside sky leaves will be skipped by the renderer. If 1, they will be drawn whenever they are in your PVS, just like any other surface. Default 0.

r_oldwater   {0,1}
If 1, use the old GLQuake method of subdividing the water surface to enable a warping animation. If 0, use the new render-to-texture method. Note: in general, r_oldwater 0 looks better and runs slower. So experiment to see if the performance hit is acceptable to you. Default 1.

r_showbboxes   {0,1}
If 1, draw a wireframe bounding box around each entity. Note that these are the server-side per-edict physics bounding boxes, not the client-side per-model rendering bboxes. If 0, disable this feature. Default 0.

r_showtris   {0,1}
If 1, draw wireframe outlines for every triangle in the scene. Like in Quake 3, the lines will be visible even through solid geometry. If 2, draw the outlines only on visible surfaces (like r_showtris 2 in Medal of Honor.) If 0, disable wireframe overlay. Default 0.

r_skyalpha   {0...1}
Sets the alpha of the front sky layer. Note that if sky alpha is less than 1.0, the sky will be drawn in two passes even if you have multitexture. Default 1.

r_sky_quality   {1...64}
Higher number divides the sky more, for a smoother effect and slower performance. Default 12.

r_quadparticles   {0,1}
If 1, particles are drawn as GL_QUADS instead of GL_TRIANGLES. Quads use 4 verts instead of 3, but the fillrate cost is 1/2 that of triangles. Depending on your card, either one may be faster. This cvar has no effect on the appearance of particles. Default 1.

r_speeds   {0,1,2}
Values of 1 and 2 will give you increasing amounts of information. When you see two numbers separated by a slash, the first number is polys, and the second number is passes. Default 0.

r_stereo   {-8...8}
If nonzero, the scene will be rendered once in red, and again in cyan, with the two views shifted slightly. If you have 3D glasses you can appreciate this (assumes that the left eye is red and the right eye is cyan.) The value of r_stereo sets the eye separation. If your glasses have red on the right eye, use a negative value to flip the views. Default 0.

r_stereodepth   {32...1024}
Sets the distance at which the two views will converge when stereo rendering is active. Default 128.

r_waterquality   {1...64}
Sets the quality of the water when r_oldwater is 0. Lower values give better performance, higher values look better. A value of 4 will provide water that looks at least as good as glquake can get, and 32 is close enough to software quake for all but the most picky. To control the quality of water when r_oldwater is 1, use gl_subdivide_size instead. Default 8.

r_waterwarp   {0,1}
If 0, no underwater warping will take place. Default 1.

scr_clock   {0,1,2,3}
If 1, game time is displayed. If 2, system time is displayed in 12-hour format. If 3, system time will be displayed in 24-hour or "military" time.

scr_conalpha   {0...1}
This is the opacity when the console is halfscreen. Default 1. Set to 0.6 to mimic glquake.

scr_conwdith   {0,320...1600}
Sets the virtual console width, where smaller numbers means larger text. Values larger than window width, or smaller than 320, will be clamped to that range, and all values will be rounded to a multiple of 8. If 0, the window width will be used. Note: values that divide evenly into the window width will make the text look nicest. Default 0.

scr_menuscale   {1...5}
Sets the scale factor for menus and other centered overlays. If 1, images will be drawn at 1:1 scale. If 2, images will be double size. Menus will never be drawn smaller than 1:1, and never larger than the size of the window. Note: integer values will make the text look nicest. Default 1.

scr_sbarscale   {1...5}
Sets the scale factor for the statusbar. If 1, images will be drawn at 1:1 scale. If 2, images will be double size. The statusbar will never be drawn smaller than 1:1, and never larger than the width of the window. Note: integer values will make the text look nicest. Default 1.

scr_showfps   {0,1}
If 1, FPS are displayed. Default 0.

sv_altnoclip   {0,1}
If 1, enable the alternative noclip movement which resembles quake2 and is not constrained to the horizontal plane. Set to 0 to retain quake's original noclip behavior. Default 1.

vid_bpp   {16,32}
Sets the color depth of the screen in fullscreen mode. Windowed mode ignores this setting. Can be 16 or 32. Default 16. (Changes won't take effect until the next call to vid_restart.)

vid_fullscreen   {0,1}
If 1, fitzquake will run fullscreen. If 0, fitzquake will run in a window. Default 1. (Changes won't take effect until the next call to vid_restart.)

vid_height   {200...1200}
Sets the vertical screen/window resolution. In windowed mode, cannot be less than 200. Default 480. (Changes won't take effect until the next call to vid_restart.)

vid_refreshrate   {60,70,72,75...}
Sets the refresh rate of the screen in fullscreen mode. Windowed mode ignores this setting. Possible values include 60, 70, 72, 75, 85, etc. Default 60. (Changes won't take effect until the next call to vid_restart.)

vid_width   {320...1600}
Sets the horizontal screen/window resolution. In windowed mode, cannot be less than 320. Default 640. (Changes won't take effect until the next call to vid_restart.)

vid_vsync   {0,1}
Set to 1 to enable vertical sync, which eliminates tearing, but caps your framerate at the monitor refreshrate. Set to 0 to disable vertical sync, which allows tearing but doesn't cap your framerate. Note: If fitzquake detects that your driver settings have forced vsync to be disabled, it will post a message to the console saying so, and this cvar will have no effect. Default 0.

Known Bugs

  • vid_restart kills mouse input when using -dinput. Workaround: don't call vid_restart from the console, don't "apply changes" from the video menu, and use at least one of -width, -height, or -bpp at the command line to prevent config.cfg from triggering a vid_restart.
  • Centerprints in the console are preceded by blank line when conwidth is 320.
  • "Gateway" model dissapears when you zoom in in XmenTC's start map.
  • Sky surfaces on bmodels are drawn incorrectly.
  • Rendering is totally broken on 3dfx hardware.

  • Other Files

    Fitzquake 0.75 (September 27, 2003)
  • readme: fitzquake075.txt (27k)
  • executable: fitzquake075.zip (221k)
  • source: fitzquake075src.zip (693k)

    Fitzquake 0.70 (Novermber 3, 2002)
  • readme: fitzquake070.txt (21k)
  • executable: fitzquake070.zip (217k)
  • source: fitzquake070src.zip (700k)

    Fitzquake 0.65 (July 8, 2002)
  • readme: fitzquake065.txt (14k)
  • executable: fitzquake065.zip (215k)
  • source: fitzquake065src.zip (691k)

    Fitzquake 0.60 (May 15, 2002)
  • readme: fitzquake060.txt (10k)
  • executable: fitzquake060.zip (214k)
  • source: fitzquake060src.zip (723k)

    Setgamma 1.2
  • setgamma12.txt (2k)
  • setgamma12.zip (36k))

    Setgamma 1.0
  • setgamma.txt (1k)
  • setgamma.zip (12k)