e-mail: r_zavelli[at]hotmail[dot]com
icq uin: 54987416
msn: r_zavelli[at]hotmail[dot]com
irc: irc.quakenet.org #gauntletism and irc.enterthegame.com #gamepoint
initial version: 2001-12-21
last updated: 2004-06-11
The goal of this document is to provide info and hints to create a custom Quake2 client and server engine which will provide the hardcore Q2 player an improved Quake2 experience, with functionality as top priority in mind, eye candy coming in the last place, and leaving gameplay untouched of course. If I look at Quake1, of which the engine source code has been available since 21-12-1999, I notice multiple QuakeWorld clients with enormous improvements over the default 2.30 QW client. All custom Q2 clients that can be found on the net, mostly focus on eye candy features without looking at the practical features a hardcore Q2 player really needs.
Recently I was contacted by Griffon26, he's willing to make a custom Q2 client (and perhaps server) to accommodate the features listed below. Stay tuned :).
Update 30-12-2003: Well, as stated on the news page, both Griffon26 and SkulleR independently spent allot of time coding a Q2 server/client engine with MVD support in the same time window. From a Russian Q2 forum, it appears SkulleR used this wish list as a guide \o/. Both managed to get MVD working, without knowing about each other's work! SkulleR's version is in a more progressed stadium at this time, but isn't ready to be tested on public servers yet (amongst things, a Linux build is still missing). To be continued...
Note: The finished column is not entirely up to date, some of these featured may already been coded in the two years that have passed since the source release.
Concerning client and server side mod support in the form of automatic demo recording on match starts and ends (client), automatic screenshots on match ends (client) and mvd recording (server), the goal is a serious custom engine should have native support for match start/end detection for the following mod versions:
quake2 binary modifications only, ref_gl.dll/ref_gl.so and ref_soft.dll/ref_soft.so unchanged
| Description | Suggested by | Programmed by | Finished |
|---|---|---|---|
| Fix client crashing when attempting to take a screenshot without the active mod dir present (while viewing demos). | cure | Griffon26 | Y |
| Fix opengl error while running on a non-3dfx opengl card under win2k with 3dfxgl.dll in the main quake2 dir. | cure | N | |
| Fix join server menu showing only 8 slots while there are 9 cvars in the address book (adr0 through adr8). | cure | Menace | Y |
| Fix when there is a file in the baseq2/players dir, the players models aren't listed in the ingame model browser. | cure | N | |
| Fix client screwing up recording a demo, recording it broken, making it look the demo stopped earlier when viewed afterwards (occurs often with ctf demos) (splitdem program normally used to fix such demos). | cure | ? | Y |
| Fix sometimes escape does not work to bring up the main menu. | cure | N | |
| Fix listen server crashes when a client disconnects. | cure | N |
quake2 binary modifications only, ref_gl.dll/ref_gl.so and ref_soft.dll/ref_soft.so unchanged
| Description | Suggested by | Programmed by | Finished |
|---|---|---|---|
| Make HOME and END in the console act like going to the beginning respectively end of the typed line (as in Q3). | cure | N | |
| Make CTRL+HOME and CTRL+END in the console act like going to the first line in the top of the console respectively to the last line in the bottom of the console (as in Q3). | cure | N | |
| Make LEFTARROW and RIGHTARROW in the console act like going through a line typed in progress (as in Q3) instead of LEFTARROW acting like backspace. | cure | N | |
| Make the cursor default appearance an underscore (as in Q3) (instead of a block). make INSERT in the console act like insert to overwrite text (as in Q3) (when pressed after going back into a typed line with LEFTARROW) with the cursor changing from an underscore to a block. | cure | N | |
| Allow mousewheel console scrolling as with page up and page down (Q3 has this implemented since version 1.32, though it was on this list well before 1.32 was released :P). | cure | Menace | Y |
| Make CTRL+MWHEELUP or CTRL+MWHEELDOWN in console scroll twice the default speed (as in Q3). | cure | N | |
| Make SHIFT+MWHEELUP or SHIFT+MWHEELDOWN in console scroll through history (as in Q3). | cure | N | |
| Adjustable amount of scroll lines in console with page up/down/mousewheel, cvar con_scrollsize, defaulted to 2. | jaydee | ? | Y |
| Toggle command to toggle 0/1 cvars without scripting (as in Q3), or even toggle between multiple cvars (if specified, i.e. 'bind x "toggle hand 0 1 2"' toggles through all weapon in hud modes) (as in Doom3). | cure | N | |
| After hitting tab after entering half a command/cvar in the console, all options are shown matching the typed bit (as in Q3), but sorted in commands, engine cvars, aliases and user defined cvars, all alphabetically ordered. | cure | N | |
| Entering a cvar without a value in the console should give the current value, the default value AND the latched (changed value that will be activated after a snd_restart or vid_restart) value (as in Q3). | cure | Menace | Y |
| Possibility to toggle the console and entering commands while running a demo (as in QW/Q3) and using keys besides F1-F12. | cure | Pooy | Y |
| Add cvar to stop the gl_strings command from being executed (OpenGL extensions from the video driver showing up in the console). | cure | N | |
| Add cvar to set console drop height while in a game. | cure | N | |
| Increase maximum loadable config size from 8 Kb to 64 Kb or so. | cure | cure | Y |
| Add scripting support for reading double user defined cvar variables like this: $a$b. | jaydee | Griffon26 | Y |
| Save intensity cvar setting in config.cfg, so you're using the right value when you start Q2, without having to perform a vid_restart after autoexec.cfg has been executed. | cure | N | |
| cvar to specify (8 bit) console conback pcx image to be used, defaulted to 'conback'. | cure | N | |
| cvar to specify (8 bit) console conchars pcx image to be used, defaulted to 'conchars'. | cure | N |
quake2 binary modifications only, ref_gl.dll/ref_gl.so and ref_soft.dll/ref_soft.so unchanged
| Description | Suggested by | Programmed by | Finished |
|---|---|---|---|
| Allow client to continue viewing a demo if it has a map change in it (as in Q1/QW/Q3). | cure | N | |
| Possibility to view netgraph in demo (as in QW/Q3) (possible?). | cure | N | |
| Possibility to view scores in demo (as in Q1/QW/Q3) (possible?). | cure | N | |
| Add command to jump instantly to a given time in a demo (as in FuhQuake QW client) (i.e. demo_jump 10:00). | cure | N | |
| Add optional timer to HUD for demo time. | cure | N | |
| Demo recording to ram (with adjustable maximum ram buffer size) instead of disk, demo writing to disk on record stop (as in MQWCL/FuhQuake QW clients). | cure | N | |
| Optional auto demo recording with match start/stop detect option (for the mods described on the top of this page). | cure | SkulleR | N |
| Configurable auto demo recording + file naming management according to the played gametype (for the mods described on the top of this page). | cure | SkulleR | N |
| Add menu under main menu or multiplayer menu to browse demos with directory support going up and down and partition change support. | cure | SkulleR | N |
| Add support in demo menu stated above to delete demos, but only for demos located in a subdirectory from the quake2 dir. | cure | N | |
| Add cvars for a third person cam (with adjustable rotation and distance, cheat protected when playing) while spectating a game or viewing a demo (as in Q3). | cure | SkulleR | N |
| Add mvd (multi view demo) support as seen in QW (all povs in a serverside recorded demo which can be downloaded and viewed by the client from the server). | cure | Griffon26 and/or SkulleR | N |
| Splitscreen mvd/spectating viewing support as in Q3 cpma and Oppy's FuhQuake 0.28 modification. | cure | SkulleR | N |
| Allow client to record a client-side demo while playing a mvd demo, so this recorded 3.20-compatible client demo can be used for KeyGrip2 editing. | cure | N | |
| Allow client to switch pov's to players in the neighbourhood while playing a client-side recorded demo. | cure | N | |
| Make timescale work better with demos so it can play them slower than 0.8 (roughly), while maintaining smoothness. | cure | SkulleR | Y |
| Reversed demo playback viewing, anyone? ;) | cure | N |
quake2 binary modifications only, ref_gl.dll/ref_gl.so and ref_soft.dll/ref_soft.so unchanged
| Description | Suggested by | Programmed by | Finished |
|---|---|---|---|
| Show nick changes by players on the server in the console. | cure | Pooy | Y |
| Optional HUD framerate counter in frames per second (as in QW/Q3). | cure | N | |
| Optional HUD speed display in units per second (as in Qizmo QW/Q3 osp/cpma). | cure | N | |
| Optional HUD clock. | cure | N | |
| Adjustable crosshair color (as in QW) for white based crosshairs (original crosshair 1). | cure | N | |
| Adjustable wave filter to stop seeing taunts from other players. | cure | N | |
| Adjustable wave filter to stop seeing own taunts appear as an echo in the console. | cure | N | |
| Possibility to filter fov reading from user info when playing a demo (i.e. fov from demo overriding, fov is stored in normal Q2 demos, unlike in Q1/QW/Q3). | cure | SkulleR | Y |
| Make the gun visible with a fov above "90" with hand "0" (gun right) and hand "1" (gun left). If needed off-center (left or right) for some funny reason and no gun drawn, as it officially was, then use cl_gun "0" (as in Q1/Q3). | jaydee | cure | Y |
quake2 binary modifications only, ref_gl.dll/ref_gl.so and ref_soft.dll/ref_soft.so unchanged
| Description | Suggested by | Programmed by | Finished |
|---|---|---|---|
| Automatic gl_modulate toggle on map load and vid_restart, low value and high value both adjustable, which can be set on/off. | cure | N | |
| Add 'teamskin' and 'enemyskin' cvars to force teamskins and enemyskins to a specific skin. example: 'enemyskin "white"' would force all enemy male/female/cyborg/crakhor models to use the skin 'baseq2/players/'insert model here'/white.pcx and white_i.pcx. note: models may not be forced, since it would be cheaty in ctf (and uk tdm leagues) to have enemy male models and female teammate models, when compared to the default 3.20 client. | cure | N | |
| Possibility to use locs from a definable dir (nitro2 AND xania format locs compatible). | cure | N | |
| Possibility to make locs in nitro2 format. | cure | N | |
| For symmetrical mirrored ctf maps, add possibility to calculate the location markers for the other base (calculate the location markers for the red base, if the blue location markers are known (and vice versa), i.e. entered manually by the player). This by inverting all locations over the midpoint of the imaginary line between the coordinates of the red flag and the blue flag. | cure | N | |
| Add command to alphabetically re-order existing loc files. | cure | N | |
| Better %h %a %w %n %t support. | cure | N | |
| Possibility to automatically execute map-specific configs. | cure | N | |
| Add decent winxp mouse acceleration fix, as opposed to the incomplete Cuball winxp mouse accel fix (sucks/doesn't completely remove mouse accel in winxp). This by adding proper DirectX Direct Input mouse handling, as in Q1/QW/Q3. Add a cvar in_dinput 0/1 (defaulted to 0, usual Q2 mouse input) and command in_restart (or -dinput command line option as in Q1/QW). in_dinput 1 followed by in_restart should result in DirectX Direct Input mode, as in QW (with -dinput on the command line) or Q3. Background article here. | cure | N | |
| Add m_accel cvar with identical behavior compared to Q3 (in Q3 it's cl_mouseaccel). | cure | N | |
| Fix jerky linux mouse support (fixed in id's 3.21 source release?). | cure | N | |
| Particles per weapon adjustable (on/off). | cure | N | |
| Add cvar to disable ambient sounds (non-triggered map sounds). | cure | N | |
| Make the windows and caps lock key bindable (as in Q3). | cure | N | |
| Add dropammo and dropweaps command to drop ALL ammo or weaps with one command. | cure | N | |
| Change Q2's limitations to only see pak files named pak0.pak through pak9.pak, and see all pak files, *.pak that is, in alphabetical order loaded after pak*.pak. | cure | Griffon26 | N |
| Add menu entry to start single player game on hard+ difficulty (skill 3). | cure | N | |
| Video menu entries for 3dfxglam.dll (gl_driver) / ref_glam.dll (vid_ref) AMD 3DNow! Q2 and Rendition Verite if the dll's are present. | cure | N | |
| p_version reply to give engine report and possible anti-cheat authentication (only once every 2 minutes to prevent spam abuse). | cure | N | |
| Add uncompressed and compressed zip loading for media files (.pk3 as in Q3). | cure | N | |
| Optional auto screenshots at end of match (for the mods described on the top of this page), with identical filename as automatically recorded demos. | cure | N | |
| Optional screenshots directly in jpg format (as in Q3) with adjustable quality. | cure | N | |
| Screenshot dump (number/sec with timescale adjusted) to create movies. | cure | N |
| Description | Suggested by | Programmed by | Finished |
|---|---|---|---|
| Adjustable rail trail colors. | cure | Pooy | Y |
| Adjustable explosions type with new particles. | cure | N | |
| Adjustable gib filter with new particles. | cure | N | |
| Adjustable new respawn/teleport particles. | cure | N | |
| 24 bit texture support with a main directory for textures for all single player and deathmatch maps, and a system to allow map specific texture assignment through separate map directories (as in FuhQuake QW client). | cure | N | |
| cvar to specify 24 bit console conback image to be used, defaulted to 'conback'. | cure | N | |
| cvar to specify 24 bit console conchars image to be used, defaulted to 'conchars'. | cure | N | |
| cvar to specify console translucency in gl mode. | cure | N | |
| Optional bobbing rotating items (as in Q3). | cure | Pooy | Y |
| cl_maxfps cvar client-wise separated from the netcode (updates per second) (if possible?), netcode capped by a substitute cvar, cl_maxpackets. | cure | FuzzQuake2 | Y |
| Fix gl_dynamic lights looking screwed up with a gl_modulate toggle (without vid_restart, duh) (possible?). | cure | N | |
| Change when setting gl_flashblend to "1" when gl_dynamic is already 1, gl_dynamic isn't turned off, so you can have both effects (possible?). | cure | N | |
| Fix shadows (gl_shadows 1) so they look more realistic, also remove the annoying effect while using shadows with a grappling hook. | cure | N | |
| Make alt-tabbing out of Q2 (opengl) set the desktop resolution to it's correct value (as in Q1/QW), instead of using Q2's (only a quarter of the 1280x960 desktop shown with Q2 at 640x480 alt-tabbing out). | cure | N | |
| Add winamp 2.x (win32) and XMMS (linux) controls and a main menu entry (as in FuhQuake QW client). | cure | N |
| Description | Suggested by | Programmed by | Finished |
|---|---|---|---|
| Show nick changes. | cure | N | |
| Teammsgs %n spectator fix (server side/mod?). | cure | N | |
| Fix crashing server when client enters the server with a ridiculous long skinname/filename. | cure | N | |
| Fix crashing server when client spams location macros (%l). | cure | N | |
| 3 mode server option: 1 all players can play, 2 only registered & authed players can play with their registered nick, 3 all players can play, but not-authed players are marked somehow. | Vis | N | |
| Improved visibility calculation (makes wallhacks/spikes useless). | Griffon26 | NCServer | Y |
|
Add mvd (multi view demo) support as seen in QWExtended/Kombat Teams Pro (all povs in a serverside recorded demo which can be downloaded and viewed by the client from the server), build in support for the mods described on the top of this page, demo extension 'dm2_mvd'. The demo should be downloadable from the server by ANY Q2 client, thus including id software's default 3.20 client. The server may record the demo at a low fps to reduce filesize (i.e. 20 fps, the custom Q2 client has to do all the translation/rotation interpolation when playing the demo to create a smooth experience).
The server should have a buffer (adjustable in size) for all recorded games and number them, next to the naming convention including the game type, number of players per team and teamname whenever possible. It should be possible to run multiple servers on the same machine without them overwriting each other's demos. 'cmd dlist' entered by the (any) client on the mvd server should give a listing of all available demos on the server, chronically ordered by date with a number in front. 'cmd dlist cure' or 'cmd dlist q2dm1' should filter the list to only display the corresponding demos. 'cmd dl #' entered by the (any) client on the mvd server (with # replaced by the demo number) should download that specific demo. 'cmd dl .' should download the last recorded game from the mvd server, 'cmd dl ..' the second last game, 'cmd dl ...' the third last game. |
cure | Griffon26 and/or SkulleR | N |