..."I LOVE your little proggy..." - <Houston>
Hosted by ServInt - by far the best U.S. hosting company
Information on advanced aGSM topics & bits of code from the program would be posted on this page; it would be continually updated and intended for use by programmers and advanced users.
aGSM Command Line Options
Are there any? You bet. We hide all options which we don't answer questions about in the form of command-line switches. How to set them? Use shortcut properties. Few of the options are (and notice that some are not available in the earlier versions):
/nogui Start aGSM in console mode - you don't need this unless you do :) Only those who run aGSM purely for generating HTML statistics should use this option, since you won't be able to see any server stats, change any options, or join any running servers. Purpose: free up resources usually taken by GUI, and get rid of gui-related bugs (if there are any :) ). Best if used with the next option.
/snapshot Quit aGSM as soon as the Internet/LAN refreshes complete and HTML stats are generated. Again, only useful for generating stats, since you won't be able to see the results of the refresh unless you are super-quick :)
/configure Automatically open Configuration dialog on startup; does not make sense with /nogui, used on first installation but you also can use it if Configuration is what you do mostly :)
-animation One of the most useful options, changes the direction in which aGSM icon rotates if you have animation enabled in options. Ok, maybe not the most useful, but it's in aGSM since the very first versions with rotating icon ;)
-showinfo Show a dialog with some information about aGSM executable - compilation time, compilers used, etc. For the curious types :)
-threads:NN Where NN is a number from 1 to 64, default 16. Sets the number of threads which aGSM uses for all refreshes. Overrides all other settings for number of threads. Why not always use the maximum? Since more threads -> more load on your system and, most importantly, on your connection, so the results on a modem would be most innaccurate with 64 threads querying servers at once. We recommend ~1 thread for each Kbit/sec of your bandwidth.
-socks_addr:XXX -socks_port:XXX -socks_user:XXX -socks_pass:XXX You can set one or more (as needed) of this options to have aGSM query go through the socks proxy you specify with socks_addr, on a port socks_port, using user name socks_user, with a password socks_pass, duh. Some games (Q3, for example) allow you to play through certain proxies, so aGSM had to support it, too. Why we hide this option? Again, to avoid much questions on "why my proxy does not work with that" and "how do I play through a proxy". Consider it an unsupported feature. Btw, it works, so the problem is in your proxy :)
And finally, an example command-line used by a LAN party admin for generating HTML/Internet stats using a SOCKS5 proxy for some Internet queries:
aGSM.exe /nogui /snapshot -socks_addr:10.0.0.1 -socks_port:80
aGSM provides an easy way for you to automagically create serverlists in real time. All you need to do is unzip default templates from the aGSM directory (templt.zip), including two bat files which automate generated statistics archivation (necessary if you are going to use the default templates). That's it, set HTML generation options in the general configuration dialog of aGSM and run a refresh.
What is more interesting however, is how to create your own templates. For this, please see templt.txt in aGSM directory, it explains all the details to get you started. When you create something interesting and nice looking, make sure you send the templates with the bat files, if any, our way, and we'll post them here. Best template would be included in the official distribution. Good luck!
Game Server Querying
So, you'd like to know how aGSM collects information about game servers? Well, it actually is pretty simple. You send out a broadcast and all servers on your LAN respond with some info. The only thing is to interpret the returned packet and do some other stuff based on the provided information. Sometimes you'd have to query the server again for additional info.
You might have noticed repeating port 47624 - thats MS DirectPlay, which is common for strategy games nowadays... Too bad the standard does not give us many info about the server, just the very basics :( We wish game developers would move their lazy asses and make a network connectivity standard a little smarter than Direct Play; but it seems that only a few companies bother doing networking right (hail id Software!), most others stick to the crappy MS DirectPlay.
Anyway, enough bitchin', what about the Internet games where you can't send a broadcast? Here, you must individually query each server with some query string to the port that it is listening on, and it returns the status packet. Voila, here's the table of query strings for some of the games. We also would start adding responses (decoded) for some games, so check back to get updates. Notice that for some games you can broadcast this query string on the LAN and get the same answer as if you were querying an Internet server:
So that was the basics to get you started; fun begins when you start decoding the packets returned by server and coding it all into your program :) Many of the newer games have the returned status info already decoded, in a clean ASCII which you can read, so decoding part is gone:) If you are interested in a Perl way of coding simplest game query tool, please refer to this fine step-by-step article by an author of TalitaSpy (long-abandoned Quake2 server browser). Some more queries and decoded packets could be found on the tech page of Kris, author of an excellent KQuery tool.
If you have any other technical questions regarding aGSM, please contact our support. Note that we would not explain you how to decode packets and things like that; but if you give an interesting question we would post an answer here.
2907785 visits since|
November 29, 1998
|About News Download Screenshots Forums FAQ|
This page was last modified on September 09, 2003 (18:36:55)
Site and database hosted by ServInt