The SDK is how GameDash is extended. Game support, custom setup flows, bespoke process handling — all of it is written as modules against the SDK rather than built into the panel.
This is the part of GameDash that most distinguishes it from other control panels. Elsewhere, game support is a fixed list you wait on the vendor to extend. Here it is a plugin you can read, fork or write.
A module is loaded by the panel and can take over as much or as little of an instance's lifecycle as it needs. Modules typically handle:
Anything a module does not implement falls back to the platform's default behaviour, so a simple game needs very little code.
Modules do not talk to nodes directly. They call into the foreign function interface — the FFI — which exposes platform capabilities as ordinary classes: instances, processes, consoles, settings, nodes. The FFI handles the fact that the instance in question lives on some particular machine running some particular operating system.
Modules are written in PHP and reach the FFI through the \GameDash\Sdk\FFI namespace. See
The foreign function interface.
Because the FFI is the only route to the host, a module written once works on every platform GameDash supports. A module asks for a child process with an executable and some arguments; it does not care whether that lands on Debian or Windows, in a container or on the host.
The exception is the game itself. If a title ships no Linux dedicated server, the module says so in its supported-operating-systems declaration and the panel keeps it off Linux nodes.
There is also a generated FFI class reference covering every class and method the interface exposes.