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¶
Linux: Download an official Linux server binary. To compile a server binary from source, follow instructions in Kompilieren für X11 (Linux, *BSD).
MacOS: Kompiliere eine Server-Binärdatei aus der Quelle für MacOS.
Windows: Es gibt noch keinen dedizierten Server für Windows. Als Alternative können Sie das Kommandozeilenargument
--no-window
verwenden, um Godot daran zu hindern, ein Fenster zu erzeugen. Beachten Sie, dass Sie selbst mit dem--no-window
Kommandozeilenargument OpenGL-Unterstützung auf der Windows-Maschine zur Verfügung haben müssen.
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).