Exportieren für dedizierte Server

Wenn Sie einen dedizierten Server für Ihr Projekt auf einem Computer ausführen möchten, auf dem keine GPU oder kein Anzeigeserver verfügbar ist, müssen Sie einen Server-Build von Godot verwenden.

Plattformunterstützung

Wenn Ihr Projekt C# verwendet müssen Sie eine Mono-fähige Server-Binärdatei verwenden.

"Headless" versus "Server"-Binärdateien

The server download page offers two kinds of binaries with several differences.

  • Server: Verwenden Sie diesen für den Betrieb von dedizierten Servern. Er enthält keine Editor-Funktionalität und ist daher kleiner und optimierter.

  • Headless: Diese Binärdatei enthält Editor-Funktionalität und ist für den Export von Projekten vorgesehen. Diese Binärdatei **kann* verwendet werden, um dedizierte Server zu betreiben, aber sie wird nicht empfohlen, da sie größer und weniger optimiert ist.

Exportieren einer PCK Datei

Es gibt zwei Möglichkeiten, ein Projekt für einen Server zu exportieren:

  • Erstellen Sie eine Linux/X11-Exportvoreinstellung, definieren Sie eine benutzerdefinierte Release-Exportvorlage, die auf die Server-Binärdatei verweist und exportieren Sie das Projekt wie gewohnt.

  • Exportieren Sie nur eine PCK-Datei, vorzugsweise aus einer Linux/X11-Exportvoreinstellung.

Beide Methoden sollten zu einer identischen Ausgabe führen. Der folgende Text beschreibt den PCK-Dateiansatz.

Sobald Sie eine Server-Binärdatei heruntergeladen haben, sollten Sie eine PCK-Datei mit Ihren Projektdaten exportieren. Nachdem Sie die Exportvoreinstellung erstellt haben, klicken Sie auf Export PCK/ZIP unten im Dialogfeld Export und wählen Sie dann einen Zielpfad. Das Kontrollkästchen Export mit Debug im Dateidialogfeld hat keinen Einfluss auf die endgültige PCK-Datei, so dass Sie sie so belassen können, wie sie ist.

Siehe Projekte exportieren für weitere Informationen.

Bemerkung

Wenn Sie das Projekt aus einem Headless-Editor exportieren, rufen Sie den Headless-Editor mit der Option --export-pack auf, während Sie sich im Projektordner befinden, um nur eine PCK-Datei zu exportieren.

Bemerkung

Die PCK-Datei enthält Ressourcen, die normalerweise vom Server nicht benötigt werden, wie z.B. Texturen und Sounds. Das bedeutet, dass die PCK-Datei größer sein wird, als sie möglicherweise sein könnte. Unterstützung für das Strippen nicht benötigter Ressourcen von einem PCK für die Verwendung auf dem Server ist in einer zukünftigen Godot-Version geplant.

Das Positive daran ist, dass dieselbe PCK-Datei sowohl von einem Client- als auch von einem dedizierten Server-Build verwendet werden kann. Dies kann nützlich sein, wenn Sie ein einziges Archiv ausliefern möchten, das sowohl als Client als auch als dedizierter Server verwendet werden kann.

Serververteilung vorbereiten

Nachdem Sie eine Server-Binärdatei heruntergeladen oder kompiliert haben, sollten Sie sie nun in denselben Ordner wie die exportierte PCK-Datei legen. Die Server-Binärdatei sollte denselben Namen wie das PCK haben (ohne die Erweiterung). Dadurch kann Godot die PCK-Datei automatisch erkennen und verwenden. Wenn Sie einen Server mit einem PCK starten möchten, das einen anderen Namen hat, können Sie den Pfad zur PCK-Datei mit dem Befehlszeilenargument --main-pack angeben:

./godot-server --main-pack my_project.pck

Starten des dedizierten Servers

Wenn sowohl Ihr Client als auch Ihr Server Teil desselben Godot-Projekts sind, müssen Sie eine Möglichkeit haben den Server mithilfe eines Kommandos auf der Befehlszeile direkt zu starten. Dies kann durch Hinzufügen des folgenden Codeausschnitts in der _ready() Methode Ihrer Hauptszene (oder eines Singletons) erfolgen:

if "--server" in OS.get_cmdline_args():
    # Run your server startup code here...
    # Using this check, you can start a dedicated server by running
    # a Godot binary (headless or not) with the `--server` command-line argument.
    pass

Alternativ können Sie den dedizierten Server immer starten lassen, wenn eine Headless- oder Server-Binärdatei erkannt wird:

# Note: Feature tags are case-sensitive! It's "Server", not "server".
if OS.has_feature("Server"):
    # Run your server startup code here...
    # Note that using this check may break unit testing scripts when
    # running them with headless or server binaries.
    pass

Wenn Ihr Client und Ihr Server separate Godot-Projekte sind, sollte Ihr Server höchstwahrscheinlich so konfiguriert sein, dass beim Ausführen der Hauptszene ein Server automatisch gestartet wird.

Nächste Schritte

Unter Linux können Sie einen systemd-Dienst einrichten, damit Ihr dedizierter Server nach einem Absturz oder Systemneustart neu startet. Dadurch können Sie auch die Serverprotokolle auf bequemere Weise anzeigen, wobei systemd für eine automatische Protokollrotation sorgt.

Wenn Sie Erfahrung mit Containern haben, könnten Sie auch erwägen, Ihren dedizierten Server in einen Docker-Container zu verpacken. Auf diese Weise kann er leichter in einer Einrichtung mit automatischer Skalierung verwendet werden (was außerhalb des Rahmens dieses Tutorials liegt).