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

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

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

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

Эта стратегия особенно эффективна для хостинга группы игроков, находящихся далеко друг от друга (Северная Америка против Европы или западное побережье против восточного), что часто встречается в предсозданных лобби.
Геолокация
Альтернативно, укажите широту и долготу игроков или координаты предпочитаемой локации сервера вместо использования автоматической телеметрии. Этот подход требует дополнительной реализации гео-lookup на стороне клиента, полностью полагаясь на решение разработчика игры.
Стратегия геолокации не рекомендуется для Развертывания оркестрации, за исключением приложений с жёсткими регуляторными требованиями к межрегиональным передачам данных или когда IP игрока недоступен.
Чтобы использовать эту стратегию с Deploy APIs, укажите публичные IP игроков или геокоординаты в вашем запросе на деплой.
Блокировка региона
Серверы могут размещаться с использованием грубо обобщённого параметра региона, либо:
автоматически выбранного для игрока на основе его метаданных (база данных аккаунтов игроков), либо
выбранного игроком во время матчмейкинга, что допускает размещение с высокой задержкой между клиентом и сервером.
Использование этой стратегии в одиночку не рекомендуется, так как это может привести к плохой сетевой производительности.
Использование выбора региона как предфильтра в сочетании с другой стратегией является лучшей альтернативой.
🟢 Качество соединения
Некоторые игры (и некоторые игроки) более чувствительны к задержке или лагам, чем другие. Хотя отчёты игроков являются хорошим индикатором инцидентов или регрессионных багов в масштабе, игрокам может не хватать глубокого понимания сетевых концепций и они быстро сваливают вину на студии, сетевой код или серверы.
Коренная причина некоторых проблем может быть скрыта от игроков, поэтому сотрудничество студии и провайдера хостинга может быть критически важным. Приоритет Edgegap всегда — предоставлять максимально качественный сервис.
Если вы получаете многочисленные жалобы от игроков, сталкиваетесь с широкомасштабными отказами или повторяющимися проблемами, пожалуйста, незамедлительно свяжитесь с нами через тикет поддержки на нашей платформе.
Низкая латентность
Задержка игрока — это комбинация задержек, возникающих при передаче данных между:
физическими устройствами - физический сигнал, перемещающийся по топологии Интернет-сети,
хост к хосту - возникающая в результате протокольных, транспортных и мер безопасности,
процесс к процессу - возникающая в результате (де)серилизации и обработки данных на клиенте/сервере.
Edgegap уменьшает физическую задержку, размещая серверы ближе к вашим игрокам для более короткого времени ответа и меньшего числа сетевых хопов. С локациями у 17 облачных и bare metal-провайдеров вы получаете лучший в своём классе пинг для игроков в любой точке мира.
Покрытие серверов и интернета во всём мире (не только с Edgegap) ограничено такими факторами, как:
доступность инфраструктуры - качество интернет-соединения в данном регионе может быть недостаточным,
естественные факторы - крайне сложные серверные стойки требуют в основном стабильной среды.
Высокая доступность
Доступность серверов в разных локациях по всему миру будет меняться со временем, изменяясь несколько раз в течение дня. Edgegap автоматически масштабирует вверх/вниз локации по требованию, учитывая:
всплески трафика - деплои, сделанные в течение 15-минутного периода,
требования к vCPU - больше vCPU на деплой увеличивает общий спрос на конкретную локацию,
предложения провайдеров - в некоторых отдалённых локациях доступно меньше вариантов провайдеров,
доступность машин - в некоторых локациях могут предлагаться только машины с 4 vCPU или 8 vCPU,
запросы студий для тестирования, обеспечения качества, раннего доступа, закрытых бета-тестов или турниров.
Все запросы на деплой приложений объединяются для оценки спроса по локациям. По умолчанию у всех организаций равный приоритет распределения, с возможностью добавления приватных пулов серверов для корпоративных клиентов, требующих конкретного оборудования или локаций.
Пожалуйста, свяжитесь с нами, чтобы спланировать релиз, или если у вас есть запросы по доступности локаций.
Разрешение проблем игроков
Проблемы игроков могут быть вызваны багами сервера или инцидентами у провайдера, но также могут возникать из-за третьих сторон, таких как местные провайдеры интернет-услуг, игровые сервисы, баги в низкоуровневых библиотеках, провайдеры инфраструктуры или другие источники.
При устранении жалоб игроков или инцидентов учитывайте факторы:
качество матчмейкинга - игроки должны быть близки друг к другу (в одном регионе) для Развертывания чтобы дать наилучшие результаты:
см. Матчмейкинг и Ping-маяки для наших рекомендаций,
см. Подробный обзор чтобы узнать, как найти серверные логи, связанные с жалобами игроков,
региональные проблемы:
локальные интернет-провайдеры (ISP) могут временно разрешать инциденты,
некоторые регионы (например, Китай, Россия) могут быть ограничены из-за локализованных санкций,
уровень кэширования - Edgegap будет отдавать приоритет быстрым деплоям в кэшированных локациях:
максимальное время на деплой - деплои могут завершаться неудачей из-за медленного и тяжёлого процесса инициализации:
см. Приложения и версии чтобы увеличить период тайм-аута,
отложите шаги инициализации до абсолютной необходимости,
проблемы с образом сервера или интеграцией.
Отображайте идентификаторы деплоймента в UI истории матчей клиента чтобы отслеживать жалобы игроков при устранении неполадок.
Уведомляйте пользователей о масштабных багах, временных проблемах и простоях, чтобы смягчить негативные настроения.
🔄 Жизненный цикл деплоймента
Деплойменты Edgegap проходят несколько этапов жизненного цикла, обозначаемых статусом деплоймента.
1. Запуск деплоймента
Деплоймент для тестовых целей может быть запущен с помощью:
Unreal Engine - Docker Extension или плагина для проектов на Unreal Engine,
Unity - плагина для проектов на Unity,
Веб-интерфейс Dashboard - простой в использовании веб-интерфейс для тестирования интеграции сервера.
Деплоймент для Живая продакшен-среда должна быть запущена с помощью:
Матчмейкинг - находите других игроков и запускайте серверы по требованию (Развертывания).
Браузер серверов - предварительно нагревайте серверы с длительной инициализацией (Развертывания).
Deploy API - кастомная интеграция сервер-сервер (кастомное масштабирование).
Сохраните request_id (ID деплоймента) и помечайте деплойменты чтобы идентифицировать и устранять проблемы позже.
При тестировании с Deploy APIвы можете переопределить CMD в Dockerfile по умолчанию CMD на пользовательскую команду.
2. Деплой
После запуска деплоймента наша система выполнит ряд шагов в быстрой последовательности:
Телеметрия - мы измеряем отзывчивость сети от доступных дата-центров до каждого игрока,
Деплой - мы резервируем ёмкость и готовимся к запуску вашего контейнера сервера,
Загрузка контейнера - мы запускаем контейнер, устанавливаем зависимости и инициализируем,
Постобработка - мы добавляем хранение логов, мониторинг и завершаем деплоймент.
Слишком много запросов 429 - чтобы обеспечить стабильность и предотвратить неожиданные счета, мы ограничиваем скорость запросов вашей организации на 40 req/s. Свяжитесь с нами чтобы планировать релизы, оценивать трафик при запуске и готовиться к успеху.
3. Деплой готов
Ваш контейнер полностью инициализирован, и ваш сервер сейчас запускается. В течение нескольких секунд до минуты сервер может ещё инициализироваться и не отвечать на запросы игроков, пока игровой движок (или пользовательское окружение выполнения) полностью не будет готов принимать подключения игроков.
Когда деплоймент становится Ready, повторяйте попытки подключения игрока до успешного соединения, или до заранее заданного тайм-аута клиента.
4. Ошибка деплоймента
Ваш деплоймент может перейти в состояние Error в любой момент по непредвиденным причинам. Это чаще происходит при тестировании интеграции или новых сборок сервера.
С деплойментов в состоянии Error с вас не взимается плата, они автоматически останавливаются через 24 часа.
Шаги по устранению неполадок:
Проверьте статус сервиса Edgegap на нашей странице мониторинга доступности.
Попробуйте протестировать контейнер сервера локально с помощью Docker Desktop, чтобы исключить проблемы Edgegap.
При обращении за помощью, укажите ID деплоймента и любые полезные детали чтобы мы могли оперативно расследовать!
5. Деплой остановлен
Мы никогда не останавливаем ваши серверы без вашей команды, чтобы не повлиять негативно на опыт ваших игроков. Ваш деплоймент мог быть остановлен по следующим причинам:
Самостоятельная остановка через DELETE_URL - деплоймент остановился сам после того, как игроки ушли и матч завершился,
см. Руководства для и Unreal Engine Unity
по правильной остановке деплойментов, Остановка с вашего бэкенда - ваш бэкенд остановил этот деплоймент с помощью,
Deployments API Максимальная длительность игры Приложения и версии - выделенное время в вашем
Приватные кластеры истекло,
Хост, на котором работал ваш деплоймент, был удалён через запланированное действие. После остановки деплоймента, мы инициируем корректное завершение отправляя SIGTERM сигнал в ваш главный процесс, предоставляя короткий период завершения. После его истечения отправляется SIGKILL
сигнал для остановки деплоймента.
👀 Наблюдаемость
Обнаруживаемость
Позвольте игровым серверам взаимодействовать со сторонними сервисами и получайте оперативную информацию.После Ready деплойменту присваивается URL (fqdn
) и внешний порт для каждого внутреннего порта. Используйте и Развертывания.
теги деплоя, чтобы легко помечать ваши деплойменты Исходящий трафик (к клиентам или бэкенду) с ваших игровых серверов никогда не блокируется
и не фильтруется.
Websockets (WS) и Secure Websockets (WSS)
Чтобы использовать сетевой код на основе websocket с Edgegap, у вас есть два варианта:управляемый сертификат
, настраивается за 1 минуту без написания кода: Приложения и версии на сконфигурируйте ваш
используйте Websocket (WS) и включите TLS Upgrade,
используйте Edgegap URL для подключения клиентов (например,)
https://5fa53fa00a57.pr.edgegap.net/самостоятельно управляемый сертификат
, настраивается за 1 минуту без написания кода: Приложения и версии на , если вы хотите использовать собственный домен:,
используйте Secure Websocket (WSS) настройте собственный поток TLS-сертификатов с кастомной DNS записью (например, на).
Состояние сервера может быть утеряно
Внедряемые переменные
Игровым серверам часто нужна дополнительная информация, такая как IP сервера, значения внутренних портов или другое. Внедрение только для чтения переменных окружения — надёжный независимый от облака способ передачи параметров. Получайте значения переменных с помощью GetEnvironmentVariable в C# или.
См. GetEnvironmentVariable в C++ и Переменные версии приложения Переменные матчмейкера
в дополнение к переменным деплоймента ниже.
Пользовательские переменные
Определите до 20 пользовательских переменных для каждого деплоймента, каждая может содержать до 4 КБ строковых данных.
Избегайте использования зарезервированных имён (ниже), иначе ваши пользовательские переменные будут перезаписаны!
Получайте важную информацию, читая переменные, внедрённые в ваши серверы Edgegap:
ИдентификаторыARBITRIUM_REQUEST_ID- например,.f68e011bfb01
Уникальный ID деплоймента, также называемый request ID. Используется для получения дополнительной информации.
URL деплоймента всегда имеют формат.
{ARBITRIUM_REQUEST_ID}.pr.edgegap.netARBITRIUM_REQUEST_ID162.254.141.66.ARBITRIUM_PUBLIC_IP
Публичный IP-адрес этого хоста, может быть использован для подключения вместо URL.ARBITRIUM_REQUEST_IDARBITRIUM_HOST_ID.alpha-north-america-70364ef8
Уникальный идентификатор машины, размещающей ваш деплоймент, может быть разделён с другими деплойментами.ARBITRIUM_REQUEST_IDARBITRIUM_DEPLOYMENT_TAGS.tag1,tag2 Теги деплоймента, разделённые запятыми,.
удобны для простого поиска и фильтрацииARBITRIUM_REQUEST_IDARBITRIUM_PRIVATE_FLEET_IDPUBLIC_CLOUD Приватные кластеры.
, или идентификатор флота, если хостинг производится на
Спецификации ресурсовARBITRIUM_REQUEST_IDARBITRIUM_HOST_IN_PRIVATE_FLEETfalse Приватные кластеры., указывая, размещён ли хост наARBITRIUM_REQUEST_ID2000ARBITRIUM_HOST_BASE_CLOCK_FREQUENCY, частота процессора в МГц.ARBITRIUM_REQUEST_ID256ARBITRIUM_DEPLOYMENT_VCPU_UNITS, выделенные единицы vCPU (1024 = 1 vCPU).ARBITRIUM_REQUEST_ID512ARBITRIUM_DEPLOYMENT_MEMORY_MB
, выделенная ОЗУ в МБ (1024 = 1 ГБ).
Управление жизненным цикломARBITRIUM_REQUEST_IDARBITRIUM_DELETE_URL.https://api.edgegap.com/v1/self/stop/9f511e17/660 Вызывается из деплоймента,.
деплоймент будет корректно остановлен
Требует уникального одноразовогоARBITRIUM_DELETE_TOKENвзаголовке Authorization.
Требует уникального одноразовогоARBITRIUM_REQUEST_ID7df4cd933df87084b34ae80d8abde293.ARBITRIUM_CONTEXT_URLARBITRIUM_REQUEST_IDhttps://api.edgegap.com/v1/context/9170f5211e17/17.Доступно только из деплоймента, возвращает дополнительные сведения о деплойменте.
Требует уникального
ARBITRIUM_CONTEXT_TOKENARBITRIUM_DELETE_TOKENвзаголовке Authorization.
ARBITRIUM_CONTEXT_TOKENARBITRIUM_REQUEST_IDdfaf50b9333b9ee07b22ed247e4a17e6.
Обнаруживаемость
ARBITRIUM_PORT_GAMEPORT_INTERNALARBITRIUM_REQUEST_ID7777, внутренний порт для прослушивания сервера.ARBITRIUM_PORT_GAMEPORT_EXTERNALARBITRIUM_REQUEST_ID31504, внешний порт для подключений клиентов.Значения внешних портов рандомизируются для каждого деплоймента в целях безопасности.
ARBITRIUM_PORT_GAMEPORT_PROTOCOLARBITRIUM_REQUEST_IDUDP, протокол транспортного слоя вашего сетевого кода.
В примерах предполагается, что вы назвали ваш порт gameport (по умолчанию). Каждый порт добавляет дополнительный набор очищенных Приложения и версии переменных: @Super Port! ⇒ ARBITRIUM_PORT_SUPER_PORT_INTERNAL .
ARBITRIUM_BEACON_ENABLEDARBITRIUM_REQUEST_IDtrue, если деплой осуществляется на Приватные кластеры с Ping-маяки.ARBITRIUM_HOST_BEACON_PUBLIC_IPARBITRIUM_REQUEST_ID139.177.198.69, публичный IP ближайшего бика.ARBITRIUM_HOST_BEACON_PORT_UDP_EXTERNALARBITRIUM_REQUEST_ID30199, для измерения пинга по UDP.ARBITRIUM_HOST_BEACON_PORT_TCP_EXTERNALARBITRIUM_REQUEST_ID30456, для измерения пинга по TCP.
Структурированная информация (JSON в виде строки)
Переменные окружения хранятся в виде сериализованных JSON, распарсьте их с помощью SDK или собственного метода.
Мониторинг панели управления
Наш Панель управления предоставляет инструменты для мониторинга масштабируемости вашего сервера и помощи в операциях.
Аналитика
Найдите панели аналитики в боковом меню в разделе Хостинг серверов и Оркестрация.
🌟 Обновитесь до тарифа Pay as You Go чтобы открыть подробные метрики производительности сервера и аналитические данные:
Общие сведения: отслеживайте релизы с количеством серверов в реальном времени по версиям + обзор использования ресурсов,
Информация о CPU: устраняйте неполадки с задержками на серверах из-за операций, нагружающих процессор,
Информация о памяти: снижайте перезапуски серверов из-за превышения выделенной памяти,
Сетевые сведения: обнаруживайте неэффективные сетевые шаблоны и оптимизируйте сетевой код.

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

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

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

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

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

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

