12-22-2001, for source release under GPL licensing: - Tweaked linux/Makefile for easier build added linux/README-3.21-RELEASE Changes for 3.21 ---------------- - Support for GL_ARB_multitexture added. This supports the new multitexture extensions and deprecates GL_SGIS_multitexture. - Linux OpenGL X11 handling completely rewritten. Support for XF86DGA Mouse and fullscreen resolution support added. Please see the README file for Linux about the new features of this handling. Changes for 3.20 ---------------- - Fixed a network problem where and oversize packet could cause a client crash. - Fixed the long standing Quake2 bug of where you would occasionally spawn or teleport and find yourself either looking straight at the ceiling or down at the floor. - Changed it so that the function keys (F1 through F12) now get executed when depressed during demo playback or attract modes. This allows you to take screen shots (F12) during demos and other features. An example of other features is a fast forward for demos: alias +ff "timedemo 1" alias -ff "timedemo 0" bind f7 +ff This binding will cause the current demo playing to zip into timedemo mode while F7 is depressed, effectively acting like a fast forward key. - Wrong packaging of 3.19 patch. The Rogue CD has a 45k pak2 and vwep .md2 files in baseq2/players, but the 3.19 x86 patch we released has a 2.7MB pak2. 3.20 has a 45k pak2 and the vwep models go in baseq2/players. - VWep code has been added to Xatrix dll, new VWep models for the Xatrix specific weapons (Ion Ripper and Phalanx) have been included. - Rogue Linux game library was wrong version and had some unlinked symbols, this has been corrected. - Occasional error of: "D_SCAlloc: bad cache width 16384" in software renderer. This had to do with surfaces to SURF_FLOWING and were transparent. This has been fixed in the refs now so flowing transparent textures now works. - [Unix] Net_ErrorToString calls were wrong, was using %i and not %s resulting in random numbers being printed for error messages. - Color shell mixing restored to the same blends as previous versions. This was changed in 3.19 for the new color shells the Rogue mission pack introduced. - Fixed a possible server crash in the new "playerlist" command. - Fixed a case where a person joining a server could be invisible (left over setting of SVF_NOCLIENT from previous spectator). - Invalid pak files no longer cause a crash and are just ignored - Fixed a 3.19 bug where linked models (modelindex2) who's modelindex was greater than 0x7f causes the wrong model to be drawn (in some cases, the world would be drawn twice). This was the cause of many of the "extreme" frame lag people were seeing in 3.19 on servers using old-style VWep code. - Linux: Complete rewrite of the OpenGL library handling. This was needed to cleanly integrate OpenGL extension checking. Linux now supports extensions such as multitexture and better dynamic loading of libraries. It's cleaner now in that you don't have to preload hack stuff to use the 3DFX Miniport rather than libMesa3D. The Linux version now uses the gl_driver to specify the 3D library to dynamically load. For example, to use the lib3dfxgl.so miniport, one would now use: ./quake2 +set vid_ref gl +set gl_driver lib3dfxgl.so This change fixes several bugs that were apparant in the older method, such as a segfault occasionally when connecting to a server with a different game directory. The vid menu in the Linux version has been changed to reflect the new options, the current list of supported video drivers are now: software, software X11, Mesa 3-D 3DFX, 3DFXGL Miniport, OpenGL glX, and Mesa 3-D glX, - Railgun shots now go through gibs as well as other players. - New server variable, "needpass" that can been seen with server browser tools such as GameSpy. This variable indicates whether a password or spectator password is needed to get onto a server. Bit 0 is password and bit 1 is spectator password. - Quake2 will no longer look for gamex86.dll in the main Quake2 directory. It will always load out of the game directory first. - Players joining a server during an intermission are now moved to the intermission position. - The "logfile" cvar has been extended with the following values: 0 - don't log (default) 1 - overwrite qconsole.log and use buffered writes 2 - overwrite qconsole.log and flush write every line 3 - append to existing qconsole.log and flush write every line - Several minor bug fixes to the Rogue mission pack gamex86.dll - Linux: Rebuild of Rogue mission pack shared library to correct some dynamic symbol errors (is NAN errors). Changes for 3.19 ---------------- - Updated VWEP models - Fixed sound config strings getting out of sync on loadgame. This caused the wrong sound to be played. - Fixed a bug in ref_soft that caused the menu system's bottom of screen help text not to be displayed - Added a missing Rogue DM option - "Water surfing" that was present in 3.17 has been fixed (holding jump while on the surface of water let you swim at full speed). - Environment maps (env) are now autodownloaded (if allow_download_maps is set). - Spectator support added. A new cvar is built into the client, "spectator" Setting it to value other than "0" will allow you join a game as a spectator. While in spectator mode, you can press the attack button to enter a chasecam mode and follow other players. Using the inventory keys (by default the left and right square brackets) you can switch between players in the game while using the chasecam. You may enter and leave spectator mode while connected. Doing so resets your score to zero. ***The new spectator support requires a new game.dll and may not work for user mods until they update their code. The default game.dll that comes with 3.19 supports chasecam as well as the new included Xatrix game.dll. - Fixed it so that when a model defaults to male/grunt (don't have the necessary model or skin for the player), VWep support is still enabled. - New console command for players, "playerlist". This will cause the server to give you a text list of the players on the server, including their connect time, score, ping and spectator status. This is handy if not everyone fits on the scoreboard on busy servers. - New cvar for the game.dll: spectator_password. If set to a value (other than "none"), users must set their spectator variable to this value in order to join the server as a spectator. This password is independant of the normal user password. - New cvar for the game.dll: maxspectators (defaults to 4). This value is not seperate from maxclients (a spectator is still a client). - New cvar for the game.dll: sv_maplist. This can be set to a list of map names that the server should autorotate through, rather than using the nextmap set in the actual map files themselves. For example: set sv_maplist "base1 q2dm1 q2dm3 fact3" will cause the server to rotate through those maps. ***This requires a game.dll update and will not work with user mods until they update their code. - A new facility has been added to ClientConnect() in the game.dll to allow the game.dll to pass a message back to the user for the reason of disallowing a connection. It is done by setting a key of "rejmsg" in the passed userinfo. For example: Info_SetValueforKey(userinfo, "rejmsg", "Password required or incorrect."); - The server cvar, password, may be set to "none" to clear the password. This is needed because rcon can not set a blank password. - New server cvar: sv_airaccelerate. This controls the optional air acceleration facility. The default value is 0, which disables air control. The usual value to replicate the air control seen in the original Quake and later versions of Quakeworld is 10. 10 allows for much more air control (as was seen in 3.15). This value is ignored in single player and coop. - Fixed NoSuchFrame/BAD_MODELTYPE errors when doing a vid_restart while connected. - NoSuchFrame errors now include model name to assist in debugging user mods. - Fixed the remote status query response (ServerInfo) to not include error messages and be more consistent. Changes for 3.18 ---------------- - "Water surfing" that was present in 3.17 has been fixed (holding jump while on the surface of water let you swim at full speed). - Environment maps (env) are now autodownloaded (if allow_download_maps is set). - Spectator support added. A new cvar is built into the client, "spectator" Setting it to value other than "0" will allow you join a game as a spectator. While in spectator mode, you can press the attack button to enter a chasecam mode and follow other players. Using the inventory keys (by default the left and right square brackets) you can switch between players in the game while using the chasecam. You may enter and leave spectator mode while connected. Doing so resets your score to zero. ***The new spectator support requires a new game.dll and may not work for user mods until they update their code. The default game.dll that comes with 3.18 supports chasecam as well as the new included Xatrix game.dll. - Fixed it so that when a model defaults to male/grunt (don't have the necessary model or skin for the player), VWep support is still enabled. - New console command for players, "playerlist". This will cause the server to give you a text list of the players on the server, including their connect time, score, ping and spectator status. This is handy if not everyone fits on the scoreboard on busy servers. - New cvar for the game.dll: spectator_password. If set to a value (other than "none"), users must set their spectator variable to this value in order to join the server as a spectator. This password is independant of the normal user password. - New cvar for the game.dll: maxspectators (defaults to 4). This value is not seperate from maxclients (a spectator is still a client). - New cvar for the game.dll: sv_maplist. This can be set to a list of map names that the server should autorotate through, rather than using the nextmap set in the actual map files themselves. For example: set sv_maplist "base1 q2dm1 q2dm3 fact3" will cause the server to rotate through those maps. ***This requires a game.dll update and will not work with user mods until they update their code. - A new facility has been added to ClientConnect() in the game.dll to allow the game.dll to pass a message back to the user for the reason of disallowing a connection. It is done by setting a key of "rejmsg" in the passed userinfo. For example: Info_SetValueforKey(userinfo, "rejmsg", "Password required or incorrect."); - The server cvar, password, may be set to "none" to clear the password. This is needed because rcon can not set a blank password. - New server cvar: sv_airaccelerate. This controls the optional air acceleration facility. The default value is 0, which disables air control. The usual value to replicate the air control seen in the original Quake and later versions of Quakeworld is 10. 10 allows for much more air control (as was seen in 3.15). This value is ignored in single player and coop. - Fixed NoSuchFrame/BAD_MODELTYPE errors when doing a vid_restart while connected. - NoSuchFrame errors now include model name to assist in debugging user mods. - Fixed the remote status query response (ServerInfo) to not include error messages and be more consistent. Changes for 3.17 ---------------- - Fixed possible NAN resulting from handing zero to second arg of atan2 - Autodownloading is now DISABLED by DEFAULT. It must be enabled by typing 'allow_download 1' at the console, or using the download options menu in Multiplayer/PlayerSetup/Download Options - Server demos now include a svc_serverdata block at the beginning with the attractloop byte set to '2' to indicate server demo (byte before gamedir in the svc_serverdata block). This allows easy identification of serverrecorded demos (serverrecord demos are only for demo editors, they can not be played back in Quake2 without being first edited). - New options for setting texture formats in ref_gl: gl_texturealphamode: default, GL_RGBA, GL_RGBA8, GL_RGB5_A1, GL_RGBA4, GL_RGBA2 gl_texturesolidmode: default, GL_RGB, GL_RGB8, GL_RGB5, GL_RGB4, GL_R3_G3_B2, GL_RGB2 (SGI only) - Player movement during Air acceleration changed to reflect more real-world physics while airborne. - Fixed a bug when riding trains that caused drift in a southwest direction (Thanks to Jim Dose at Ritual for pointing this one out). - Linux: Now correctly reports out of memory rather than segfaulting (mmap returns (void *)-1 and not NULL on error). - Fixed autodownloading to not create paths for files that can't be downloaded (this was creating many empty directories in baseq2/players). - When downloading a file from a server that doesn't have it, the message is now "Server does not have this file" rather than "File not found." - Fixed some coop keys in 3.15 weren't being handled correctly (pyramid key). - Highbits are now stripped from console when using condump - Restored support for gl_modulate in multiplayer play - Fixed it so that players with a model/skin you don't have aren't checked for on disk more than once. - Fixed it so sounds played for PPMs that default to male are only checked on disk once. - Byte ordering/portability fixes in cinematics, PCX and other file handling. - Client state during static image cinematic (PCX image) so that client can continue to next unit. - Fixed it so that dedicated coop servers no longer get stuck at victory.pcx, if a server is in coop mode, hitting a button at the victory.pcx screen while cause the server to restart at base1 - Fixed infinite grenade bug - Fixed autodownloading to actually download sounds and console pics - Fixed autodownload to not create empty directories for files not on the server. - Added customized client downloading. cvars are the same as the server side: allow_download - global download on/off allow_download_players - players download on/off allow_download_models - models download on/off allow_download_sounds - sounds download on/off allow_download_maps - maps download on/off They can also be (more easily) set with a new Download Options menu accessible in Multiplayer/Player Setup/Download Options - Changed checksumming code to be more portable and faster. The checksum in 3.15 was seriously broken. This change makes 3.17 incompatible with previous servers. - Fixed player 'warping' present in 3.15 (this was an artifact of the hyperblaster optimizations). - Fixed the autodownload in 3.15 so that stuff like skins for models are downloaded as well as pics. Changes for 3.16 ---------------- - Fixed infinite grenade bug - Fixed autodownloading to actually download sounds and console pics - Fixed autodownload to not create empty directories for files not on the server. - Added customized client downloading. cvars are the same as the server side: allow_download - global download on/off allow_download_players - players download on/off allow_download_models - models download on/off allow_download_sounds - sounds download on/off allow_download_maps - maps download on/off They can also be (more easily) set with a new Download Options menu accessible in Multiplayer/Player Setup/Download Options - Changed checksumming code to be more portable and faster. The checksum in 3.15 was seriously broken. This change makes 3.16 incompatible with previous servers. - Fixed it so sounds played for PPMs that default to male are only checked on disk once. - Fixed player 'warping' present in 3.15 (this was an artifact of the hyperblaster optimizations). - Fixed the autodownload in 3.15 so that stuff like skins for models are downloaded as well as pics. Changes for 3.15 ---------------- - Added visible weapons support. This is precached with a special symbol, i.e. gi.modelindex("#w_shotgun.md2") which causes the client to autobind it to the players current weapon model. Plug in player models can optionally support the visible weapons. Any that do not support it will use their default weapon.md2 files automatically. Visible weapons files for plug in player models are not downloaded automatically--only the default weapon.md2 (and skin) is. The Visible weapon models themselves are not included. They can be downloaded from http://www.telefragged.com/vwep/ - New cvar cl_vwep controls whether visible weapons is enabled on the client. If you turn it off, the visible weapons models are not loaded. This can offer a speed up on slow or memory starved machines. - Rewrote the some of the net code to use optimized network packets for projectiles. This is transparent to the game code, but improves netplay substancially. The hyperblaster doesn't flood modem players anymore. - Rewrote the packet checksum code to be more portable and defeat proxy bots yet again. - Autodownload support is in. The following items will be automatcally downloaded as needed: - world map (and textures) - models - sounds (precached ones) - plug in player model, skin, skin_i and weapon.md2 downloads go to a temp file (maps/blah.tmp for example) and get renamed when done. autoresume is supported (if you lose connect during the download, just reconnect and resume). Server has fine control over the downloads with the following new cvars: allow_download - global download on/off allow_download_players - players download on/off allow_download_models - models download on/off allow_download_sounds - sounds download on/off allow_download_maps - maps download on/off maps that are in pak files will _not_ autodownload from the server, this is for copyright considerations. The QuakeWorld bug of the server map changing while download a map has been fixed. - New option in the Multiplayer/Player Setup menu for setting your connection speed. This sets a default rate for the player and can improve net performance for modem connections. - Rewrote some of the save game code to make it more portable. I wanted to completely rewrite the entire save game system and make it portable across versions and operating systems, but this would require an enormous amount of work. - Added another 512 configure strings for general usage for mod makers. This gives lots of room for general string displays on the HUD and in other data. - Player movement code re-written to be similiar to that of NetQuake and later versions of QuakeWorld. Player has more control in the air and gets a boost in vertical speed when jumping off the top of ramps. - Fixed up serverrecord so that it works correctly with the later versions. serverrecord lets the server do a recording of the current game that demo editors can use to make demos from any PVS in the level. Server recorded demos are BIG. Will look at using delta compression in them to cut down the size. - Copy protection CD check has been removed. - Quake2 3.15 has changed the protocol (so old servers will not run) but all existing game dlls can run on the new version (albiet without the new features such as visible weapons). - Added flood protection. Controlled from the following cvars: flood_msgs - maximum number of messages allowed in the time period specified by flood_persecond flood_persecond - time period that a maximum of flood_msgs messages are permitted flood_waitdelay - amount of time a client gets muzzled for flooding (gamex86 DLL specific) - fixed it so blaster/hyperblaster shots aren't treated as solid when predicting--you aren't clipped against them now. (gamex86 DLL specific, the SVF_DEADMONSTER flag is set on projectiles) - gender support is now in. The userinfo cvar "gender" can be set to male/female/none (none for neutral messages). This doesn't affect sounds but does affect death messages in the game. The models male and cyborg default to gender male, and female and crackhor default to female. Everything else defaults to none, but you can set it by typing "gender male" or "gender female" as appropriate. - IP banning support ala QW. It's built into the game dll as 'sv' console commands. This list is: sv addip - adds an ip to the ban list sv listip - removes an ip from the ban list sv writeip - writes the ban list to /listip.cfg. You can exec this on a server load to load the list on subsequent server runs. like so: quake2 +set dedicated 1 +exec listip.cfg sv removeip - remove an ip from the list the ip list is a simple mask system. Adding 192.168 to the list would block out everyone in the 192.168.*.* net block. You get 1024 bans, if you need more, recompile the game dll. :) A new cvar is also supported called 'filterban'. It defaults to one which means "allow everyone to connect _except_ those matching in the ban list." If you set it to zero, the meaning reverses like so, "don't allow anyone to connect unless they are in the list." (gamex86 DLL specific)