Hi,

my name is Timo Stripf. I'm developer of HLSW and since the beginning in 2001 i supported many game server query protocols. Most of them are hacks to get it work or have a big traffic overhead. With logmod i got experience with my first own protocol to receive the WONID/SteamID from hl servers. Many people ask me to extend this protocol to get all information from one hl server you can get via the default hl protocol. So the idea was born to create a universal game server query protocol that can be used by any game and makes the live easier for every tool coder. I called it OGP (Open Game Protocol).
It took me over 2 years to design this protocol. It was very hard to create one that is coherent and meet all current and future requirement. It is backwards compatible, DDoS safe and brings a structure in the information you get from one game server.


For more information you can visit www.open-game-protocol.org!


I talked with Alfred about a new query protocol for HL2 some month ago and he said that he has 3 for choice:


1. SQS Protocol: http://www.adminmod.org/alfred/SQS_v03.html
2. GameSpy Protocol
3. OGP: http://www.open-game-protocol.org/spec/ogp_spec_v1.00.htm

I wrote Alfred in a mail on September 2004 what i think about these protocols:
I analyzed the SQS protocol:

1. It is not DDoS safe. You know that the DDoS problem with game server queries came up some months ago. Atm nobody talks about it but it will come the time the problem is again in press and then it is good if you've a working system against it.

2. Another problem is that you cannot choose if the server is using compact or null header. This way to save space is no good idea. As an application you must save what information you've requested from the server because the answer packages don't contain these information. As long as you're writing a php script that queries only one server this is no problem but it causes a lot of overhead for a game server search engine or a game server browser that queries some hundred servers per second over the same udp port asynchronously.

3. The protocol has no identifier in his header. If you enter a server ip in HLSW it sends all known queries formats to this ip to detect the right game and its query protocol. In the Internet this feature is comfortable for the HLSW users but for LAN search it is necessary. The port will never be restricted to 26999 as long as you can run more than one server at the same ip.

4. I've been thinking a very long time about the sense and purpose of the "WHERE" Expression, but I cannot find any useful application.
The info query has only one column.
You could select a part of the player table where your get every player that has a too high ping. 99% of all queries of a game server is for human reading and in this case they like to see the complete table. A partial table can be used only by a robot that e.g. kicks all players with a ping > 300 but this is better solved using a metamod plugin.
For the rules table you can select a specific rule and watch it for modification.


In my eyes the where expression makes no sense as long as you can only query one kb of data and there doesn't exist a real application for it. Another problem is that this function is not trivial to implement in the game server.

If i'm wrong and miss a really important point please let me know.


GameSpy Protocol

The gamespy protocol is ok. I included it to HLSW and it works. The main problems of the protocol are that it is not DDoS safe and it produces a lot of overhead.

Do your really want to include a protocol of an application that doesn't care about 90% of the information you transmit?
When you start GameSpy Arcade and get the list of any game you see only the server name, player max and count and mod. If you click at the triangle in front of each game server you can get extra information A player table with score, ping and name (always the same for every game) and the complete rule table.


The fact is that nobody is using GameSpy Arcade to play CS. In the main window you see behind every game a number that represents how many people are currently playing the installed game via gamespy or how many are in the game lobby. There are 831 people at Medal of Honor Allied Assault, 35 people at Counter-Strike and 0 people at Counter-Strike Steam. When i take a look at the game server usage ( http//www.gsearch.net/sei/project/index.php?mode=stats&language=en ) there have played 68380 people CS (Steam) and 7928 people MoHAA at the same time.

Open Game Protocol

OGP is not only a simple query protocol that can be used to get all information from a game server. It is more a standardization of information you can return from a game server. It has many fields for every kind of information you can provide but you only need to support the fields you want to support and if any field is missing OGP can easily be updated and is still backwards compatible.

E.g. there exists an AddOn table in the query that can be used to carry add-on information like VAC, AdminMod, AMX etc., but you don't need to use it. You can still put all addon information to rules because there exists no special registration for each add-on in HL and so you don't have the information which are currently installed. Maybe you work anytime together with the metamod guy to get a better control about all used plugins and then you can use the OGP addon table. It would help to clean up the rules table.

The problem of OGP is its complexity. You cannot include it in 30 minutes to your php script. So we'll provide some open source implementations of OGP clients in some coding languages at our homepage and will help out if someone has problems with it.

In the meanwhile we have written a full tested OPG server in C and can provide a PHP OGP client.


Best regards
Timo Stripf



_______________________________________________ hlds_apps mailing list [email protected] http://list.valvesoftware.com/mailman/listinfo/hlds_apps

Reply via email to