Quake Info Pool - Classic Quake - Quake Bugs

Back | Last changes: 2006-07-21 | Contact Maddes

# Quake Bugs & Suggestions

## Bug categories: Quake / QuakeWorld / Map / Demo / Tools / Not researched yet / Wishes

## Index

- General and Engine Bugs & Suggestions
- QuakeC and Engine Bugs
- DOSQuake Bugs
- Windows Quake Bugs
- OpenGL Quake Bugs

You can find the most recent version of this list on Quake Info Pool.
Some workarounds were taken from other sites/people and are not always proved by myself.
If you are interested in QuakeC and/or the Quake sources (Quake utils and engine), then please visit the Quake Standards Group and join the Quake Sourcecode Mailing List.

- red = bugs, crashes, which disturb gameplay
- black = bugs which do not affect gameplay
- green = old and fixed bugs

For cheating issues check out Flocutus' Ultimative Quake Cheat Page. Only if all the tricks are known to the public they can be stopped, so have a look and keep playing fair. Do not blame Flocutus, but blame the cheaters - be part of the movement:
Quakers Against Cheating
For QuakeC and engine related discussions join my Quake Sourcecode Mailing List, a public archive is available on Escribe.
For public and unmoderated discussions use the Inside3D forums.

Recommended replacements for the original id tools:

- QuakeC Reference Manual
- Mr. Elusive's MEQCC
- Frika C's FrikQCC
- QuakeStuff's PakExplorer
- QuArK for handling PAK files

Official support sites:

- id Software
- GT Interactive Support
- Activision Support

## General and Engine Bugs & Suggestions

Bug / Suggestion | first occurred in (cause) | workaround or fixed in
--- | --- | ---
not really Quake related: Fix use of "C:\Program files", although international versions use different directory names | Win95/NT installer from many companies | suggestion: The registry entry ProgramFilesDir in [HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion] contains the name of the correct path, e.g. for the German version: "ProgramFilesDir"="C:\\Programme"

When a grenade passes the waterline, Quake should play a splash sound.
Quake plays a splash sound when the grenade hits a surface and have prior to this hit at least one surface with a different state (under/above water) than the one it is hitting. The sound is "misc/h2ohit1.wav"
Reported by Christian "Cann" Schuldt Jensen

all Quake executables

not yet

Buffer overflows on strcpy() function can crash Quake or may allow malicious code. For example if you start GLQuake with -condebug using the 5.16 Nvidia drivers then it will crash, because the list of extensions is too long. Reported by Jason Wilkins | all Quake executables | suggestion by Jason himself: Find all the places in Quake that allow buffer overruns and write some more sensible code.
Client on listen server can kick himself. | all Quake executables | not yet
Possibility to exceed sv_maxspeed by various techniques (e.g. zigzagging and bunnyhopping or wall-hugging) Reported by the Quake Done Quick Team | all Quake executables | not yet the solution should not prevent rocketjumping and other regular higher player speeds
Memory for aliases is not handled dynamically, also when redefining the memory of the old definition is not freed. This leads to a "Z_Malloc" error when using a lot of aliases or often redefining an alias | all Quake executables | partly fixed in the released sourcecode, but Z_Memory is still used workaround: Start Quake with the "-zone <kbytes>" parameter (standard is 48KB) to give aliases more memory, so the error will occur much later if aliases are added
The tell command needs a player's name to work, but fun names are nearly impossible to type. Reported by David Gerhart Jr. | all Quake executables | not yet suggestion: use with a player's number instead of his name
Funnames with an carriage return character (0x0D) cause problems with the status command (no number), ping command (no ping), deathmessages and other outputs. Reported by Paul "PaK" Koehler |  | not yet This does not happen within QuakeWorld suggestion: use QuakeWorld's routine or remove all 0x0D characters from names within the engine
Fishes sometime swim through walls, when these walls are in a water brush. A demo is available for download | all Quake executables | not yet
Players can fall down slowly in corners, making no sound when landing. Reported by "Flocutus" Demos are available for download | all Quake executables | not yet
Players connect to a server although they do not have the running map. They can be seen and killed by others, but theyself only see the console. | all Quake executables | not yet
Light shines through walls Reported by Paul Lawrence | all Quake executables | not yet

Some typos within the engine source.
"allways" instead of "always"
"allready" instead of "already"
"chagnelevel" instead of "changelevel"
"wheil" instead of "while"
"klill" instead of "kill"
"diconnect" instead of "disconnect"
Some reported by Rory Kavanagh

released sourcecode

fixed for the released sourcecode here

Some fixes were left out by id Software, search for "FIX ME", "FIXME" or "TODO" in the source | released sourcecode | not yet

The bottom of the nailgun and the bottom of the flame on the rocket launcher view models aren't skinned. Several other models still have blue backgrounds and the blue shows up on the "seams" sometimes.
Reported by Lord Asaki
Here's the list:
(* = light background color or unfinished skin)
backpack.mdl
dog.mdl*
flame.mdl*
flame2.mdl*
g_light.mdl
g_nail.mdl
g_nail2.mdl
g_rock.mdl
g_rock2.mdl
g_shot.mdl
h_demon.mdl*
h_dog.mdl*
h_guard.mdl*
h_shal.mdl
h_shams.mdl
quaddama.mdl
suit.mdl
tarbaby.mdl*
teleport.mdl*
v_axe.mdl*
v_light.mdl
v_nail.mdl*
v_nail2.mdl*
v_rock2.mdl*
v_shot.mdl*
v_shot2.mdl*
v_spike.mdl*
w_spike.mdl*

several Quake models

not yet
solution by Lord Asaki himself:
The skins of the view models can easily be fixed by basically copying and pasting. He also offers to contact him if you want his creations. For the skins of the other models all you have to do is paint the blue parts black.

Some dead fishes drop like stones and others float in the water. Is this wanted? | all Quake executables | not yet
Corpses of players loose colors when disconnect. | all Quake executables | not yet reason: the corpses get the color of the owners and this client entity is reset on disconnect, resulting in all color 0 (white, QuakeWorld does not reset). When another client gets this client entity, the corpses get his colors (QuakeWorld too).

