Quake Wiki
Quake Wiki

This article appeared in Quake   This article appeared in real life  

QuakeWorld is an official Multiplayer source port made by id Software for Quake that was released in December of 1996 and updates the Multiplayer source code. As major changes were made to the engine the programmer, John Carmack, decided to separate the two engines so that neither interfered with the other's code (which could possibly otherwise cause conflict with the Single Player game).

Single Player or Cooperative games are not supported by this source port. While John Carmack had plans to bring back support, it was never completed and therefore only used for Multiplayer purposes. There are two programs that must be downloaded individually, one for the client and one for the server. The server program initializes a server upon startup, allowing for a quick and automatic setup for a dedicated server running Introduction. The administrator may type Console Commands into this program to change maps or otherwise manage the server.

Other players may enter the server at any time if they are running the client program. The player starts the game on the Console and may type the Command Connect with the value referring to an IP Address (which is given to them either by having it given to them by the administrator or from an online server list) to enter the game. As this is the actual gameplay portion of the source port, this will be the one addressed when referring to differences from this engine to WinQuake or GLQuake.

Though the original executables were written for DOS, they were kept up to date with the WinQuake source port and therefore the final release 2.33-005 can be seen as a derivative of that engine. However, an alternative source port exists that is a derivative of the GLQuake engine that makes the same changes. This latter engine is referred to as GLQuakeWorld.

As the game still calls on the data of Quake, it is required for players to have the retail version of the game. However, due to the large number of changes many people consider this game to be different from the vanilla Quake.

Changes to WinQuake/GLQuake

  • The game's net code has been changed around entirely due to a previously incorrect assumption that most people would have a latency under 200ms, which is the time it takes for the client to receive information from the server. Most of the world tends of have a latency higher than 300ms due to the usually overcrowded ISP modems a connection must be sent through to reach id Software's master server and the ISP modem the master server must send the packets to.
  • Messages now have a tendency to get through more frequently.
  • A message appears when a new player has connected.
  • Instead of receiving input before sending it to the client, the information goes to a fileserver. The objects of the world are spread between the messages, which means not all objects are uniformly at the same time.
  • The server used to send packets not containing any data if none existed. The data must be requested by the server for the packets to be sent now, which means no empty packets are being sent.
  • In the original Quake, some latency was purposely designed so that the last two packets could try to even out the data. With this source port, the most current packet is the one used for responses.
  • Banner quickly appears at startup.
  • Client Console Commands now have a backslash before the actual Command.
  • Players can use custom skins.
  • Selecting "Single Player" will give the player a message about Quakeworld only being for Internet play
  • Selecting "Multiplayer" will give the player a message about various sites they could use to get started with Quakeworld.
  • No demos start with the game, meaning the player is dumped to the Console.
  • The HUD has been altered so that only areas containing information are visible, meaning the HUD bar no longer exists. The Ammo counters and Weapon information (the bar listing the Weapons the player currently has) have been moved to the side of the screen. Similar to the original, Ammo appears at all times while Weapons only appear when the player picks them up.
  • When pressing TAB, the lower HUD no longer shows a Monsters or Secrets count. It also does not show the level name.
  • An new option has been added which allows the player to "Use the Old Status Bar" if they choose to do such.
  • Another option has been added which allows the information displayed on the right side of the screen to instead be on the left side with the option "HUD on Left Side".
  • The Rankings now appears on the left side of the screen instead of being centered.
  • On the Rankings screen, all information has been put into tabs. The final two tabs "Frags" and "Name" are the same as the vanilla game besides the header above. The other three are different: on the far left a "Ping" tab exists to the far left to state the individual player's ping or tested latency, then a "Pl" tab describes your packet loss (information that failed to reach the client), and finally a "Time" tab states the number of minutes the player has been in the server.
  • Though a message still appears when finding a Secret, no sound is played.
  • No pickup messages appear for any Weapon or Powerup.
  • The player no longer tilts on stairs and slopes due to it not usually registering on an Internet connection until it had already happened.
  • A second crosshair exists (/crosshair 2) which is a bit larger and more refined than the first.
  • New Command /Crosshaircolor controls the color of Crosshair 2. The player can choose from 255 colors.
  • New Command "/Password" allows servers to have passwords to limit connectivity while also allowing clients to connect that know the password.
  • New Command /Rcon allows for a player to remotely control the server if they have the Rcon_password. The server Command exists on the same line as the /Rcon Command, for example /Rcon (password) map e1m1.
  • New server Command addip allows the administrator to ban an IP address. The administrator can unban a client with removeip followed by the IP address of the person banned. Clients currently banned can be found in iplist.cfg in the qw directory, though it must be created/updated by first using the writeip Command.
  • New server Command filterban is by default set to 1. By setting it to 0, the IP addresses added by addip will be the only clients allowed to access the server while removeip will ban the clients from the server. This allows for an easy private game.
  • New server Command allow_download determines if the server can allow clients to download custom content. Extensions to the Command allow for specifying the custom content being allowed/disallowed (_maps, _models, _skins, or _sounds). By default it is set to 1, allowing clients to automatically download content.
  • The player can now use Ctrl-V to paste information.
  • The source port information is written in a smaller text.
  • The version number refers to the version of QuakeWorld and not the version of Quake (meaning the newest version says 2.33 instead of 1.09).
  • The exit message only states the programmers. It also has a small added section about the copyright laws of QuakeWorld not changing those of vanilla Quake.
  • Gamespy support, originally named Quakespy. Gamespy has since gone defunct in April of 2014, meaning players must either find IP addresses on gaming websites or share them with a limited community.
  • The Electric Terminals in E1M7 no longer function.

