Exportando para servidores dedicados

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

Suporte de plataforma

Se o seu projeto usa C#, você precisará usar um servidor binário habilitado para Mono.

Binários "headless" versus "server"

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 do editor, e portanto é menor e mais otimizado.

  • Headless: Este binário contém a funcionalidade do editor e destina-se a ser usado para exportar projetos. Este binário pode ser usado para rodar servidores dedicados, mas não é recomendado porque é maior e menos otimizado.

Exportando um arquivo PCK

Há duas maneiras de exportar um projeto para um servidor:

  • Crie uma predefinição de exportação Linux/X11, defina um modelo de exportação Release personalizado que aponte para o binário do servidor e exporte o projeto normalmente.

  • Exporte apenas um arquivo PCK, de preferência de uma predefinição de exportação Linux/X11.

Ambos os métodos devem resultar em saída idêntica. O texto abaixo descreve a abordagem do arquivo PCK.

Depois que você baixar um binário do servidor, você deve exportar um arquivo PCK contendo os dados do seu projeto. Depois de criar a configuração de exportação, clique em Export PCK/ZIP na parte inferior da caixa de diálogo, depois escolha o caminho de destino. A caixa de seleção Exportar Com Depuração na caixa de diálogo do arquivo não tem relação com o arquivo PCK final, então você pode deixá-lo como está.

Veja Exportando projetos para mais informações.

Nota

Se você estiver exportando o projeto de um editor headless, chame o editor headless com a opção --export-pack enquanto estiver na pasta do projeto para exportar apenas um arquivo PCK.

Nota

O arquivo PCK incluirá recursos que não são necessários para o servidor, como texturas e efeitos sonoros. Isso significa que o arquivo PCK será maior do que possivelmente seria. O 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 isto permite que o mesmo arquivo PCK seja usado tanto por um cliente quanto por uma compilação dedicada de servidor. Isto pode ser útil se você deseja enviar um único arquivo que pode ser usado tanto como cliente quanto como um servidor dedicado.

Preparando a distribuição do servidor

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). Isto 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

Iniciando o servidor dedicado

Se o cliente e o servidor fizerem parte do mesmo projeto do Godot, você terá que adicionar uma maneira de iniciar o servidor diretamente usando um argumento de linha de comando. Isto pode ser feito adicionando o seguinte trecho de código no método _ready() de sua cena principal (ou um singleton)

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

Alternativamente, você pode fazer com que o servidor dedicado sempre seja inicializado se um binário headless ou de servidor for detectado:

# 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

Se seu cliente e servidor são projetos do Godot separados, seu servidor provavelmente deve ser configurado de uma maneira onde a execução da cena principal iniciará um servidor automaticamente.

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 contêineres, você pode considerar colocar seu servidor dedicado em um contêiner Docker. Desta maneira, ele pode ser usado mais facilmente em uma configuração escalar automática (que está fora do escopo desse tutorial).