Exportando para servidores dedicados

Si quieres ejecutar un servidor dedicado para tu proyecto en una computadora que no tiene GPU o servidor de pantalla disponible, deberás usar una compilación server de Godot.

Plataformas soportadas

Si tu proyecto usa C#, querrás usar un binario de servidor con Mono habilitado.

Binarios "headless" versus "server"

La página de descarga de server ofrece dos tipos de binarios con varias diferencias.

  • Server: Utiliza este para ejecutar servidores dedicados. Este no contiene funcionalidad de editor, lo que lo convierte en más pequeño y optimizado.
  • Headless: Este binario contiene funcionalidad de editor y está destinada para ser usada en exportación de proyectos. Este binario puede ser usado para servidores dedicados pero no es recomendado ya que es más grande y menos optimizado.

Exportando un archivo PCK

Hay dos formas de exportar un proyecto para un servidor:

  • Crear un preajuste de exportación de Linux/X11, define una plantilla de exportación de Release personalizada que apunte al binario del servidor y luego exportar el proyecto como de siempre.
  • Exportar sólo un archivo PCK, preferiblemente de un preajuste de exportación Linux/X11.

Ambos métodos deberían dar como resultado un resultado idéntico. El texto que sigue describe el enfoque del archivo PCK.

Una vez que haya descargado un binario de servidor, debe exportar un archivo PCK que contenga los datos de su proyecto. Después de crear el ajuste preestablecido de exportación, haga clic en Exportar PCK / ZIP en la parte inferior del cuadro de diálogo Exportar y luego elija una ruta de destino. La casilla de verificación Exportar con depuración en el cuadro de diálogo del archivo no tiene relación con el archivo PCK final, por lo que puede dejarlo como está.

Ver Exportando proyectos para más información.

Nota

Si estás exportando el proyecto desde un editor sin cabeza, llama al editor sin cabeza con la opción --export-pack mientras estás en la carpeta del proyecto para exportar sólo un archivo PCK.

Nota

El archivo PCK incluye recursos que normamente no son necesarios para el servidor, como texturas y sonidos. Esto quiere decir que el PCK será más grande de lo que debería. El soporte para remover recursos innecesarios de un PCK para uso en servidor está planeado para versiones futuras de Godot.

Lo bueno de esto es que permite el mismo archivo PCK para ser usado tanto por cliente como en un servidor dedicado. Esto puede ser útil si quieres distribuir un único archivo que pueda ser usado tanto de cliente como de servidor dedicado.

Preparando el servidor para distribución

Después de descargar o compilar el binario server, deberás ubicarlo en la misma carpeta que el PCK que exportaste. El binario server deberá tener el mismo nombre que el PCK (excluyendo la extensión). Esto le permite a Godot detectar y usar el archivo PCK automáticamente. Si quieres comenzar un servidor con un PCK que tiene un nombre distinto, puedes especificar la ruta al archivo PCK usando el argumento de línea de comandos --main-pack:

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

Iniciar el servidor dedicado

Si tanto el cliente como el servidor son parte del mismo proyecto Godot, tendrás que añadir una forma de iniciar el servidor directamente usando un argumento de línea de comandos. Esto puede hacerse añadiendo el siguiente fragmento de código en tu escena principal (o en el singleton) _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

Alternativamente, puede hacer que el servidor dedicado siempre se inicie si se detecta un headless o binario de servidor:

# 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

Si tu cliente y tu servidor son proyectos Godot separados, lo más probable es que tu servidor esté configurado de tal manera que al ejecutar la escena principal se inicie un servidor automáticamente.

Siguientes pasos

En Linux, para hacer que tu servidor dedicado reinicie después de un crash o reinicio del sistema, puedes crear un servicio systemd. Esto también te dejará ver registros de servidor de un modo más conveniente con registro automático y rotativo provisto por systemd.

Si tienes experiencia con contenedores, también puedes ver de colocar tu servidor dedicado en un contenedor Docker. De este modo, puede ser usado fácilmente en un sistema de escalado automático (que está por fuera del alcance de este tutorial).