Другие методы сборки

Эти подходы обычно медленнее и требуют более глубокого понимания Unreal Engine.

Изучите альтернативные методы сборки, подходящие для более продвинутых пользователей Unreal Engine и Edgegap:

  1. Другие методы сборки — это быстрый и автоматизированный метод, подходящий для непрерывной интеграции.

  2. ⚡ Сборка из плагина — устаревший метод сборки, требующий сборки Unreal Engine из исходников.

⚡ Сборка с помощью скриптов

Сборка с помощью скриптов — это быстрый, полностью автоматизированный и простой метод, подходящий для непрерывной интеграции.

Подготовка

Прежде чем начать, убедитесь, что создать бесплатную учетную запись на Edgegap (кредитная карта не требуется).

Настройте несколько основных параметров на вашей машине для разработки:

Установите Docker Desktop (или Docker CLI)
Получите доступ к ресурсам Unreal Engine на GitHub
Создать личный токен доступа GitHub (классический)
  • включить только разрешение [read:packages] ,

  • сгенерировать токен - сохраните это значение в надёжном месте, вы больше не увидите его.

1. Настроить проект

Будь то машина с Windows, Mac или Linux, вам потребуется собрать сервер для среды выполнения Linux, так как большинство облачных провайдеров в наши дни (включая Edgegap) работают на Linux. Не беспокойтесь, знание Linux не требуется.

☑️ Отключить проверку совместимости версии Unreal Engine для выделенных серверов и установить IpNetDriver в качестве драйвера по умолчанию или запасного драйвера для сетевой репликации:

☑️ Перезапустите Unreal Engine чтобы загрузить последние изменения.

☑️ Создайте скрипт целевой сборки для выделенного сервера скопировав ваш <PROJECT>Editor.Target.cs файл в корневой папке проекта и переименовав копию в <PROJECT>Server.Target.cs.

☑️ Замените любые ссылки на слово Editor с Сервер в вашем скрипте целевой сборки сервера.

☑️ Включите вывод стандартных логов сервера добавив переопределения в ваш скрипт целевой сборки сервера:

✅ Теперь вы можете перейти к следующему шагу.

По желанию: интеграция со Steam

Чтобы интегрировать Steam, используйте IpNetDriver в качестве драйвера сети по умолчанию и убедитесь, что 64‑битный steamclient.so для Linux скопирован в образ по пути /home/ubuntu/.steam/sdk64/ .

Скачать steamclient.so

Dockerfile
...
RUN mkdir -p /home/ubuntu/.steam/sdk64
COPY ./steamclient.so /home/ubuntu/.steam/sdk64/steamclient.so
RUN chmod 755 /home/ubuntu/.steam/sdk64/steamclient.so
...

Убедитесь, что отключена сетевая подсистема Steam, которая отправляет пакеты через Steam Relay и может вызывать проблемы с подключением или всплески задержки. Это не мешает вам использовать другие функции Steamworks или публиковать игру в магазине Steam.

Config/DefaultEngine.ini
[OnlineSubsystemSteam]
bUseSteamNetworking=false

2. Собрать и опубликовать

Работа в команде разработчиков означает совместное использование кода. Когда что-то идет не так, последнее, что вы хотите услышать — «у меня работает». Игровые серверы должны надежно работать на любой машине, поскольку успешные игры запускают серверы на тысячах серверных машин по всему миру.

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

Мы рекомендуем посмотреть "Никогда не устанавливайте локально" (видео). Вам НЕ нужно использовать Dockerhub с Docker. Docker ≠ Dockerhub. Думайте о Docker как о программном движке, а о Dockerhub как о его магазине приложений.

☑️ Убедитесь, что Docker установлен и запущен.

☑️ Скачайте наш Edgegap Build Utils архив, включающий:

  • платформенно-специфичные скрипты сборки:

    • BuildAndUpload.ps1 для Windows,

    • BuildAndUpload.sh для macOS и Linux,

  • Dockerfile — рецепт для сборки ваших docker-образов,

  • dockerignore — список некритичных файлов для удаления и ускорения сборок,

  • StartServer.sh — утилитный скрипт, управляющий жизненным циклом Unreal Engine во время выполнения.

☑️ Переместите edgegap-unreal-buildutils папку в корневой каталог вашего проекта.

☑️ Отредактируйте BuildAndUpload скрипт для вашей платформы чтобы настроить:

  • учетные данные GitHub, используемые для получения предсобранных образов Unreal Engine для Linux-серверов,

  • детали проекта — версия движка, конфигурация сервера, имя файла .uproject,

  • Edgegap Registry учетные данные, используемые для загрузки ваших готовых сборок.

☑️ Выполните отредактированный скрипт чтобы запустить процесс сборки и загрузки. Завершение этого шага добавит новый образ в вашу страницу панели реестра контейнеров Edgegap в вашем репозитории.

☑️ Вы будете автоматически перенаправлены на создание нового Приложения и версии в панели управления.

