User Documentation

Warlock is not just one project, but rather a combination of multiple projects all interacting to serve different tasks.

Fundamental Layer

At the ground level, Warlock consists of a Python-based application specific to the game it is managing.

This small application utilizes the Warlock Manager as a dependency to interface with the game and provides a standardized command-line API and interface.

Warlock Game{data-fslightbox="docs"}

Since the application is custom tailored to the specific game, it can target the exact requirements for that game, varying from using SteamCMD to manual installations with raw downloads.

This application also stores the configuration parameters and how to save them for that specific game and exposes access to them via the standardized API.

This also allows custom actions for any step of the management of the game, such as rebuilding the systemd file or weird procedures for installing mods.

Service Layer

Starting, stopping, and enabling is offloaded to the reliable and defacto Systemd service manager for Linux. Systemd handles crash detection, automatic restarts, depdendency management, and everything else we need to keep games running.

Service Integration with Systemd{data-fslightbox="docs"}

Warlock-integrated games push the necessary registration files to Systemd to let the service system does what it does best.

Similarly, systemctl and journalctl are used for retrieving service stats, logs, and uptime status.

Web Management

The web manager is a vanilla Javascript application that communicates with the Warlock web API running on the same web server. This nodejs-based web API backend then interfaces with Warlock-compatible games either via SSH to the target game server or directly via shell commands.

Game-specific commands are routed through the manage.py API (@todo link to game API) and service commands such as start or restart are routed through systemd.

Web Management of Hosts{data-fslightbox="docs"}

Multi Server Support

Since the Warlock Web Manager interfaces over SSH, it easily supports multiple physical game servers. This allows you to run an entire fleet of servers and manage them all from a single web interface; (providing the Warlock management server has SSH access to each game server).

Web Management of Mutliple Hosts{data-fslightbox="docs"}