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: ** Laden Sie eine offizielle Linux-Server-Binärdatei <https://godotengine.org/download/server> __ herunter. Befolgen Sie die Anweisungen in: ref: doc_compiling_for_x11, um eine Server-Binärdatei aus dem Quellcode zu kompilieren.
  • MacOS: Kompiliere eine Server-Binärdatei aus der Quelle für MacOS.
  • Windows: There is no dedicated server build for Windows yet. As an alternative, you can use the --no-window command-line argument to prevent Godot from spawning a window. Note that even with the --no-window command-line argument, you'll need to have OpenGL support available on the Windows machine.

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

"Headless" versus "server" binaries

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

  • Server: Use this one for running dedicated servers. It does not contain editor functionality, and is therefore smaller and more optimized.
  • Headless: This binary contains editor functionality and is intended to be used for exporting projects. This binary can be used to run dedicated servers, but it's not recommended as it's larger and less optimized.

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.

Once you've downloaded a server binary, you should export a PCK file containing your project data. After creating the export preset, click Export PCK/ZIP at the bottom of the Export dialog then choose a destination path. The Export With Debug checkbox in the file dialog has no bearing on the final PCK file, so you can leave it as-is.

Siehe Projekte exportieren für weitere Informationen.

Bemerkung

If you're exporting the project from a headless editor, call the headless editor with the --export-pack option while in the project folder to export only a PCK file.

Bemerkung

The PCK file will include resources not normally needed by the server, such as textures and sounds. This means the PCK file will be larger than it could possibly be. Support for stripping unneeded resources from a PCK for server usage is planned in a future Godot release.

On the bright side, this allows the same PCK file to be used both by a client and dedicated server build. This can be useful if you want to ship a single archive that can be used both as a client and dedicated server.

Serververteilung vorbereiten

After downloading or compiling a server binary, you should now place it in the same folder as the PCK file you've exported. The server binary should have the same name as the PCK (excluding the extension). This lets Godot detect and use the PCK file automatically. If you want to start a server with a PCK that has a different name, you can specify the path to the PCK file using the --main-pack command-line argument:

./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

On Linux, to make your dedicated server restart after a crash or system reboot, you can create a systemd service. This also lets you view server logs in a more convenient fashion, with automatic log rotation provided by systemd.

If you have experience with containers, you could also look into wrapping your dedicated server in a Docker container. This way, it can be used more easily in an automatic scaling setup (which is outside the scope of this tutorial).