Game Server Discovery

A Server List Without the Storefront Lock-In.

Your game servers send a small HTTPS heartbeat. Your clients read a public server list. Use it with Steam, EOS, neither, or both. Host your fleet wherever you want.

# Dedicated game server
POST /v1/heartbeat
Authorization: Bearer dsc_...

# IP is inferred from the connection. Send it explicitly when behind NAT.
{
  "name": "EU West #1",
  "port": 27015,
  "players": 18,
  "maxPlayers": 32,
  "version": "1.4.2",
  "meta": { "map": "coastline", "mode": "ranked" }
}

# Game client: no secret required
GET /v1/apps/dscp_.../servers?hasSlots=true&sort=-players
30 sec
Heartbeat
90 sec
Automatic Expiry
HTTPS
Plain JSON API
3
Verification Modes

Use the Stack You Already Have

Discovery handles the live game server list. It does not dictate how you build, distribute, or host your game.

Storefront Agnostic

Not Tied to Steam or EOS

Use Discovery alongside a storefront server list, as a replacement for one, or without a storefront account at all. Your public server list stays under your control.

Engine Agnostic

Works with Any Game Engine

If your dedicated server can send an HTTPS request and your game client can parse JSON, it can use Discovery. There is no engine plugin or platform SDK to adopt.

Hosting Agnostic

Run Servers Anywhere

Discovery is a standalone product. Your game servers can run on PingCore, another cloud, bare metal, or a mix of providers.

UnityUnreal EngineGodotCustom C++Custom backend

From Game Server to Server Browser

One write endpoint for game servers. One read endpoint for game clients.

01

Create a Discovery App

The app gives you a public ID for clients and lets you issue separate secrets for each environment or fleet.

02

Send a Heartbeat

Each game server reports its address, player count, version, and your own metadata every 30 seconds. Three missed beats remove it automatically.

03

Fetch the Public List

Your game client calls an unauthenticated URL containing the public ID. Search, filter, sort, and page the results on the service.

A Server Browser API, Not a Raw Dump

Filtering and paging happen before the response reaches the game client. A large fleet does not need to become a large download.

  • Search by game server name
  • Require an exact game version
  • Show only game servers with free slots
  • Filter by your own metadata, such as map or mode
  • Sort by players, name, or last update
  • Page large fleets instead of downloading every result
GET /v1/apps/dscp_.../servers
  ?limit=50
  &offset=50
  &hasSlots=true
  &version=1.4.2
  &meta.map=coastline
  &sort=-players

{
  "error": false,
  "servers": [ ... ],
  "totalServers": 1284,
  "returned": 50,
  "limit": 50,
  "offset": 50
}

The public endpoint is unauthenticated and CORS-enabled, so browser builds can call it directly. Only the public ID ships with the client.

Do Not List Game Servers Players Cannot Reach

A heartbeat proves outbound connectivity. Optional verification checks the advertised endpoint from the outside before it appears in the public list.

NoneNo extra code

List Every Heartbeat

No inbound check. This is the quickest integration and works when reachability is already handled elsewhere.

TCPNo extra code

Check the Listening Port

Discovery opens and drops a TCP connection to the advertised endpoint. Use it when the game server already listens on TCP.

UDP EchoSmall responder

Verify UDP Reachability

Discovery sends a small challenge that your game server echoes back. This proves the endpoint accepts inbound UDP traffic before it is listed.

UDP challenge
Discovery sends DSCV1 followed by a random 16-byte nonce.
Exact echo
Your game server returns the same 21 bytes from the receiving socket. No matching reply means it stays hidden.

Keep Write Access Out of the Client

Game servers authenticate heartbeats with a secret token. Game clients receive a separate public ID that can only read the server list.

dsc_...

Heartbeat Token

Keep it on the dedicated game server. Issue separate tokens per fleet so one can be revoked without stopping the others.

dscp_...

Public ID

Ship it in the game client. It identifies the Discovery App but grants no heartbeat or management access.

Raw tokens stay out of Discovery

The registry sends SHA-256 token digests to the Discovery service. Revoking a token or disabling an app takes effect on the next registry sync, within about a minute.

Next Layer

Session-Based Game? Let Discovery Place the Match

A server list is one half of multiplayer. If players queue for a match instead of picking a game server, the same service can allocate one for them: claim capacity, deliver the roster, and scale the fleet with the queue.

Explore Matchmaking

Add Discovery to Your Game

Create an app, issue a token, and connect your first dedicated game server. You do not need to move your hosting or adopt a storefront SDK.