✅ Теперь вы можете перейти к следующему шагу, перейдите к Другие методы сборки.

Поиск и устранение неполадок и FAQ

ОШИБКА: не удалось выполнить функцию Build: Dockerfile не может быть пустым

  • Некоторые исходники плагинов могут отсутствовать Dockerfile и/или StartServer.sh , пожалуйста, найдите копию этих файлов в версии плагина на GitHub и поместите в локальный плагин.


open //./pipe/dockerDesktopLinuxEngine: Система не может найти указанный файл.

  • Убедитесь, что Docker запущен на вашем компьютере для разработки.


неверный формат ссылки EdgegapLog: Warning: OnContainerizeCallback: Не удалось создать контейнер, сообщение:Failed

  • Убедитесь, что имя вашего приложения задано и не содержит завершающих пробелов.

  • Убедитесь, что нажали Enter для подтверждения введённого значения после окончания редактирования.


Не удалось найти файл правил цели для цели «ProjectName» при сборке проекта?

  • Измените конфигурацию сборки в вашем XYZServerTarget.cs файле:

BuildConfig = EProjectPackagingBuildConfigurations::PPBC_Shipping;

403 Forbidden, Не удалось загрузить контейнер, сообщение:Failed

  • Пожалуйста, проверьте, что ваши учетные данные Docker настроены корректно.

  • Если вы используете Edgegap Container Registry, убедитесь, что имя пользователя не содержит app-version-pull , что является профилем, позволяющим только извлекать образы. Ваш профиль должен больше походить на адрес электронной почты вашей учётной записи.

  • Убедитесь, что у вас достаточно свободного места в вашем аккаунте на Реестр контейнеров. Мы рекомендуем попробовать Другие методы сборки, и использовать наш API для удаления старых образов. Образы хранятся на вашем локальном компьютере до удаления для резервных копий.

⚡ Сборка из плагина

Наш устаревший плагин включает расширенные утилиты и требует сборки Unreal Engine из исходников.

Подготовка

Прежде чем начать, убедитесь, что создать бесплатную учетную запись на Edgegap (кредитная карта не требуется).

Настройте несколько основных параметров на вашей машине для разработки:

Установите Docker Desktop (или Docker CLI)
Получите доступ к ресурсам Unreal Engine на GitHub
Настройте вашу среду разработки
Установите официальный плагин Edgegap для Unreal Engine

Выберите один из официальных плагинов:

1. Настроить проект

Будь то машина с Windows, Mac или Linux, вам потребуется собрать сервер для среды выполнения Linux, так как большинство облачных провайдеров в наши дни (включая Edgegap) работают на Linux. Не беспокойтесь, знание Linux не требуется.

☑️ Соберите вашу версию Unreal Engine из исходников на вашей машине разработчика,

  • установите конкретную ветку релиза (например, 5.5) чтобы собирать на стабильной основе,

  • используйте твердотельный накопитель (SSD) для ускорения сборок (с ~12+ часов до ~2+ часов),

  • это требуется только в первый раз и каждый раз при обновлении версии Unreal Engine.

☑️ Установите Unreal Cross-Compiling Toolchain для сборки игровых серверов для Linux.

☑️ Перезагрузите вашу машину разработчика, иначе позже вы столкнетесь с ошибками!

☑️ Отключить проверку совместимости версии Unreal Engine для выделенных серверов и установить IpNetDriver в качестве драйвера по умолчанию или запасного драйвера для сетевой репликации:

☑️ Перезапустите Unreal Engine чтобы загрузить последние изменения.

☑️ Создайте скрипт целевой сборки для выделенного сервера скопировав ваш <PROJECT>Editor.Target.cs файл в корневой папке проекта и переименовав копию в <PROJECT>Server.Target.cs.

☑️ Замените любые ссылки на слово Editor с Сервер в вашем скрипте целевой сборки сервера.

☑️ Включите вывод стандартных логов сервера добавив переопределения в ваш скрипт целевой сборки сервера:

✅ Теперь вы можете перейти к следующему шагу.

По желанию: интеграция со Steam

Чтобы интегрировать Steam, используйте IpNetDriver в качестве драйвера сети по умолчанию и убедитесь, что 64‑битный steamclient.so для Linux скопирован в образ по пути /home/ubuntu/.steam/sdk64/ .

Скачать steamclient.so

Dockerfile
...
RUN mkdir -p /home/ubuntu/.steam/sdk64
COPY ./steamclient.so /home/ubuntu/.steam/sdk64/steamclient.so
RUN chmod 755 /home/ubuntu/.steam/sdk64/steamclient.so
...

Убедитесь, что отключена сетевая подсистема Steam, которая отправляет пакеты через Steam Relay и может вызывать проблемы с подключением или всплески задержки. Это не мешает вам использовать другие функции Steamworks или публиковать игру в магазине Steam.

Config/DefaultEngine.ini
[OnlineSubsystemSteam]
bUseSteamNetworking=false

