Quake bugs

From Quake Wiki

For now, see the Quake Info Pool page which contains a VERY detailed record of QuakeC and Quake engine bugs, and workarounds or fixes for most of them.


QuakeC bugs[edit]

Known bugs in the 1.06 QuakeC source:

  • Rotfish are counted twice
  • Rotfish does not become non-solid until the final frame of it's death animation * this is not in line with other monsters, so it is considered a bug
  • Rotfish can't be gibbed * the only monster that can't
  • Monsters sometimes do not start moving (statue bug) due to incorrect setting of nextthink in monster spawn functions
  • If the noexit cvar is set, it will stop the player exiting the level in single player and coop
  • Entity leak in player drowning bubbles can lead to server crash in deathmatch/coop if a lot of players drown
  • Player sometimes retains velocity after respawn in dm/coop
  • Player sometimes respawns at location of death rathen than the intended spawn spot in dm/coop (happens when all spots are full, this is fixed in QW engine but not NQ, can be fixed in QC)
  • Shamblers being non-solid to projectiles after using their lightning bolt attack due to an abuse of the .owner field
  • Key door unlock sounds not audible due to incorrect sound channel being used
  • Thunderbolt bugs relating to the "three beams"
  • drowning affects armour
  • Items are removed upon starting a new episode in deathmatch (items are normally kept in DM between levels) * should check for !deathmatch, not serverflags
  • if the attacker dies from his own radius damage, it cancels all other caused damage (e.g. to other players/monsters)
  • chained radius damage (e.g multiple explo boxes) causes problems, need to add a 0.1 second delay
  • hurt_touch is bugged when multiple players are touching it
  • If a player is damaged by a trigger_hurt and force_retouch is set within one second (such as with a player teleporting or respawning), the trigger_hurt will stop working until force_retouch is set again.
  • corpses of players that die with quad/pent still glow, need to remove .effects field upon death
  • palette shift of player that dies with quad/pent should be removed
  • quad/pent palette shift during intermission
  • wrong obituary messages, for example fire a grenade and switch to shotgun will record a shotgun death * need to track the attacking entity all the way to obituary, rather than the attacking players weapon at the time of death
  • timelimit and fraglimit affect singleplayer and coop incorrectly
  • samelevel set should only affect dm
  • pentagram telefrags cause players to get stuck
  • suicide during intermission
  • cheat command should work in coop
  • shub niggurath is not counted as a monster correctly
  • teamplay 1 does not work as described in the manual (should be able to hurt self)
  • player should gulp bubbles in slime and water, not just water
  • player doesn't drop backpack on suicide
  • multiple megahealth rots down too quickly (double rot)
  • typo in default fireball speed (== 1000 not = 1000)
  • targets not fired if the player doesn't take the item (e.g. already has max armour, touching armour should trigger a monster/something, but doesn't)
  • CanDamage is bugged, doesn't always damage when it should, a good way to test this is in the episode 3 hall on start.bsp by shooting rockets into the crevice along the wall * need to traceline into all corners of the bbox
  • can't jump when on top of monsters/explo boxes, just slide weirdly
  • no cthon obituary message
  • skill level can be changed on console mid map, causing nightmare monsters on an otherwise easy skill map, should be fixed at map start
  • weapon/monster naming inconsistencies, super nailgun/perforator etc * should be tidied up. also item_weapon (which should't be used) calls the ammo spikes not nails
  • should lightning discharge kill things not in the water?
  • monster attacks player on intermission points
  • bugged path_corner/movetarget code on monster spawn functions * however fixing this may break maps using this as a hack to send a monster wondering off
  • if a player disconnects with 1 frag it says 1 frags * should remove the s
  • if quad cheat is used on a map with no quad damage, the sounds aren't precached
  • bug in player animation code, should check for self.walkframe >= 6 not == 6, causes funky player animations sometimes
  • ghost eyes / hovering bodies if player disconnects while using ROS or in the air * use copytobodyque function instead and null out the player model
  • if a player exits the level holding down fire, he can continue shooting during the intermission out of the intermission camera!
  • double telefrag bug when chasing players through a teleporter
  • keys should be a one time trigger in coop
  • if the player creates a save with runes in their inventory, exits the game, reloads the save, then dies on the same level, they will lose all their runes
  • in demos, the intermission camera looks the wrong way

Texture Bugs[edit]

ID Software made a huge mistake when they put their textures in maps. ID included two different textuers in different maps under the same name. Loading a map with one texture then loading a different map with another texture but the same name caused earlier versions of (net/reg)Quake to crash, but newer clients simply use the old (first) texture loaded. Newer clients (as the Quake Retexture Project is hoping) will make use of shaders to differentiate between textures and maps. Here is a running list of texture problems:

Below are all maps (in regular Quake) where the (three) textures appear in.

Todo: get a fucking table to work.

What about getting Maddes's permission to copy-and-paste stuff from QIP here? Or is the permission implied (IANAL)? -- Tonik
Good Idea, I'll do it within a few days. Should I just copy-paste things that are still bugs, or ALL quake bugs? fixed or unfixed? -- Up2nOgOoD
Unspecified user added a To-Do; get a table of known Quake bugs together, list known engines or projects that have corrected these bugs, other information....

Engine bugs[edit]

CL_UpdateTEnts (in cl_tent.c) contains some satanic code which should never have worked. In fact it's a dormant crash, waiting to surface if you look at it funny.

This code at the bottom of the function:

for (i=0 ; i<3 ; i++)
    org[i] += dist[i]*30;

Is overwriting the use of the variable 'i' in the outer loop! So make a new variable 'j' and use it in this inner loop instead.