Quake Spy 3.02, (c) 1996 ======================== OFFICIAL HOME PAGE: ------------------- Quake Spy now has an official home page. You can get up to date information about Quake Spy now by visiting: http://www.panix.com/~sheaslip/qspy/ BIG thanks go out to Stephen Heaslip of blue's Quake Rag (http://www.panix.com/~sheaslip/quake/ - your best source for up to date Quake news) for the space and administration of this site. Thanks for the QSpy logo go to Devicer (devicer@earthlink.net). BIRTH: ------ This program was born out of a desire to quickly find a playable Quake server. I must have spent a week looking at the finger output from Servers@ns.stomped.com and then manually pinging those IP addresses looking for a server with a decent response time. While this accomplished my initial goal, it was hardly an acceptable solution. Hence, the birth of Quake Spy! FEATURES: --------- * Gets a list of active Quake servers from the following sites: 1. Finger Servers@ns.stomped.com 2. http://www.pipo.com/quake/quake.html 3. Finger vfuks@monmouth.com (try Deicide's Quake Servers at http://www.monmouth.com/~vfuks) 4. User defined finger source 5. User defined http source 6. User defined http source 7. User defined http source 8. User defined http source Quake Spy is able to parse any finger or web page for IP addresses. Just fill in the user defined areas and roll your own list! * Queries these sites for server name, map name, current and max players. * Displays results in a list box in the following format: Average response time in ms, number of times the queries timed out, the IP address of the server, the name of the server, the name of the map currently being run by the server, the current number of players on the server and the maximum allowed players on the server. * Launch Quake by double clicking on a server in the listbox. Be SURE to tell QSpy where Quake is by using the View/Options button and selecting the Quake Page. (Don't do this under NT unless you have a native NT port of Quake. Quake won't like it.) * Manually add and delete Quake servers to the list. * Save and reload the Quake server list. This info is saved to a file named QSpy.dat in your Quake directory. * Ability to copy the server list to the clipboard for further user processing. * Refresh the server information of selected servers. * Query servers for player/rule information. Once the server list has been populated, you can find out who is playing on a particular server by activating the Quake Player Spy! This process will requery the selected server (possibly failing the filter checks) and then will populate the Rule List with the server parameters that particular server is using. Next it populates the Player List with the players' colors, names, IP address + port, how many frags they currently have, and how long they've been connected to the server. You can sort this list on any of these items by clicking on the column header or selecting the appropriate menu item. * Busy Server-Redial on selected servers. If all of your favorite servers are full, you can highlist them and then kick off the Busy-Redial. Quake Spy will continuously poll these servers until it finds one that is no longer full of players. It will then either notify you of this fact or will go ahead and launch Quake! * When Quake Spy launches Quake, it now plays what we think is an appropriate sound clip! * Resize the Quake Spy window to suit your preference. * Dynamically resize the different list controls by dragging splitter bars to suit your preference. CONFIGURABLE OPTIONS: --------------------- . Quake Spy either stops its operations after Quake launches or it terminates after successfully launching Quake. . Whether or not to auto-save the Quake Spy server list upon leaving Quake Spy. . Whether to auto-load the (saved) server list upon program startup. . Whether to auto-start the update process upon program startup. . Where to get active Quake server list information . There are seven filter settings you can use to limit the output of the server information gathering process: 1. Display servers that return the Quake query request (i.e., they are up and answering queries). 2. Display servers that are not full of players. 3. Display servers whose query requests timed out less than the specified amount. 4. Display servers whose average response time is less than the specified time. 5. Display servers whose map name starts with the specified characters (e.g., 'dm' for servers only playing deathmatch levels). 6. Display servers who map name does not start with the specified characters (e.g., 'e1' to filter out servers running the shareware levels). 7. Display servers who have more than the specified number of players connected to them. . The directory where Quake is located on your system. You must use a full drive/path specifier here (e.g., "E:\GAMES\QUAKE"). . What command line options to pass to Quake when you launch it. You must not include a drive/path specifier here. That is, don't do this "E:\GAMES\QUAKE\Q95.BAT". Just use "Q95.BAT" instead. . Include connection scripts aliases: . qlist: displays a list of the top 10 servers Quake Spy found. . s<#>: connect to the specified server in the qlist alias. . Allow an automatic disconnect and display a top 10 list of servers while in Quake and specify which character to bind this to. Something to be aware of: If you do this and later decide you don't want this binding, you'll have to go and remove the bind command from the config.cfg file in the id1 directory. A later version of Quake Spy will do this for you. . Whether you want to use multithreaded queries for the Quake Spy server update process. Quake Spy used to do pings/queries one server at a time. This routine has been revised to use multiple threads if you so desire. That is, Quake Spy will simultaneously query multiple servers thereby speeding up the query process immensely! KNOWN PROBLEM: When using multithreading, the ping times reported are somewhat inflated. . If you choose the above option, how many threads you want this process to use. We've tested this process with up to twenty threads. If you feel we should allow more than this, then pipe up. . How long to wait for a response from the query for info before the request times out. If you are getting a lot of servers that don't return any info, try increasing this parameter. MISC INFO: ---------- This release has been tested and (to the best of our knowledge) will only work with Windows 95/NT3.51/NT4.0. Quake Spy makes use of MFC42.DLL and MSVCRT.DLL. If you downloaded the stand alone verion of Quake Spy and you do not have these files in your SYSTEM directory, then you should get QSPYRT24.ZIP from the same place you got this file. If it's not included, check ftp.cdrom.com for this file: /pub/idgames2/utils/network_serial/server_picker/qspy24rt.zip Or The Official Quake Spy home page: http://www.panix.com/~sheaslip/qspy/ If you still can't get it, then you're SOL! Just kidding...you can request a copy from us, and we'll be glad to mail it to you (only do this as a last resort though). We are also distributing Quake Spy in an installShield package. If you download this package, you don't need the support files. Everything is included in this package. DISTRIBUTION STATUS: -------------------- Quake Spy is freeware...with the following provisions: If you use Quake Spy, send us an email. Do you like Quake Spy? Do you have any suggestions on how to improve it? We want to get a feel for what you guys think/want. If you feel compelled to show us how much you appreciate Quake Spy, we will kindly accept monetary donations of any amount ;-) AUTHORS: -------- Joe Powell (Team Leader), jep@sclsis.navy.mil (preferred) or powelljo@jaxmail.navy.mil (10 years of C, 2 months of MFC C++ programming experience) The initial idea for QSpy came from me. Tim got me started with the network code. Then, I took it from there and developed it into the app we all know and love! Tim Cook (Network Guru), cookti@jaxmail.navy.mil. (9 years of C, 3 years of C++ programming experience) Tim wrote most of the networking code in QSpy. His latest contribution has been the multithreaded queries! Yea Tim! Tim is the C++ guru of the team. In the earlier versions of QSpy, I'd wander over to Tim's cube every now and then asking, "Hey Tim, how do you do this in C++?" Jack Mathews (MFC, UI Guru), jack@opportunist.com (5 years of C, 1.5 years of MFC C++ programming experience) Jack is the newest member of the QSpy team. His initial contributions have been some resizing enhancements, splitter bars between the list controls, player list (colored icons and sorting) enhancements, and rules list implementation. Since neither Tim or I had ever done anything with MFC before QSpy, we were both learning as we went along. When Jack offered to help us out, we jumped at the chance! TODO ---- RMB popup server menu (suggested). Option to save filtered server list instead of entire list (suggested). Add property page setting to allow user to select sound clip. Add Quake property page button to select Quake directory. Query for specified player like IronMan's site used to! Ability to send server list to printer (suggested). Remove the disconnect key binding command from the config.cfg file when that option is deselected or changed. PLAY more Quake! REVISION HISTORY ---------------- v3.02 9/9/96 Refined busy redial server (no ping, no player/rule query) (JP). Refined player/rule update (no ping) (JP). More informative messages displayed for failure of load/save (JM). Fixed: QSpy crashed on LARGE (> 64K) lists (JP). Fixed: First user defined http slot not saving properly (JP). Fixed: Multithreading was not stopping properly (TC). v3.01 9/7/96 Fixed the qlist alias corruption problem (JP). Fixed the first user defined http slot (it was still trying to connect to IronMan's list) (JP). Fixed killing threads before their time (JM). Fixed case where refresh was attempted with no anchor (JM). Fixed problem where QSpy was referring to wrong sound clip (JP). v3.0 9/6/96 Removed IronMan's listing from the sources property page :-( (JP). Converted the server listbox to a listctrl (JM). Save/restore QSpy window size/position (JM). Added menu item to launch the Quake Spy home page! (JP). Added menu items to launch my favorite Quake pages (JP). Filtered out highlight characters in player names (JP). Added the code to fill in the rules listctrl (JP). Revamped the menu system and property sheets (JM). Implemented the rules listctrl (JM). Implemented multithreaded queries (TC). Implemented sorting on different columns in the player listctrl (JM). Added a splitter bar to dynamically resize the server and player list controls (JM). Now plays a sound clip while Quake is being launched (TC). Actually PLAYED Quake instead of programmed for it! (Hi Cain!) Finally found the bug that was corrupting the server list (this was causing multiple problems) (JP). Save/Restore the column sizes in the player list ctrl (JP). Added an option to either launch Quake or just let the user know when a spot opens up during a queue cycle (JP). Added a Busy Server-Redial command (suggested) (JP). Added filter option to exclude specified map names (suggested) (JP). Added filter option to exclude servers with less than a specified number of players (JP). Implemented new queries to get player information! (TC). HEY! We FINALLY got the Quake protocol information we wanted! Modified IP parsing routine to look for port numbers and other portions of the program to use this information (JP). Rewrote the user interface: (JP) Added a menu. Added a toolbar menu. Added a real status bar. Added a button to copy server list to clipboard. (JP) In 'qlist' alias, indicate (with an "(L)") which server was launched (suggested). (JP) Modified code to allow for unlimited length server sources (it was limited to 64K before). (TC) v2.6 8/6/96 (JP) Added filter option for map name. Added option to auto-load server list upon program start. Added option to auto-start update upon program start. Added 3 user defined http spots and 1 user defined finger spot to the sources property page. Added vfuks@monmouth.com finger to Sources property page. Added Pipo's web page to Sources property page. Wrote a generic routine to parse out IP addresses from any page (suggested). v2.5 8/2/96 (JP) Return focus to last selected item after a refresh (suggested). Added Quake Spy option to autosave server list upon leaving QSpy. Added Quake Spy option to ping/not ping servers after loading data. Implemented non-blocking socket reads throughout the program. (Press Stop immediately after starting an update and you'll see what I mean.) Improved display speed on delete and refresh functions. Allowed the Quake Spy window to be resized and maximized. v2.4 7/25/96 (JP) Added a Quake Spy property page with an option to terminate QSpy after launching Quake. Rewrote the Refresh button list traversal code. The filter options are reapplied to the list upon exiting the property page. Added buttons and code to save/load list of servers. Added buttons and code to allow manual addition/deletion of servers. Rewrote portions of code to allow easy addition/deletion of servers. Added connection scripts option when launching Quake. Added Quake property page options to: Include connection scripts aliases (TC) Allow an automatic disconnect and display a top 10 list of servers. (TC) Specify which character to bind the above to. v2.3 07/20/96 (JP) Added button to refresh (re-ping/re-query) selected servers. (updated information is not checked against the filter criteria) Added the ability to stop the server information retrieval process. Added the ability to stop the server refresh process. v2.2 07/17/96 (JP) Added some more status messages to indicate QSpy is doing something. Added a proper icon to the application :-) Fixed: If the close button was pressed during the pinging process, the application window closed, but the process continued to run. (TC) Fixed: The property page settings were never initialized unless the property page was activated. v2.1 07/15/96 (JP) Fixed pointer bug (for real) this time (hey, it was late). Added a property page accessed through the Configure button. Added ][ronMan's server web page to the Sources property page. Added Filtering options to the property page and implemented them. Added Quake property page to allow definition of command line and working directory. Added ability to launch Quake by double clicking a list item. Added a Ping property page to allow number of pings and timeout values to be adjusted. v2.01 07/13/96 (JP) Fixed stupid pointer bug that happened when the process was restarted. v2.0 07/12/96 (JP) Converted application to a 32-bit Win95/NT application. Filter out duplicates in the Stomped output. Display results sorted by ping time. v1.0 07/11/96 (JP & TC) Initial Public Release as a Console Application. LEGAL DISCLAIMER ---------------- We're not responsible for anything that happens to your system while Quake Spy is running. Period! Hey, what do you expect for free?