For the complete documentation index, see llms.txt. This page is also available as Markdown.

Развертывания

Узнайте о развёртываниях и их жизненном цикле — концепции и лучшие практики для более глубокого понимания.

🗺️ Оркестрация

Запускайте новые серверы за считанные секунды, чтобы удовлетворять потребности в мощности с нашим облачным edge-подходом к вычислениям. Мы относимся к серверам как к скоту, а не домашним питомцам - полностью заменяя неисправные экземпляры вместо того, чтобы вручную «выхаживать» каждый из них.

Ваш выбор оркестрации будет влиять на затраты на DevOps, стоимость серверов и масштабируемость.

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

Привязанные к матчу

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

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

👍 Преимущества

  • Лучшая экономическая эффективность — масштабирование в реальном времени в соответствии со спросом игроков минуту за минутой.

  • Минимальные затраты на DevOps благодаря хостингу без привязки к региону: Edgegap автоматизирует 99% задач.

  • Минимальный пинг благодаря более чем 615 площадкам в публичной облачной инфраструктуре Edgegap.

  • Самое быстрое масштабирование вверх (burst-способность) в случае неожиданного всплеска трафика.

  • Высочайший стандарт безопасности и предотвращения читерства игроков (серверный авторитет).

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

👎 Недостатки

  • Внедрение новой ментальной модели оркестрации сначала требует определённых усилий на адаптацию.

  • Серверы, работающие дольше 24 часов, будут автоматически завершены.

🧩 Лучше всего подходит для

  • Игры, чувствительные к задержке, — когда оптимизация netcode не может компенсировать высокий ping:

    • шутеры от первого лица, файтинги, VR и XR (виртуальная и расширенная реальность), …

  • Игры с изначально заданным верхним пределом длительности матча,

    • Королевская битва, PvPvE, кооперативные шутеры, MOBA, спортивные игры, ARPG и dungeon crawler'ы, …

Edgegap автоматически масштабирует вверх/вниз все 615+ серверных локаций в зависимости от активности игроков в каждом регионе. Готовьтесь к успеху — без проблем масштабируйтесь до 14 миллионов одновременных пользователей за 60 минут.

Региональное резервирование

Игра с постоянным миром и социальная MMO срок жизни сервера часто превышает отдельные сессии игроков.

Сессии обычно назначаются через Браузер серверов по предпочтениям игроков (автоматически по региону или через пользовательский поиск), с предварительным горизонтальным масштабированием развёртывания в зависимости от региональной ёмкости.

👍 Преимущества

  • Знакомый и понятный, старомодный подход для закалённых ветеранов.

  • Высочайший стандарт безопасности и предотвращения читерства игроков (серверный авторитет).

  • Легко прогнозируемые затраты на основе ежемесячного обязательства.

👎 Недостатки

  • Более высокая стоимость хостинга — для каждого региона требуется один или несколько простаивающих резервных серверов (пиковая ёмкость).

  • Более высокие затраты на DevOps — масштабирование, операции и обслуживание дублируются для каждого региона.

  • Регионы с меньшей базой игроков сталкиваются с высоким ping из-за подключения к серверам, находящимся далеко.

🧩 Лучше всего подходит для

  • Постоянные миры с пользовательским контентом, хранящимся на сервере, даже когда игроки офлайн.

    • MMO, песочницы со строительством базы или размещением объектов, экстракшн-шутеры, ...

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

    • мобильные игры, кооперативные игры, TCG/CCG, пошаговые стратегии, …

  • Асинхронный мультиплеер, где сбои сервера минимально влияют на игровой опыт:

    • гонки с призраками, ограбление вражеской базы, строительные/фермерские игры с таймером, …

  • приложения с тяжёлым процессом инициализации — когда подготовка серверов занимает минуты.

Peer-to-peer

Перенесите усилия разработки с выделенных серверов на релейный netcode для неконкурентных игр.

