1. Introduction
Windows Game Server (WGS) is a free, open-source management application that makes installing, running and managing Windows game servers straightforward. Every essential operation is available from a single window — no command-line knowledge required for day-to-day use.
2. Installation
2.1 Pre-built binary (recommended)
- 1Download — Grab the latest release zip from the GitHub Releases page.
- 2Extract — Unpack to a permanent folder, e.g.
C:\WGS\ - 3Run — Double-click
WindowsGameServer.exe— the app starts immediately. - 4.NET Runtime — If you see a runtime error, install .NET 8 Runtime from dotnet.microsoft.com.
- 5SteamCMD — WGS downloads SteamCMD automatically the first time you install a game.
2.2 Build from source
Requires .NET 8 SDK.
git clone https://github.com/MadBee71/WindowsGameServer.git
cd WindowsGameServer/WGS
dotnet publish -c Release -o publish
3. First Launch
When the app opens for the first time you will see an empty server list. The left sidebar contains:
- Dashboard — global system metrics and server status summary
- Server list — all configured servers with their current status
- + Add Server — opens the new server creation dialog
- Icon toolbar — quick access to Settings, Dashboard, Backups, CPU Affinity, Discord, Web API, Info and more
4. Adding a Server
- 1Open dialog — Click the + Add Server button in the left sidebar.
- 2Select game — Pick from 50+ pre-configured games in the dropdown.
- 3Name — Give the server a recognisable name (e.g. Valheim — Family).
- 4Install folder — WGS suggests a path automatically. Change it if needed.
- 5Create — Click "Create server" — it appears with status Not Installed.
5. Install & Update
WGS uses Valve's SteamCMD to download game files. SteamCMD is fetched automatically into WGS's AppData folder on first use.
- 1Select server — Click a server in the left list.
- 2Install / Update — Click Install / Update in the server detail view.
- 3Login — Most games download anonymously. Games marked * (The Forest, Arma 3, ETS2, Wreckfest, Assetto Corsa, etc.) require a Steam account — set credentials in Settings → Steam Login.
- 4Progress — The console shows real-time download percentage from SteamCMD.
- 5Done — When the download finishes the status changes to Stopped.
6. Starting & Stopping
Control buttons in the server detail view:
| Button | Action | Notes |
|---|---|---|
| Start | Launches the server process | Runs a port pre-flight check first |
| Stop | Sends graceful stop; kills after 5 s | Waits for clean shutdown |
| Kill | Kills the entire process tree immediately | No grace period |
| Restart | Stop → 3 s delay → Start | |
| Show Window | Brings the server console window to the front | Only if the process has a window |
Status colours
| Status | Colour | Meaning |
|---|---|---|
| Running | 🟢 Green | Server is running normally |
| Starting | 🔵 Blue | Process is starting up |
| Stopping | 🔵 Blue | Graceful shutdown in progress |
| Installing / Updating | 🔵 Blue | SteamCMD is downloading files |
| Stopped | ⚫ Grey | Stopped — game files are installed |
| Not Installed | ⚫ Grey | Game files have not been downloaded yet |
| Error | 🔴 Red | Process failed to start or crash limit reached |
7. Automation & Auto-Start
- Auto Start — starts the server automatically when WGS is launched
- Auto Restart — restarts the server after a crash (default delay: 10 s)
- Auto Restart Max Retries — suspends auto-restart if the server crashes more than N times within 10 minutes (default 5) to prevent crash loops
- Auto Update — runs Install/Update on a configurable interval while the server is running; stops and restarts automatically
8. Server Settings
8.1 General fields
| Field | Description |
|---|---|
| Display Name | Internal name used inside WGS |
| Server Name | Public name shown in the in-game server browser |
| Max Players | Maximum allowed player count |
| Server IP | Listen address (0.0.0.0 = all network interfaces) |
| Game Port | Main port — players connect here |
| Query Port | Steam Query port used by the server browser |
| Steam Port | Steam network port (required by some games, e.g. Wreckfest) |
| RCON Port | Remote console port (Source RCON protocol) |
| RCON Password | RCON password — do not leave blank on a public server |
| Server Password | Connection password for players (optional) |
| GSLT Token | Steam Game Server Login Token (requires a Steam account) |
| Custom Args | Extra command-line arguments appended to the start command |
| Install Path | Folder where the game files live on disk |
8.2 Performance settings
Each server can be restricted to specific CPU cores and assigned a Windows process priority. Changes apply on the next startup.
| Setting | Values | Description |
|---|---|---|
| CPU Affinity | Core checkboxes | Which CPU cores the server may use. All unchecked = no restriction. |
| Process Priority | Normal / AboveNormal / High / BelowNormal / RealTime | Windows process priority. High and RealTime require admin rights. |
9. Firewall
WGS manages Windows Firewall rules automatically when Firewall Auto-Manage is enabled (default: on).
- On server start: WGS adds inbound TCP + UDP rules for game, query and Steam ports
- On server stop: those rules are removed automatically
- If Auto-Manage is off: add rules manually in Windows Defender Firewall
- Rules use netsh advfirewall — administrator rights are required
9.2 UPnP Automatic Port Forwarding
WGS can automatically open and close port forwarding rules on your router using UPnP. Enable in Settings → UPnP Port Forwarding.
- When a server starts — WGS requests port mappings for game, query and Steam ports from the router
- When a server stops or errors — those mappings are removed automatically
- Use the Test UPnP button in Settings to verify your router supports it
- Requires UPnP to be enabled in your router's administration interface
10. Ports & Networking
Before startup WGS checks whether the required ports are free locally. A port-in-use warning is logged but startup continues.
| Port type | Purpose | Default |
|---|---|---|
| Game Port | Players connect to this port | Varies by game |
| Query Port | Steam server browser queries this port | Usually Game Port + 1 |
| Steam Port | Steam network traffic (e.g. Wreckfest) | 27015 |
| RCON Port | Remote console (Source RCON protocol) | Varies |
11. Console & RCON
11.1 Console
The Console tab shows server output in real time. Messages are colour-coded:
| Colour | Type | Description |
|---|---|---|
| White / Grey | Info | Normal log messages |
| Yellow | Warning | Lines containing "warn" |
| Red | Error | Lines containing "error", "exception" or "fatal" |
| Cyan | System | WGS messages and SteamCMD output |
6.2 Batch Operations
Start, stop, restart or backup multiple servers at once using batch mode.
- 1Activate — Click the ☑ icon button next to the sort dropdown in the server list header.
- 2Select — Checkboxes appear next to each server. Tick the ones you want, or click All to select everything.
- 3Action — Use the batch toolbar buttons: ▶ Start, ■ Stop, ↺ Restart, 💾 Backup.
- 4Deactivate — Click the ☑ icon again to exit batch mode. All selections are cleared automatically.
11.2 RCON remote console
RCON is the Valve Source protocol for sending admin commands over the network. Works with Rust, 7 Days to Die, and other Source-based games.
- 1Set RCON port & password — Fill in RCON Port and RCON Password in the server's Settings tab.
- 2Start the server — RCON becomes available when the server process is running.
- 3Connect — Click "RCON: Connect" in the Console tab.
- 4Send a command — Type the command and press Enter or click Send.
12. Config Editor
The Config tab lets you browse and edit server configuration files directly inside WGS — no file manager or text editor needed.
- Click the Config tab in the server detail view
- WGS scans the install folder and lists all recognised configuration files
- Click a file name to load its contents into the built-in text editor
- Edit the content, then click Save to write changes to disk
13. File Browser v1.1.0
The Files tab provides a full in-app file manager for the server's install directory — browse, manage and transfer files without leaving WGS.
- Browse — navigate the server's folder tree directly in WGS
- Rename — rename any file or folder
- Delete — delete files and folders (with confirmation)
- Download — save a file to any location on your PC
- New folder — create directories as needed
- Upload — copy a file from your PC into the current directory
14. Performance Charts
The Charts tab displays real-time CPU and RAM usage history for the selected server while it is running.
- CPU % chart — process CPU usage as a percentage of total system CPU capacity
- RAM chart — working-set memory consumption in MB
- History window: last 6 minutes — 180 data points sampled every 2 seconds
- Charts reset automatically when the server is stopped
15. Bandwidth Monitoring v1.1.0
WGS monitors network traffic in real time — both globally across the machine and per server based on active TCP/UDP connections.
- Global I/O — total bytes in/out per second across all network interfaces, shown in the sidebar status bar
- Per-server I/O — each server's estimated share of network traffic, calculated from its proportion of active connections
- Connection count — number of active TCP connections for each server process
- Data refreshes every 2 seconds; history kept for the last 6 minutes
| Display location | Shows |
|---|---|
| Sidebar bottom bar | Global bytes in/out per second |
| Server detail — Charts tab | Per-server network I/O history graph |
| Server detail — Info tab | Current bytes in/out and active connection count |
16. Mod Manager
The Mods tab manages server-side modding frameworks:
- Oxide / uMod — for Rust and other supported games. Downloads the latest Oxide release and installs it into the server folder
- Minecraft plugins — for Paper/Spigot servers. Displays the contents of the plugins folder
| Action | Description |
|---|---|
| Install Oxide | Downloads and installs the latest Oxide/uMod release for this game |
| Update Oxide | Re-downloads Oxide to update to the latest version |
| Open plugins folder | Opens the server's plugins directory in Windows Explorer |
17. Steam Workshop
The Workshop tab is visible for games that support Steam Workshop (e.g. Arma Reforger). It uses SteamCMD to download Workshop items.
- 1Find the item ID — Open the Workshop page in a browser. The ID is the number in the URL:
steamcommunity.com/sharedfiles/filedetails/?id=XXXXXXXXX - 2Enter the ID — Paste the Workshop item ID into the input field in the Workshop tab.
- 3Download — Click Download. WGS runs SteamCMD and shows progress in the console.
- 4Done — The item appears in the Installed Items list with its local folder path.
- Click Remove next to an item to delete it from disk
- Workshop content:
%APPDATA%\WGS\steamcmd\steamapps\workshop\content\
18. Player Statistics
The Players tab shows session history for everyone who has connected. Data is stored in a local SQLite database and survives restarts.
| Column | Description |
|---|---|
| Player Name | Name as reported in the server log |
| Join Time | Timestamp when the player connected |
| Leave Time | Timestamp when the player disconnected (blank if still online) |
| Duration | Total time in session — format HH:MM:SS |
- The Total Playtime view shows cumulative playtime per player across all sessions
- Accuracy depends on each game's log format for join/leave detection
- Stored in:
%APPDATA%\WGS\player_stats.db
19. Backups
- Backup Enabled — activates automatic backups for this server
- Backup Retention — number of backups to keep (default 5); older ones deleted automatically
- Create Backup button — takes an immediate backup
- Backup All (Dashboard) — backs up every server at once
- Restore — extracts a backup into the install folder (stop the server first)
- Stored in:
%APPDATA%\WGS\backups\<server-id>\
20. Server Templates v1.1.0
Server Templates let you save a complete server configuration and redeploy identical servers in seconds. Access from Tools → Server Templates.
- 1Save as template — Open any configured server → click "Save as Template" → give it a name and optional tags.
- 2Browse templates — Open Tools → Server Templates — filter by game category or tag.
- 3Deploy — Click "Deploy" → choose a name and install path → new server created instantly with all settings pre-filled.
- 4Edit / Delete — Pencil icon to rename; trash icon to remove permanently.
- Templates capture: game type, ports, max players, startup arguments, RCON settings, CPU affinity, process priority and automation settings
- Stored in:
%APPDATA%\WGS\templates.json
21. Scheduled Tasks
The built-in scheduler runs actions automatically at set times. Add tasks in the Schedule tab of any server.
| Field | Options / Description |
|---|---|
| Action | Restart · Stop · Start · Backup · Update |
| Frequency | Once · Daily · Weekly |
| Time of day | HH:MM (24-hour clock) |
| Day of week | Monday–Sunday (Weekly only) |
| Enabled | Toggle a task on/off without deleting it |
| Last / Next | Timestamps — Next run calculated automatically |
22. Dashboard
Click Dashboard in the sidebar to open the live system overview. Data refreshes every 2 seconds.
- CPU Usage — overall processor load as a percentage
- RAM — used and free memory in GB with percentage bar
- Drives — usage and free space for every connected drive
- Server Count / Online / Stopped — server status summary
- Global network I/O — total bytes in/out per second across all servers
- Backup All — triggers an immediate backup of every configured server
23. Discord Notifications
WGS posts rich embed messages to a Discord channel via a webhook URL. Configure in Settings → Discord Notifications.
| Event | Trigger | Embed colour |
|---|---|---|
| Server started | Status → Running | 🟢 Green |
| Server stopped | Status → Stopped | ⚫ Grey |
| Server crashed | Status → Error | 🔴 Red |
| Update started | Status → Updating | 🔵 Blue |
- 1Create webhook — Discord: channel Settings → Integrations → Webhooks → New Webhook → Copy URL.
- 2Paste URL — WGS Settings → Discord Notifications → paste into "Webhook URL".
- 3Enable — Check "Enable Discord notifications" and choose which events to send.
- 4Test — Click "Test" to send a test embed immediately.
- 5Save — Click "Save". The URL is encrypted with Windows DPAPI before writing.
24. Discord Remote Control Bot
The Discord bot lets you control your servers from any Discord channel. Configure in Settings → Discord Remote Control Bot.
- 1Create a bot — discord.com/developers → New Application → Bot → Reset Token → Copy Token.
- 2Set permissions — OAuth2 → URL Generator: "bot" scope + Read Messages + Send Messages. Invite the bot.
- 3Get channel ID — Developer Mode in Discord → right-click your control channel → Copy Channel ID.
- 4Configure WGS — Settings → Discord Remote Control Bot. Paste the Bot Token and Channel ID.
- 5Restrict access — Enter comma-separated Discord User IDs in "Allowed User IDs". Leave blank to allow everyone.
- 6Save & test — Click Save, then "Test connection".
Bot commands
| Command | Description |
|---|---|
!help | Lists all available commands |
!status | Shows all servers with their current status |
!start <name> | Starts the named server |
!stop <name> | Stops the named server |
!restart <name> | Restarts the named server |
!update <name> | Runs Install/Update on the named server |
!backup <name> | Creates an immediate backup of the named server |
!cmd <name> <command> | Sends a console command to the running server |
25. Web Dashboard & REST API v1.1.0
WGS includes a built-in HTTP server with a browser-accessible dashboard and REST API. Enable in Settings → Web Remote Control.
- 1Enable — Check "Enable Web API" and choose a port (default: 8765).
- 2Token — An access token is generated automatically. Copy or customise it.
- 3Save — Click Save — the API starts immediately; status indicator turns green.
- 4Browser UI — Navigate to
http://localhost:8765/ui— dashboard with server controls and a real-time log viewer. - 5Remote access — Use your LAN IP from other devices. For internet access, add port forwarding.
REST endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/servers | List all servers with status and port info |
| GET | /api/servers/{id} | Get a single server's details |
| POST | /api/servers/{id}/start | Start a server |
| POST | /api/servers/{id}/stop | Stop a server |
| POST | /api/servers/{id}/restart | Restart a server |
| POST | /api/servers/{id}/update | Run Install/Update |
| POST | /api/servers/{id}/backup | Create a backup |
| POST | /api/servers/{id}/cmd | Send console command — body: {"command":"..."} |
| GET | /api/system | System metrics — CPU, RAM, drives, network I/O |
/api/* endpoints require the token via Authorization: Bearer <token> or ?token=<token>.26. User Management v1.1.0
WGS supports multiple user accounts for the Web Dashboard and REST API. Manage in Settings → User Management.
| Role | Permissions |
|---|---|
| Admin | Full access — start, stop, restart, update, backup, console, manage users, change settings |
| Viewer | Read-only — view status, metrics and logs; cannot start/stop or modify settings |
| Action | Description |
|---|---|
| Add user | Enter username, password and role → click "Add". Password hashed with PBKDF2-SHA256. |
| Enable / Disable | Toggle account on/off without deleting it |
| Reset password | Enter a new password and click "Change password" |
| Delete | Permanently removes the account and its audit entries |
| API token | Each user has a unique API token. Regenerate at any time. |
Audit log
Every significant action is recorded in SQLite. View in Settings → User Management → Audit Log.
- Logged events: login, logout, start/stop/restart, update, backup, create/delete user, change role, reset password
- Each entry: timestamp, username, action, details
- Stored in:
%APPDATA%\WGS\users.db
27. Multi-Machine Management v1.1.0
WGS supports a master/slave architecture — run WGS as an agent on any PC or VPS and control it remotely from your main window.
- Slave machine: enable the Web API (section 25) and note the URL + token
- Master machine: Settings → Remote Machines → Add Machine → enter URL and token
- The master polls each slave every few seconds and shows all remote servers in the Machines sidebar tab
- Click a remote server to open its detail view with console, controls and metrics
28. Supported Games
WGS ships with 50+ built-in game plugins. Games marked * require a Steam account to install — all others download anonymously.
| Login type | When required |
|---|---|
| Anonymous | Most games — no Steam account needed. WGS downloads via SteamCMD without credentials. |
| Steam account * | DayZ, The Forest, Arma 3, Wreckfest, Assetto Corsa, ETS2, Killing Floor 2, Team Fortress 2 and a few others require a valid Steam account that owns the game. |
28.1 Setting up Steam login
- 1Open Settings — Click the Settings icon in the left toolbar.
- 2Steam Login tab — Select the Steam Login tab.
- 3Enter credentials — Type your Steam username and password. Credentials are encrypted with Windows DPAPI before being stored on disk.
- 4Save — Click Save. WGS will use these credentials automatically when SteamCMD requires a login.
28.2 Steam Guard — email code
If Steam Guard is enabled on your account, SteamCMD will pause and request a verification code the first time you log in from a new machine.
- 1Click Install / Update on a game that requires a Steam account.
- 2SteamCMD will print: Enter the current code sent to your email address.
- 3Check your email for the 5-character code from Steam.
- 4Type the code into the console input field at the bottom of the Console tab and press Enter.
- 5SteamCMD caches the session — subsequent installs on the same machine will not ask again.
28.3 Steam Guard — mobile authenticator
- 1Click Install / Update on a game that requires a Steam account.
- 2SteamCMD will pause waiting for Steam Guard approval.
- 3A login approval notification appears on your phone. Open the Steam app.
- 4Tap Approve on the login request — no code entry needed. SteamCMD continues automatically.
- 5SteamCMD caches the session for this machine.
29. Custom Plugin Creator
The Plugin Creator lets you add any game server without writing code. Open from Tools → Plugin Creator.
| Field | Req. | Description |
|---|---|---|
| Game ID | Yes | Unique identifier, e.g. mygame |
| Game Name | Yes | Display name in the game dropdown |
| Description | No | Short description shown in the Info tab |
| Category | No | Survival / Racing / Shooter / etc. |
| Steam AppID | Yes | Used by SteamCMD to download the server files |
| Executable | Yes | Server .exe — relative path from install folder |
| Default Port | Yes | Game port |
| Default Query Port | Yes | Steam Query port |
| Default Steam Port | No | Steam network port (0 = not used) |
| Max Players | Yes | Default player count |
| Start Arguments | Yes | Command-line args (supports placeholder variables) |
| Stop Command | No | Graceful shutdown command (blank = kill process) |
Placeholder variables
| Placeholder | Value |
|---|---|
{ip} | Server IP address |
{port} | Game port |
{qport} | Query port |
{name} | Server name |
{max} | Max players |
{map} | Map (game-specific setting) |
{password} | Server password |
29.2 Import / Export plugins
Plugins can be exported to a .cs source file and imported on another machine.
- Export: Tools → Export Plugin → select a plugin → save as .cs file
- Import: Tools → Import Plugin → select a .cs file — compiled in memory and registered immediately without restarting WGS
30. Troubleshooting
| Problem | Solution |
|---|---|
| Server won't start — "executable not found" | Game files are not installed or the executable path is wrong. Re-run "Install / Update", or check manually that the .exe exists in the install folder. |
| SteamCMD fails — ERROR! App state is 0x… | Usually a network issue or Steam servers are temporarily down. Try again shortly. If login is required, verify your Steam Guard code. |
| Port already in use | Another program is using the same port. Change the port in Settings or stop the conflicting program. |
| RCON won't connect | Confirm the RCON port and password match the server's config file and that a firewall rule exists for that port. |
| Backup fails | Disk space may be full or WGS lacks write permission to %APPDATA%. |
| Discord bot won't connect | Verify the bot token and channel ID. The bot needs Read Messages and Send Messages permissions in that channel. |
| Web API returns 401 | The request is missing the token. Add Authorization: Bearer <token> or append ?token= to the URL. |
| Web Dashboard login fails | Check username and password in Settings → User Management. Default credentials are admin / admin — change them on first use. |
| File Browser shows empty folder | Verify the install path is correct in the server's Settings tab. |
| Auto-restart disabled — crash limit reached | The server crashed too many times in 10 minutes. Fix the underlying problem, then re-enable Auto Restart in the server's Settings tab. |
| App won't launch — .NET error | Install .NET 8 Runtime from dotnet.microsoft.com. |
| Server processes survive after WGS closes | Always stop servers with the Stop button before closing WGS. |
31. Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Ctrl + V | Paste (all text fields) |
Ctrl + C | Copy (all text fields) |
Ctrl + X | Cut (all text fields) |
Ctrl + A | Select all (text fields) |
Enter | Send console / RCON command |
32. File Locations
WGS stores configuration in Windows AppData and writes nothing permanent to its own installation directory.
| Path | Contents |
|---|---|
%APPDATA%\WGS\servers.json | All server configurations |
%APPDATA%\WGS\settings.json | Global application settings |
%APPDATA%\WGS\notifications.json | Discord notification settings |
%APPDATA%\WGS\scheduled_tasks.json | Scheduled task definitions |
%APPDATA%\WGS\custom_plugins.json | Custom Plugin Creator entries |
%APPDATA%\WGS\templates.json | Server templates (v1.1.0) |
%APPDATA%\WGS\player_stats.db | Player session history (SQLite) |
%APPDATA%\WGS\users.db | User accounts and audit log (v1.1.0) |
%APPDATA%\WGS\steamcmd\ | SteamCMD installation (auto-downloaded) |
%APPDATA%\WGS\backups\ | Server backup zip files |