Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

investigate the Steam Master Servers again #161

Open
illwieckz opened this issue Jun 22, 2015 · 5 comments
Open

investigate the Steam Master Servers again #161

illwieckz opened this issue Jun 22, 2015 · 5 comments

Comments

@illwieckz
Copy link
Member

@Xylemon said in #154 :

That reminds me, it might be a good idea to investigate the Steam Master Servers again. Last time I looked into it, the problem seemed to be that the master server wasn't split up per game, but rather a giant list for all Steamworks game.

Yes, it's something I tried to do yesterday. 😀
In fact it's something I'm thinking about since a long time since I host some source servers. If we add source servers as favorites in XQF it's already working, but master server query not.

But I failed. 😕

The qstat support is not easy for a beginner, there is many options for same purpose, I don't know what are the good ones:

$ quakestat --help | grep -i 'Steam\|Half'
-a2s        query Half-Life 2 new server
-hl2s        query Half-Life 2 server
-hla2s        query Half-Life server
-hla2sm        query Steam Master server
-hlm        query Half-Life Master server
-hlqs        query Half-Life server
-hls        query Half-Life server
-stm        query Steam Master server
-stma2s        query Steam Master for A2S server
-stmhl2        query Steam Master for HL2 server

I found this master server: hl2master.steampowered.com:27011 but doing that qstat -stma2s hl2master.steampowered.com:27011 only gives me some hundred of servers and the number is higly variable (so it's seems to be truncated). I tried the qtracker browser on wine and it finds more than 17 000 servers…

Some more info here: https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol

The first IP:Port you should send is "0.0.0.0:0"
From then on, IP:Port becomes the last IP:Port received in the master servers reply. This allows steam to then grab another list of more servers.
Terminate this with 0x00

Yes, yesterday I've run wireshark while refreshing server list from a Source game I have (GoldenEye Source) (Source 2007), and I've seen the first request to 0.0.0.0:0 then the others. We can find potential undocumented master server ips if we track this 0.0.0.0:0 request on udp.

I have also seen the clientinfo requests, hopefully, qstat already do this part well.

So, there is some things already working, we have a sufficient client query in qstat, and an incomplete server query in qstat. We must dig in qstat source code, perhaps there is some things to add to the current code or perhaps there is undocumented features we do not know yet.

We need an easy way to ask for specific games (appid and gamedir). I know the gamespy qstat support allows it, using something like that: -gsm,gamename, perhaps there is a similar mechanism for steam ?

We can probably ask some questions to @stevenh (qstat developer), or ask some questions to the qtracker developer, too.


Notice: I have a Source 2006 server and client that seems to use another master server protocol, and this master sever seems disabled now.

@Xylemon
Copy link

Xylemon commented Jun 23, 2015

What would also be nice is if we could have classifications for games that still use the same server protocol. For instance, I can read my Killing Floor server fine using UT2004's server query, but I wish I could have a separate way of labeling it Killing Floor and launching it. Same with Source games like TF2 and so on.

Another thing to note is I have no idea how to launch any native Linux games from Steam with XQF. I've gotten close to getting Linux Half-Life launching with XQF, but it always complains about some missing libraries from Steam. I can't imagine getting a more complex game like TF2 joining servers with XQF

@illwieckz
Copy link
Member Author

What would also be nice is if we could have classifications for games that still use the same server protocol. For instance, I can read my Killing Floor server fine using UT2004's server query, but I wish I could have a separate way of labeling it Killing Floor and launching it. Same with Source games like TF2 and so on.

In fact XQF already do that, if you query a Quake 3 master server and this master server lists a Urban Terror server, if Urban Terror is installed, XQF displays an Urban Terror icon and launch Urban Terror instead of Quake 3.

So, XQF is just lacking code to recognize Killing Floor servers.

But yes, it could be good to allow people to write themselves some recongnition rules without digging into the C code, but to achieves that it needs a massive rework of the source code. 😕

XQF Really needs to be extendable by an higher level language…

@illwieckz
Copy link
Member Author

You can see some examples here:

@illwieckz
Copy link
Member Author

Example of steam query for a specific game (GolenEy: Source): qstat -stm,game=gesource hl2master.steampowered.com:27011.

Example of output:

$ qstat -raw "$(printf '\t')" -stm,game=gesource hl2master.steampowered.com:27011 | column -t -s"$(printf '\t')"
STM  hl2master.steampowered.com:27011  25
A2S  85.195.107.27:27025               .:WNx WarriorNation // 4.2.4 HLstatsX // Party Shack 2.0:.       ge_facility_backzone  12  0   41   0
A2S  78.46.47.195:27035                GaelLords.com GoldenEye: Source                                  ge_archives           16  0   66   0
A2S  37.187.229.55:27088               Ultima666.Fr // No // Ranked // All // WNx Fan Server 6          ge_facility_backzone  16  0   41   0
A2S  31.193.134.84:27025               .:WNx WarriorNation // 4.2.4 HLstatsX // Party Shack 2.0:.       ge_complex_classic    12  0   63   0
A2S  37.187.229.55:27015               Ultima666.Fr // Ranked // DM // WNx Fan Server 1                 ge_runway             16  0   37   0
A2S  77.89.153.138:27060               Vermont GoldenEye: Source v4.2 Server                            ge_control            16  48  64   0
A2S  37.187.229.55:27016               Ultima666.Fr // Ranked // All // WNx Fan Server 2                ge_caves              16  0   39   0
A2S  37.187.229.55:27080               Server of test                                                   ge_runway             16  0   35   0
A2S  37.187.229.55:27083               Ultima666.Fr // No// Ranked // All // WNx Fan Server 5           ge_stack_classic      16  0   38   0
A2S  37.187.229.55:27082               Ultima666.Fr // No // Ranked //All // WNx Fan Server 4           ge_facility_backzone  16  0   39   0
A2S  62.210.71.44:27015                gg.illwieckz.net { le frag courtois }                            ge_bunker_classic     24  0   39   0
A2S  37.187.229.55:27017               Ultima666.Fr // Ranked // LTK // WNx Fan Server 3                ge_citadel_luch       16  0   42   0
A2S  46.105.57.20:27018                [FR][LCDLP][GE:S] FUN et ROCK'N'TROLL                            ge_library_classic    32  0   38   0
A2S  37.59.149.101:27025               [404Games]Goldeneye Source:DM (UK|FastDL|404Games.co.uk)         ge_archives           16  0   44   0
A2S  208.100.45.111:27015              .:WNx WarriorNation // 4.2.4 HLstatsX // Chicago's Fun Box:.     ge_caverns            16  2   147  0
A2S  191.237.69.35:27015               Roadie's Soup Kitchen v4.2.4 - US East - 100 Tick                ge_stack_classic      16  0   141  0
A2S  205.234.159.234:27015             Traitor's Gate Memorial - Chicago - Custom Maps and More         ge_archives_classic   12  0   151  0
A2S  24.154.201.41:27015               Mickey's GoldenEye: Source 4.2.4 Server [Youngstown, OH]         ge_caves              16  0   159  0
A2S  172.245.41.100:27015              **v4.2.4** ACHIEVEMENT HUNTER Appreciation Server                ge_facility_backzone  14  0   137  0
A2S  173.234.253.20:27015              **UPDATED v4.2.4** [S] Spectrum - Official v4.2.4 GE:S: LA - Je  ge_facility_backzone  12  0   200  0
A2S  205.234.159.232:27015             Troy's Server || Chicago || GE:S Events                          ge_basement           10  0   154  0
A2S  64.237.34.58:27015                NSA Gaming Community's GoldenEye: Source v4.2 Server             ge_bunker_classic     16  0   126  0
A2S  96.8.114.168:27015                Roadie's Soup Kitchen v4.2.4 - Dallas, TX                        ge_archives           16  0   181  0
A2S  223.27.25.23:50450                Community GE:S 4.2.4 [Melbourne:Australia]                       ge_control            24  0   371  0

Example for querying only European servers for GoldenEye: Source:

$ qstat -raw "$(printf '\t')" -stm,game=gesource,region=3 hl2master.steampowered.com:27011 | column -t -s"$(printf '\t')"
STM  hl2master.steampowered.com:27011  12
A2S  85.195.107.27:27025               .:WNx WarriorNation // 4.2.4 HLstatsX // Party Shack 2.0:.  ge_facility_backzone  12  0   39  0
A2S  78.46.47.195:27035                GaelLords.com GoldenEye: Source                             ge_archives           16  0   53  0
A2S  37.187.229.55:27088               Ultima666.Fr // No // Ranked // All // WNx Fan Server 6     ge_facility_backzone  16  0   34  0
A2S  31.193.134.84:27025               .:WNx WarriorNation // 4.2.4 HLstatsX // Party Shack 2.0:.  ge_complex_classic    12  0   54  0
A2S  37.187.229.55:27080               Server of test                                              ge_runway             16  0   42  0
A2S  77.89.153.138:27060               Vermont GoldenEye: Source v4.2 Server                       ge_basement_classic   16  49  67  0
A2S  37.187.229.55:27083               Ultima666.Fr // No// Ranked // All // WNx Fan Server 5      ge_stack_classic      16  0   44  0
A2S  37.187.229.55:27082               Ultima666.Fr // No // Ranked //All // WNx Fan Server 4      ge_facility_backzone  16  0   36  0
A2S  62.210.71.44:27015                gg.illwieckz.net { le frag courtois }                       ge_bunker_classic     24  0   33  0
A2S  37.187.229.55:27017               Ultima666.Fr // Ranked // LTK // WNx Fan Server 3           ge_bunker_classic     16  0   34  0
A2S  37.59.149.101:27025               [404Games]Goldeneye Source:DM (UK|FastDL|404Games.co.uk)    ge_archives           16  0   36  0
A2S  46.105.57.20:27018                [FR][LCDLP][GE:S] FUN et ROCK'N'TROLL                       ge_library_classic    32  0   43  0

@vorot93
Copy link
Contributor

vorot93 commented Sep 23, 2015

The problem is that QStat only queries cstrike (Counter-Strike: Source) servers by default. Specifying the needed game (-stm,game=game_id) results in a valid server list for at least Source engine servers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants