Server Browser Curation

Note

We’ll go into more detail on the why behind this feature in a blog post.

This feature allows anyone to create and share lists of “rules” that filter or label servers in the server browser. Lists can be shared through the Steam Workshop as Server Browser Curation Assets, or automatically downloaded from a URL on the Internet.

If you’re a server host, suppose you want to prevent bad actors from copying your server details. Your first rule would Allow your genuine servers, for example, matching by ServerID (“server code”). Your second rule could then Deny servers with a regex that matches your server network’s branding.

Properties

Name string

Your display name in the user interface. For example, a server network might display as “MyNetwork Verified Servers”, or someone creating a list of high-quality well-moderated hosts might choose “MyName’s Recommendations”.

IconURL string

Optional URL of a 32x32 image to display in the user interface. For example, a server network might use the same icon they use in the server browser.

Labels list of dictionaries

Labels applied by rules are defined here. Each has the following properties:

Name string: Name used to refer to this label from a rule.

Text string: Rich text displayed in the server browser.

For example, defining two labels:

 1Labels
 2[
 3        {
 4                Name Verified
 5                Text <color=green>MyNetwork Verified</color>
 6        }
 7        {
 8                Name Fake
 9                Text <color=red>MyNetwork Imposter</color>
10        }
11]

Rules list of dictionaries

Rules are processed from top to bottom. Each has the following properties:

Action enum (Label, Allow, Deny): Label applies a label and continues processing rules, whereas Allow and Deny both stop rule processing. Deny blocks the server, either hiding it or moving it to the bottom depending on the player’s settings.

Note

Allow and Deny can apply labels as well. The only difference is that Label action doesn’t affect whether server is allowed or denied.

Inverted bool: If true, negate whether this rule matches. i.e., binary NOT.

Description string: Text shown in the rules list user interface and in the tooltip for servers moved to the bottom of the list. Please use this to document why your rule exists!

Label string: Name of a label to apply.

Type enum (Name, IPv4, ServerID): Determines which server data this rule matches against.

  • Name: Match server’s name using one or more regular expression (regex). Refer to Regex or Regexes property.

  • IPv4: Match server’s public IP using one or more CIDR addresses. Refer to Filter or Filters property.

  • ServerID: Match server’s ID (also referred to as “server code” or Steam ID). Refer to Value or Values property.

Regex string or Regexes list of string: The rule matches if any of the regexes match the server name. (binary OR)

One quick way to test a regex is to prefix it with “regex:” in the server browser name filter to search by regex. There are also a variety of helpful, free regex creation tools online.

For example, matching any server with “MyNetwork” in the name: Regex (?i)(MyNetwork) ((?i) enables case-insensitive matching)

Filter or Filters: The rule matches if any of the rules match the server IPv4 address. (binary OR)

IPv4 address with optional subnet mask and optional port number or range. Here’s an example list with explanations:

 1Filters
 2[
 3        // Matches any port on this IP address.
 4        10.8.0.1
 5
 6        // Matches port 27015.
 7        10.8.0.1:27015
 8
 9        // Matches ports 27015 through 27030 (inclusive).
10        10.8.0.1:27015-27030
11
12        // Matches any port on IP addresses in the range 192.168.1.0 through 192.168.1.255.
13        192.168.1.0/24
14]

Value uint64 or Values list of uint64: The rule matches if any of the Steam IDs match the server’s Steam ID. (binary OR)

From the server console you can copy the server ID with “CopyServerCode”. From the in-game server lobby screen you can copy it to the clipboard by pressing PageDown.

Examples

Here’s a hypothetical verification list for the “NelsonNet” network:

 1Name NelsonNet Verification Example
 2IconURL https://cdn.smartlydressedgames.com/ShareX/2024/12/ExampleIcon.png
 3
 4Labels
 5[
 6        {
 7                Name Verified
 8                Text <color=#708fbd>NelsonNet Official</color>
 9        }
10]
11
12Rules
13[
14        {
15                Action Allow
16                Description Verify NelsonNet's Steam IDs
17                Label Verified
18                Type ServerID
19                Values
20                [
21                        85568392932910946
22                ]
23        }
24        {
25                Action Deny
26                Description Hide fake NelsonNet servers (case-insensitive check for "NelsonNet" in the name)
27                Type Name
28                Regex (?i)(NelsonNet)
29        }
30]

For an example of adding a curator by web URL, here’s the link for that list: https://cdn.smartlydressedgames.com/ShareX/2024/12/ExampleCurationList.txt