Связанные темы: listen-серверы, авторитет хоста-игрока, пробивание NAT.

👍 Преимущества

  • Минимальная стоимость хостинга, требуются только Relay-серверы для решения проблемы пробивания NAT.

  • Минимальные затраты на DevOps — обслуживание требуется только для клиентских сборок и каналов распространения.

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

  • Легко реализовать и быстро создать прототип, без необходимости разработки backend'а.

👎 Недостатки

  • Повышенные усилия на разработку peer-to-peer netcode, требующие навыков параллельного программирования.

  • Худшие задержки ping и наибольшая чувствительность к неблагоприятным сетевым условиям (например, мобильному интернету).

  • Слабейшая безопасность, уязвимость к атакам man-in-the-middle и перехвату сессий.

  • Риск потери сессий, когда хост уходит, если только вы не реализуете собственную миграцию хоста.

🧩 Лучше всего подходит для

  • Кооперативные и казуальные игры — когда читерство не лишает веселья и не ломает игру,

    • детские игры, игры про исследования, приключения, …

📍 Размещение серверов

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

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

Смотрите Развертывания на анализ размещения серверов в реальном времени, в масштабе.

Оценка сервера

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

  • отзывчивость - обеспечивает самый низкий ping в среднем для всех игроков,

  • справедливость - обеспечивает сбалансированный и справедливый ping для всех игроков.

Неудачное размещение - сервер находится далеко, высокий ping для всех игроков:

Несправедливое размещение - неравномерный ping, один игрок находится в невыгодном положении из-за более высокой задержки:

Пример удачного размещения - отзывчивый и справедливый ping для всех игроков:

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

Геолокация

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

Рекомендуется: Найдите самый быстрый ping-маяк и отправьте его координаты или IP в поле пользователя.

⚙️ Пользовательский: определите регионы (с координатами) в backend вашей игры, получайте их через пользовательский API.

👉 Проще всего для тестирования: Определите регионы (с координатами), жёстко прописав их в dev-сборках клиента игры.

Блокировка региона

Некоторые студии предпочитают фиксировать стабильные и предсказуемые локации (например, MMO с Постоянное хранение). Рассмотрите Браузер серверов с региональными политиками масштабирования и автоматически назначаемыми резервированиями.

🟢 Качество соединения

Некоторые игры (и игроки) более чувствительны к задержке или лагам, чем другие. Хотя сообщения игроков — отличный индикатор инцидентов или регрессионных багов в масштабе, игрокам может не хватать глубокого понимания сетевых концепций и они быстро возлагают вину на студии, netcode или серверы.

Первопричина некоторых проблем может быть скрыта от игроков, поэтому сотрудничество студии и хостинг-провайдера может быть критически важным. Приоритет Edgegap — всегда предоставлять наилучший возможный сервис.

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

Если вам нужна помощь, свяжитесь с нами через Discord. Для поддержки по играм в реальном времени см. нашу систему тикетов.

Низкая задержка

Задержка игрока — это совокупность задержек при передаче данных между:

  • Физическими устройствами — физическим сигналом, проходящим через топологию интернет-сети.

  • Хост к хосту - возникающая из-за протокола, транспорта и мер безопасности.

  • Процесс к процессу - возникающая из-за упаковки/распаковки и обработки данных в клиенте/сервере.

Edgegap снижает физическую задержку, размещая серверы ближе к вашим игрокам для более коротких ответов и меньшего числа сетевых переходов. Имея локации у 17 облачных и bare metal-провайдеров, вы получаете лучший в классе ping для игроков в любой точке мира.

Глобальное покрытие серверов и интернета (не только у Edgegap) ограничено такими факторами, как:

  • Доступность инфраструктуры - качество интернет-соединения в данном регионе может быть недостаточным.

  • Природные факторы - серверы содержат чувствительные компоненты, требующие стабильности (без землетрясений).

Высокая доступность

