Godot — Начало работы
Учитесь на практике и разверните свой первый выделенный сервер на Edgegap. К концу этого руководства вы бесплатно развернёте выделенный сервер с Edgegap.
✔️ Подготовка
Прежде чем начать, убедитесь, что вы создали бесплатный аккаунт на Edgegap (кредитная карта не требуется).
Настройте несколько основных вещей на вашей машине для разработки:
Установите Docker Desktop (или Docker CLI)
Установите Docker Desktop из официального источника (аккаунт не требуется).
Перезагрузите компьютер после завершения установки.
Установите плагин быстрого старта выделенных серверов Edgegap для Godot
Этот плагин был протестирован и поддерживает версии Godot 4.x.x и новее.
Вариант 1) Установка из ZIP:
Распакуйте ZIP в папку
addonsвашего проекта.
Чтобы обновить плагин, установленный из ZIP, удалите старый плагин и замените его новым ZIP.
Вариант 2) Установка из исходников:
Склонируйте наш репозиторий плагина в папку
addonsвашего проекта.
git clone git@github.com:edgegap/edgegap-godot-plugin.gitЧтобы обновить плагин, установленный через git, откройте командную строку в папке плагина и выполните git pull.
Включите новый плагин Edgegap Servers Quickstart в разделе Project / Project Settings / Plugins. Новая вкладка с названием "Edgegap" появится в правой панели рядом с Inspector. Если позже вы закроете панель и захотите открыть её снова, нужную опцию можно найти в Project / Tools / Edgegap.
⚙️ 1. Подключите аккаунт
☑️ Войдите в систему и убедитесь, что в Output нет новых ошибок, связанных с плагином Edgegap.
✅ Теперь можно перейти к следующему шагу.
🔧 2. Сборка игрового сервера
Независимо от того, используете ли вы Windows, Mac или Linux-машину, вам нужно собрать сервер для Linux runtime, поскольку большинство облачных провайдеров сегодня (включая Edgegap) работают на Linux. Не беспокойтесь, для этого с нашим плагином не требуется знание Linux.
☑️ Проверьте Export Templates, чтобы убедиться, что плагин правильно настроил шаблон вашего Linux-сервера.
Продвинутые пользователи - при желании настройте шаблон экспорта. Внимание! Это может сломать вашу сборку.
☑️ Добавьте в свой проект новый bootstrap-скрипт, чтобы автоматически запускаться как выделенный сервер. Создайте новый узел в вашей главной сцене и привяжите новый скрипт в Inspector / Script / Load.
Это минимальный шаблон скрипта, который можно расширить в соответствии с потребностями вашего проекта.
Это кастомизированная версия bootstrap-скрипта для netfox forest brawl демо.
Сборки сервера обычно по умолчанию используют порт 7777. Если вы измените порт, пожалуйста, укажите тот жеже в вашем Приложения и версии когда вы Godot.
☑️ Когда вас устроит конфигурация, нажмите Собрать сервер, дождитесь завершения процесса и убедитесь, что в Output нет новых ошибок. Выполнение этого шага приведёт к появлению новой сборки в вашем проекте в папке build.
✅ Теперь можно перейти к следующему шагу.
🐋 3. Контейнеризация сервера
Работа в команде разработчиков предполагает совместное использование кода. Когда что-то идет не так, последнее, что вы хотите услышать — «у меня работает». Серверы игр должны надежно запускаться на любой машине, поскольку успешные игровые серверы работают на тысячах серверов по всему миру.
Чтобы сделать ваш сервер надежным, мы используем Docker — виртуализационное ПО, гарантирующее, что все зависимости вашего серверного кода вплоть до уровня операционной системы всегда будут точно такими же, независимо от того, как и где запускается сервер.
Мы рекомендуем посмотреть «Никогда не устанавливайте локально» (видео). Вам НЕ нужно использовать Dockerhub с Docker. Docker ≠ Dockerhub. Думайте о Docker как о движке для программирования, а о Dockerhub — как о его магазине приложений.
☑️ Начните с нажатия кнопки Проверить Docker чтобы убедиться, что вы завершили Godot.
Установите Docker Desktop (или Docker CLI)
Установите Docker Desktop из официального источника (аккаунт не требуется).
Перезагрузите компьютер после завершения установки.
☑️ Вы можете настроить следующие параметры (или оставить значения по умолчанию):
Имя образа — это уникальный идентификатор на ваш выбор, обозначающий вашу серверную сборку перед отправкой.
Обычно сюда входит название вашей игры — например, “my-game-server”.
Тег образа — это идентификатор, указывающий на конкретную версию вашего образа.
Термин “артефакт сборки” иногда используется для обозначения конкретной версии вашего образа.
Отметки времени — отличный вариант для тегирования, например
2026.07.30-16.25.00-UTC.
Путь к Dockerfile можно использовать для настройки рецепта для ваших образов.
Мы рекомендуем пока оставить значение по умолчанию, подробнее вы сможете прочитать позже в разделе Godot.
Необязательные параметры сборки Docker можно использовать, чтобы дополнительно указать Docker более тонкие нюансы.
Мы рекомендуем пока оставить значение по умолчанию, вы можете прочитать подробнее позже в документации Docker.
Пересобрать из исходного кода будет автоматически собирать и контейнеризовать, чтобы ускорить вашу следующую сборку.
☑️ Когда вас устроит конфигурация, нажмите Контейнеризовать с Docker, дождитесь завершения процесса и убедитесь, что в Output нет новых ошибок. Выполнение этого шага приведёт к новый образ, появляющийся на вашей локальной машине. Вы можете проверить это либо в Docker Desktop, на вкладке Images в разделе Local (по умолчанию), либо в CLI docker, выполнив docker images .
✅ Теперь можно перейти к следующему шагу.
🧪 4. Локальный тест сервера
Давайте попробуем развернуть локально (на вашей машине) и подключить игровой клиент, чтобы убедиться, что образ сервера работает правильно, прежде чем мы загружать и развертывать (что может занять некоторое время).
☑️ Вы можете настроить следующие параметры (или оставить значения по умолчанию):
Тег образа сервера из предыдущего шага.
По умолчанию используется последний тег, который вы собрали с помощью плагина.
☁️ появляющийся перед именем вашего образа, означает, что этот образ был загружен.
Необязательные параметры docker run можно указать для публикации нескольких портов или запуска вашего образа на машинах macOS.
При необходимости вы можете опубликовать несколько портов для вашего контейнера, просто добавьте параметр
-p {internal port}/{protocol}для каждого, например-p 8080/tcp -p 7777/udpчтобы опубликовать и сопоставить порт вашего сервера8080с произвольным внешним портом для TCP-соединения и портом сервера7777с произвольным внешним портом для UDP-соединения одновременно. Найдите конфигурацию порта сервера в вашем bootstrap-скрипте.Если вы используете машину с архитектурой ARM (macOS M1, M2, M3 и т. д.), вы должны увидеть этот необязательный параметр, включённый в ваши Необязательные параметры сборки Docker:
--platform=linux/amd64.
☑️ Когда вас устроит конфигурация, нажмите Развернуть локальный контейнер, дождитесь завершения процесса и убедитесь, что в Output нет новых ошибок. Выполнение этого шага приведёт к запуску нового контейнера на вашей машине разработки.
Для более подробной информации см. Docker Desktop / Containers или команду Docker CLI docker ps .
☑️ Теперь пришло время подключить игровой клиент Godot Editor к вашему локальному Docker-контейнеру чтобы убедиться, что ваш серверный образ работает правильно. Найдите данные подключения клиента и введите:
localhostили0.0.0.0(в большинстве случаев эквивалентно) вместо IP-адреса сервера,случайное внешнее значение порта, указанное в Docker Desktop / Containers.