Перечислять развертывания через API и применять фильтры с бэкенд-интеграциями:
ARBITRIUM_DELETE_TOKEN GetEnvironmentVariable в C# nin
[ "7e709a0d8efd", "4ba353100b4b" ]
ARBITRIUM_DELETE_TOKEN GetEnvironmentVariable в C# nin
[ "tagA", "tagB" ]
ARBITRIUM_DELETE_TOKEN GetEnvironmentVariable в C# nin
[ "my-app", "my-other-app" ]
ARBITRIUM_DELETE_TOKEN GetEnvironmentVariable в C# nin
[ "1.0.0", "prod" ]
eq GetEnvironmentVariable в C# neq GetEnvironmentVariable в C#
lt GetEnvironmentVariable в C# lte GetEnvironmentVariable в C#
gt GetEnvironmentVariable в C# gte
5
Каждый атрибут может иметь не более одного оператора фильтра в одном запросе. Смотрите Справочник API для получения дополнительной информации.
Сортируйте результаты по нескольким полям в порядке их появления в запросе:
asc GetEnvironmentVariable в C# desc
asc GetEnvironmentVariable в C# desc
Примеры запросов с фильтрами:
Список Развертываний с ошибкой для устранения неполадок и удаления.
Закодированный URL:
Отформатированный JSON-запрос:
Список Развертывания с устаревшей версией приложения чтобы подтвердить, что релиз завершён.
Закодированный URL:
Отформатированный JSON-запрос:
Не забудьте добавить в заголовок с вашим Edgegap API токеном в запрос.
Вебхуки и постбеки
Получайте простые HTTP-уведомления на ваш игровой бэкенд об изменениях в Развертывания указав URL вебхука в вашем запросе API развертывания. Доступно для:
При готовности: контейнер развертывания запущен успешно (сервер начинает инициализацию после этого),
При ошибке: развертывание не удалось запустить и произошла Развертывания ,
При завершении: Развертывания и игровой сервер более недоступен.
Вебхуки Ready и Error никогда не будут срабатывать для одного и того же развертывания одновременно.
Вебхуки не повторяются, поэтому если ваш бэкенд не обработал запрос из-за ограничения скорости или ошибки, вебхук может быть утерян. Используйте вебхуки только для некритичных случаев использования или целей отладки.
Вебхуки отслеживают жизненный цикл развертывания, но не знают о состоянии инициализации вашей сцены/уровня. Чтобы отслеживать прогресс загрузки сцены/уровня, реализуйте пользовательский вебхук на вашем игровом сервере.
🚨 Устранение неполадок
При устранении неполадок развертываний:
убедитесь, что в ваших Развертывания и Развертывания,
запустите сервер локально, чтобы исключить ошибки интеграции,
просмотрите шаги по устранению неполадок на этой странице,
свяжитесь с нами в Сообществе Discord и укажите ID вашего развертывания.
См. Развертывания для наших рекомендаций по работе с отзывами сообщества игроков.
Клиенты не могут подключиться к серверу - Превышено время ожидания запроса., 请求超时 , ConnectionFailed , или Проверка порта не прошла.
Во-первых, убедитесь, что развертывание готово (Ready) и в журнале развертывания нет исключений или ошибок времени выполнения. Если ваше развертывание остановлено, просмотрите логи в нашей Панель управления.
Если вы используете сетевой стек Mirror, вам необходимо включить "Auto Start Server” выбранный в вашем
NetworkManager, пересоберите, запушьте и повторно разверните сервер.Если вы используете сетевой стек FishNet, вам нужно включить “Start on Headless” в вашем
ServerManager, пересоберите, запушьте и повторно разверните сервер.Если вы используете Photon Fusion 2, убедитесь, что ваш сервер передаёт публичный IP развертывания, внешний порт и
roomCodeна сервере, а клиент использует тот же код комнаты в параметре "NetworkRunner.StartGame" параметрStartGameArgs. ID развертывания (напримерb63e6003b19f) — отличный выбор, так как он глобально уникален и легко доступен клиенту через Матчмейкер присвоение и для Подробный обзор.Далее, пожалуйста, убедитесь, что настройки порта в сетевых настройках сборки сервера соответствуют внутреннему порту в вашем Версия приложения. Вы можете изменить сопоставление портов, отредактировав Версия приложения без пересборки. Найдите ваш протокол в интеграции сетевого стека.
Пожалуйста, убедитесь, что ваш игровой клиент подключается к внешнему порту отображаемому на странице сведений о развертывании; это значение всегда будет рандомизировано по соображениям безопасности.
Если вы используете Secure Websocket (WSS) в интеграции сетевого стека, убедитесь, что Версия приложения конфигурация порта для порта WSS имеет включённый TLS Upgrade.
Находитесь ли вы в Китае и используете Smart Fleets? Ваше соединение может быть заблокировано Великим файрволом. Рассмотрите возможность добавления сервера, расположенного в Китае, в ваш флот или использования VPN для подключения.
Моё развертывание остановилось/перезапустилось, и я больше не могу получить доступ к его журналам.
В случае, если процесс сервера аварийно завершился из-за исключения, наша система попытается автоматически перезапустить сервер. Рассмотрите возможность тестирования сервера локально, чтобы выявить коренную причину.
Мы храним журналы только на время развертывания, если вы хотите просматривать логи после остановки развертывания, пожалуйста, интегрируйте стороннее хранилище логов.
См. Развертывания чтобы выяснить все причины остановки вашего развертывания.
Моё развертывание автоматически остановилось через X минут.
Развертывания в бесплатном тарифе имеют лимит времени 60 минут, рассмотрите возможность обновления аккаунта.
Все развертывания будут завершены через 24 часа работы в соответствии с нашей политикой очистки серверов для обслуживания инфраструктуры и чтобы предотвратить накопление непредвиденных расходов, если развертывание не было корректно остановлено. Для долгоживущих серверов рассмотрите использование Приватные кластеры с Хранилище (Persistence).
См. Развертывания чтобы выяснить все причины остановки вашего развертывания.
Моё развертывание готово, но я не могу подключиться в течение нескольких минут после этого.
После того как развертывание становится 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).
Что произойдёт, если игрок покинет моё развертывание?
По умолчанию серверы не отклоняют подключения игроков. Аутентификация игроков зависит от ваших разработчиков, так как можно использовать много разных методов и провайдеров аутентификации игроков.
Игровые клиенты могут сохранять информацию о подключении локально, чтобы попытаться переподключиться в случае неожиданного падения клиента.
Чтобы позволить игрокам присоединяться к уже начатым играм, рассмотрите использование Подробный обзор GetEnvironmentVariable в C# Сессий.
Мой сервер показывает 100% загрузку CPU после становления готовым.
Это может быть не проблемой, поскольку игровые движки часто выполняют операции, нагружающие CPU, во время инициализации сервера. Если использование CPU не снизится через 2-3 минуты после запуска развертывания, возможно, потребуется оптимизировать сервер или увеличить ресурсы версии приложения.
Снижение частоты тиков может повлиять на загрузку CPU, так как сервер выполняет меньше операций обмена сообщениями.
Если вы используете сетевой стек Mirror, вам необходимо включить "Auto Start Server” выбранный в вашем
NetworkManager, пересоберите, запушьте и повторно разверните сервер.Если вы используете сетевой стек FishNet, вам нужно включить “Start on Headless” в вашем
ServerManager, пересоберите, запушьте и повторно разверните сервер.В бесплатном тарифе вам доступно до 1.5 vCPU и 3 ГБ памяти (RAM).
Вы можете увеличить выделенные ресурсы при создании новой версии приложения. Вы можете дублировать версию приложения в нашей панели управления и при необходимости отрегулировать эти значения без пересборки сервера или образа.
Моё развертывание перезапускается повторно и показывает ошибку `OOM kill`.
Это поведение вызвано превышением выделенного объёма памяти. Рассмотрите оптимизацию использования памяти с помощью пула объектов, сжатия или удаления ненужных объектов в сцене.
Убедитесь, что ваш проект загружает сцену по умолчанию, содержащую ваш
NetworkManagerи что сцена включена в Build Settings Unity.В бесплатном тарифе вам доступно до 1.5 vCPU и 3 ГБ памяти (RAM).
Вы можете увеличить выделенные ресурсы при создании новой версии приложения. Вы можете дублировать версию приложения в нашей панели управления и при необходимости отрегулировать эти значения без пересборки сервера или образа.
Последнее обновление
Это было полезно?

