Экспортирование на выделенные серверы

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

Поддерживаемые платформы

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

Бинарные файлы "headless" и "server"

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

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

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

Экспортирование файла PCK

Есть два способа экспортирования проекта на сервер:

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

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

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

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

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

Примечание

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

Примечание

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

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

Подготовка сервера

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

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

Запуск сервера

Если и ваш клиент, и сервер являются частью одного и того же проекта Godot, вам нужно будет добавить способ запуска сервера напрямую с помощью аргумента командной строки. Это можно сделать, добавив следующий фрагмент кода в вашу основную сцену (или синглтон) с помощью метода _ready():

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

В качестве альтернативы вы можете сделать так, чтобы выделенный сервер всегда запускался при обнаружении бинарного файла без заголовка или сервера:

# 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

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

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

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

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