Table of Contents
- Game Template XML
- Where The Files Live
- Purpose Of The XML Templates
- Element Order Matters
- Base Structure
- Core Identification And Query Tags
- Installation And Display Tags
- Command-Line Generation
- Port Reservation
- Maps, Logs, And Executable Paths
- Control Protocol
- Mods
- Config File Editing
- User-Facing Startup Parameters
- Custom Fields
- Player Management Tags
- Lifecycle Scripts
- Environment And Locking
- Configuration File Registration
- GSP Verification Notes
- Related Pages
- Needs Verification
Game Template XML
Game template XML files define how GSP installs, starts, updates, queries, and customizes supported game servers.
The detailed structure in this page is imported from the original OGP XML notes and then checked against the current GSP schema and parser.
Where The Files Live
Current template files are stored in:
Panel/Panel/modules/config_games/server_configs/
Current schema and parser files:
Panel/Panel/modules/config_games/schema_server_config.xmlPanel/Panel/modules/config_games/server_config_parser.phpPanel/Panel/modules/config_games/tests/validate_server_configs.php
Purpose Of The XML Templates
Each game template can define:
- the unique game key
- the installer type
- game display name
- executable name
- query and control protocol details
- startup command generation
- reserved port behavior
- map handling
- config-file replacement rules
- user-editable startup parameters
- custom fields
- lifecycle scripts
- lock files and configuration files
- Steam Workshop capability metadata in current GSP
Element Order Matters
The original OGP XML documentation is explicit about this and the current GSP schema confirms it: the order of elements matters. XML files should follow the schema ordering, not just include the right tags.
Base Structure
There is one top-level <game_config> element:
<game_config>
...
</game_config>
All remaining elements appear inside that root element.
Core Identification And Query Tags
<game_key>
Unique identifier for the game template.
Example:
<game_key>space_engineers_win64</game_key>
The original OGP notes describe OS suffixes such as _win32, _win64, _linux32, and _linux64. Current GSP templates still follow that general naming pattern.
<protocol>
Defines the query protocol family.
Example:
<protocol>lgsl</protocol>
The imported OGP notes document values such as lgsl, gameq, and RCON-oriented protocol flows. Current GSP schema still includes related query and control protocol handling.
<lgsl_query_name>
LGSL-specific query key.
Example:
<lgsl_query_name>killingfloor2</lgsl_query_name>
<gameq_query_name>
GameQ-specific query key.
Example:
<gameq_query_name>redorchestra2</gameq_query_name>
Installation And Display Tags
<installer>
Defines how the game server is installed.
Example:
<installer>steamcmd</installer>
The imported OGP documentation uses this to represent installers such as SteamCMD. Current GSP templates still rely on installer metadata in this area.
<game_name>
Friendly display name shown in the panel.
Example:
<game_name>Killing Floor 2</game_name>
<server_exec_name>
Executable used in the generated start command.
Example:
<server_exec_name>SpaceEngineersDedicated.exe</server_exec_name>
<query_port>
Describes how the query port relates to the base server port.
Example:
<query_port type="add">13</query_port>
The original OGP notes describe type="add" and arithmetic offset behavior. Current GSP schema still includes query-port structure in this area.
Command-Line Generation
<cli_template>
Defines the startup command template appended after the executable name.
Examples:
<cli_template>-console %BASE_PATH% -ignorelastsession</cli_template>
<cli_template>%MAP%%GAMEMODE%%DIFFICULTY%%GAMELENGTH%%PLAYERS%%MUTATOR% %PORT% %IP% %WEB_ADMIN_PORT% %QUERY_PORT%</cli_template>
The imported OGP notes document built-in variables including:
GAME_TYPEHOSTNAMEIPMAPPID_FILEPLAYERSPORTQUERY_PORTBASE_PATHHOME_PATHSAVE_PATHOUTPUT_PATHCONTROL_PASSWORD
Templates may also use custom variables defined elsewhere in the XML.
<cli_params>
Defines variables used in the CLI template.
Example:
<cli_params>
<cli_param id="MAP" cli_string="" />
<cli_param id="IP" cli_string="-MultiHome=" options="q"/>
<cli_param id="PORT" cli_string="-Port=" options="sq"/>
</cli_params>
The imported OGP explanation still applies:
idmatches a variable in<cli_template>cli_stringis the prefix inserted before the valueoptionsaffects spacing and quoting
Port Reservation
<reserve_ports>
Defines additional ports derived from the base server port.
Example:
<reserve_ports>
<port type="subtract" id="WEB_ADMIN_PORT" cli_string="-WebAdminPort=">5</port>
<port type="add" id="STEAM_PORT" cli_string="-SteamPort=">19238</port>
<port type="add" id="MY_CUSTOM_PORT">666</port>
</reserve_ports>
Imported OGP behavior:
type="add"adds to the main porttype="subtract"subtracts from the main port- a reserved port can be exposed only for firewall bookkeeping even if no CLI string is emitted
<cli_allow_chars>
Allows selected characters in the generated command line.
Example:
<cli_allow_chars>;</cli_allow_chars>
The original OGP notes describe a default escaped set and using this tag to allow selected characters where required.
Maps, Logs, And Executable Paths
<maps_location>
Path to the map directory used to generate a selectable map list.
<map_list>
Path to a file containing one map per line.
<console_log>
Path to a log file shown in the panel log view.
<exe_location>
Path to the executable directory when the executable is not in the server root.
<max_user_amount>
Maximum player count allowed by the panel UI for that template.
Control Protocol
<control_protocol>
Defines the remote control protocol used by the panel.
Imported OGP notes describe values such as:
rconrcon2lcon
Current GSP schema confirms:
rconrcon2lconarmabe
<control_protocol_type>
Used with RCON to distinguish protocol variants.
Current GSP schema confirms:
newold
Mods
<mods>
Defines available game variants or install targets.
Example:
<mods>
<mod key="insurgency">
<name>none</name>
<installer_name>237410</installer_name>
</mod>
</mods>
The imported OGP notes describe <installer_name> as the install target identifier, commonly a Steam app ID.
Current GSP schema confirms additional mod child tags:
nameinstaller_nameinstaller_loginbetanamebetapwdsteam_bitness
Config File Editing
<replace_texts>
Defines text replacement operations applied to configuration files.
Example:
<replace_texts>
<text key="control_password">
<default>ServerAdminPassword=.*</default>
<var>ServerAdminPassword=</var>
<filepath>ShooterGame/Saved/Config/LinuxServer/GameUserSettings.ini</filepath>
<options>sq</options>
</text>
</replace_texts>
Imported OGP behavior:
<default>identifies what existing line pattern should be replaced<var>is the prefix kept in the target file<filepath>selects the file to edit<options>controls spacing, quoting, and comma behavior
Documented option values:
- empty: write as-is
s: add a spaceq: quote the valuesq: add a space and quote the valuesc: add a space and trailing commasqc: add a space, quotes, and trailing comma
Current GSP schema also confirms:
<alltext><occurrence>
inside each replacement text definition.
User-Facing Startup Parameters
<server_params>
Defines editable parameters that are used to build the startup command line.
Example:
<server_params>
<param id="SP" key="?ServerPassword=" type="text">
<option>ns</option>
<caption>Server Password</caption>
<desc>Players must know this password to connect.</desc>
</param>
</server_params>
Imported OGP parameter types:
textselectcheckbox_key_value
Imported OGP option rules:
ns: no space between key and valueq: quotes around the value with no added spaces: add a space before the value- anything else: space plus quotes
Current GSP schema also confirms richer structure for server params, including:
groupparamoptionattributedefaultcaptiondescoptionsaccess
Custom Fields
<custom_fields>
Defines fields stored by the panel for use outside the startup command line.
Current GSP schema confirms:
default_valueoccurrenceaccess
Imported OGP notes indicate these fields are intended for values the panel needs to capture and reuse even when they are not direct command-line substitutions.
Player Management Tags
<list_players_command>
Command used to request the current player list.
<player_info_regex>
Regular expression used to parse player rows from command output.
<player_info>
Maps parsed values into player fields.
<player_commands>
Defines commands such as kick or ban against selected players.
These sections are documented in the imported OGP XML notes and still appear in the current schema.
Lifecycle Scripts
<pre_install>
Commands or actions that run before installation.
<post_install>
Commands or actions that run after installation.
<pre_start>
Commands or actions that run before server start.
The original OGP XML notes include both Linux and Windows style examples for pre-start logic. Current GSP history also shows post-install XML fixes, including CDATA cleanup for DayZ scripts.
Environment And Locking
<environment_variables>
Defines environment variables exported for the server process.
<lock_files>
Defines files used to detect running or locked server states.
Configuration File Registration
<configuration_files>
Registers configuration files known to the panel.
Current GSP schema confirms <file> entries with a description attribute.
GSP Verification Notes
The current GSP schema adds a major block that is not described in the original OGP XML notes:
<workshop_support>
Current confirmed child tags:
enabledprovidersteam_app_idworkshop_app_iddownload_methodinstall_strategyinstall_pathstartup_param_formatmod_separatormod_prefixmod_folder_formatcopy_keyspost_install_action
Confirmed copy_keys child tags:
source_patterntarget_path
Confirmed install_strategy values in the current schema:
game_managed_workshopsteamcmd_download_onlycopy_to_game_rootcopy_to_mod_folderdayz_mod_folderarma_mod_folderconfig_onlycustom_scripted_install
This block is visible in current templates such as:
arma3_linux64.xmlarma3_win64.xml
Related Pages
Needs Verification
- whether any legacy tags remain accepted by runtime code even when not present in the current schema
- whether any module-specific XML conventions exist outside
config_games - whether every older OGP XML example remains valid without adjustment under the current GSP schema