Exporting for dedicated servers

Если вы хотите запустить выделенный сервер для своего проекта на машине, на которой нет графического процессора или сервера отображения, вам необходимо использовать серверную сборку Godot.

Platform support

Если в вашем проекте используется C#, вам придётся использовать двоичный файл сервера с поддержкой Mono.

"Headless" versus "server" binaries

Страница загрузки сервера предлагает два типа двоичных файлов с некоторыми отличиями.

  • Server: Используйте его для работы выделенных серверов. Он не содержит функций редактора, поэтому меньше по размеру и более оптимизирован.
  • Headless: Этот двоичный файл содержит функции редактора и предназначен для использования при экспорте проектов. Этот двоичный файл может использоваться для запуска выделенных серверов, но не рекомендуется, поскольку он больше и менее оптимизирован.

Exporting a PCK file

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

  • Создайте предустановку экспорта Linux/X11, определите настраиваемый шаблон экспорта выпуска, который указывает на двоичный файл сервера, затем экспортируйте проект как обычно.
  • Экспортируйте только файл PCK, желательно из предустановки экспорта Linux/X11.

Оба метода должны давать одинаковый результат. Текст ниже описывает подход с использованием файла PCK.

После того, как вы загрузили двоичный файл сервера, вы должны экспортировать файл PCK, содержащий данные вашего проекта. После создания предустановки экспорта нажмите Export PCK/ZIP в нижней части диалогового окна Export, затем выберите путь назначения. Флажок Export With Debug (Экспорт с отладкой) в диалоговом окне файла не влияет на окончательный файл PCK, поэтому вы можете оставить его как есть.

Дополнительную информацию смотрите в Экспорт проектов.

Примечание

Если вы экспортируете проект из редактора без заголовка, вызовите редактор без заголовка с параметром --export-pack, находясь в папке проекта, чтобы экспортировать только файл PCK.

Примечание

Файл PCK будет включать ресурсы, которые обычно не требуются серверу, такие как текстуры и звуки. Это означает, что файл PCK будет больше, чем возможно. Поддержка удаления ненужных ресурсов из PCK для использования на сервере планируется в будущем выпуске Godot.

С другой стороны, это позволяет использовать один и тот же файл PCK как для сборки клиента, так и для выделенного сервера. Это может быть полезно, если вы хотите отправить один архив, который можно использовать как в качестве клиента, так и в качестве выделенного сервера.

Preparing the server distribution

После загрузки или компиляции двоичного файла сервера вы должны поместить его в ту же папку, что и экспортированный файл PCK. Бинарный файл сервера должен иметь то же имя, что и PCK (за исключением расширения). Это позволяет Godot автоматически обнаруживать и использовать файл PCK. Если вы хотите запустить сервер с PCK с другим именем, вы можете указать путь к файлу PCK с помощью аргумента командной строки --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.

Следующие шаги

В Linux для перезапуска выделенного сервера после сбоя или перезагрузки системы вы можете создать службу systemd. Это также позволяет просматривать журналы сервера в более удобном виде с автоматической ротацией журналов, предоставляемой systemd.

Если у вас есть опыт работы с контейнерами, вы также можете изучить возможность упаковки вашего выделенного сервера в контейнер Docker. Таким образом, его можно будет проще использовать при настройке автоматического масштабирования (что выходит за рамки данного руководства).