☑️ Как только вы убедитесь, что можете подключиться к локальному серверному контейнеру и играть без проблем, вы можете удалить контейнер 🗑️, чтобы освободить ресурсы на вашей машине для других программ.
✅ Теперь можно перейти к следующему шагу.
☁️ 5. Загрузить в Edgegap
Пора разместить ваш сервер в интернете! Теперь, когда ваш образ успешно может обслуживать игроков, мы можем загрузить его в Edgegap и начать запускать в любой точке мира. В этом руководстве мы будем использовать Реестр контейнеров Edgegap (хранилище для образов).
☑️ Вы можете настроить следующие параметры (или оставить значения по умолчанию):
Имя приложения на Edgegap может совпадать с именем вашего образа или быть изменено.
Пока мы решили скопировать имя вашего образа.
Версия приложения на Edgegap может совпадать с вашим тегом или быть изменено.
Отметки времени — отличный вариант для имён версий приложения, например
2024.01.30-16.50.20-UTC.Несколько версий приложения могут указывать на один и тот же тег образа, например
v1.1.0иdev.Узнайте больше о Приложения и версии позже.
Серверный образ из шага Godot.
Найдите любое имя образа и тег, хранящиеся на вашем компьютере в Docker Desktop / Образы.
☑️ Когда вас устроит конфигурация, нажмите Загрузить образ и создать версию приложения, дождитесь завершения процесса и убедитесь, что в Output нет новых ошибок.
☑️ Вас перенаправят в наш Dashboard, где вы можете настроить дополнительные параметры. Выполнение этого шага приведёт к созданию новой версии приложения, а также к тому, что ваш артефакт сборки будет помечен тегом и загружен в Container Registry Edgegap.
Версия приложения на Edgegap может совпадать с вашим тегом или быть изменено.
Отметки времени — отличный вариант для имён версий приложения, например
2024.01.30-16.50.20-UTC.Несколько версий приложения могут указывать на один и тот же тег образа, например
v1.1.0иdev.Узнайте больше о Приложения и версии позже.
☑️ Теперь вам будет предложено указать порт для новой версии приложения. Убедитесь, что указан тот же самый порт сервера, что и на шаге Godot (по умолчанию 7777).
✅ Теперь можно перейти к следующему шагу.
🚀 6. Развернуть в облаке
Это последний шаг в этом руководстве, после которого у вас будет сервер, развернутый в облаке Edgegap, к которому игроки из любой точки мира смогут подключаться.
☑️ Выберите приложение и версию из предыдущего шага для развертывания.
☑️ Как только будете готовы, нажмите Развернуть в облаке, дождитесь достижения Развертывания. Выполнение этого шага приведёт к запуску нового Развертывания в вашей учетной записи Edgegap.
☑️ Убедитесь, что в выводе консоли нет новых ошибок. Также проверьте, что ваши Развертывания не показывают ошибок и ваши Развертывания не указывают на 100% загрузку ресурсов (vCPU или память), иначе новые подключения игроков могут быть отклонены, или ваш сервер застрянет в цикле перезапуска. См. ниже шаги по устранению неполадок для решения любых проблем.
☑️ Теперь мы выполним финальный тест и подключим игровой клиент Godot Editor к вашему облачному развёртыванию. Найдите данные подключения клиента и введите:
Хост URL указывающий на IP-адрес сервера,
Внешний порт сопоставляемый с внутренним портом прослушивания сервера.

