3.7 KiB
XML Game Configuration System
Purpose
The XML game configuration system describes how a game server should be started, queried, and customized.
Primary files:
Panel/modules/config_games/schema_server_config.xmlPanel/modules/config_games/server_config_parser.phpPanel/modules/config_games/xml_config_creator.phpPanel/modules/config_games/config_servers.phpPanel/modules/config_games/cli-params.phpPanel/modules/config_games/set_params.php
What XML Controls
The schema supports:
- game and installer names
- startup command templates
- CLI parameter substitution
- reserved ports
- query port calculation
- control protocol selection
- mod definitions
- Workshop / Server Content capability declarations
- custom fields
- server parameter groups
- text replacement helpers
Important Variables
The schema and startup builder can work with variables such as:
GAME_TYPEHOSTNAMEIPMAPPID_FILEPLAYERSPORTQUERY_PORTBASE_PATHHOME_PATHSAVE_PATHOUTPUT_PATHUSER_PATHCONTROL_PASSWORD
Startup Parameters
The Panel builds startup parameters from the XML template and the stored server configuration.
Key concepts:
cli_templatecli_paramsreserve_portsserver_paramscustom_fieldsclean_server_param_value
The XML file defines:
- which parameters exist
- how they are quoted or spaced
- whether the parameter is editable by the customer
- what defaults should be used
Query Definitions
The XML schema supports query-related concepts such as:
gameqlgslteamspeak3- query port offset calculations
- control protocol selection
These values are used by gamemanager and the agent status logic to calculate query metadata, not to decide online/offline by themselves.
Installation and File Editing
XML definitions also feed:
- config file shortcuts
- install-time behavior
- docs links
- reserved ports
- mod or content behavior
Workshop / Server Content Capability
Workshop-enabled games must use the canonical workshop_support block. Loose top-level tags such as workshop_app_id are compatibility parser fallbacks only and should not be used in new game XML because schema validation is intentionally strict.
Example:
<workshop_support>
<enabled>1</enabled>
<provider>steam</provider>
<steam_app_id>107410</steam_app_id>
<workshop_app_id>107410</workshop_app_id>
<download_method>steamcmd</download_method>
<install_strategy>arma_mod_folder</install_strategy>
<install_path>{SERVER_ROOT}/{MOD_FOLDER}</install_path>
<startup_param_format>-mod={MOD_LIST}</startup_param_format>
<mod_separator>;</mod_separator>
<mod_prefix>@</mod_prefix>
<copy_keys enabled="1">
<source_pattern>{MOD_PATH}/keys/*.bikey</source_pattern>
<target_path>{SERVER_ROOT}/keys</target_path>
</copy_keys>
</workshop_support>
Supported install_strategy values:
game_managed_workshopsteamcmd_download_onlycopy_to_game_rootcopy_to_mod_folderdayz_mod_folderarma_mod_folderconfig_onlycustom_scripted_install
workshop_app_id is the Steam Workshop app ID used by steamcmd +workshop_download_item. It is not automatically the same as a dedicated server installer app ID. For Arma 3, Workshop content uses 107410 while the dedicated server installer remains defined on the normal mod installer entry.
The current XML schema is validated by:
php Panel/modules/config_games/tests/validate_server_configs.php
Recommended Mental Model
Think of the XML system as the capability definition layer:
game XML
-> startup template
-> parameter rules
-> query rules
-> content/mod hooks
-> docs links
-> scheduler and status hints