Exporting for dedicated servers

Se você quer rodar seu projeto em um servidor dedicado, que não possue GPU ou uma tela disponível, você vai precisar usar uma build do Godot para servidor.

Platform support

If your project uses C#, you'll have to use a Mono-enabled server binary.

"Headless" versus "server" binaries

A página de download do sevidor oferece dois tipos de binários com diferenças consideráveis.

  • Servidor: Use este para rodar servidores dedicados. Este não contém a funcionalidade editor, e portanto, é menor e mais otimizado.
  • 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.

Exporting a PCK file

There are two ways to export a project for a server:

  • Create a Linux/X11 export preset, define a custom Release export template that points to the server binary then export the project as usual.
  • Export a PCK file only, preferably from a Linux/X11 export preset.

Both methods should result in identical output. The text below describes the PCK file approach.

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.

See Projetos de exportação for more information.

Nota

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.

Nota

O arquivo PCK incluirá recursos que não são necesssário para o servidor, como texturas e efeitos sonoros. Isso significa que o arquivo PCK será maior do que possivelmente seria. Suporte para retirar recursos desnecessários do PCK para uso em servidor, está planejado para uma atualização futura do Godot.

O lado bom é que isso permite que o mesmo arquivo PCK seja usado, tanto por cliente, quanto por servidor. Isso pode ser útil se você deseja enviar um único arquivo que pode ser usado, tanto por cliente, quanto por servidor dedicado.

Preparing the server distribution

Depois de baixar ou compilar um binário de servidor, você deve colocá-lo na mesma pasta que o arquivo PCk que você exportou. O binário de servidor deve ter o mesmo nome que o PCK(sem contar a extensão). Isso permite que o Godot detecte e use o arquivo PCK automaticamente. Se você quer iniciar um servidor com um PCK que tem um nome diferente , você pode especificar o caminho para o arquivo PCK utilizando o argumento --main-pack:

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

Starting the dedicated server

If both your client and server are part of the same Godot project, you will have to add a way to start the server directly using a command-line argument. This can be done by adding the following code snippet in your main scene (or a singleton)'s _ready() method:

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

Alternatively, you can make the dedicated server always start up if a headless or server binary is detected:

# 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

If your client and server are separate Godot projects, your server should most likely be configured in a way where running the main scene starts a server automatically.

Próximos passos

No Linux, para reiniciar um servidor dedicado depois de um travamento ou reboot do sistema, você pode criar um serviço systemd. Isso permite que você veja os logs do servidor de maneira mais fácil, com rotação automática de log provida pelo systemd.

Se você já tem experiência com conteiners, você pode considerar colocar seu servidor dedicado em um Docker container. Dessa maneira, ele pode ser usado mais facilmente em uma configuração escalar automática(que está fora do escopo desse tutorial).