Overview
GamePanelX supports hundreds of game and voice servers through a flexible game configuration system. Each game type is defined with startup parameters, configuration files, update methods, and query protocols.Steam Games
Automatic installation and updates via SteamCMD
Custom Games
Manual and HTTP-based installation for non-Steam games
Voice Servers
TeamSpeak, Mumble, Ventrilo support
Template System
Deploy pre-configured servers instantly
Game Types
GamePanelX categorizes servers into three types:Game Servers
Characteristics:- Multiplayer game servers (CS:GO, Minecraft, TF2, etc.)
- Player slots and maps
- RCON password support
- GameQ query integration
- Counter-Strike: Source / Global Offensive
- Team Fortress 2
- Minecraft
- Garry’s Mod
- Left 4 Dead 2
- ARK: Survival Evolved
Voice Servers
Characteristics:- Voice communication servers
- Slot-based licensing
- Channel management
- Admin tokens/passwords
- TeamSpeak 3
- Mumble
- Ventrilo
Other Servers
Characteristics:- Non-game applications
- Custom server software
- Utility servers
Game Configuration
Each game is configured in thedefault_games database table:
Game Database Schema
Key Fields Explained
Internal Name (intname)
Internal Name (intname)
Unique identifier for the game, used for:
- Game icon paths:
/images/gameicons/small/{intname}.png - Template lookups
- URL parameters
css, tf2, mcraft, csgo, ts3Steam Configuration
Steam Configuration
For Steam-based games:
steam= 1steam_name= Steam app name (e.g., “Counter-Strike Source Dedicated Server”)update_cmd= SteamCMD app ID (e.g., “232330” for CS:GO)
Config File Settings
Config File Settings
Defines how to update game configuration files:
cfg_separator- Character between key and value (=,, orXfor XML)config_file- Relative path to config (e.g.,cstrike/cfg/server.cfg)cfg_*fields - Configuration file keys to update
Working Directory & PID File
Working Directory & PID File
working_dir- Directory tocdinto before starting (optional)pid_file- File containing process ID for stopping (optional)
working_dir = orangeboxInstallation Methods
GamePanelX supports multiple installation methods:Steam-Based Installation
For games withsteam = 1:
Steam Login
Authenticates using credentials from configuration:
- Steam username
- Steam password
- Steam Guard token (optional)
Automatic Installation (Non-Steam)
For games withinstall_mirrors and install_cmd:
Example: Minecraft
- Downloads from mirror URL
- Executes install command
- Extracts/prepares server files
- Calls back on completion
Manual Installation
For games without automatic installation:Startup Commands
Each game has a configurable startup command with parameters:Startup Parameters
Stored indefault_startup and servers_startup tables:
Building Startup Commands
GamePanelX constructs the startup command from ordered parameters:Command Construction
Variable Replacement
Supported variables in startup commands and config files:| Variable | Replaced With | Example |
|---|---|---|
%IP% | Server IP address | 192.168.1.1 |
%PORT% | Server port | 27015 |
%MAP% | Default map | de_dust2 |
%MAXPLAYERS% | Max players | 24 |
%HOSTNAME% | Server hostname | My Game Server |
%RCON% | RCON password | adminpass |
%PASSWORD% | Server password | serverpass |
GameQ Integration
GamePanelX uses GameQ v2 for real-time server queries:Supported Protocols
GameQ supports 100+ game protocols. Thegameq_name field specifies which protocol to use:
Common GameQ Names:
csgo- Counter-Strike: Global Offensivecss- Counter-Strike: Sourcetf2- Team Fortress 2minecraft- Minecraftarkse- ARK: Survival Evolvedrust- Rustgmod- Garry’s Modmta- Multi Theft Autots3- TeamSpeak 3none- No query (TCP check only)
Query Implementation
GameQ Server Query
If GameQ fails or the game doesn’t support queries, GamePanelX falls back to a simple TCP port check to determine online/offline status.
Configuration File Management
GamePanelX automatically updates game configuration files:Standard Config Format
For key-value configs with separators:Counter-Strike server.cfg
cfg_separator=(space) or=cfg_hostname=hostnamecfg_rcon=rcon_passwordcfg_password=sv_passwordcfg_maxplayers=maxplayers
XML Config Format
For XML-based configs (Multi Theft Auto):mtaserver.conf
cfg_separator=X(uppercase X enables XML mode)cfg_ip=serveripcfg_port=serverportcfg_hostname=servernamecfg_maxplayers=maxplayers
Config Update Process
Template System
Templates provide base server installations for quick deployment:Template Types
- Default Templates
- Custom Templates
- Marked as default for a game (
is_default = 1) - Used when creating servers without specifying template
- One default per game type recommended
Template Storage
Templates are stored in_SERVERS/templates/:
Creating Servers from Templates
When creating a server:- Selects template (default or specified)
- Executes
CreateServerscript with template ID - Script copies template directory to server location
- Replaces variables in config files
- Sets ownership to server user account
- Calls back when complete
Adding New Games
To add support for a new game:Game Configuration
Add entry to
default_games table with:- Name and internal name
- Default port and max players
- Steam settings (if applicable)
- Config file paths and keys
- Startup command template
Installation Method
Configure:
- Steam app ID for Steam games
- Download mirrors for HTTP installation
- Leave empty for manual template creation
Add Game Icon
Add icon images:
/images/gameicons/small/{intname}.png(20x20)/images/gameicons/medium/{intname}.png(32x32)
Game-Specific Features
Minecraft
Special handling for Minecraft servers:- Forces
enable-query=trueinserver.properties - Supports Java-based startup commands
- Handles JAR file execution
Multi Theft Auto (MTA)
XML config file support:- Uses
cfg_separator = Xfor XML mode - Custom query port (22126)
- XML tag-based configuration
Source Engine Games
Counter-Strike, TF2, etc.:- Working directory:
orangebox - SteamCMD auto-updates
- RCON support
- GameQ integration for detailed queries
Best Practices
Game Configuration
Game Configuration
- Use descriptive internal names (max 12 characters)
- Set realistic default ports and player counts
- Test config file updates before deploying
- Document special requirements in description field
Templates
Templates
- Create one default template per game
- Keep templates updated with latest game versions
- Remove unnecessary files to reduce template size
- Test templates before marking as default
Startup Commands
Startup Commands
- Order parameters correctly (executable first)
- Use variables instead of hardcoded values
- Test commands manually before configuring
- Document user-editable parameters
Updates
Updates
- Schedule Steam game updates during maintenance windows
- Test updates on development servers first
- Keep SteamCMD credentials current
- Monitor disk space during updates
Troubleshooting
Server Won’t Start
- Check startup command syntax
- Verify executable file exists and is executable
- Review working directory path
- Check console output for error messages
- Test command manually via SSH
Config Updates Not Working
- Verify config file path is correct
- Check separator character matches file format
- Ensure config keys match actual file
- Review file permissions (must be writable)
- Test regex patterns manually
GameQ Shows Offline
- Verify server is actually running
- Check GameQ protocol name is correct
- Test query manually using GameQ debug mode
- Verify firewall allows query port
- Fall back to TCP check if GameQ unsupported
Steam Updates Failing
- Verify Steam credentials in configuration
- Check Steam Guard token is current
- Test SteamCMD manually on network server
- Review disk space availability
- Check Steam app ID is correct
Game-specific documentation and community forums often provide valuable troubleshooting information for server configuration issues.