Доступность серверов в различных локациях по всему миру со временем меняется, многократно в течение дня. Edgegap автоматически масштабирует вверх/вниз локации по требованию, принимая во внимание:

  • Всплеск трафика - развёртывания, выполненные в течение 15 минут, формируют тенденции масштабирования.

  • Требования к ресурсам - общий спрос на vCPU в каждой локации определяет темп масштабирования.

  • Альтернативы провайдеров - в некоторых удалённых локациях доступно меньше вариантов провайдеров.

  • Ёмкость провайдера - в некоторых локациях могут быть доступны только машины на 4 vCPU или 8 vCPU.

  • Качество обслуживания - некоторые провайдеры предлагают лучшее качество сети между ISP в одной и той же области.

  • Расписание студии - специальные запросы на тестирование и QA, закрытые бета-тесты или турниры.

Все запросы на развёртывание приложений объединяются для оценки спроса в каждой локации. По умолчанию все организации имеют равный приоритет распределения. У студий есть возможность добавить пользовательские Частные пулы серверов.

Устранение проблем игроков

Проблемы игроков иногда могут быть вызваны ошибками сервера или хостинга, но часто они не связаны с этим — также учитывайте проблемы с кабельным/Wi‑Fi соединением, интернет-провайдером, backend-сервисами или ошибки в низкоуровневых библиотеках клиента/сервера.

При разборе сообщений от игроков или инцидентов учитывайте факторы:

  • Качество матчмейкинга - по возможности оптимизируйте подбор в пределах одного региона:

  • Проблемы региональных сетей и ISP:

    • локальные интернет-провайдеры (ISP) могут временно устранять инцидент,

    • некоторые регионы (например, Китай, Россия) могут быть ограничены из-за локальных санкций.

  • Уровень кэширования - без кэширования ваши сессии могут завершаться по тайм-ауту из-за более медленного развёртывания:

  • Максимальное время развёртывания - развёртывания могут завершаться неудачей из-за медленного и тяжёлого процесса инициализации:

  • Проблемы с образом сервера или интеграцией на ранних итерациях пользовательских сборочных пайплайнов.

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

🔄 Жизненный цикл развёртывания

Развёртывания Edgegap проходят через несколько стадий жизненного цикла, обозначаемых статусом развёртывания.

1. Запуск развёртывания

Развёртывание для целей тестирования можно запустить с помощью:

  • Unreal Engine - плагина Docker Extension или EGIK для проектов Unreal Engine.

  • Unity - плагина hosting quickstart для проектов Unity.

  • Godot - плагина hosting quickstart для проектов Godot.

  • Dashboard Web UI - простой веб-интерфейс для быстрого тестирования серверов и итераций.

Автоматизируйте популярные игровые сценарии для управления сессиями и масштабирования по требованию с помощью одного из:

Подбор игроков:

  • Короткие раунды

  • Матчи по запросу

  • Рейтинговая система и/или Пользовательские правила

Браузер серверов:

  • Постоянные или раунды

  • Региональные социальные хабы

  • Автоматическое назначение и/или Пользовательский поиск

Собственный бэкенд:

2. Развёртывание

После запуска развёртывания наша система выполнит ряд шагов в быстрой последовательности:

  • Телеметрия — мы измеряем сетевую отзывчивость от доступных дата-центров до каждого игрока,

  • Развёртывание — мы резервируем ёмкость и подготавливаем запуск контейнера вашего сервера,

  • Запуск контейнера — мы запускаем контейнер, устанавливаем зависимости и выполняем инициализацию,

  • Постобработка — мы добавляем хранилище логов, мониторинг и завершаем развёртывание.

3. Развёртывание готово

После того как развёртывание становится Ready, вашему движку всё ещё есть чем заняться. Движки инициализируют подсистемы и фреймворки, затем загружают ассеты, включая карты, в память. Это происходит после того, как ваше развёртывание становится Ready, и обычно занимает до 1 минуты в зависимости от степени вашей оптимизации.

