3.5 KiB
GSP Component Architecture
Workspace reference: GSP-WORKSPACE.md
This repository contains the related GSP components together:
/Agent-Windows- Cygwin/Windows game server agent./Agent_Linux- Linux game server agent./Panel- PHP control panel used by customers and staff./Website- public website and related customer-facing pages.
Panel And Agent Communication
The Panel talks to agents through XML-RPC using the encrypted parameter helpers in Panel/includes/lib_remote.php. The Panel should request actions from the agent and treat the agent as the source of truth for server state.
The shared server control backend is still screen for both Linux and Cygwin/Windows agents. The Panel should not decide that a game server is online only because a web request, LGSL query, or GameQ query succeeded.
Status Source Of Truth
The agent is the source of truth for start, stop, restart, and status. Marker files such as SERVER_STOPPED or startup flag files may still exist for legacy autorestart and startup bookkeeping, but they are not trusted as the current server state.
The minimum readiness check is:
- The configured process/session exists.
- The configured game port is listening.
LGSL/GameQ query data is optional metadata only. It can provide player counts, maps, hostname, and other query details. If query fails while the process/session exists and the game port is listening, the Panel should show the server as online with a small "query info unavailable" note.
Status Model
OFFLINE: no managed process/session and no listening game port.STARTING: managed process/session exists, but the game port is not listening yet.ONLINE: managed process/session exists and the game port is listening.STOPPING: stop was requested and the managed process/session still exists.UNRESPONSIVE: the managed process/session exists but the game port did not become ready before timeout, or stop did not complete cleanly.UNKNOWN: the agent cannot be reached or did not return structured status.
Start
Start should launch the configured screen/session and immediately report a starting state if the session exists. Slow games, including Arma 2 and DayZ Mod, must not be marked failed just because LGSL/GameQ did not answer quickly.
Startup timeout should be configurable per game XML when possible, with a default of 180 seconds.
Stop
Stop should issue the configured graceful control command when available. The agent then checks whether the managed screen/session is gone and whether the game port is no longer listening. If the process/session remains after the wait period, the agent escalates by closing the screen session.
The Panel should only show stopped after the agent confirms OFFLINE.
Restart
Restart is intentionally simple:
- Stop server.
- Wait 60 seconds.
- Start server.
Do not use a separate shortcut that skips stop verification or depends on query responses.
Log Viewer
The gamemanager log viewer should update the log text through AJAX/live fetches only. It should not reload the full page for each refresh and should not show the old manual refresh interval dropdown or plus/update button.
The live log should preserve mobile scrolling behavior and only auto-scroll when the user is already near the bottom.
Agent Parity
Keep Linux and Cygwin/Windows agent behavior as similar as possible. Both should continue using screen as the shared backend for now and expose the same status model to the Panel.