Version History


  • Eliminated global ranking system. Prior to this version, users had to log onto the master server to keep statistics. These statistics would be used to rank users, thereby showing the users with the most skill. However, it was determined to consume too much network power to handle such a large number of users. Many people also were unsure how accurate the statistics were, leading to controversy. Therefore, the master servers now only contain a list of currently active servers.


  • Added download percentage bar. Displays filename and a bar indicating visual completeness of download and a percentage. Overwrites any text at the bottom.
  • Added auto-tracking camera for spectator mode. It's mostly a novelty, but its fun.
  • Added +showteamscores. In team games, the intermission displays team totals, unless you hit TAB to display frag scores. bind a key to +showteamscores will give you the team score display.
  • Added client side DEMO support and playback usage: record <file> <server> Autodownload is disabled when recording. playback: playdemo <file>, File uses the .qwd extension and is incompatible with regular Quake and its demos.
  • Adjust console input a bit to allow room for download percent bar (moved up six pixels).
  • Add cl_hightrack cvar for spectator mode, causes it to always select camera view on player with the highest frags. cl_hightrack 1 turns it on, cl_hightrack 0 turns it off (default)
  • Added text to the "Single player" and "Multiplayer" menu options.
  • Allowed Ctrl-V (paste) at console.
  • Added GL support.
  • Added FOV setting in GL version.
  • If a model file isn't found (couldn't be download) a msg is displayed telling the user they may need to download or purchase an addon pak.
  • Made all skin downloads go into QW directory.
  • Fixed water jump bug where you hop immediately back out in narrow entrances.
  • Added copyright dialog on exit (press y to quit) with credits and version number.
  • New cvar, cl_warncmd, defaults to zero and disables the 'unknown command' msg. qwcl stuffs 'cl_warncmd 1' to itself after quake.rc loads. This gets rid of unknown command messages (like unknown command 'startdemos') from the default exec files, as well as hiding "execing" messages.
  • New command, windows, which will pop a user in fullscreen mode back to Windows (not GL or Linux versions).
  • Turned off bobbing in spectator mode.
  • Now execs the config.cfg in a gamedir upon receiving a new gamedir from the server (saves the current config into the current gamedir before switching to the new one).
  • Reconnect command will now reconnect to the server it is currently connected to, or last one it was connected to.
  • Fixed it so entering 'record <file> <server>' while connected disconnects before starting recording.
  • Fixed scoreboard while dead in GL version.
  • Made it so players are never completely black in the GL version.
  • Changed some console load up msgs in GL.
  • Fixed it so exec files without a trailing new line still work.
  • changed effects in gl to not be as striking (hard to see).
  • Fixed it so a 'glquake' directory is created in other gamedirs for model meshes in GL version.
  • Fixed tolerance on corrupt skin files.
  • Added new allow_download vars: allow_download_skins, allow_download_models, allow_download_sounds, allow_download_maps
  • Added a few client to server commands for auto-camera support.
  • Adding new server cvar, sv_spectalk (defaults to 1, or on) that controls whether spectators can talk to players. If disabled, spectators can only talk to each other.
  • New command, sv_gamedir, which sets the visible gamedir to clients. this allows servers to have a different physical game directories, handing for machines with multiple servers that don't support symbolic links. for example: gamedir ctf4.1 sv_gamedir ctf, causes qwsv to use the physical directory of 'ctf4.1', but report the directory to clients (players) as 'ctf' for their files.
  • Fixed bug in serverinfo strings (memory overwrite and length problem).
  • Map files are permitted to be downloaded if they aren't in a pak file (unless allow_download or allow_download_maps isn't set).
  • Fixed annoying NET_GetPacket: Connection Refused msgs.
  • Fixed annoying water jump bug where you would immedately hop back out of water just after you jumped in.
  • Fixed air velocity movement so that it is like regular Quake, players have more control over their air movement and can cut velocity as needed just like in Quake. This gives more control to the player and rewards skill.
  • Spectators no longer can send or receive say_team msgs (possible cheating could happen).
  • Stopped reporting spectators as players when front-ends request info.
  • Fixed bug that disallowed 9's in ip address for filtering.
  • Spectators can now send say_team msgs, but only to other spectators.
  • No duplicate names allowed now (will rename people who do it).
  • A client can not name themselves 'console'.


  • Put support back in for -zone option
  • Added rerecord <filename> to cause a reconnect with demo recording on the same server
  • Added EF_BLUE and EF_RED for new GL light bubbles
  • Made rocket trails fade out in GL
  • Added NOSKINS 2 to use but not download skins
  • Precalculate light bubble
  • Translucent console (GL)
  • 8bit 3DFX texture support. reduces texture thrashing due to way less texture memory used.
  • Will work on pre 2.0 servers, but can cause minor movement errors due to differences in movement prediction
  • support for server controlled maxspeed and gravity multiplier.
  • added low/avg/high ping values to the showteamscores so an average team ping is calculated
  • Added startup graphic banner
  • add other player clip hulls to player prediction and local prediction, this removes the problem of walking through other players and makes close combat a lot nicer.
  • Using TexSubImage2D to upload partial lightmaps (GL)
  • fixed resized console in gl version, had some dead space, so put a mini frag list on the bottom
  • changed lightning in gl version so in default of gl_flashblend 1 you don't see your own light, so having the quad doesn't obscure your vision
  • fixed dynamic lightning of alias models in gl version (players and what not were not lit up by dynamic lights)
  • exiting the world in spectator mode is no longer lava red, but slime green.
  • fixed the z-angle on entities (for example, the flag was rotated wrong) in GL version.
  • Spectator camera changed from a free float to a locked camera that tracks
  • Added flood protection to the server, default is 4 lines in 8 secs, wait for 10 on activation, Command to change is: floodprot <lines>
  • Added localinfo. 32k of key=value storage. Values are stored with the localinfo console command on the server, i.e. localinfo e1m1 e1m2, localinfo is persistant from the life of the server (between maps) progs can access localinfo using infokey(world, "key") and set it using localcmd("localinfo "); localcmd(key); localcmd(" "); localcmd(value); localcmd("\n"); values with spaces should be quoted. If the same key exists in serverinfo and localinfo, serverinfo will override, localinfo is not visible 'outside' the server
  • Using localinfo, you can now configure a series of maps to run without editing the quake-c. usage: localinfo <from-map> <to-map>. For example, to run a server that loops through e1m2, dm2, dm4 and dm6, try this: localinfo e1m2 dm2; localinfo dm2 dm4; localinfo dm4 dm6; localinfo dm6 e1m2, Note that the last one should loop back to the first, otherwise normal level changing applies. Put the localinfo commands in the server.cfg
  • Protocol has changed, old clients will no longer work. changable move vars such as gravity, maxspeed, etc. are supported again
  • Full server controlled localized client maxspeed and gravity is in. Create to new fields in the QC, .float gravity and .float maxspeed. .maxspeed defaults to sv_maxspeed (320), .gravity defaults to 1.0 (full gravity). Change them at will in the QC, but don't change them too often as every change is noted and the clients are updated with the change so that their prediction works correctly. The per-client maxspeed should be very handy for the TF guys.
  • added support for 'namefun' (high bit characters). On by default, server operators can turn it off with sv_highchars 0
  • sv_friction defaults to 6 as in previous QuakeWorld release. Regular Quake uses a default friction of 4, so if the server op wants Regular Quake behavior, he can change it to 4.
  • fixed 'download ./server.cfg' security bug.
  • fixed up ramp movement (on ground stuff)
  • removed password from userinfo after player connect so that other players and spectators can't use the 'user' command to see the passwd
  • setting password or spectator_password to 'none' is the same as clearing it
  • change player move physics to support ramp accel, there was a bug in stair stepping that prevented proper movement. With this bug, you can't jump into the RL room on DM6, or hit the secret light on E4M1.


  • infokey(self, "ip") and infokey(self, "ping") return expected values as strings (use stof for ping).
  • sv_mapcheck controls map checksumming. Vis data is not included in the checksum with 2.21 clients.
  • Proxy checksumming code changed to less CPU intensive algorithm.
  • Fixed lots of overflow bugs (TF2.6 now works)
  • Optimized some of the server code
  • Server can accept 2.20 clients
  • Movement bug on maps such as ctf4 and the lip by the outside 100 Health on DM3 fixed.
  • CVar cl_maxfps added that controls the max fps rate independant of rate (it defaults to zero, which means rate controlled). PLEASE NOTE: Setting cl_maxfps to high values on a modem will OVERRUN YOUR MODEM and lag you since a packet is sent every frame, resulting in your sending more data than your modem can handle. This is why fps was tied to rate in the first place.
  • Demo recording lock ups fixed
  • Map checks don't include vis data (only works on 2.21 servers)
  • Client works on 2.20 and 2.21 servers
  • Small bug in fov changes in glqwcl fixed (calculated fov span at wrong point)
  • Linux client was hard locked at 30fps, fixed

