Експорт для виділених серверів

Якщо ви хочете запустити виділений сервер для свого проєкту на машині, яка не має графічного процесора або сервера відображення, вам потрібно буде використовувати збірку сервера Godot.

Підтримувані платформи

Якщо ваш проєкт використовує C#, вам доведеться використовувати двійковий файл сервера з підтримкою Mono.

Бінарні файли "headless" і "server"

The server download page offers two kinds of binaries with several differences.

  • Server: Використовуйте його для запуску виділених серверів. Він не містить функціональних можливостей редактора, тому є меншим та оптимізованим.

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

Експорт файлу PCK

Є два способи експорту проєкту на сервер:

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

  • Експортуйте лише файл PCK, бажано з пресету експорту Linux/X11.

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

Завантаживши двійковий файл сервера, вам слід експортувати файл PCK, що містить дані вашого проєкту. Після створення стилю експорту натисніть кнопку Експорт PCK/ZIP внизу діалогового вікна Експорт, а потім виберіть шлях призначення. Галочка Export With Debug *(Експорт з налагодженням)*в діалоговому вікні файлу не має ніякого відношення кінцевого файлу PCK, так що ви можете залишити її як є.

Додаткову інформацію дивіться в Експортування проєктів.

Примітка

Якщо ви експортуєте проєкт із редактора headless, викликайте редактор headless за допомогою опції --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

Крім того, ви можете зробити так, щоб виділений сервер завжди запускався, якщо виявлено headless або server двійковий файл:

# 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<https://medium.com/@benmorel/creating-a-linux-service-with-systemd-611b5c8b91d6>`__. Вона також дозволяє переглядати журнали сервера зручнішим способом з автоматичним обертанням журналів, що надається systemd.

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