wanted feature:
eprint should be a developer message
Uups, it's necessary for the user to tell the developer what entities caused a bug.

if you want an eprint function as a developer message use this:

    if (cvar("developer"))
    	eprint(entity);

wanted: complete list of all SVC_Commands |  | Check out Uwe Girlich's DEM specs which is currently the best source for this
Quake crashes on Windows XP | all Quake executables | fix available at Microsoft's support page, search for Q308361
Kill command does not work for "zombie" players. | all Quake executables | fixed for the released sourcecode here suggestion: Check not only for player's health but also that his deadflag is not DEAD_NO.
When a console variable can not be set by "cvar_set()", then an error message is always displayed (may confuse user) | all Quake executables | fixed for the released sourcecode here suggestion: should be a developer message when done in QuakeC, so it will not disturb normal gameplay, but should occur when done in console
DJGPP assembler warnings when building DOSQuake Reported by Norberto Alfredo Bensa | released sourcecode | fixed for the released sourcecode here reason: GAS2MASM can not correctly convert indirect jmps, hence id decided to live with the warnings. Fortunately QuakeForge already fixed this by enhancing GAS2MASM.

When the model of a client is removed (modelindex = 0), the client's viewpoint will not be updated.
Reported by Raymond Martineau

all Quake executables

QuakeC workaround/fix by Raymond himself: (added to URQP 1.05)
Add the following code at the beginning of PlayerPreThink() in CLIENT.QC after the first checks.
if (self.modelindex == 0)
{
local float bits;
msg_entity = self;
bits = 128 + 32 + 1024 + 2 + 4 + 8; // U_SIGNAL + U_NOLERP + U_MODEL + U_ORIGIN1 + U_ORIGIN2 + U_ORIGIN3
WriteByte (MSG_ONE,bits);
WriteByte (MSG_ONE,1); // The model
WriteCoord (MSG_ONE, self.origin_x);
WriteCoord (MSG_ONE, self.origin_y);
WriteCoord (MSG_ONE, self.origin_z);
}

try this:
- set developer to 1
- start a SinglePlayer game
- save the game on the start map
- start a multiplayer deathmatch on the start map
- reload the saved game
Looks funny, doesn't it?

all Quake executables

reason:
Cvars "deathmatch" and "coop" not reset when loading a SinglePlayer game.
solution by Norberto Alfredo Bensa:
In function Host_Loadgame_f() of host_cmd.c, look for...
#ifdef QUAKE2
Cvar_SetValue ("deathmatch", 0);
Cvar_SetValue ("coop", 0);
Cvar_SetValue ("teamplay", 0);
#endif
...and outcomment the preprocessor directives.

Setting "deathmatch" to 1 is not the same than selecting "Multiplayer/Deathmatch" from the menu, as you still can stop/pause the listen server by bringing down the console | all Quake executables | This not a bug. reason: The pause depends on the maxplayers settings (svs.maxclients), as long as it is 1 the game will pause. Very handy for testing deathmatch, as entities are not processed. Informed by Kevin "ildon" Boisseau
DOSQuake crashes when BLASTER/GUS variable is not set. Win9x does not detect this GPF and runs on *doh*. Reported by Raymond Martineau | all Quake executables, but only DOSQuake crashes | fixed for the released sourcecode here solution: check the variable "shm" before printing "Sound sampling rate" in SND_DMA.C (if (shm))

Piped output of a dedicated server is not immediately written to the pipe.
Reported by Hendrik Lipka

all Quake executables

fixed for the released sourcecode here
solution by Hendrik himself:
add the missing flush command calls to the end of all Sys_printf() definitions in SYS_*.C:
"fflush(stderr);" in SYS_DOS.C
"fflush(stdout);" in SYS_LINUX.C
"FlushFileBuffers(houtput);" in SYS_WIN.C

When you start a SinglePlayer game from within a Coop game, then "coop" is still set to 1 | all Quake executables | fixed for the released sourcecode here suggestion: "coop" should be set to zero when starting/loading a SinglePlayer game possible solution Here's the solution for the Quake engine (not QuakeC) (name not stated by request)
Messed up models in the death scene of the fish model (frame 19-39). Seems like id did not resize the whole model. Reported by Daniel "Athos Kryn" Olsen | fish model | fixed in URQP 1.05 corrected model by Thomas "BadMotorFinger" Middeldorp
Low SV_MAXVELOCITY settings cause weird rocket movement Set SV_MAXVELOCITY to 20, select the start map, give yourself the RL with IMPULSE 9 and shoot some rockets to different angles. This also effects the player's movement. Reported by William Magill | all Quake executables | fixed for the released sourcecode here reason: When a velocity is checked against SV_MAXVELOCITY the Quake engine checks the vector's components (x, y, z) instead of it's resulting length. solution: Here's the solution for the Quake engine (not QuakeC)

Random occurrences of "Error: MOVETYPE_PUSH with a non bsp model".
To reproduce start the END level, use NOTARGET, GOD and IMPULSE 9 and get out of the water pool and through the teleporter (this way you touch a trigger which starts the misc_teleporttrain). Use NOCLIP, move into Shub when the floating thingie IS INSIDE Shub.
If you get a RenderView error please look at the Windows Quake section.
Reported by Paul Lawrence

all Quake executables

fixed for the released sourcecode here
reason:
The engine assumes that everything with MOVETYPE_PUSH is SOLID_BSP (= bsp model = map brush) and hence assigns SOLID_BSP to the entity after the blocking check. So on the next check, the engine finds a SOLID_BSP with a non bsp model, here the misc_teleporttrain, and stops.
solution:
Here's the solution for the Quake engine (not QuakeC)
hint:
The random occurrences in CRITTERS are due to a fixable map bug.

## QuakeC and Engine Bugs

Current version: 1.06

Bug / Suggestion | first occurred in (cause) | workaround or fixed in
--- | --- | ---