В зависимости от статуса Приложения и версии версии вы можете получить:

🟢 Попадание в кэш

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

🟡 Тёплый старт

Кэширование отключено. Развёртывание было быстрее благодаря повторному использованию образа, загруженного для предыдущего развёртывания на той же машине. Включите кэширование, чтобы обеспечить стабильно быстрое развёртывание по всему миру.

🔴 Промах кэша

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

🔴 Холодный старт

Кэширование отключено. Развёртывание было медленнее, образ был загружен во время развёртывания. Включите кэширование для более быстрого развёртывания.

4. Ошибка развёртывания

Ваше развёртывание может в любой момент оказаться в состоянии Unprocessable по неожиданным причинам. Это более вероятно при тестировании вашей интеграции или тестировании новых серверных сборок.

За развёртывания с ошибкой плата не взимается; они автоматически останавливаются через 24 часа.

Шаги по устранению неполадок:

Если вам нужна помощь, свяжитесь с нами через Discord. Для поддержки по играм в реальном времени см. нашу систему тикетов.

5. Развёртывание остановлено

Облачные развёртывания будут завершены после 24 часов работы в соответствии с нашей политикой санитарной очистки серверов для обслуживания инфраструктуры и чтобы предотвратить накопление неожиданных расходов, когда развёртывание не было корректно остановлено из-за неожиданной ошибки.

Для долго работающих серверов свыше 24 часов рассмотрите использование Частные пулы серверов с Постоянное хранение.

Оптимизируйте свои затраты и заранее останавливайте простаивающие развёртывания с помощью методов:

  • Версия приложения Политика перезапуска - предотвращает автоматический перезапуск при завершении работы или сбоях.

  • Максимальная длительность игры - отведённое время в вашей Приложения и версии истекло.

  • Самостоятельная остановка через DELETE_URL - развёртывание само остановилось после того, как игроки вышли и матч завершился.

    • Смотрите Unreal Engine и Unity руководства по утилитам SDK и простой интеграции или используйте API.

  • Остановка из пользовательского backend'а - ваша пользовательская оркестрация сессий может использовать API развёртываний.

  • Частные пулы серверов Хост, на котором работало ваше развёртывание, был удалён по запланированному действию.

После остановки развёртывания, мы запускаем корректное завершение отправляя сигнал SIGTERM вашему основному процессу, предоставляя короткий период завершения. По его истечении сигнал SIGKILL отправляется для остановки развёртывания.

👀 Наблюдаемость

Позвольте игровым серверам взаимодействовать со сторонними сервисами и получать операционные инсайты.

Беспокоят неожиданные расходы на облако? Настройте облачные оповещения чтобы получать уведомления при достижении пользовательских биллинговых порогов, или свяжитесь с нами об автоматизированных мерах безопасности.

Обнаруживаемость

После состояния Ready развёртыванию назначается URL (fqdn) и внешний порт для каждого внутреннего порта.

