ServerList.xml

Defines the groups (world tabs) and GameServers players see when choosing where to play. Every entry here must have a matching GameServer running and configured with the same code.

File Location#

ConnectServer/ServerList.xml

Loaded once at startup. Changes require a ConnectServer restart.

Structure#

<ServerList>
    <Group Name="..." Position="..." Sequence="..." Description="...">
        <Server Code="..." IP="..." Port="..." Visible="..." NonPVP="..." Description="..." />
    </Group>
</ServerList>

Group Attributes#

AttributeTypeRangeDefaultEffect
Namestring<= 31 charsServerGroup name shown as a tab/button on the server select screen
Positionint0, 1, 20Layout column: 0 = left, 1 = right, 2 = center
Sequenceint0-2550Sort order within its position column. Lower shows first. Keep unique per position
Descriptionstring<= 63 chars(empty)Tooltip text when hovering the group on the client

Server Attributes#

AttributeTypeRangeDefaultEffect
Codeint0-65535(required)Unique server code. Must match the GameServer's ServerCode. See Code ranges and groups
IPstringIPv4127.0.0.1Public IP of the GameServer as reached by game clients
Portint1-65535(required)TCP port of that GameServer
Visible0 or 111 = shown in the list. 0 = hidden (used for Castle Siege sub-servers and other internal instances)
NonPVP0-30PVP mode flag. See NonPVP
Descriptionstring<= 63 chars(empty)Per-server tooltip shown beside the entry

Code Ranges and Groups#

Each group owns a 20-code range derived from the first server's Code:

  • Group containing Code = 0 covers codes 0-19
  • Group containing Code = 20 covers codes 20-39
  • Group containing Code = 40 covers codes 40-59

Servers inside a group must use codes within the group's range. The client packs per-server data using Code / 20 as the group index, so a stray code in the wrong range will appear on the wrong tab or not at all.

NonPVP#

Per-server gameplay mode flag sent to the client.

ValueLabelPVP
0NormalEnabled
1Non-PVPDisabled
2GoldEnabled
3GoldDisabled

"Gold" servers are shown with a different icon on the selection screen; the value does not change GameServer behavior on its own. The matching GameServer still needs its own PVP and rate configuration.

Online/Offline State#

The state shown to the client is not set in this file. It comes from live heartbeats:

  • If the GameServer has not sent a UDP heartbeat in the last 10 seconds, it is shown offline
  • If JoinServer is offline or its queue is above 100, every server is shown offline regardless

See ConnectServer overview for details.

Important Behavior#

  • If the XML parser fails on any syntax error the entire file is rejected and no servers are loaded
  • Duplicate Code values across groups produce undefined behavior on the client; each code must be unique across the entire file
  • Port applies to the GameServer's client-facing TCP port, not its DataServer or JoinServer ports
  • Visible="0" servers still need to be listed here if the GameServer is running; otherwise heartbeats from that server are dropped
  • Changing Name, Position, or Sequence reorders the client UI; players may be confused on first login after edits
  • The menu item Reload > Reload ServerList re-reads this file without restarting ConnectServer

Examples#

ServerList.xml
<ServerList>
    <Group Name="Tarkan [EU]" Position="0" Sequence="0" Description="Main European Server">
        <Server Code="0" IP="127.0.0.1" Port="55901" Visible="1" NonPVP="0" Description="Standard with PVP" />
        <Server Code="1" IP="127.0.0.1" Port="55903" Visible="1" NonPVP="1" Description="Standard Non-PVP" />
        <Server Code="2" IP="127.0.0.1" Port="55904" Visible="1" NonPVP="2" Description="Gold with PVP" />
        <Server Code="3" IP="127.0.0.1" Port="55905" Visible="1" NonPVP="3" Description="Gold Non-PVP" />
    </Group>
</ServerList>

Common Issues#

  • Server appears in wrong tab - Code does not fall inside the group's 20-code range
  • 21st server in a group is missing - only the first 20 load; split into a second group
  • Server listed but always offline - GameServer process not running, its ConnectServerIP points elsewhere, or UDP is blocked between hosts
  • File loads but no servers show - every server has Visible="0"
  • "Gold" icon missing for gold servers - NonPVP set to 0 or 1 instead of 2 or 3
  • Client crashes on server select - an XML syntax error truncated the file at load time; check ConnectServer logs
  • ConnectServer.ini - ports, per-IP connection cap, license
  • MapServerInfo.xml - how GameServer instances discover each other for cross-server operations; Code values there must match <Server Code> here

Last updated April 20, 2026