2. Собрать и опубликовать

Работа в команде разработчиков означает совместное использование кода. Когда что-то идет не так, последнее, что вы хотите услышать — «у меня работает». Игровые серверы должны надежно работать на любой машине, поскольку успешные игры запускают серверы на тысячах серверных машин по всему миру.

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

Мы рекомендуем посмотреть "Никогда не устанавливайте локально" (видео). Вам НЕ нужно использовать Dockerhub с Docker. Docker ≠ Dockerhub. Думайте о Docker как о программном движке, а о Dockerhub как о его магазине приложений.

☑️ Убедитесь, что Docker установлен и запущен.

☑️ Пересоберите наш плагин для вашей пользовательской версии Unreal Engine, собранной из исходников.

☑️ Скопируйте скомпилированный плагин в вашу Plugins папку в корне вашего проекта Unreal (не движка).

☑️ Запустите ваш новый Unreal Engine из Visual Studio и откройте пункт панели инструментов Edit / Plugins.

☑️ Включите наш плагин в разделе INSTALLED / Other.

☑️ Настройте наш плагин открыв пункт панели инструментов Edit / Project Settings / Edgegap:

  • API Token нужен для загрузки вашего сервера в Edgegap, получите его, нажав Get Token.

  • Название приложения в Edgegap может совпадать с названием вашего проекта или быть настроенным; убедитесь, что используете только строчные буквы, цифры или символы дефис - и нижнее подчеркивание _.

  • Image Path при необходимости предоставляет пользовательскую иконку для вашего игрового сервера на Edgegap, пока пропустите.

  • Название версии полезно для отслеживания совместимости клиент/сервер и отката в случае проблем.

    • Метки времени — отличный вариант для названий версий приложения, например, 2024.01.30-16.50.20-UTC .

    • Несколько версий приложения могут указывать на один и тот же тег образа, например v1.1.0 и dev .

    • Узнайте больше о Приложения и версии позже.

☑️ Нажмите Create Application. Завершение этого шага приведет к появлению нового приложения в в Edgegap Dashboard.

☑️ Пока пропустите настройки пользовательского реестра контейнеров, позже вы можете использовать сторонний реестр, если захотите.

☑️ Когда вы будете довольны конфигурацией, нажмите Build and Push, дождитесь завершения процесса и убедитесь, что в консоли Unreal не появилось новых ошибок. Завершение этого шага приведет к появлению новой папки в корне вашего проекта - Saved/LinuxServer. Кроме того, в вашем разделе панели реестра контейнеров Edgegap под вашим репозиторием теперь появился новый образ, и новая Приложения и версии появилась в вашем разделе панели управления под вашим приложением.

☑️ В вашей новой версии приложения установите переменную окружения TARGET_FILE_NAME чтобы она совпадала с вашим значением DefaultServerTarget из шага Другие методы сборки.

✅ Теперь вы можете перейти к следующему шагу.

Поиск и устранение неполадок и FAQ

ОШИБКА: не удалось выполнить функцию Build: Dockerfile не может быть пустым

  • Некоторые исходники плагинов могут отсутствовать Dockerfile и/или StartServer.sh , пожалуйста, найдите копию этих файлов в версии плагина на GitHub и поместите в локальный плагин.


open //./pipe/dockerDesktopLinuxEngine: Система не может найти указанный файл.

  • Убедитесь, что Docker запущен на вашем компьютере для разработки.


неверный формат ссылки EdgegapLog: Warning: OnContainerizeCallback: Не удалось создать контейнер, сообщение:Failed

  • Убедитесь, что имя вашего приложения задано и не содержит завершающих пробелов.

  • Убедитесь, что нажали Enter для подтверждения введённого значения после окончания редактирования.


Не удалось найти файл правил цели для цели «ProjectName» при сборке проекта?

  • Измените конфигурацию сборки в вашем XYZServerTarget.cs файле:

BuildConfig = EProjectPackagingBuildConfigurations::PPBC_Shipping;

403 Forbidden, Не удалось загрузить контейнер, сообщение:Failed

  • Пожалуйста, проверьте, что ваши учетные данные Docker настроены корректно.

  • Если вы используете Edgegap Container Registry, убедитесь, что имя пользователя не содержит app-version-pull , что является профилем, позволяющим только извлекать образы. Ваш профиль должен больше походить на адрес электронной почты вашей учётной записи.

  • Убедитесь, что у вас достаточно свободного места в вашем аккаунте на Реестр контейнеров. Мы рекомендуем попробовать Другие методы сборки, и использовать наш API для удаления старых образов. Образы хранятся на вашем локальном компьютере до удаления для резервных копий.

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

Продолжайте к Unreal Engine с нашей функцией Dashboard Deployment и узнайте больше об остановке ваших развертываний, внедряемых переменных и параметризации, а также обнаруживаемости сервера.

Последнее обновление

Это было полезно?