Skip to content

Protocol Options

Sascha Greuel edited this page Aug 2, 2026 · 1 revision

Protocol-specific options

Home · Protocol families · Security

Most GameQ identifiers need only a type and host. Per-server options are exceptions for custom query ports, optional subqueries, credentials, or an external service used by a particular protocol.

$gameQ->addServer([
    'type' => 'css',
    'host' => '192.0.2.10:27015',
    'options' => [
        'query_port' => 27016,
    ],
]);

Unknown options are retained for third-party protocol extensions but otherwise ignored.

Common option

Option Type Meaning
query_port int or decimal string Override the query port calculated from the client port. Must be between 1 and 65535.

The option applies at the Server level and is available to every protocol. Use it whenever an administrator changed the query port from the game-specific default.

Established native protocol families

Most long-standing UDP and TCP protocols have no additional public options:

Family Example identifiers Normal configuration
Source and GoldSource css, tf2, cs16, arkse host; optionally query_port, query_players, and query_rules
GameSpy bf1942, bf2, crysis, minecraft host; optionally query_port
Quake quake2, quake3, cod4, urbanterror host; optionally query_port
Unreal 2 ut2004, unreal2 host; optionally query_port
Doom 3 doom3, quake4 host; optionally query_port
Frostbite/Battlefield bfbc2, bf3, bf4, bfh host; optionally query_port
RakNet minecraftbe, minecraftpe host; optionally query_port
Voice servers teamspeak2, teamspeak3, ventrilo host; TeamSpeak also requires query_port

Named protocols inherit their family's behavior and can override port offsets or normalization. Use the named game identifier when one exists; use a generic family identifier only for another compatible server implementation.

Source-family optional queries

Source-family servers can skip the optional A2S player and rules requests:

'options' => [
    'query_players' => false,
    'query_rules' => false,
],
Option Default Meaning
query_players true Request A2S player information when available.
query_rules true Request A2S rules when available.

The initial A2S information query still runs. Disable optional requests when an application needs only basic status or when a server blocks player/rules queries.

TeamSpeak query port

TeamSpeak 2 and 3 require the server-query port because it cannot be derived reliably from a virtual server's client port:

$gameQ->addServer([
    'type' => 'teamspeak3',
    'host' => '192.0.2.10:9987',
    'options' => [
        'query_port' => 10011,
    ],
]);

The client port selects the virtual server; query_port selects the TeamSpeak query service.

Additional option reference

A smaller group of plugin-, HTTP-, REST-, or master-backed protocols exposes extra options:

Identifier Option Default Purpose
cfx web_port query port Port serving players.json and info.json.
hytaleone auth_token none OneQuery V2 authentication token.
hytaleone query_players true Request advertised player-list pages.
fs13fs25 web_port query port Dedicated-server web administration port.
fs13fs25 web_code empty Code included in the statistics-feed request.
palworld admin_password none Password required by the REST API.
palworld rest_username admin REST API Basic-authentication username.
palworld http_timeout 5 HTTP connect and request timeout in seconds.
factorio, beammp http_timeout 5 Public-listing request timeout in seconds.
scum master_timeout 5 Master-proxy connection/read timeout in seconds.
scum master_servers built-in list Ordered compatible master-proxy destinations.

These options are protocol-specific and should not be copied to unrelated server definitions.

External-service behavior

  • cfx performs its normal native query and supplements it with HTTP metadata. cfxinfo and cfxplayers are internal helpers, not normal server types. RageMP uses gtar and a different master-list protocol.
  • hytaleone expects the OneQuery plugin. Its token is optional unless required by the plugin, and disabling query_players still returns basic information.
  • Farming Simulator uses versioned identifiers. fs13 and fs15 parse XML; fs17, fs19, fs22, and fs25 parse JSON from the web administration feed.
  • Palworld requires its REST API and administrator credentials. Its calculated query port is the client port plus one unless query_port overrides it.
  • Factorio and BeamMP match the configured server against their public HTTPS listings. Private or unlisted servers cannot be discovered through those implementations.
  • SCUM matches the configured IPv4 address and client port against a master-proxy response. Treat custom master_servers as privileged configuration because it controls outbound TCP destinations.

Palworld's official REST service uses Basic authentication over plaintext HTTP. Query it only across a trusted network or tunnel and do not expose the administration endpoint directly to the internet.

Credentials and configuration ownership

Keep auth_token, web_code, admin_password, private master destinations, and future protocol secrets in server-side protected configuration. Do not accept them from public request parameters or store them in web-accessible JSON files.

Internal test options

Some protocol classes accept injected API or master responses so their tests never access live services. Those options are deliberately omitted here and must not be treated as application APIs.

Clone this wiki locally