When you die in COOP in Hipnotic's Mission Pack, respawn and your corpse get smashed by a gremlin, door, plat, etc. then your new body will loose health too. If your health reaches zero, you become a "zombie" - can't move, can't suicide - undead.
Reported by Pomor "Smirnoff"
A demo is available for download

Hipnotic's Mission Pack QuakeC

workaround:
When you die do not respawn immediately, instead look for any gremlin, door or plat attacking your corpse - if so, wait until your corpse get fragged then you can safely respawn.
reason:
Only the corpse's health should be lowered, not the owner's health.
note:
Only gremlins starting with a path target attack player corpses.

Monster are not affected by lava/slime/water and can not exit from a pool. Unthankful task to kill them without transparent water | QuakeC 1.06 | not yet
If two or more attackers fire at one target in the same frame ("gang-banging"), then only the first attacker gets the frag. The target is already dead before the second attacker shoots. | QuakeC 1.06 | not yet
Dead bodies can fall through floor/ceiling (clipping bug) A demo is available for download Reported by "Quake Player" | all Quake executables | not yet

Some typos within the QuakeC source.
"allways" instead of "always"
"allready" instead of "already"
"chagnelevel" instead of "changelevel"
"wheil" instead of "while"
"klill" instead of "kill"
"diconnect" instead of "disconnect"
"usefull" instead of "useful" (not usefully)
"montser" instead of "monster"
"lis" instead of "list"
"wast" instead of "waist"
"swiming" instead of "swimming"
".huntt_ime" instead of ".hunt_time"
Some reported by Rory Kavanagh

QuakeC 1.06

fixed in URQP 1.05

Some fixes were left out by id Software, search for "FIX ME" or "FIXME" in the source | QuakeC 1.06 | not yet

Quake.exe function "string ftos(float variable)" returns a string with leading spaces when the converted value is non-integer and also cuts it off after the first decimal (e.g. " 0.9" for 0.93).
(worse in conjunction with the next bug)

all Quake executables

fixed for the released sourcecode here
suggestion #1: (perfect, but unacceptable)
"cvar()" returns a string not a float, e.g. "0.93" for "sv_aim".
This would offer the possibilty to save strings also in cvars.
But this would also mean that every single AddOn had to be recompiled, because of the changed type of the result. Hence not acceptable.
suggestion #2: (best and recommended)
"ftos()" should return a string without leading spaces on non-integer values (e.g. "0.93").
The best solution, because it does not only solve the problem, it also helps to save space on displaying values.
Here's the solution for the Quake engine (not QuakeC)
addition to #1 and #2:
fixed for the released sourcecode here
"cvar_set()" saves values internally as a string (incl. leading spaces) and as a float, the conversion routine from string to float does not ignore leading spaces, so Q_atof() must be enhanced.
QuakeC hint:
You'll have to check if the used exe have this fixed or not, here is an QuakeC example.
You should also round/floor/ceil values before printing if necessary.

Quake.exe function "void cvar_set(string cvar_name, string value) sets the cvar to zero when the string value contains leading spaces | all Quake executables
Addons display values with lots of decimals for example: time until vote/level ends in CTF Reported by "Techforce" (aka Cobalt on I3D Forums), Maintainer of the Quake 1 CTFBOT+ server at ctfbot.at.stomped.com | many addons with fixed Quake executable

"T_RadiusDamage()" bug
#1: If a player dies through the splash damage of his own rocket/grenade, all following players do not get hurt by the splash damage.
Reported by Robert "Frog" Field
#2: Incorrect explosion of the three grouped boxes in E3M1. Player does not get hurt, depending on where he stands.
Reported by the Quake Done Quick Team

QuakeC 1.06

not yet
reason/assumption:
#1: If the owner of the rocket/grenade/spike dies, all corresponding functions of the owner are stopped
Here's the workaround by Robert "Frog" Field
#2: Local variables of a function are not saved on the stack by the engine, which cause problems on recursive calls. Plus the result of the "findradius" function is stored in the found entities themselves (".chain" pointer), which is destroyed through another "findradius" function. When an entity of the first result is found again, then the previous chain is broken.
Here's the workaround by Patrick Martin

Door and plat sounds don't follow brush Reported by Orion | all Quake executables | For me this is not a bug, as you can interpret it that the start point is where the "motor" is. But it would be nice for map editors to define if the sound follows the brush or not.
No random respawn points On a map start the clients always spawn at the same spot depending on their internal client number. Reminded by Orion | QuakeC 1.06 | fixed in URQP 1.04 adapted from Xian's code in QuakeWorld.

You can not use more than one variable in a single print (centerprint, sprint, bprint, etc.)

all Quake executables

reason:
This is a limitation of the engine, as it can only hold one temporary string at a time.
As "centerprint("Team A: ", ftos(score_a), " - Team B: ", ftos(score_b))" has two temp strings, the second ftos will overwrite the result of the previous ftos.
workaround:
For sprint and bprint (functions you can consecutively use) you should create the first temp string and print it, create the second and print it, create the third and print it, and so on...
solution:
FrikaC created some new builtin functions (strzone() and strunzone()) which allow you to copy a temp string into the zone, making them persistant. These functions are standardized by the QSG and are implemented in my QIP engine.
So "local string a, b; a = ftos(score_a); a = strzone(a); b = ftos(score_b); b = strzone(b); centerprint("Team A: ", a, " - Team B: ", b); a = strunzone(a); b = strunzone(b);" works also for centerprints.

".colormap" does not work with non-player entities.

all Quake executables

".colormap" works on non-player entities in a special way:
You can assign a client number(1-16!!!) to the ent's .colormap, then the entity will use the colors of this client. So if there's a red and a blue flag, but only one client (red) is connected, then you can only color the red flag correctly, but not the blue flag.
WARNING!!! If you set .colormap to a non valid player number (like 5 when maxplayers is 4), then the engine crashes with "i >= sv.maxclients".
Thanks to FrikaC for his hints about that.