Исходящий трафик (к клиентам или backend'у) с ваших игровых серверов никогда не блокируется и не фильтруется.

WebSocket (WS) и защищённые WebSocket (WSS)

Чтобы использовать netcode на основе websocket с Edgegap, у вас есть два варианта:

  • управляемый сертификат, настраиваемый за 1 минуту без написания кода:

    • настройте свой Приложения и версии на используйте WebSocket (WS) и включите TLS Upgrade,

    • используйте URL Edgegap для подключения клиентов (например, https://5fa53fa00a57.pr.edgegap.net/)

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

    • настройте свой Приложения и версии на используйте Secure WebSocket (WSS),

    • настройте собственный процесс TLS-сертификата с пользовательской DNS-записью (например, в Cloudflare).

Внедряемые переменные

Игровым серверам часто требуется дополнительная информация, такая как IP сервера, значения внутренних портов и другое. Внедрение переменных окружения только для чтения — это надёжный и независимый от облака способ передавать параметры.

Смотрите Переменные версии приложения и Переменные матчмейкера в дополнение к переменным развертывания ниже.

Пользовательские переменные

Определите до 20 пользовательских переменных для каждого развертывания, каждая из которых может содержать до 4 КБ строковых данных.

Получайте важную информацию, читая переменные, внедрённые в ваши серверы Edgegap:

Идентификаторы

  • ARBITRIUM_REQUEST_ID - напр. f68e011bfb01 .

    • Уникальный ID развертывания, также называемый request ID. Используется для получения дополнительной информации.

    • URL развертываний всегда имеют формат {ARBITRIUM_REQUEST_ID}.pr.edgegap.net.

  • ARBITRIUM_PUBLIC_IP - напр. 162.254.141.66 .

    • Публичный IP-адрес этого хоста, можно использовать для подключения вместо URL.

  • ARBITRIUM_HOST_ID - напр. alpha-north-america-70364ef8 .

    • Уникальный идентификатор машины, на которой размещено ваше развертывание; общий для других развертываний.

  • ARBITRIUM_DEPLOYMENT_TAGS - напр. tag1,tag2 .

  • ARBITRIUM_PRIVATE_FLEET_ID - напр. PUBLIC_CLOUD , или ID пула, если размещено на Частные пулы серверов.

Спецификации ресурсов

  • ARBITRIUM_HOST_IN_PRIVATE_FLEET - напр. false , указывая, размещено ли на Частные пулы серверов.

  • ARBITRIUM_HOST_BASE_CLOCK_FREQUENCY - напр. 2300 , частота процессора в МГц.

  • ARBITRIUM_DEPLOYMENT_VCPU_UNITS - напр. 256, выделенные единицы vCPU (1024 = 1 vCPU).

  • ARBITRIUM_DEPLOYMENT_MEMORY_MB - напр. 512, выделенная RAM в МБ (1024 = 1 ГБ).

Управление жизненным циклом

  • ARBITRIUM_DELETE_URL - напр. https://api.edgegap.com/v1/self/stop/9f511e17/660.

  • ARBITRIUM_DELETE_TOKEN - напр. 7df4cd933df87084b34ae80d8abde293.

  • ARBITRIUM_CONTEXT_URL - напр. https://api.edgegap.com/v1/context/9170f5211e17/17.

    • Вызывается только из развертывания, возвращает больше сведений о развертывании.

    • Требует уникальный ARBITRIUM_CONTEXT_TOKEN в Authorization заголовке.

  • ARBITRIUM_CONTEXT_TOKEN - напр. dfaf50b9333b9ee07b22ed247e4a17e6.

Обнаруживаемость

  • ARBITRIUM_PORT_GAMEPORT_INTERNAL - напр. 7777 , внутренний порт для серверного слушателя.

  • ARBITRIUM_PORT_GAMEPORT_EXTERNAL - напр. 31504 , внешний порт для клиентских подключений.

    • Значения внешних портов рандомизируются для каждого развертывания в целях безопасности.

  • ARBITRIUM_PORT_GAMEPORT_PROTOCOL - напр. UDP , протокол вашего netcode transport.

  • ARBITRIUM_BEACON_ENABLED - напр. true, если развёртывание выполняется на Частные пулы серверов с Пинг-маяки.

  • ARBITRIUM_HOST_BEACON_PUBLIC_IP - напр. 139.177.198.69 , публичный IP ближайшего маяка.

  • ARBITRIUM_HOST_BEACON_PORT_UDP_EXTERNAL - напр. 30199, для измерения пинга по UDP.

  • ARBITRIUM_HOST_BEACON_PORT_TCP_EXTERNAL - напр. 30456, для измерения пинга по TCP.

Структурированная информация (JSON в виде строки)

Переменные окружения хранятся в виде JSON-строк, разбирайте их с помощью SDK или собственного метода.

ARBITRIUM_DEPLOYMENT_LOCATION
ARBITRIUM_PORTS_MAPPING

Мониторинг на дашборде

Наш Дашборд предоставляет инструменты для мониторинга масштабируемости вашего сервера и помощи в эксплуатации.

Аналитика

🌟 Обновитесь до тарифа Pay as You Go чтобы открыть подробные метрики производительности сервера и аналитические сведения:

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

  • Сведения о CPU: устраняйте задержки на серверах из-за ресурсоёмких операций процессора,

  • Сведения о памяти: предотвращайте перезапуски сервера из-за превышения выделенной памяти,

  • Сведения о сети: обнаруживайте неэффективные сетевые шаблоны и оптимизируйте netcode.

Карта развертывания

Просматривайте на карте местоположение развертывания, доступные локации и предполагаемые местоположения игроков:

Точки баланса развертывания

Просматривайте тепловую карту точек баланса развертывания и фильтруйте по Приложения и версии. Точки баланса — это приблизительные местоположения с одинаковой сетевой близостью к каждому игроку в данном развертывании:

Журналы развертывания

Журналы развертывания отображают сведения о Развертывания:

Журналы контейнера

Проверяйте журналы игрового сервера в случае проблем или при отладке:

Метрики контейнера

Просматривайте метрики контейнера (процессор, память, сеть), чтобы:

  • определять типичные проблемы соединения, когда Развертывания,

  • обнаруживать неэффективные паттерны реализации, вызывающие всплески использования ресурсов,

  • точно определять неэффективное использование ресурсов в конкретных сценариях,

  • проверять изменения использования ресурсов вашего сервера во время оптимизации,

  • сравнивать потребление ресурсов и длительность инициализации вашего сервера.

Исторические метрики отображают средние значения с интервалом 1 минута и доступны на бесплатном тарифе.

🌟 Обновитесь до тарифа Pay as You Go чтобы открыть точные метрики с интервалом 1 секунда.

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

Контекст и статус

Дополнительные сведения о развертывании можно получить в формате JSON:

  • изнутри развертывания (игрового сервера), используя Deployment Context API,

  • извне развертывания (бэкенд / сторонняя система), используя Deployment Status API.

Для Context API (из развертывания) требуется токен Context API, тогда как Status API использует ваш токен Edgegap.

Фильтрование развертываний

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

Получайте список развертываний через API и применяйте фильтры с помощью бэкенд-интеграций:

Атрибут развертывания
Операторы
Пример значения

eq или neq

"ready" или "error"

eq

"7e709a0d8efd"

в или nin

[ "7e709a0d8efd", "4ba353100b4b" ]

eq или neq

"tagA"

в или nin

[ "tagA", "tagB" ]

eq или lte или gte

eq или neq

"my-app"

в или nin

[ "my-app", "my-other-app" ]

eq или neq

"1.0.0"

в или nin

[ "1.0.0", "prod" ]

eq или neq

"my-app-fleet-europe"

в или nin

[ "fleet-eu", "fleet-us" ]

ilike

"%-eu%"

eq или neq

"alpha-north-america-95fab093"

в или nin

[ "alpha-north-america-95fab093" ]

ilike

"%north-america%"

Каждый атрибут может иметь не более 1 оператора фильтра в одном запросе. См. Справочник API для подробностей.

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

Атрибут развертывания
Порядок

asc или desc

available_session_sockets

asc или desc

Примеры запросов фильтра:

Список Развертывания с ошибкой для устранения неполадок и удаления.

Закодированный URL:

Отформатированный JSON-запрос:

Список Развертывания с устаревшей версией приложения чтобы подтвердить, что релиз завершён.

Закодированный URL:

Отформатированный JSON-запрос:

Вебхуки

Получайте простые HTTP-уведомления в бэкенде игры об изменениях в Развертывания указав URL вебхука в вашем API-запросе к развертыванию. Доступно для:

  • При готовности: контейнер развертывания успешно запущен (после этого сервер начинает инициализацию).

  • При ошибке: развертывание не удалось запустить, и Развертывания произошла ошибка.

  • При завершении: Развертывания и игровой сервер больше недоступен.

Вебхуки Ready и Error никогда не будут вызваны для одного и того же развертывания.

Пример полезной нагрузки вебхука

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

🚨 Устранение неполадок

При устранении неполадок с деплоями:

  1. убедитесь, что в вашем Развертывания и Развертывания,

  2. запустите сервер локально, чтобы исключить ошибки интеграции,

  3. ознакомьтесь со шагами по устранению неполадок на этой странице,

  4. свяжитесь с нами в Discord сообщества и укажите ID вашего деплоя.

Смотрите Развертывания чтобы узнать наши рекомендации по работе с отзывами игрового сообщества.

Не удается подключить клиентов к серверу - Время ожидания запроса истекло., Тайм-аут запроса , Ошибка подключения , или Проверка порта не удалась.
  • Сначала убедитесь, что деплой находится в состоянии Ready и в журнале развертывания нет исключений или ошибок времени выполнения. Если ваш деплой остановился, просмотрите логи в нашем Дашборд.

  • Если вы используете netcode Mirror, вам нужно иметь «Auto Start Server» выбранным в вашем NetworkManager , пересоберите, отправьте и заново разверните сервер.

  • Если вы используете netcode FishNet, вам нужно включить «Start on Headless» в вашем ServerManager, пересоберите, отправьте и заново разверните сервер.

  • Если вы используете netcode Photon Fusion 2, убедитесь, что ваш сервер передает публичный IP деплоя, внешний порт и roomCode на сервере, а также тот же код комнаты в клиенте в «NeworkRunner.StartGame» параметре StartGameArgs. ID деплоя (например, b63e6003b19f) — отличный вариант, так как он глобально уникален и легко доступен клиенту через матчмейкер назначение и к Подробный обзор.

  • Далее проверьте, что настройка порта в netcode-настройках сборки вашего сервера совпадает с внутренним портом в вашем версии приложения. Вы можете изменить сопоставление портов, отредактировав версии приложения без пересборки. Найдите свой протокол в вашей интеграции netcode.

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

  • Если вы используете протокол Secure WebSocket (WSS) в вашей интеграции netcode, убедитесь, что ваша версии приложения конфигурация порта для WSS включает включенное TLS Upgrade.

  • Вы находитесь в Китае и используете Smart Fleets? Ваше подключение может быть заблокировано Великим китайским файрволом. Рассмотрите возможность добавить в свой флот сервер, расположенный в Китае, или используйте VPN для подключения.

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

  • Мы храним логи только в течение срока существования деплоя; если вы хотите просмотреть логи после остановки деплоя, пожалуйста интегрируйте стороннее хранилище логов.

  • Смотрите Развертывания чтобы выявить все причины остановки вашего деплоя.

Мой деплой автоматически остановился через X минут.
  • У деплоев Free Tier есть лимит в 60 минут, рассмотрите возможность обновления аккаунта.

  • Cloud-деплои будут завершены через 24 часа работы в соответствии с нашей политикой очистки серверов, для обслуживания инфраструктуры и чтобы предотвратить неожиданные расходы, если деплой был корректно не остановлен. Для серверов с длительным временем работы более 24 часов рассмотрите использование Частные пулы серверов с Постоянное хранение.

  • Смотрите Развертывания чтобы выявить все причины остановки вашего деплоя.

Мой деплой готов, но я не могу подключиться еще несколько минут после этого.
  • После того как деплой переходит в состояние Ready, начинается инициализация игрового движка. Этот процесс может занять от нескольких секунд до нескольких минут, и в этот период сервер не принимает подключения игроков.

  • Рассмотрите возможность оптимизировать инициализацию сервера, чтобы сократить этот период.

  • Игровые клиенты должны повторять попытку подключения с интервалом 1 секунда в течение ограниченного времени (в зависимости от длительности инициализации), после чего они возвращаются в подбор игроков.

  • Рассмотрите возможность добавить сцену загрузки, чтобы сервер мог выполнять инициализацию (и переход в случае Unreal Engine) одновременно с клиентами, синхронизируя при этом состояние обеих сторон.

На моем устройстве Meta Quest возникает HTTP 0: не удается разрешить целевой хост .
  • При сборке приложений Unity для целевой платформы Android разрешение Internet Access может быть автоматически удалено из итогового APK-артефакта клиентской сборки.

  • Снова добавьте разрешения в (после этого потребуется пересобрать клиент):

    • Project Settings / OpenXR / ⚙️ Meta Quest Support / Force Remove Internet Permissions (снимите флажок).

    • Player Settings / Internet Access (установите Require).

Что произойдет, если игрок покинет мой деплой?
  • По умолчанию серверы не отклоняют подключения игроков. Аутентификация игроков — на усмотрение ваших разработчиков, поскольку можно использовать множество разных методов и провайдеров аутентификации игроков.

  • Игровые клиенты могут локально хранить информацию о подключении, чтобы попытаться переподключиться в случае непредвиденного сбоя клиента.

  • Чтобы позволить игрокам присоединяться к уже идущим играм, рассмотрите использование Подробный обзор или Sessions.

После перехода в состояние Ready мой сервер показывает загрузку CPU 100%.
  • Это может не быть проблемой, поскольку игровые движки обычно выполняют ресурсоемкие операции CPU во время инициализации сервера. Если загрузка CPU не снизится через 2–3 минуты после запуска деплоя, вам может потребоваться оптимизировать сервер или увеличить ресурсы версии приложения.

  • Снижение tick rate может повлиять на загрузку CPU, поскольку сервер будет выполнять меньше операций обмена сообщениями.

  • Если вы используете netcode Mirror, вам нужно иметь «Auto Start Server» выбранным в вашем NetworkManager , пересоберите, отправьте и заново разверните сервер.

  • Если вы используете netcode FishNet, вам нужно включить «Start on Headless» в вашем ServerManager, пересоберите, отправьте и заново разверните сервер.

  • В Free Tier вам доступно не более 1,5 vCPU и 3 ГБ памяти (RAM).

  • Вы можете увеличить выделенные ресурсы при создании новой версии приложения. Вы можете дублировать версию приложения в нашей панели управления и при необходимости изменять эти значения без пересборки сервера или образа.

Мой деплой постоянно перезапускается и показывает ошибку `OOM kill` .
  • Такое поведение вызвано превышением выделенного объема памяти. Рассмотрите возможность оптимизировать использование памяти с помощью object pooling, сжатия или удаления ненужных объектов в вашей сцене.

  • Убедитесь, что ваш проект загружает сцену по умолчанию, содержащую ваш NetworkManager и что эта сцена включена в Build Settings Unity.

  • В Free Tier вам доступно не более 1,5 vCPU и 3 ГБ памяти (RAM).

  • Вы можете увеличить выделенные ресурсы при создании новой версии приложения. Вы можете дублировать версию приложения в нашей панели управления и при необходимости изменять эти значения без пересборки сервера или образа.

Иногда использование памяти (RAM) на моем сервере резко возрастает до высокого значения — это проблема?
  • Пока вы не выходите за пределы выделенного объема памяти версии приложения, это не проблема.

  • Превышение выделенного объема памяти версии приложения приведет к `OOM kill` (см. выше).

Будет ли производительность моего сервера затронута другими серверами, работающими на той же машине?
  • Нет, наша платформа гарантирует, что выделенные ресурсы не будут использоваться другими студиями или другими серверами на общей инфраструктуре. С Edgegap нет «шумных соседей».

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

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