Развертывания
Узнайте о развертываниях и их жизненном цикле — концепции и лучшие практики для более глубокого понимания.
🗺️ Оркестрация
Запускайте новые серверы за считанные секунды, чтобы удовлетворять потребности в мощности с нашим облачно-нативным подходом к edge-вычислениям. Мы рассматриваем серверы как скот, а не домашних питомцев - полностью заменяя неисправные экземпляры вместо того, чтобы вручную «лечить» каждый из них.
Ваш выбор оркестрации будет влиять на стоимость devops, стоимость серверов и масштабируемость.
Свяжитесь в Discord чтобы узнать о гибридных вариантах оркестрации и оптимизации стоимости хостинга.
Чтобы полностью понять все плюсы и минусы, давайте сравним различные методы оркестрации.
Сопряжение по матчу
Золотой стандарт для современных студий, обеспечивающий самую простую интеграцию и лучшую экономическую эффективность.
👍 Преимущества
Лучшая экономическая эффективность — масштабирование в реальном времени для удовлетворения спроса игроков поминутно.
Минимальная стоимость devops благодаря хостингу без привязки к региону, Edgegap автоматизирует 99% задач.
Минимальный пинг благодаря более чем 615 площадкам в публичной облачной инфраструктуре Edgegap.
Самое быстрое масштабирование вверх (burst-способность) в случае неожиданного всплеска трафика.
Высочайший стандарт безопасности и предотвращения читерства игроков (серверная авторитетность).
Минимальное влияние неожиданного сбоя сервера на игроков, затрагивающее только один матч.
👎 Недостатки
Освоение новой ментальной модели оркестрации требует первоначальных усилий на адаптацию.
Серверы, работающие дольше 24 часов, будут автоматически завершены.
🧩 Лучше всего подходит для
Игр, чувствительных к задержке — когда оптимизация netcode не может компенсировать высокий пинг:
шутеры от первого лица, файтинги, VR и XR (виртуальная и расширенная реальность), …
Игр с верхним пределом длительности матча по замыслу,
Battle Royale, PvPvE, кооперативные шутеры, MOBA, спортивные игры, ARPG и dungeon crawler, …
🔎 Обнаруживаемость
Запускайте новые игры, когда присоединяется достаточное количество игроков Подбор игроков.
Добавляйте игроков, чтобы заменять вышедших из матча с помощью backfill.
Дайте игрокам просматривать серверы и выбирать из списка с Браузер серверов.
Edgegap автоматически масштабирует все 615+ серверных локаций вверх/вниз в зависимости от активности игроков в каждом регионе. Готовьтесь к успеху — без проблем масштабируйтесь до 14 миллионов одновременных пользователей за 60 минут.
Региональный резерв
Традиционная модель для постоянных миров с пользовательским контентом и социальными MMO-играми.
👍 Преимущества
Знакомый и легко понятный старомодный подход для ветеранов, закалённых боями.
Высочайший стандарт безопасности и предотвращения читерства игроков (серверная авторитетность).
Легко предсказуемая стоимость на основе ежемесячного обязательства.
👎 Недостатки
Более высокая стоимость хостинга — каждый регион требует одного или нескольких простаивающих резервных серверов (burst-ёмкость).
Более высокая стоимость devops — масштабирование, операции и обслуживание дублируются для каждого региона.
Регионы с меньшей базой игроков испытывают высокий пинг из-за подключения к удалённым серверам.
🧩 Лучше всего подходит для
Постоянные миры с пользовательским контентом, сохраняемым на сервере даже тогда, когда игроки оффлайн.
MMO, песочницы с постройкой базы или размещением объектов, extraction shooters, ...
игры, терпимые к задержке — когда не требуется серверная авторитетная физика в реальном времени:
мобильные игры, кооперативные игры, TCG/CCG, пошаговые стратегии, …
Асинхронный мультиплеер, где сбои сервера минимально влияют на игровой опыт:
гонки против призраков, грабёж базы противника, игры на строительство/фермерство на основе таймера, …
приложения с тяжёлым процессом инициализации — когда подготовка серверов занимает минуты.
🔎 Обнаруживаемость
Дайте игрокам просматривать серверы и выбирать из списка с Браузер серверов.
Смотрите Управляемые кластеры о самостоятельном хостинге ваших микросервисов и backend-сервисов на Edgegap.
Peer to Peer
Перенесите усилия разработки с выделенных серверов на relay netcode для некомпетитивных игр.
Связанные темы: listen servers, player-host authority, NAT punch-through.
👍 Преимущества
Минимальная стоимость хостинга, требующая только Relay-серверов для решения NAT punch-through.
Минимальная стоимость devops — обслуживание требуется только для клиентских сборок и каналов распространения.
Минимальное влияние неожиданного сбоя сервера на игроков, затрагивающее только один матч.
Легко реализовать и быстро прототипировать, без необходимости какой-либо backend-разработки.
👎 Недостатки
Повышенные затраты на разработку peer-to-peer netcode, требующие навыков параллельного программирования.
Худшие времена пинга и наибольшая чувствительность к неблагоприятным сетевым условиям (например, мобильный интернет).
Слабейшая безопасность, уязвимость к атакам man-in-the-middle и перехвату сессий.
Риск потери сессий при выходе хоста, если не реализовать собственную миграцию хоста.
🧩 Лучше всего подходит для
Кооперативные и казуальные игры — когда читерство не портит удовольствие и не ломает игру,
Детские игры, исследовательские игры, приключения, …
🔎 Обнаруживаемость
Смотрите наше Распределённые ретрансляторы для сервиса, обеспечивающего peer-to-peer с лучшей в классе задержкой и безопасностью.
📍 Размещение серверов
Независимо от того, какой метод оркестрации вы выберете, выбор правильной серверной локации для группы игроков критически важен для обеспечения максимально возможного пинга и оптимального игрового опыта. Узнайте о различных стратегиях размещения серверов и о том, как они влияют на ваших игроков.
Ваша стратегия размещения серверов будет влиять на опыт игроков, удержание и отзывы о вашей игре.
Edgegap развёртывает в наилучшем возможном месте с доступной ёмкостью, для быстрых матчей с низкой задержкой.

