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

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

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

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

Эта стратегия особенно эффективна для хостинга группы игроков, находящихся далеко друг от друга (Северная Америка против Европы, или западное побережье против восточного), что часто встречается в заранее собранных лобби.
Геолокация
В качестве альтернативы, предоставьте широту и долготу игроков или координаты предпочитаемой локации сервера вместо использования автоматизированной телеметрии. Этот подход требует дополнительной реализации гео-lookup на стороне клиента и полностью полагается на решение разработчика игры.
Стратегия геолокации не рекомендуется для Развертывания оркестрации, за исключением приложений со строгими нормативными требованиями к межрегиональным передачам данных или когда IP игрока недоступен.
Чтобы использовать эту стратегию с Deploy API, перечислите публичные IP игроков или геокоординаты в вашем запросе на деплой.
Региональная блокировка
Серверы могут размещаться с использованием грубо обобщённого параметра региона, либо:
автоматически выбранного для игрока на основе его метаданных (база данных аккаунтов игроков), либо
выбранного игроком во время матчмейкинга, позволяя размещение с высокой задержкой между клиентом и сервером.
Использование этой стратегии в одиночку не рекомендуется, так как это может привести к плохой сетевой производительности.
Использование выбора региона в качестве предварительного фильтра в сочетании с другой стратегией является лучшей альтернативой.
🟢 Качество соединения
Некоторые игры (и некоторые игроки) более чувствительны к задержкам или лагам, чем другие. Хотя сообщения игроков — отличный индикатор инцидентов или регрессий в масштабе, игрокам может не хватать глубокого понимания сетевых концепций и они быстро склонны обвинять студии, сетевой код или серверы.
Коренные причины некоторых проблем могут быть скрыты от игроков, поэтому сотрудничество студии и провайдера хостинга может быть решающим. Приоритет Edgegap всегда — предоставлять наилучший возможный сервис.
Если вы получаете множество жалоб от игроков, испытываете масштабные сбои или повторяющиеся проблемы, пожалуйста, немедленно свяжитесь с нами, отправив тикет поддержки через нашу платформу.
Низкая задержка
Задержка игрока — это сочетание задержек при передаче данных между:
физическими устройствами - физический сигнал, путешествующий через топологию сетей Интернет,
хост к хосту - возникающая из протокола, транспортного уровня и мер безопасности,
процесс к процессу - возникающая из упаковки/распаковки и обработки данных в клиенте/сервере.
Edgegap уменьшает физическую задержку, размещая серверы ближе к вашим игрокам для более коротких откликов и меньшего числа сетевых хопов. С локациями у 17 облачных и bare-metal провайдеров вы получаете лучший в своём классе пинг для игроков в любой точке мира.
Покрытие серверов и интернета в мире (не только у Edgegap) ограничено факторами, такими как:
доступность инфраструктуры - качество интернет-соединения в конкретном регионе может быть недостаточным,
природные факторы - крайне сложные стойки серверов требуют в основном стабильной окружающей среды.
Высокая доступность
Доступность серверов в разных локациях мира будет меняться со временем, изменяясь несколько раз в течение дня. Edgegap автоматически масштабирует вверх/вниз локации по требованию, учитывая:
всплески трафика - развертывания, сделанные в пределах 15-минутного периода,
требования к vCPU - больше vCPU на развертывание увеличивает общий спрос на конкретную локацию,
предложения провайдеров - в некоторых отдалённых локациях доступно меньше вариантов провайдеров,
наличие машин - в некоторых локациях могут предлагаться только машины с 4 vCPU или 8 vCPU,
запросы студий на тестирование, обеспечение качества, ранний доступ, закрытые беты или турниры.
Все запросы на развертывание приложений объединяются для оценки спроса на локации. По умолчанию у всех организаций равный приоритет выделения, с возможностью добавить приватные пуллы серверов для корпоративных клиентов, требующих специфического оборудования или локаций.
Пожалуйста, свяжитесь с нами, чтобы спланировать релиз, или если у вас есть запросы по доступности локаций.
Разрешение проблем игроков
Проблемы игроков могут быть вызваны ошибками сервера или инцидентами у провайдера, но также могут возникать из-за третьих сторон, таких как локальные ISP, игровые сервисы, ошибки в низкоуровневых библиотеках, провайдеры инфраструктуры или другие источники.
При отладке жалоб игроков или инцидентов учитывайте следующие факторы:
качество матчмейкинга - игроки должны быть близки друг к другу (в одном регионе), чтобы Развертывания давать наилучшие результаты:
см. Матчмейкинг и Ping-маячки для наших рекомендаций,
см. Подробный обзор чтобы узнать, как найти логи сервера, связанные с жалобами игроков,
региональные проблемы:
локальные провайдеры интернет-услуг (ISP) могут временно решать инцидент,
некоторые регионы (например, Китай, Россия) могут быть ограничены из-за локализованных санкций,
уровень кэширования - Edgegap отдает приоритет быстрым развертываниям в кэшированных локациях:
максимальное время на развертывание - развертывания могут не пройти из-за медленного и тяжелого процесса инициализации:
см. Приложения и версии чтобы увеличить период таймаута,
отложите шаги инициализации до самой крайней необходимости,
проблемы с образом сервера или интеграцией.
Отображайте идентификаторы развертываний в UI истории матчей клиента чтобы отслеживать жалобы игроков при отладке.
Уведомляйте пользователей о массовых багах, временных проблемах и простоях, чтобы смягчить негативное восприятие.
🔄 Жизненный цикл развертывания
Развертывания Edgegap проходят несколько этапов жизненного цикла, обозначаемых статусом развертывания.
1. Запустить развертывание
Развертывание для тестовых целей может быть запущено с помощью:
Unreal Engine - Docker-расширения или плагина для проектов Unreal Engine,
Unity - плагина для проектов Unity,
Веб-интерфейс панели управления - удобный веб-интерфейс для тестирования интеграции серверов.
Развертывание для рабочая среда продакшн должна запускаться с помощью:
Матчмейкинг - находите других игроков и запускайте серверы по требованию (Развертывания).
Обзор серверов - предварительный прогрев серверов с длительной инициализацией (Развертывания).
Deploy API - кастомная интеграция сервер-сервер (пользовательское масштабирование).
Сохраните request_id (ID развертывания) и помечайте развертывания тегами чтобы впоследствии идентифицировать и устранять проблемы.
При тестировании с Deploy APIвы можете переопределить стандартную команду Dockerfile CMD на пользовательскую команду.
2. Разворачивание
После запуска развертывания наша система выполнит ряд шагов в быстрой последовательности:
Телеметрия — мы измеряем сетевую отзывчивость от доступных дата-центров до каждого игрока,
Развертывание — мы резервируем ёмкость и готовимся запустить ваш контейнер сервера,
Запуск контейнера — мы стартуем контейнер, устанавливаем зависимости и инициализируем,
Постобработка — мы добавляем хранение логов, мониторинг и завершаем развертывание.
Слишком много запросов 429 - чтобы обеспечить стабильность и предотвратить неожиданные счета, мы ограничиваем частоту запросов для вашей организации до 40 req/s. Свяжитесь с нами чтобы планировать релизы, оценивать трафик при запуске и готовиться к успеху.
3. Развертывание готово
Ваш контейнер полностью инициализирован и ваш сервер сейчас запускается. В течение нескольких секунд до минуты сервер может всё ещё инициализироваться и не отвечать на запросы игроков, пока игровой движок (или кастомный рантайм) полностью не будет готов принимать подключения игроков.
Как только развертывание становится Готовым, повторяйте попытки подключения игроков до успешного подключения, или до заранее определённого таймаута клиента.
4. Ошибка развертывания
Ваше развертывание может перейти в состояние Ошибка в любой момент по неожиданным причинам. Это более вероятно при тестировании интеграции или новых сборок сервера.
С вас не взимается плата за развертывания в состоянии Ошибка, которые автоматически останавливаются через 24 часа.
Шаги по устранению неполадок:
Проверьте статус сервиса Edgegap на нашей странице мониторинга доступности.
Попробуйте протестировать ваш контейнер сервера локально с помощью Docker Desktop, чтобы исключить проблемы Edgegap.
При обращении за помощью, включите ваш ID развертывания и любые полезные детали чтобы мы могли оперативно расследовать!
5. Развертывание остановлено
Мы никогда не останавливаем ваши серверы без вашего указания, чтобы не повлиять негативно на опыт ваших игроков. Ваше развертывание может быть остановлено по следующим причинам:
Само-останов через DELETE_URL - развертывание остановилось само после ухода игроков и завершения матча,
см. Unreal Engine и Unity руководства по правильной остановке развертываний,
Остановка с вашего бэкенда - ваш бэкенд остановил это развертывание, используя Deployments API,
Максимальная длительность игры - выделенное время в вашем Приложения и версии истекло,
Частные флоты Хост, на котором запускалось ваше развертывание, был удалён через запланированное действие.
После остановки развертывания, мы инициируем корректное завершение отправляя SIGTERM сигнал вашему основному процессу, позволяя короткий период завершения. По истечении этого периода отправляется SIGKILL сигнал для остановки развертывания.
👀 Наблюдаемость
Позвольте игровым серверам взаимодействовать со сторонними сервисами и получайте операционные данные.
Обнаружимость
После того как развертывание готово, ему присваивается URL (fqdn) и внешний порт для каждого внутреннего порта.
Используйте теги развертываний, чтобы легко помечать ваши развертывания и Развертывания.
Исходящий трафик (к клиентам или бэкенду) с ваших игровых серверов никогда не блокируется и не фильтруется.
WebSocket (WS) и Secure WebSocket (WSS)
Чтобы использовать сетевой код на базе WebSocket с Edgegap, у вас есть два варианта:
управляемый сертификат, настраиваемый за 1 минуту без написания кода:
сконфигурируйте ваш Приложения и версии на используйте WebSocket (WS) и включите Upgrade TLS,
используйте 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, выделенная оперативная память в МБ (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, протокол транспортного уровня вашего сетевого кода.
Примеры предполагают, что вы назвали ваш порт gameport (по умолчанию). Каждый порт добавляет дополнительный набор очищенных Приложения и версии переменных: @Super Port! ⇒ ARBITRIUM_PORT_SUPER_PORT_INTERNAL .
ARBITRIUM_BEACON_ENABLED- например,true, если развертывание производится на Частные флоты с Ping-маячки.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 чтобы открыть подробные метрики и аналитические данные о производительности сервера:
Общие сведения: отслеживайте релизы с живым количеством серверов по версиям + обзор использования ресурсов,
Информация о ЦП: устраняйте задержки на серверах из-за операций с высокой нагрузкой на процессор,
Информация о памяти: снижайте перезапуски сервера из-за превышения выделенной памяти,
Сетевая аналитика: обнаруживайте неэффективные сетевые шаблоны и оптимизируйте сетевой код.

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

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

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

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

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

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

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