2.30 (Final Stable Version)

  • Fixed many of the overflow problems found in 2.2x
  • Minor fixes to player movement code
  • sv_mapcheck defaults to on
  • "crosshaircolor" controls the color for the crosshair in "crosshair 2". Values are 0 through 255 and represent a color in the palette.
  • "cl_chasecam 1" while in spectator mode gives a through-the-eyes view of the player.
  • gl_cshiftpercent controls the blend precentage in GLQWCL (default 100).
  • Packet loss meter added to player scoreboard, "PL" is the column title. This indicates the amount of packet loss the player is receiving.


  • Bug where client would crash during a level change if a skin name longer than 16 characters on the server has been fixed.
  • The client now ignores foreign connection requests while connected to a server.
  • A foreign message packet with C-style format strings no longer cause a client crash.
  • Large packets sent to the client could cause it to exit with a fatal error.
  • Timing issues with later versions of Windows 95 and Windows 98 that would cause clients to mistime their frame times and result in a player that could run faster/slower on a server has been changed and fixed.
  • When the client is running in a window, going to the menu or the console automatically frees up the mouse cursor.
  • Server now unpauses when all clients disconnect.
  • A possible server crash with large userinfo data has been fixed
  • A minor buffering error in network data was fixed


  • Bug where 2.33 players would get 'stuck' after about fifteen minutes of play corrected.
  • New version system in that interim test releases now have build numbers. This release is 2.33-0001, the next test release will probably be 2.33-0002 or higher.


  • Added cvar v_contentblend which allows disabling of the blend color in liquids, this works in GL as well (so GL users can control liquid blends independently of polyblend).
  • GL version: added -no8bit command line parameter to disable 8bit textures. This can improve submip visual quality.
  • Fixed new mouse handling bug to let go of mouse cursour when alt-tabbing and the console wasn't down.
  • Some internal fixes to make cheating a bit harder.
  • Out of band disconnect (0x02) packet is now ignored.



  • John Carmack designed QuakeWorld to improve upon the network latency of Quake. Due to the low latency and unpredictable performance, Carmack didn't expect the Multiplayer community to primarily be internet oriented, expecting it to mostly be regulated to LAN games. [1]