Servers

The only content item with a live, measured half — how a server listing works, what we measure versus what you may assert, and how to take a field over.

A server is a listing for a live game server. It is a content item like any other — it has an owner, a body, media, reviews, followers — and it is the only one with a measured half: a scanner queries the address every few minutes and records what it finds.

That split runs through everything on this page.

Two kinds of field

Editorial fields are yours. Name, description, body, rules, media, tags, categories, links, the usage policy — you write them, we never touch them.

Measured fields are ours. Whether the server is online, how many players are on it, the current map, the game mode, the reported version, the platform flags, and the player list. These are things we measure, not things an owner may assert.

Addressing

ip4string

IPv4 address. Together with the ports, this is the server’s identity.

ip6string

IPv6 address.

portint

The game port — what players connect to.

portQueryint

The query port — what the scanner asks. Frequently different from the game port, and frequently wrong on a listing somebody typed by hand. See Scanning.

hostNamestring

A DNS name for the server.

useHostNamebooleandefault false

“Address me by my hostname, not my IP.”

A server behind a DNS name is the same server whatever address that name resolves to today, and an operator who moves hosts should not have every link, connect button and copied address on the site go stale. With this on, the hostname is what is presented everywhere — the connect URL, the copy button, the general tab, the app API, the party hand-off and the page slug.

It changes presentation only. The IP stays on the row because that is what the scanner dials.

showNetInfobooleandefault true

Whether the address is published at all. Turning it off blurs the address on the page and nulls it out of the API — including for anonymous readers.

Live state

Written by the scanner, or by an integration you authorise:

Field Means
online Answered our last query
curUsers / maxUsers / bots Population
map Current map, resolved to a ServerMap row where we know it
gameMode, version As reported
password, secure, os, dedicated Platform facts
lastScanned When we last asked
lastOnline When it last answered
firstOnline The first time we ever found it online — set once, never rewritten
avgUsers Rolling average population over the last 24 hours
uptimePct Share of the last 24 hours of snapshots where it answered, 0–100

`uptimePct` is null, not zero, when unmeasured

null means “never measured”, and that is deliberately distinguishable from 0%. A server we have not swept yet is judged on its other qualities rather than held out of the index for a measurement we simply have not taken.

Being offline is not being deleted

A server that has been dark for a month keeps its page, its articles, its comments and every inbound link to it. Removal from listings is a query-time decision about how long it has been quiet; it never destroys the page.

Query overrides

An owner can take an individual measured field over from the scanner. Turning an override on means two things at once, because it is one decision:

  1. the scanner stops writing that field, and
  2. the content API starts accepting it.
Override Covers
NAME The server name
APP Which app it is filed under
QUERY_PORT The query port
CATEGORY Its category
TAGS Its tags
LOCATION Its country and coordinates
LIVE_STATS online, curUsers, maxUsers, bots
MAP The current map
GAME_MODE The reported game mode
VERSION The reported version
PLATFORM password, secure, os, dedicated
PLAYERS The in-game player list

Having the scanner and the API disagree about who owns a column is the only way to get a field that flickers between two sources every scan, which is why the switch is single.

Auto-detection

By default the scanner also works out which app, category and country a server belongs to, and fills them in — each on its own cooldown. Any of the three can be switched off per server (autoDetectApp, autoDetectCat, autoDetectCountry), which is what you want once you have set them correctly by hand.

What can be attached

Relation Notes
Players Who has been on it, and for how long
Maps Which maps it runs
Releases Yes, servers take releases
Media, Links
Dependencies Usually “this server runs these mods”
Contributors, Permissions
Engagement Ratings, reviews, comments
Follows Including online / offline / map-change alerts
Boards Discussions, feedback, bugs, roadmap, changelog
Rules A free-text rules field, rendered on its own tab

Through the API

POST/api/content/serverAPI keycanWrite

Create a server listing. Only appId is required — a listing with an address but no name is normal, since the name usually arrives from the first scan.

Note that servers spell their image relations icon / banner / card, where every other content type uses iconId / bannerId / cardId.