Смотрите Развертывания на анализировать размещение серверов в реальном времени, в масштабе.
Оценка сервера
Стратегия Server Score использует запатентованную методологию Edgegap, которая оптимизирует размещение серверов для каждого матча индивидуально. Выполняет ненавязчивую телеметрию, чтобы приблизительно определить сетевую близость каждого игрока к нашим серверным локациям и выбрать сервер, который обеспечивает лучшее:
отзывчивость - в среднем обеспечивает минимальный пинг для всех игроков,
справедливость - обеспечивает сбалансированный и справедливый пинг для всех игроков.
Наш матчмейкер использует стратегию Server Score по умолчанию, чтобы обеспечить наилучший возможный опыт. Чтобы использовать эту стратегию с Deploy APIs, укажите публичные IP-адреса игроков или геокоординаты в запросе на развертывание.
Неотзывчивое размещение - сервер далеко, высокий пинг для всех игроков:

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

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

Эта стратегия особенно эффективна для хостинга группы игроков, находящихся далеко друг от друга (Северная Америка против Европы или западное побережье против восточного), что часто бывает с заранее созданными лобби.
Геолокация
В качестве альтернативы, предоставьте широту и долготу игроков или координаты предпочтительной серверной локации вместо использования автоматизированной телеметрии. Этот подход требует дополнительной реализации геопоиска на стороне клиента и полностью полагается на решение разработчика игры.
Стратегия геолокации не рекомендуется для Развертывания оркестрации, за исключением приложений со строгими нормативными требованиями к межрегиональной передаче данных или когда IP игрока недоступен.
Чтобы использовать эту стратегию с Deploy APIs, укажите публичные IP-адреса игроков или геокоординаты в запросе на развертывание.
Блокировка региона
Серверы могут размещаться с использованием грубо обобщённого параметра региона, либо:
автоматически выбранного для игрока на основе его метаданных (база данных аккаунта игрока), либо
выбранного игроком во время матчмейкинга, что позволяет размещение с высокой задержкой между клиентом и сервером.
Использовать эту стратегию по отдельности не рекомендуется, так как это может привести к плохой сетевой производительности.
Использование выбора региона в качестве предварительного фильтра в сочетании с другой стратегией является лучшей альтернативой.
🟢 Качество соединения
Некоторые игры (и некоторые игроки) более чувствительны к задержке или лагам, чем другие. Хотя отчёты игроков — отличный индикатор инцидентов или регрессионных багов в масштабе, игрокам может не хватать глубокого понимания сетевых концепций и они быстро возлагают вину на студии, netcode или серверы.
Корневая причина некоторых проблем может быть скрыта от игроков, поэтому сотрудничество студии и хостинг-провайдера может быть крайне важным. Приоритет Edgegap всегда — предоставлять наилучший возможный сервис.
Если вы получаете множество отчётов от игроков, сталкиваетесь с массовыми сбоями или повторяющимися проблемами, пожалуйста, немедленно свяжитесь с нами через тикет в службу поддержки на нашей платформе.
Низкая задержка
Задержка игрока — это сочетание задержки при передаче данных между:
физическими устройствами — физическим сигналом, проходящим через топологию интернет-сети,
хостом к хосту - возникающей из-за протокольных, транспортных и мер безопасности,
процессом к процессу - возникающей из-за (рас)паковки и обработки данных в клиенте/сервере.
Edgegap снижает физическую задержку, размещая серверы ближе к вашим игрокам для более коротких ответов и меньшего числа сетевых переходов. С локациями у 17 облачных и bare metal-провайдеров вы получаете пинг лучшего в классе уровня для игроков в любой точке мира.
Покрытие серверов и интернета в мире (не только у Edgegap) ограничено из-за таких факторов, как:
доступность инфраструктуры - качество интернет-соединения в данном регионе может быть недостаточным,
природные факторы - высокосложные серверные стойки требуют в основном стабильной среды.
Высокая доступность
Доступность серверов в различных локациях по всему миру будет меняться со временем, несколько раз в течение дня. Edgegap автоматически масштабирует вверх/вниз локации по требованию, учитывая:
всплесковый трафик - развертывания, выполненные в течение 15-минутного периода,
требования vCPU - больше vCPU на развертывание увеличивает общий спрос на конкретную локацию,
предложение провайдера - в некоторых удалённых локациях доступно меньше вариантов провайдеров,
доступность машин - некоторые локации могут предлагать только машины на 4 vCPU или 8 vCPU,
запросы студии для тестирования, контроля качества, раннего доступа, закрытых бета-версий или турниров.
Все запросы на развертывание приложений объединяются для оценки спроса на локацию. По умолчанию все организации имеют равный приоритет распределения, с возможностью добавлять частные пулы серверов для корпоративных клиентов, которым требуется специфическое оборудование или локации.
Пожалуйста, свяжитесь с нами, чтобы спланировать выпуск, или если у вас есть какие-либо запросы относительно доступности локаций.
Разрешение проблем игроков
Проблемы игроков могут быть вызваны багами сервера или инцидентами у провайдера, но также могут возникать у третьих сторон, таких как локальные ISP, игровые сервисы, ошибки в низкоуровневых библиотеках, провайдеры инфраструктуры или другие источники.
При разборе отчётов игроков или инцидентов учитывайте факторы:
качество матчмейкинга - игроки должны быть близко друг к другу (в одном регионе) для Развертывания чтобы дать наилучшие результаты:
смотрите Подбор игроков и Пинг-маяки для наших рекомендаций,
смотрите Подробный обзор чтобы узнать, как находить серверные логи, связанные с отчётами игроков,
региональные проблемы:
локальные интернет-провайдеры (ISP) могут временно устранять инцидент,
некоторые регионы (например, Китай, Россия) могут быть ограничены из-за локализованных санкций,
уровень кэширования - Edgegap будет отдавать приоритет быстрым развертываниям в кэшированных локациях:
максимальное время на развертывание - развертывания могут завершиться неудачей из-за медленного и тяжёлого процесса инициализации:
смотрите Приложения и версии чтобы увеличить период таймаута,
откладывайте шаги инициализации до момента, когда они действительно необходимы,
проблемы с образом сервера или интеграцией.
Отображайте ID развертывания в UI истории матчей клиента чтобы отслеживать отчёты игроков при устранении неполадок.
Уведомляйте пользователей о массовых багах, временных проблемах и сбоях, чтобы снизить негативные настроения.
🔄 Жизненный цикл развертывания
Развертывания Edgegap проходят несколько стадий жизненного цикла, обозначаемых статусом развертывания.
1. Запуск развертывания
Развертывание для целей тестирования может быть запущено с помощью:
Unreal Engine - расширения Docker или плагина для проектов Unreal Engine,
Unity - плагина для проектов Unity,
Dashboard Web UI - простой в использовании веб-интерфейс для тестирования интеграции сервера.
Развертывание для рабочая production-среда должна запускаться с помощью:
Подбор игроков - находите других игроков и запускайте серверы по требованию (Развертывания).
Браузер серверов - предварительно прогревайте серверы с долгой инициализацией (Развертывания).
Deploy API - сервер-серверная настраиваемая интеграция (кастомное масштабирование).
Сохраните request_id (ID развертывания) и помечайте развертывания для последующей идентификации и устранения проблем.
При тестировании с Deploy API, вы можете переопределить стандартный Dockerfile CMD с помощью пользовательской команды.
2. Развертывание
После запуска развертывания наша система выполнит ряд шагов в быстрой последовательности:
Телеметрия — мы измеряем сетевую отзывчивость от доступных дата-центров к каждому игроку,
Развертывание — мы резервируем ёмкость и подготавливаем запуск контейнера вашего сервера,
Запуск контейнера — мы запускаем контейнер, устанавливаем зависимости и инициализируем его,
Постобработка — мы добавляем хранилище логов, мониторинг и завершаем развертывание.
Слишком много запросов 429 - чтобы обеспечить стабильность и предотвратить неожиданные счета, мы ограничиваем скорость запросов для вашей организации на 40 req/s. Свяжитесь с нами чтобы планировать релизы, оценивать стартовый трафик и готовиться к успеху.
3. Развертывание готово
Ваш контейнер полностью инициализирован, и ваш сервер сейчас запускается. В течение нескольких секунд или минуты ваш сервер всё ещё может инициализироваться и не отвечать на запросы игроков, пока ваш игровой движок (или пользовательская среда выполнения) полностью не будет готов принимать подключения игроков.
Как только развертывание станет Ready, повторяйте попытки подключения игрока до успешного, или до заранее определённого таймаута клиента.
4. Ошибка развертывания
Ваше развертывание может перейти в состояние Error в любой момент по непредвиденным причинам. Это более вероятно при тестировании интеграции или тестировании новых сборок сервера.
За развертывания в состоянии Error с вас не взимается плата; они автоматически останавливаются через 24 часа.
Шаги по устранению неполадок:
Проверьте статус сервиса Edgegap с помощью нашей страницы мониторинга доступности.
Попробуйте протестировать контейнер вашего сервера локально с помощью Docker Desktop, чтобы исключить проблемы Edgegap.
Когда просите о помощи, включите ID вашего развертывания и любые полезные детали чтобы мы могли оперативно провести расследование!
5. Развертывание остановлено
Мы никогда не останавливаем ваши серверы без вашей директивы, чтобы не негативно влиять на игровой опыт ваших игроков. Ваше развертывание может быть остановлено по следующим причинам:
Самостоятельная остановка через DELETE_URL - развертывание само остановилось после того, как игроки ушли и матч завершился,
смотрите Unreal Engine и Unity руководства по корректной остановке развертываний,
Остановка из вашего backend - ваш backend остановил это развертывание с использованием Deployments API,
Максимальная длительность игры - выделенное время в вашем Приложения и версии истекло,
Частные флоты Хост, на котором работает ваше развертывание, был удалён через запланированное действие.
После остановки развертывания, мы инициируем мягкое завершение отправляя SIGTERM сигнал вашему основному процессу, позволяя короткий период завершения. По истечении этого времени SIGKILL сигнал отправляется для остановки развертывания.
👀 Наблюдаемость
Позвольте игровым серверам взаимодействовать со сторонними сервисами и получать операционные инсайты.
Обнаруживаемость
После перехода в Ready развертыванию назначается URL (fqdn) и внешний порт для каждого внутреннего порта.
Используйте теги развертывания, чтобы легко помечать ваши развертывания и Развертывания.
Исходящий трафик (к клиентам или backend) из ваших игровых серверов никогда не блокируется и не фильтруется.
WebSocket (WS) и защищённые WebSocket (WSS)
Чтобы использовать netcode на основе websocket с Edgegap, у вас есть два варианта:
управляемый сертификат, настраиваемый за 1 минуту без написания кода:
настройте ваш Приложения и версии на используйте Websocket (WS) и Enable TLS Upgrade,
используйте URL Edgegap для подключения клиентов (например,
https://5fa53fa00a57.pr.edgegap.net/)
самостоятельно управляемый сертификат, если вы хотите использовать свой собственный кастомный домен:
настройте ваш Приложения и версии на используйте Secure Websocket (WSS),
настройте собственный поток TLS-сертификата с кастомной DNS-записью (например, на Cloudflare).
Необработанные исключения сервера приведут к перезапуску контейнера развертывания и аннулируют TLS-безопасность. В таком случае, остановите ваш сервер и перематчьте игроков на новое развертывание. Состояние сервера может быть потеряно.
Внедряемые переменные
Игровым серверам часто требуется дополнительная информация, такая как IP сервера, значения внутренних портов или другое. Внедрение переменных окружения только для чтения — надёжный облачно-агностичный способ передачи параметров.
Получайте значения переменных с помощью GetEnvironmentVariable в C# или GetEnvironmentVariable в C++.
Смотрите Переменные версии приложения и Переменные матчмейкера в дополнение к переменным развертывания ниже.
Пользовательские переменные
Определяйте до 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- например2000, частота процессора в МГц.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вAuthorizationзаголовке.
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-транспорта.
Примеры предполагают, что вы назвали свой порт gameport (по умолчанию). Каждый порт добавляет дополнительный набор очищенных Приложения и версии переменных: @Super Port! ⇒ ARBITRIUM_PORT_SUPER_PORT_INTERNAL .
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 или пользовательского метода.
Мониторинг панели
Наш Панель предоставляет инструменты для мониторинга масштабируемости вашего сервера и помогает в эксплуатации.
Аналитика
Найдите аналитические панели в боковом меню в категории Серверный хостинг и оркестрация.
🌟 Перейдите на тариф Pay as You Go чтобы открыть подробные метрики производительности сервера и аналитические данные:
Общие сведения: отслеживайте релизы с количеством живых серверов по каждой версии + обзором использования ресурсов,
Сведения о CPU: устраняйте задержки серверов из-за ресурсоемких операций процессора,
Сведения о памяти: предотвращайте перезапуски сервера из-за превышения выделенной памяти,
Сведения о сети: выявляйте неэффективные сетевые паттерны и оптимизируйте netcode.

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

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

Горячие точки баланса в странных местах (например, Гренландия) указывают на подбор игроков, находящихся далеко друг от друга. Узнайте о Развертывания и Пинг-маяки чтобы оптимизировать подбор игроков.
Журналы развертывания
Найдите журналы развертывания в на странице сведений о вашем развертывании на панели.
Журналы развертывания отображают информацию о Развертывания:

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

После остановки развертывания журналы контейнера удаляются. Настройте хранилище журналов S3 от стороннего провайдера чтобы сохранять журналы.
Метрики контейнера
Найдите метрики контейнера в на странице сведений о вашем развертывании на панели.
Просматривайте метрики контейнера (процессор, память, сеть), чтобы:
выявлять распространенные проблемы соединения, когда Развертывания,
обнаруживать неэффективные схемы реализации, вызывающие всплески использования ресурсов,
выявлять неэффективное использование ресурсов в конкретных сценариях,
проверять изменения в использовании ресурсов вашего сервера во время оптимизации,
проводить бенчмаркинг потребления ресурсов и длительности инициализации вашего сервера.
Исторические метрики показывают средние значения за интервал 1 минута и доступны в бесплатном тарифе.
🌟 Перейдите на тариф Pay as You Go чтобы открыть точные метрики с интервалом в 1 секунду.

Свяжитесь с нами перед вашим релизом, чтобы запросить поддержку хостинга в реальном времени для крупных запусков.
Контекст и статус
Дополнительную информацию о развертывании можно получить в формате JSON:
изнутри развертывания (игрового сервера), используя Deployment Context API,
извне развертывания (backend / сторонний сервис), используя Deployment Status API.
Context API (из развертывания) требует токен Context API, тогда как Status API использует ваш токен Edgegap.
Слишком много запросов 429 - мы ограничиваем скорость запросов для вашей организации до 20 req/s для конечных точек Context и Status API. Используйте Внедряемые переменные и Вебхуки для масштабируемого решения.
Фильтр развертываний
Чтобы быстро искать среди всех развертываний, вы можете использовать нашу панель:

Список развертываний с помощью API и применять фильтры с помощью backend-интеграций:
в или nin
[ "7e709a0d8efd", "4ba353100b4b" ]
в или nin
[ "tagA", "tagB" ]
в или nin
[ "my-app", "my-other-app" ]
в или nin
[ "1.0.0", "prod" ]
Каждый атрибут может иметь не более 1 оператора фильтра в одном запросе. См. Справочник API для подробностей.
Сортируйте результаты по нескольким полям в порядке их появления в запросе:
asc или desc
asc или desc
Примеры запросов с фильтрами:
Список Развертывания с ошибкой чтобы устранить неполадки и удалить.
Закодированный URL:
Отформатированный JSON-запрос:
Список Развертывания с устаревшей версией приложения чтобы подтвердить, что релиз завершен.
Закодированный URL:
Отформатированный JSON-запрос:
Не забудьте добавить Authorization заголовок с вашим токеном Edgegap API в запрос.
Вебхуки и постбеки
Получайте простые HTTP-уведомления в backend вашей игры об изменениях в Развертывания указав URL вебхука в вашем запросе к API развертывания. Доступно для:
При готовности: контейнер развертывания успешно запущен (после этого сервер начинает инициализацию),
При ошибке: развертывание не удалось запустить и произошла Развертывания ошибка,
При завершении: Развертывания и игровой сервер больше недоступен.
Вебхуки Ready и Error никогда не срабатывают для одного и того же развертывания.
Вебхуки не повторяются, поэтому если ваш backend не обработает запрос из-за ограничения скорости или ошибки, вебхук может быть потерян. Используйте вебхуки только для некритичных сценариев или целей отладки.
Вебхуки отслеживают жизненный цикл развертывания, но не знают о состоянии инициализации сцены/уровня. Чтобы отслеживать прогресс загрузки вашей сцены/уровня, реализуйте собственный вебхук в игровом сервере.
🚨 Устранение неполадок
При устранении неполадок развертываний:
убедитесь, что нет ошибок в вашем Развертывания и Развертывания,
запустите сервер локально, чтобы исключить ошибки интеграции,
ознакомьтесь с шагами по устранению неполадок на этой странице,
свяжитесь с нами в Community Discord и укажите ID вашего развертывания.
Смотрите Развертывания с нашими рекомендациями по работе с отзывами сообщества игроков.
Не удается подключить клиентов к серверу - Время ожидания запроса истекло., 请求超时 , ConnectionFailed , или Проверка порта не удалась.
Сначала убедитесь, что развертывание находится в состоянии Ready и что в журнале развертывания нет исключений или ошибок во время выполнения. Если ваше развертывание остановилось, проверьте журналы в нашем Панель.
Если вы используете Mirror netcode, вам нужно иметь "Auto Start Server” выбранным в вашем
NetworkManager, пересоберите, отправьте и заново разверните сервер.Если вы используете FishNet netcode, вам нужно включить “Start on Headless” в вашем
ServerManager, пересоберите, отправьте и заново разверните сервер.Если вы используете Photon Fusion 2 netcode, убедитесь, что ваш сервер передает публичный IP развертывания, внешний порт и
roomCodeна сервере, а также тот же код комнаты в клиенте в “NeworkRunner.StartGame” параметреStartGameArgs. ID развертывания (например,b63e6003b19f) — отличный выбор, поскольку он глобально уникален и легко доступен клиенту через матчмейкер назначение и к Подробный обзор.Далее проверьте, что настройка порта в netcode-настройках вашей серверной сборки соответствует внутреннему порту в вашем Версия приложенияВы можете изменить сопоставление портов, отредактировав Версия приложения без пересборки. Найдите ваш протокол в интеграции netcode.
Пожалуйста, убедитесь, что ваш игровой клиент подключается к внешнему порту указанному на странице сведений о вашем развертывании; это значение всегда будет случайным по соображениям безопасности.
Если вы используете протокол Secure Websocket (WSS) в интеграции netcode, убедитесь, что у вашего Версия приложения конфигурации порта WSS включено TLS Upgrade.
Вы находитесь в Китае и используете Smart Fleets? Ваше соединение может быть заблокировано Великим китайским файрволом. Рассмотрите возможность добавления в свой парк сервера, расположенного в Китае, или использования VPN для подключения.
Мое развертывание остановилось/перезапустилось, и я больше не могу получить доступ к его журналам.
Если процесс сервера аварийно завершится из-за исключения, наша система попытается автоматически перезапустить сервер. Рекомендуем протестировать сервер локально, чтобы выявить первопричину.
Мы храним журналы только в течение времени существования развертывания; если вы хотите просмотреть журналы после остановки развертывания, пожалуйста, интегрируйте стороннее хранилище журналов.
Смотрите Развертывания чтобы выяснить все причины остановки вашего развертывания.
Мое развертывание автоматически остановилось через X минут.
Развертывания на бесплатном тарифе имеют лимит в 60 минут, рассмотрите возможность обновления аккаунта.
Все развертывания будут завершены через 24 часа работы согласно нашей политике очистки серверов, для обслуживания инфраструктуры и чтобы предотвратить накопление неожиданных расходов, если развертывание не было корректно остановлено. Для долгоживущих серверов рассмотрите использование Частные флоты с Сохранение данных.
Смотрите Развертывания чтобы выяснить все причины остановки вашего развертывания.
Мое развертывание готово, но после этого я несколько минут не могу подключиться.
После того как развертывание становится Ready, начинается инициализация вашего игрового движка. Этот процесс может занять от нескольких секунд до нескольких минут, и в этот период сервер не принимает подключения игроков.
Рассмотрите возможность оптимизации инициализации сервера, чтобы сократить это время.
Игровым клиентам следует повторять попытки подключения с интервалом в 1 секунду в течение ограниченного времени (в зависимости от длительности инициализации), после чего они возвращаются к подбору игроков.
Рассмотрите возможность добавления загрузочной сцены, чтобы сервер мог выполнять инициализацию (и travel в случае Unreal Engine) одновременно с клиентами, синхронизируя состояние обоих.
Мое устройство Meta Quest выдает HTTP 0: Не удается разрешить хост назначения .
При сборке приложений Unity для целевой платформы Android разрешение на доступ к Интернету может автоматически удаляться из выходного APK-артефакта клиента.
Снова добавьте разрешения в (потребуется последующая пересборка клиента):
Project Settings / OpenXR / ⚙️ Meta Quest Support / Force Remove Internet Permissions (снимите галочку).
Player Settings / Internet Access (установите require).
Что произойдет, если игрок покинет мое развертывание?
По умолчанию серверы не отклоняют подключения игроков. Проверка подлинности игроков — задача ваших разработчиков, поскольку можно использовать множество разных методов и поставщиков аутентификации игроков.
Игровые клиенты могут локально сохранять информацию о подключении, чтобы попытаться переподключиться в случае непредвиденного сбоя клиента.
Чтобы позволить игрокам присоединяться к уже идущим играм, рассмотрите использование Подробный обзор или Сессий.
На моем сервере отображается загрузка CPU 100% после перехода в состояние ready.
Это может не быть проблемой, поскольку игровые движки, как правило, выполняют ресурсоемкие операции процессора во время инициализации сервера. Если загрузка CPU не снижается через 2–3 минуты после запуска развертывания, возможно, вам нужно оптимизировать сервер или увеличить ресурсы версии приложения.
Снижение частоты тиков может повлиять на загрузку CPU, поскольку сервер выполняет меньше операций обмена сообщениями.
Если вы используете Mirror netcode, вам нужно иметь "Auto Start Server” выбранным в вашем
NetworkManager, пересоберите, отправьте и заново разверните сервер.Если вы используете FishNet netcode, вам нужно включить “Start on Headless” в вашем
ServerManager, пересоберите, отправьте и заново разверните сервер.В бесплатном тарифе вы ограничены 1.5 vCPU и 3 ГБ памяти (RAM).
Вы можете увеличить выделенные ресурсы при создании новой версии приложения. Вы можете дублировать версию приложения на нашей панели и изменить эти значения по мере необходимости, без пересборки сервера или образа.
Мое развертывание постоянно перезапускается и показывает ошибку `OOM kill` .
Такое поведение вызвано превышением выделенного объема памяти. Рассмотрите оптимизацию использования памяти с помощью пуллинга объектов, сжатия или удаления ненужных объектов в сцене.
Убедитесь, что ваш проект загружает сцену по умолчанию, содержащую ваш
NetworkManagerи что сцена включена в Build Settings Unity.В бесплатном тарифе вы ограничены 1.5 vCPU и 3 ГБ памяти (RAM).
Вы можете увеличить выделенные ресурсы при создании новой версии приложения. Вы можете дублировать версию приложения на нашей панели и изменить эти значения по мере необходимости, без пересборки сервера или образа.
Последнее обновление
Это было полезно?