Внешний порт вашего развёртывания в облаке Edgegap будет выбран случайным образом, чтобы потенциальный злоумышленник (хакер) замедлялся и обнаруживался до того, как сможет нанести ущерб.
Отключите VPN при тестировании для более реалистичных условий и получения развёртывания с низкой задержкой.
☑️ Как только вы убедитесь, что можете подключиться к вашему развёртыванию без проблем и завершите тестирование, Остановите ваше развёртывание чтобы освободить ресурсы в вашем аккаунте для следующей сборки.
Если вы столкнётесь с проблемами, просмотрите логи на Панели управления вашего развёртывания.
Если вы не сможете разобраться с проблемой, мы сидим в нашем сообществе Discord и будем рады помочь.
🙌 Поздравляем с вашим первым развёртыванием в Edgegap! Если хотите узнать больше, продолжайте чтение.
👉 Следующие шаги
После того как у вас настроена рабочая клиент/серверная система, убедитесь, что сохранили копию вашего проекта (используя систему контроля версий, такую как git), чтобы вы всегда могли проследить свои шаги в случае возникновения проблем.
Продолжайте чтение, чтобы узнать больше о темах, связанных с жизненным циклом сервера и обнаруживаемостью.
Если вам нужна помощь, свяжитесь с нами через Discord. Для поддержки по играм в реальном времени см. нашу систему тикетов.
Остановка развёртываний
Когда матч закончится (или игроки уйдут), ваше развёртывание можно остановить, чтобы сэкономить средства. Запуск пустого или лишь частично заполненного сервера может неоправданно увеличить ваши расходы!
Примеры для Godot Script скоро появятся!
Подключите свой Хранилище конечных точек чтобы сохранять журналы развертывания, иначе они будут удалены!
Внедрённые переменные
Получайте полезную информацию, такую как ID развёртывания, IP-адрес сервера, местоположение сервера и многое другое, обращаясь к внедрённым переменным окружения. Каждое развёртывание автоматически включает:
Переменные развёртывания — автоматически предоставляются Edgegap,
Переменные матчмейкинга — автоматически предоставляются Edgegap при использовании Подбор игроков,
Переменные версии приложения — настраиваемые пары ключ-значение, задаваемые вами.
Примеры для Godot Script скоро появятся!
Автоматизация сессий
Ручной запуск ваших развертываний с вставкой URL и портов не подойдёт для игры в реальном времени.
Автоматизируйте популярные игровые сценарии для управления сессиями и масштабирования по требованию с помощью одного из:
Короткие раунды
Матчи по запросу
Рейтинговая система и/или Пользовательские правила
Постоянные или раунды
Региональные социальные хабы
Автоматическое назначение и/или Пользовательский поиск
Собственный бэкенд:
Миграция игр в реальном времени
Примеры для Godot Script скоро появятся!
Оптимизация использования
Несколько советов, которые помогут начать оптимизацию использования вашего сервера:
Более высокий tick rate означает больше обновлений, а значит большее потребление CPU и исходящего трафика.
По умолчанию Godot использует 60 тиков в секунду, что отлично подходит для динамичных шутеров или игр с высокой чувствительностью к задержкам. Другим жанрам может хватить 30 Гц или даже 15 Гц.
Скрытая цена более высокого tick rate — большее количество циклов CPU (в секунду) для (распаковки) данных и пересчёта сервер-авторитетных свойств и процедур. Будьте осторожны, если в вашей игре много игроков в матче (10+), много узлов с коллайдерами, сложные физические симуляции или много ботов/союзников.
Проверьте отзывчивость игры при разных tick rate в настройках netcode. Для ENET см. Project Settings / Physics / Common / Physics Ticks Per Second.
Как выбрать правильный сетевой протокол? Сначала сделайте рабочий вариант, потом улучшайте.
Встроенный ENET Godot с протоколом UDP по умолчанию — отличный выбор по умолчанию, обеспечивающий производительность и совместимость на самом широком диапазоне устройств и сценариев использования.
Некоторым играм может быть интересно поэкспериментировать с TCP, WS, WebRTC или другими протоколами. Это может повысить надёжность соединения с мобильными устройствами и консолями, особенно в публичных сетях (сотовых, корпоративных, кафе, гостиничный Wi‑Fi и т. д...), но это, безусловно, потребует дополнительных усилий по разработке. Спросите себя, критично ли это для вашей целевой аудитории.
Использование нескольких протоколов параллельно, чтобы важные обновления доставлялись с приоритетом, может улучшить пользовательский опыт в некоторых жанрах (например, MMO), но это требует значительных дополнительных усилий по разработке и может сильно усложнить ваш проект.
Выбирайте свои битвы с умом: в разработке игр и без того хватает сложностей.
Настроить образ
Мы также поддерживаем добавление собственного Dockerfile для пользователей, которым нужно больше контроля над своими образами из-за оптимизации размера сборки, лишних зависимостей или необходимости более сложного процесса запуска. При желании вы можете указать путь к собственному Dockerfile на шаге Godot. Теперь мы поделимся несколькими советами и лучшими практиками “сделай сам”.
Всегда убедитесь, что вы работаете с рабочей сборкой сервера.
Прежде чем предполагать, что проблема связана с пользовательским Dockerfile, убедитесь, что ваша серверная сборка Unity может быть запущена и что процесс сборки в Unity не выдал исключений или ошибок.
Всегда тестируйте локально перед загрузкой.
Тестирование образа локально сэкономит вам много времени, пока идет загрузка. Это также полностью бесплатно ✨, так как не требует ресурсов Edgegap.
При тестировании локально убедитесь, что правильно указали внутренний порт:
Убедитесь, что вы освоили базовые вещи. Каждый Dockerfile требует нескольких обязательных команд:
FROM {image}является вашим базовым образом, для проектов на Unity мы обычно используем долгосрочно поддерживаемый Linux, но подойдет любой образ на основе Linux. Обычно это публичные образы, хранящиеся на Docker Hub. Справочник по Dockerfile здесь. Справочник по Dockerfile здесь.COPY {source} {destination}для копирования вашей Linux-сборки сервера с хост-машины внутрь образа, чтобы вы могли запустить её позже. Справочник по Dockerfile здесь.USER {user}должна следовать после команды useradd (ubuntu) или эквивалентной; лучше не запускать всё отrootчтобы быть в большей безопасности. Справочник по Dockerfile здесь.CMD {command}будет последней строкой, скорее всего вызывающейStartServer.shили какой-то стартовый скрипт, чтобы убедиться, что ваш сервер инициализируется корректно после настройки. Справочник по Dockerfile здесь.НЕ используйте
VOLUME- таким образом вы не сможете монтировать локальное хранилище на Edgegap; вместо этого рассмотрите нашу функцию Endpoint Storage и используйте S3-бакет, см. Endpoint Storage,EXPOSE 7777/UDPне обязателен! Это фактически не сделает внутренний порт сервера доступным извне контейнера, это лишь подсказка для разработчика, и порт должен бытьопубликован при локальном тестировании с
docker run <image> -p 7777/udp,или замаплен в Edgegap Port Mapping.
Отложите объявление параметров до максимально позднего момента. Конфигурируемость важнее композиции из-за долгого времени сборки серверов. Примените этот подход к командам Dockerfile, чтобы собирать и загружать быстрее.
Сценарий: вам нужно определить параметры, такие как этап деплоя, версия, режим игры, карта, количество игроков на сервер, частота резервного копирования или подобные.
Плохое решение: создавать отдельный образ для каждой комбинации параметров. Вы потратите всё время на пересборку образов с очень малой пользой от такого подхода.
Лучшее решение — подставлять параметры конфигурации непосредственно к моменту запуска:
параметры деплоя — задаются непосредственно перед выполнением деплоя — селекторы матчмейкинга передаются как переменные окружения, или ваша собственная система управления сессиями передаёт переменные окружения во время деплоя,
параметры версии — общие для всех деплоев одной версии приложения — этап деплоя, тег артефакта, сторонние секреты и конечные точки и т. п.; затем
один единый образ — содержит и загружает все варианты конфигурации при запуске.
НЕ запускайте базы данных на деплойментах Edgegap.
Деплойменты Edgegap не предназначены для долгоживущих процессов и могут быть завершены после длительного времени работы без предварительного уведомления. База данных (даже распределённая), запущенная таким образом, может быть остановлена и привести к необратимой потере данных. Если вам нужна база данных, рассмотрите использование стороннего DBaaS.
Рассмотрите использование наших Managed Clusters для размещения баз данных и долгоживущих сервисов.
Последнее обновление
Это было полезно?