Using a trigger_hurt entity with a negative damage ("healing") results in an ever increasing health. | QuakeC 1.06 | fixed in URQP 1.06
When respawning by clicking the fire/attack button in DM/COOP, it fires a shot. Reported by Hugh Jones | all Quake executables | fixed in URQP 1.06, done by Patrick Martin
If you have the maximum red armor and the level changes, you can pick up red armor again. Reported by "Slot Zero" | QuakeC 1.06 | fixed in URQP 1.06 reason and solution by Slot Zero himself: On level changes the armortype is not stored and restored as it is in parm9, the (unnecessary) calculation results in a precision loss. To fix this just store and restore the armortype in parm 9as it is.

When shooting with any shotgun at multiple targets, where one or more of them are gibbable, targets fail to gib properly.
Shotgun damage is calculated by firing each pellet, tracing it, and if it hits a target hurting the target. If a pellet hits the same target as the last pellet, damage is added together. If a pellet hits another target than the previous pellet, already collected damage is applied to the previous target. If shots alternate between targets, a target will fall dead partway through the shot, as soon as they pass below zero health, instead of getting one big lump of damage at the end of the shot and perhaps gibbing. This problem is most notable when the shooter is using quad.
* Example 1: One target
Damage = 0
Pellet 1 hits Damage = Damage + x; Target = #1
Pellet 2 hits Damage = Damage + x
Pellet 3 misses
Pellet 4 hits Damage = Damage + x
;end of shot
ApplyDamage(#1, Damage)
* Example2: Two targets
Damage = 0
Pellet 1 hits #1 Damage = Damage + x; Target = #1
Pellet 2 hits #2 ApplyDamage(M1, Damage); Damage = 0; Damage = Damage + x; Target = #2
Pellet 3 hits #2 Damage = Damage + x
Pellet 4 hits #1 ApplyDamage(M2, Damage); Damage = 0; Damage = Damage + x; Target = #1
;end of shot, apply any outstanding damage
ApplyDamage(#1, Damage)
If a person is hidding directly behind two others, which get shot with the initial spray, they will fall dead sooner, without absorbing the full brunt of the shot, and damage will passed through to the target behind them.
Reported by William Night
Demos are available for download

QuakeC 1.06

fixed in URQP 1.06
solution:
Create an entity for each attacker/target combination and link all entities for one target to a list. At the end of the frame the list is processed and all collected damages are applied.
It is assumed that shoot-throughs are not wanted, as id Software used a multidamage system for the shotguns.

When two players shoot at each other in the same frame, and both would have killed each other, then only the first client shoots and the other client is dead before he shoots. | QuakeC 1.06
Hack for changing player model .modelindex is changed directly instead of using the setmodel() function. | QuakeC 1.06 | This is not a bug or shortcoming, it's necessary to keep the clipping hull for the server. The same hack is necessary for making triggers invisible, as setmodel(trigger, "") removes the link to the bsp model (map brush) making it non-functional.
Entities of disconnected clients not initialized Especially .classname and .health are problematic for typical find() calls. | QuakeC 1.06 | fixed in URQP 1.05
If fraglimit is hit all following players in the same frame are not processed. Reminded by Ryan "Frika C" Smith | QuakeC 1.06 | fixed in URQP 1.05 reason: Function handled by PlayerPreThink
Timelimit and Fraglimit handled by PlayerPreThink Reminded by Ryan "Frika C" Smith | QuakeC 1.06 | fixed in URQP 1.05
Player picks up ammo although he already carries the maximum (e.g. cells) Reminded by Andrew Palmer from KTImpact | QuakeC 1.06 | fixed in URQP 1.03
+USE not bound to .button1 | all Quake executables | fixed for the released sourcecode here solution: Here's the solution for the Quake engine (not QuakeC)
When you chase a player through a teleporter then you or both get telefragged. Reported by Carl "Lord Sméagol" Lloyd-Parker Demo is available for download | QuakeC 1.06 | fixed in URQP 1.05 solution by Carl "Lord Sméagol" Lloyd-Parker and Daniel "Athos Kryn" Olsen
Missing support for custom gravity | QuakeC 1.06 and custom maps | added to URQP 1.05
When a player exits an level while shooting with an rapid-fire weapon (nail guns or lightning gun), then he keeps firing during the intermission. Reported by Daniel "Athos Kryn" Olsen | QuakeC 1.06 | fixed in URQP 1.05 (solution by Athos himself) solution: In the intermission routines (client.qc/oldone.qc) set the players' think functions to SUB_Null

Walkframe leak bug. It occurs when the .walkframe variable, being incremented in the player_stand function while holding the axe, goes higher than 6 (it can go as high as 12), the player fires the axe, then begins to move during the axe animation. When the axe animations are complete the code calls player_run and walkframe (>=6) is tested incorrectly. What results is wild and rampant incrementing of walkframe such that it goes through all player animations.
Reported by Ryan "Frika C" Smith
A demo is available for download

QuakeC 1.06

fixed in URQP 1.05 (solution by Ryan "Frika C" Smith himself)
solution:
Just replace (self.walkframe == 6) with (self.walkframe >= 6) in player_run()/player.qc

Flying bodies and ghostly eyes when a player disconnects. Reported by Ryan "Frika C" Smith | QuakeC 1.06 | fixed in URQP 1.05 (solution by Ryan "Frika C" Smith himself)

Missing parameters on some function calls.

QuakeC 1.06

fixed in URQP 1.05
explanation:
Beside the MakeStatic call in "void() func_illusionary" these are not really bugs as QCC assumes a zero, but MEQCC does not like them.

- DropToFloor in items.qc/misc.qc/monsters.qc.
- MakeStatic in misc.qc.
- ai_charge in ogre.qc.

Grenades bounce off skies. Reported by Charles "Psykotik" Pence | QuakeC 1.06 | fixed in URQP 1.05 (solution by Michael "MaNiAc" Turitzin)
When you use the Quad cheat in single player (impulse 255) on a map without the Quad (e.g. E1M3), then some sounds are not played when it wears off and you get the message that these sounds are not precached. Reported by Carlos H. P. da Silva | QuakeC 1.06 | fixed in URQP 1.05 (solution by Carlos H. P. da Silva himself)

On some older maps "item_weapon" is used to place ammo. This old entity shouldn't be used and it does not use the regular spawning functions for the different ammo, so changes to the ammo spawning functions are unrecognized.
This is why some patches do not work correctly with those maps.
Reported by Daniel "Athos Kryn" Olsen
This is why nails are sometimes called "spikes" (e.g. DM5).
Reported by Greg Lewis

QuakeC 1.06 and older maps

fixed in URQP 1.04a (solution by Athos himself)

Monster "attack" intermission points during intermission | QuakeC 1.06 | fixed in URQP 1.03
When intermission comes up, the palette of players with an active quad or pentagram is still shifted | QuakeC 1.06 | fixed in URQP 1.03

When a player discharges in liquid, players who are not in the liquid get hit. On the other hand players in the same liquid do not get hurt when hidding behind a wall.
Reported by Jonathan "Perged" Down

QuakeC 1.06

This is not a bug, here's an excerpt of Zoid's comments:
The LG in water explodes, it does NOT electricify the water. Just imagine there is a really, really big explosion and fireball when the LG goes off. I'm guessing the art just wasn't there. John Cash wrote that original code and the explosion and effect is as intended.
was "fixed" in URQP 1.03 and reverted back in URQP 1.05 with an added particle explosion

Spelling error: the "Super Nailgun" is called the "Perforator" in the Quake manual. Reported by Daniel "Athos Kryn" Olsen | QuakeC 1.06 | fixed in URQP 1.03
Spelling error: the nailgun should be capitalized in the weapon_touch function like the other weapons. Reported by Daniel "Athos Kryn" Olsen | QuakeC 1.06 | fixed in URQP 1.03
When a player is on a monster, box or another player, he can not walk or jump just slide. A demo is available for download | QuakeC 1.06 | This does not occur in QuakeWorld fixed in URQP 1.03
The spawn function of the Shalrath calls "walkmonster_start()" not directly like all the other monsters | QuakeC 1.06 | fixed in URQP 1.03
There is no special deathmessage when player is killed by Chthon | QuakeC 1.06 | fixed in URQP 1.03
When a player unlocks an door, the unlock sound can not be heard Reported by the Quake Done Quick Team | QuakeC 1.06 | Here's the solution by Nolan "Radix" Pflug
"CanDamage()" bug Player does not get hurt when he shoots a rocket on top of a waisthigh architecture directly in front of him. Reported by Russell McDaniel | QuakeC 1.06 | fixed in URQP 1.03
Player doesn't pickup keys, when he already has it (e.g. through cheating). This causes problems in E1M6 with the blue key and the barrier of the next teleporter | QuakeC 1.06 | reasons: When a player doesn't pickup an item, its triggers are not fired. When touching a weapon the ammo is not checked. Here's the solution
Player picks up weapon, although he already owns it and has full ammo | QuakeC 1.06
Player does not gulp bubbles when hurt in slime | QuakeC 1.06 | Here's the solution
Dead fishes block your way longer than other monsters, also they are not gibable like the others. Reported by Daniel "Athos Kryn" Olsen | QuakeC 1.06 | Here's the solution
When a player is drowning his armor takes part of the damage. This is unlogical or does it breathe too? Reported by Daniel "Athos Kryn" Olsen | QuakeC 1.06 | Here's the solution
If a player picks up two or more megahealth, his health rots double or more as fast. It should be one health point per second. Reported by Daniel "Athos Kryn" Olsen | QuakeC 1.06 | reason: Rotting of multiple megahealth is not syncronized. Here's the solution
Sometimes monster do not move, when they should. Reported by Jonathan "Perged" Down | QuakeC 1.06 | reason: Incorrect setting of ".nextthink" with itself instead of "time", which may lead to a past time point depending on the frame rate. Here's the solution by Carl "Lord Sméagol" Lloyd-Parker
In long games the "Error: No Free Edicts" message appears often. Reported by Jonathan "Perged" Down | QuakeC 1.06 | reason: Bubble spawner are not removed when player gets out of water. Here's the solution by Jonathan "Perged" Down
Not all bubbles (20) are spawned when a player dies depending on the frame rate | QuakeC 1.06 | Here's the solution
All possible impulses are checked every frame also no impulse have been given. Reported by Jonathan "Perged" Down | QuakeC 1.06 | Here's the solution by Jonathan "Perged" Down
Lavaballs do not get default speed, if speed is set to zero. Reported by Jonathan "Perged" Down | QuakeC 1.06 | reason: Typo. Here's the solution by Jonathan "Perged" Down
Player can kill themselves during intermissions causing problems in Coop and deathmatch games. Reported by Yun Zheng "Zhenga" Hu | QuakeC 1.06 | Here's the solution by Yun Zheng "Zhenga" Hu
A player with an active pentagram gets stucked, when another wants to telefrag him | QuakeC 1.06 | The solution is already provided with the QW source (currently 2.21) Here's the solution for normal Quake
Player can not hurt himself in teamplay 1 mode, as stated in the manual | QuakeC 1.06 | Here's the solution
Cheat impulses not working in Coop games | QuakeC 1.06 | Here's the solution
Fraglimit and Timelimit are recognized in SinglePlayer and Coop games | QuakeC 1.06 | Here's the solution
If Shub is killed in the end level, the killed monster counter is not increased. Reported by the Quake Done Quick Team | QuakeC 1.06 | Here's the solution
Inefficient enabling/disabling "eyes" model and glowing for quad plus pentagram | QuakeC 1.06 | Here's the solution
When a player with an active quad or pentagram is killed, his dead body still glows until he respawns | QuakeC 1.06 | Here's the solution
When a player with an active quad or pentagram is killed, his palette is still shifted until he respawns | QuakeC 1.06 | Here's the solution

Wrong death messages if attacker switches to another weapon before the attacked player dies (this happens with non-instant hit weapons nails, rockets and grenades).
Reported by Robert "Frog" Field
This can also happen when you get killed by falling damage.
Reminded by Raymond Martineau

QuakeC 1.06

The solution is already provided with the QW source (currently 2.21), see handling of ".deathtype"
Here's the solution

When a player respawns and all respawn spots are occupied, then one spot is freed through a telefrag, but the player respawns where he died. Reported by Robert "Frog" Field | QuakeC 1.06 | As this does not occur in QuakeWorld (which has the same code) it could be an engine bug, but I decided to classify it as a QuakeC bug. A map for easily reproducing this bug is available for download including a little text how to do it. Here's the solution by Robert "Frog" Field
On some occasions a player keeps his previous velocity when he respawns | QuakeC 1.06 | The solution is already provided with the QW source (currently 2.21) Here's the solution for normal Quake by Xian
"NoExit" console variable is also recognized in SinglePlayer and Coop games, which permits exiting a level | QuakeC 1.06 | Here's the solution
The handling of classname "trigger_hurt" entities is not working properly, only one player is hurt every second Reported by Robert "Frog" Field | QuakeC 1.06 | Here's the solution by Robert "Frog" Field
When a player gets back to the start map in SinglePlayer/Coop (new episode) without a rune, he keeps all weapons and ammo | QuakeC 1.06 | Here's the solution
Fishes are counted twice for total monsters | QuakeC 1.06 | Here's the solution
When you pick up the Thunderbolt by weapon or backpack underwater, Quake switches to it, and mostly you discharge into water | QuakeC 1.06 | Here's the solution

## DOS Quake Bugs & Suggestions

Current version: 1.08

Bug / Suggestion | first occurred in (cause) | workaround or fixed in
--- | --- | ---
DOSQuake crashing on PCChips' M598 and M599 motherboards with SiS chipset 530 and 3D PCI Sound Pro. Reported by Norberto Alfredo Bensa | all executables | It's a sound issue, the only workaround seems to be: quake -nosound

Time running too fast.
Especially under Windows and on faster computers.

all executables

fixed for the released sourcecode here
solution by Norberto Alfredo Bensa:
Replace the code of Sys_FloatTime() in SYS_DOS.C with "return (double) uclock() / (double) UCLOCKS_PER_SEC;" and remove Sys_InitFloatTime() plus the variables curtime, lastcurtime and oldtime.
Norberto found this in the DJGPP FAQ section 22.27, get more information about uclock() through "info libc".

Input is initialized before video.
When a joystick is connected it seems that DOSQuake does not work, but you just can't see the console which tells you to calibrate your joystick.
Reported by Norberto Alfredo Bensa

released sourcecode

fixed for the released sourcecode here
solution by Norberto himself:
In Host_Init() of HOST.C before the IN_Init() calls check for the DOSQuake directive (defined through the DJGPP makefile) just like id did for the _WIN32 directive.
a) #if !defined(_WIN32) && !defined(DOSQUAKE)
b) #if defined(_WIN32) || defined(DOSQUAKE)

Missing makefile. | released sourcecode | fixed for the released sourcecode here DJGPP makefile provided by Norberto Alfredo Bensa
C variable "isDedicated" is defined as static. | released sourcecode | fixed for the released sourcecode here

In some cases Quake detects the false amount of allocated memory, causing either a crash or a failure to execute.
Reported by Norberto Alfredo Bensa in the comp.os.msdos.djgpp newsgroup. Thanks to Raymond Martineau for the forwarded information.

released sourcecode

fixed for the released sourcecode here
reason:
Quake was originally compiled with the prerelease of DJGPP (2.0 beta 3). This error ocurrs if you try compiling it with the current version, which uses a non-standard sbrk algorithm.
solution by Norberto himself:
Add the following two lines to sys_dos.c:
#include <crt0.h>
int _crt0_startup_flags = _CRT0_FLAG_UNIX_SBRK;

Developer messages are displayed although developer is set to 0. Reported by Tiger and Kevin "Tyrann" Shanahan | 1.01 | 1.07
"No Quake Server Found", although a listen Quake server is present | 1.06 | 1.07 workaround: use listen 1 on server and retry
Loading saved games from 1.06 crashes Quake | 1.07 | 1.08
"SigSev error" when starting Quake with Q95.BAT for playing over TCP/IP | ??? | This is a problem with the TCP/IP stack from MPlayer fix: download "fixsigsegv.exe"

