-
-
Notifications
You must be signed in to change notification settings - Fork 1
Protocol Families
Home · Supported identifiers · Result fields
GameQ exposes named server identifiers, but many of those classes share one wire-protocol implementation. Understanding that relationship helps when choosing a type, interpreting gq_protocol, or changing a parent parser.
For a Counter-Strike: Source server:
'gq_type' => 'css',
'gq_protocol' => 'source',The type identifies the configured game class. The family identifies the parser that handled the response. A named subclass can supply its display name, default query-port offset, normalization map, or join link while inheriting all packet handling from its family.
| Family | Transport | Representative identifiers | Characteristics |
|---|---|---|---|
| Source/GoldSource | UDP |
css, tf2, cs16, arkse
|
A2S information, optional players/rules, challenges, and split packets. |
| GameSpy | UDP |
bf1942, ut, mohaa
|
Backslash-delimited status and player/team fields. |
| GameSpy 2 | UDP |
arma, halo, swat4
|
Binary records; several implementations remain beta. |
| GameSpy 3/4 | UDP |
bf2, crysis, minecraft, ut3
|
Session/challenge handling and split key/value/player data. |
| Quake 2 | UDP |
quake2, kingpin
|
Text status response with server variables and players. |
| Quake 3 | UDP |
quake3, cod4, urbanterror, sof2
|
Text status response used by many id Tech 3-derived games. |
| Unreal 2 | UDP |
ut2004, killingfloor
|
Binary rules, players, and teams. |
| Doom 3 | UDP |
doom3, quake4
|
id Tech 4 server information and players. |
| Frostbite/Battlefield | TCP |
bfbc2, bf3, bf4, bfh
|
Framed command responses with server and player records. |
| RakNet | UDP |
minecraftbe, minecraftpe, raknet
|
Unconnected ping/pong server advertisement. |
| Valve WON | UDP |
cs15, won
|
Legacy pre-Steam status format. |
| All-Seeing Eye | UDP |
ase, mta, soldat
|
Compact legacy server status format. |
Family names are not interchangeable. GameSpy, GameSpy 2, and GameSpy 3 use different packets, just as Quake 2 and Quake 3 do. Prefer the named identifier from the supported-server table instead of guessing a generic family.
Voice servers use their own formats rather than a shared game-query family:
- TeamSpeak 2 and TeamSpeak 3 use TCP query services and require an explicit
query_port. - Ventrilo uses its status protocol and can return server and client information.
- Mumble has a dedicated status implementation.
Permissions, visibility settings, allowlists, and flood protection can affect the data a voice server returns even when its client port is reachable.
Some identifiers implement a format specific to one game or a small group. Examples include SA-MP, Teeworlds, Terraria/TShock, OpenTTD, Tibia, StarMade, Stationeers, and Ultima Online/UOX3. They still use the same GameQ server, query, result, and filter pipeline; only their packet construction and parsing differ.
Other implementations obtain status through an HTTP API, query plugin, or master list rather than only a direct native socket. Their additional settings and service dependencies are documented under protocol-specific options.
A fix in a parent parser can affect dozens of named games. When changing a shared family:
- preserve the established initial request unless the family itself changed;
- account for older and newer response variants;
- run every child protocol fixture, not only the motivating game;
- keep subclass-specific normalization and port offsets intact;
- add malformed-response tests at the lowest shared layer that owns the rule.
See architecture and adding a protocol for the extension boundaries.
Getting started
Configuration
Guides
Reference
Development
Migration