## Windows Quake Bugs & Suggestions

Current version: 1.00 (Quake 1.09)

Bug / Suggestion | first occurred in (cause) | workaround or fixed in
--- | --- | ---

Random occurrences of "Double Quake Error: R_RenderView: called without enough stack".
To reproduce start the END level, use NOTARGET, GOD and IMPULSE 9 and get out of the water pool and through the teleporter (this way you touch a trigger which starts the misc_teleporttrain). Use NOCLIP, move into Shub and wait until the floating thingie tries to get inside Shub.
You can not reproduce this if you fixed MOVETYPE_PUSH

1.00

not yet

AutoPlay always switched back on after exiting Reported by Terry Harris | 1.00 | not yet reason: The only reference is in the Scitech .LIB files, so it is assumed they turn it off to prevent autorunning CDs while playing and turn it back on regardless of its state in the first place.
wanted feature: Missing support for multihomed computers | 1.00 | not yet workarounds: QuakeWorld supports this or you have to specify which ip address Quake should use with the -ip <address> parameter. Use Windows' WinIPCfg to determine your current ip addresses.
As GLQuake's HOM effect is similar to WinQuake's grey fog, it should be possible to set the maximum depth of a scene in WinQuake too. | 1.00 | solution: AirQuake has a solution for this, set R_MAXSURFS to 1600 and R_MAXEDGES to 4000, then even in the AIR3 map no grey fog will appear. Reported by Eluan Costa "Matador" Miranda
"out of handles" error WinQuake can only handle 8 pak files at all, including the ones from an addon (-game) and the mission packs (-hipnotic or -rogue) | 1.00 | fixed for the released sourcecode here workaround: unpack all paks from the addon, or put them together in less pak files

## OpenGL Quake Bugs & Suggestions

Current version: 0.97 (Quake 1.09) (latest private beta release 0.98)

Bug / Suggestion | first occurred in (cause) | workaround or fixed in
--- | --- | ---

Multitexturing not recognized

since first release
(driver settings)

reason:
The original GLQuake and my QIP engine use the older SGIS multitexturing method, and current OpenGL drivers support only the newer ARB multitexturing method by default. To get SGIS multitexturing you have to enable it in your driver.
LordHavoc has a solution for this in his DarkPlaces engine.
Nvidia workaround:
You can enable SGIS OpenGL extensions in the registry, for Detonator Drivers until ~9.xx under HKLM\System\CurrentControlSet\Services \Class\Display\nnnn and for 10.xx+ under HKLM\...\Display\nnnn\NVIDIA\OpenGL. nnnn is normally 0000, but could be 0001, 0002, etc. depending how many gfx cards you had in your computer along with the current Windows installation.
Under Windows 2K/XP the path should be HKLM\SYSTEM\CurrenControlSet\Services \nv4\Device0.
Create the DWORD "ForceMultiTexture" if it's missing. By setting it to 1 the Nvidia drivers will support the older SGIS extensions.

GL_TEXSORT 0 doesn't work without multi-texturing You only see the lightmaps. | since first release | not yet
R_MIRRORALPHA does not work Reported by Daniel "Armadillo" Roberts | since 0.97 | not yet workaround: R_MIRRORALPHA only works when GL_TEXSORT is enabled.
If mirrors are enabled (R_MIRRORALPHA < 1.0) and you PAUSE with a mirror in your view, then you will be looking through the eyes of the player in the mirror. Reported by Richard Walmsley | since 0.97 | not yet
Dead player bodies loose their colors when the player respawns ".colormap" does not work with non-player entities. | since first release(?) (doesn't occur in GLQuakeWorld) | not yet reason: Translation of ".colormap" is only done on the first client entities. Here's a workaround by Robert "Frog" Field
Just above/below the waterline you can see through walls and into a different section of the map. Reported by Paul "Cyber-Freak" Lawrence | 0.97 | This extremly happens on maps not reVISed for transparent water and a low r_wateralpha setting (e.g. 0.3), on reVISed maps it's hardly noticeable. reason by Denis Vlasenko: Player's point of vision is exactly on the water surface, and server thinks player can see entities above the water, and it informs client about this. However, on client side rendering code avoids drawing water surface edge-on (see view.c, grep for 1.0/32) by displacing player by 1/32 pixel on each axis. And player is UNDER water now! Since map is not reVISed for water transparency, walls outside water are not drawn, but entities are, because server says they are visible!
Entities not warped underwater Reported by Apollo on the QBoard | since 0.97 | not yet

Status bar cleared or not drawn when GL_CLEAR set to 1
GL_CLEAR defaults to zero (0) which causes the HOM effect in GLQuake in far distances or outside the level.

since first release

not yet
The next QIP engine release has the new cvar GL_FULLSBAR (-fullsbar sets it), which you can change ingame. When you set GL_CLEAR it will display a hint about the new cvar and the status bar problem. The void color is changed to grey.
assumption:
The code (adpated from the software render) assumes that the area of the status bar isn't cleared, but currently it is. Is leaving out the status bar area from the screen clear possible in OpenGL?
workaround by Ramnor:
Use -fullsbar on startup.
suggestion:
Changing the color to grey as in WinQuake, search for glClearColor() and use 0.2 as RGB.

Messed up models if an addon uses different models | since first release | not yet reason: GLQuake uses the meshed models (.ms2) it finds in the id1/glquake directory, although they don't fit the new model. workaround: rename the id1/glquake directory, start your addon, call all its maps so all models are meshed correctly into your addon's glquake directory.

No fullbright colors
Reported by "Ronin"

since first release

partly fixed for the released sourcecode here, only works with multitexture-capable cards/drivers
solution by Neal White of Wally:
The fix is to add a third "glow-map" rendering pass to any texture that contains fullbright colors.
Here's the basics:
scan each loaded texture; if there is a fullbright color, flag the texture, build a glow-map, and change all the fullbright pixels in the orginal texture to 0; then when rendering the triangle, draw the image and light-map as usual and then apply the glow-map on top with an ADD blend.

Graphics error with FOV 20/75 Just go to the start map in single player, set gl_clear to 1 and fov to 20 and look at the "normal" teleporter | released source code | not yet The bug has vanished, maybe due to the latest service pack 5 of MS VC++ or newer Nvidia drivers.

Graphic error in E1M3/E2M1
Reported by "CpuWiz1998" and reminded by Ryan "Frika C" Smith
This is also noticeable on E1M3, after the spike'n'trapdoor sewer bit, instead of taking the route to the end, go to the par that overlooks the spike'n'trapdoor. In the dark corner, you'll find the 'trapdoor'.
Reported by Matthew "Gleeb" Garnett-Frizelle (HP)

0.97 and E1M3/E2M1
(driver problem)
(doesn't occur in QW as far as I remember)

This is a driver problem, I saw it myself on my own V2 and TNT with older drivers.

wanted feature: Missing support for multihomed computers | since first release | not yet workaround: GLQuakeWorld supports this

In large rooms you can not see the end of the level, but a "Hall Of Mirrors" effect. Also the game suffers from a massive performance hit.
This also happens when you "noclip" out of the level.
A good reproduction can be made with the levels of AirQuake
Reminded by Patric Sandberg

since first release

fixed for the released sourcecode here, done by Eluan Costa "Matador" Miranda
reason:
The engine sets the scene depth to a maximum of 4096 units, everything outside these depth isn't rendered. As GL_CLEAR defaults to zero (0) you'll see the remaining parts of the previous frame, producing the HOM effect.
workaround:
Set GL_CLEAR to one (1) to avoid the HOM effect, unfortunately this shows another bug (see above) which clears the status bar, so this workaround isn't useable.

Entities near the screen border are sometimes not displayed depending on the viewing angle. | 0.97 | fixed for the released sourcecode here, done by Forest "Lord Havoc" Hale reason: The bounding box of the model was to small and fell out of the scene.
Dead player bodies get a messed up skin when the player respawns and his selected skin is not present. This also happens with monsters and other entities | since first release(?) | fixed for the released sourcecode here, done by Charles "Psykotik" Pence suggestion: display skin 0 when selected skin in ".skin" is not present, just like DOSQuake/WinQuake does and GLQuake when the player is alive

After playing a lot of maps GLQuake crashes
To reproduce this crash take the full AllStar CTF 1.10 (incl. maps of CTF3, CTF4, TW3, TW4 and CTF Expansion Pack), use CTF Threewave 4.21 (or another mod if you like) and call all the maps:
ALLSTART
CTFSTART
TWSTART
CTF1-8
CTF2M1-8
TWCTF1-4/6-9
TWCTF2M1-C
EXPCTF1-2
CTF1BSP0-9/X
XENO1-8
E1M1-8
E2M1-7
E3M1-7
E4M1-8
END
You should use BSP Texture Renamer on CTF2 and DM4 before, otherwise don't call them. The order of the maps is not important.
Depending on your RAM the crash will occur earlier or later. On my system (Intel P200MMX, 64MB physical RAM + 96MB virtual RAM, Win95b OSR 2.1 German, GLQuake heapsize 20MB) it occurs around the 80th map (e.g. E4M1).
This error doesn't occur if you call only a part of these levels several times (stopped testing after calling CTF1-8 and CTF2M1-8 about 20 times ~160 maps)

since first release(?)

fixed for the released sourcecode here, done by Lord Havoc in a QSG tutorial, additionally added a maximum cache check by myself
reason:
Texture mismatches are not handled correctly and the texture cache can be filled over the maximum (memory leak) which crashes GLQuake

Does not work as a dedicated server. Reported by Nathan Cline. Thanks to FrikaC for the forwarded message. | since first release(?) | fixed for the released sourcecode here crashes on map command, solution by Nathan himself.
Messed colors if an addon uses a different palette | since first release | fixed in the released sourcecode reason: GLQuake uses the palette (15to8.pal) it finds in the id1 directory, although it doesn't fit the new colormap lump

"GL_LoadTexture: cache mismatch" map problem
Each time when E2M5 and DM4 are loaded in a quake session this error occurs, no matter in which order they are loaded or how many maps were loaded between them.
Reported by Ghettoblasta from Clan Jaegermeister
More error producing combinations are...
E4M6 and DM4
Mission Pack #1:
HIP2M1 and HIP2M4
HIP2M2 and HIP2M4
HIP2M6 and HIP2M4
HIP2M1 and HIP3M3
HIP2M3 and HIP3M3
Capture The Flag (Allstar CTF):
CTF2 and CTF6
CTF2 and CTF2M5
CTF2 and CTF2M7
CTF2 and TWCTF2MC
Mission Pack #2 is o.k.
Malice is o.k.
Beyond Belief is o.k.
Zerstörer: Testament Of The Destroyer is o.k.

GLQuake and different maps

fixed in the released sourcecode
reason:
This error is raised because a map (here DM4) uses a texture with the same name like in another map (here E2M5 or E4M6) with a different size.
workaround:
use BSP Texture Renamer

When two levels have a texture with the same names and sizes but different images, the second level is displayed with the wrong/previous texture.
An example can be seen here, where "comp1_1" of E1M1 was renamed to "city2_6". The modified E1M1 was loaded in GLQuake and then DM6

since first release(?)

fixed in the released sourcecode

Missing or non-working R_WATERWARP Reported by Caramon | since first release | fixed for the released sourcecode here by Radix. Unfortunately Radix's tutorial only worked in situations where R_DrawSequentialPoly() was used (mainly when multi-texturing was enabled), so I added some more code to make it always work.
Every time a client selects a skin, "Invalid player skin #<number>" is printed on every client where the skin is not present GLQuake 0.98 (was never released) also prints the client id | since first release(?) | fixed for the released sourcecode here suggestion: should be a developer message, so it will not disturb normal gameplay, just like DOS/WinQuake's "R_AliasSetupSkin: no such skin #<number>" message Here's a workaround by Robert "Frog" Field
Missing FOV | since first release | fixed in the released sourcecode
Blurry textures in distance | 0.94 (8bit textures) | fixed in the released sourcecode, parameter -no8bit reason: quantization errors in submipping function with 8bit textures workaround: use my little tool "OGL16BIT" to disable the 8bit texture function in 3Dfx's MiniGL port
"out of handles" error GLQuake can only handle 8 pak files at all, including the ones from an addon (-game) and the mission packs (-hipnotic or -rogue) | since first release(?) | fixed for the released sourcecode here workaround: unpack all paks from the addon, or put them together in less pak files
Sky ripples Good example at the SinglePlayer start point of E4M2. Reported by Michael Hiney (email address not published by request) | since 0.97 | solution: use gl_subdivide_size 1 to avoid this, but this may lower your performance in areas with sky
Random occurrence of "psychedelic" screenshots with Voodoo2 | recognized in 0.97 with 3Dfx MiniGL port 1.3 | 3Dfx MiniGL port 1.46
Missing V_CSHIFT | since first release | reason: when gl_polyblend is 0 you will not see any palette shift, use gl_polyblend 1 instead. Reported by Philip "Kryten" Martin
Dramatical slowdown in places with sky | since first release | 0.96 (gl_subdivide_size 128)
Flickering status bar with Voodoo Rush chipsets | 0.94 (3Dfx OpenGL port) | 0.96, use gl_triplebuffer 1 For previous versions use -fullsbar on startup. Thanks to JakFrost of the fabulous Console pages

a Quake Info Pool page
© 1997-2022 by Maddes