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

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

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

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

Эта стратегия особенно эффективна для размещения группы игроков, находящихся далеко друг от друга (Северная Америка против Европы или западное побережье против восточного), что часто бывает в готовых лобби.
Геолокация
В качестве альтернативы, укажите целевые координаты широты и долготы или публичный IP-адрес ping-маяка в предпочтительном регионе. Этот подход требует дополнительной реализации геопоиска на стороне клиента и полностью полагается на решение разработчика.
Региональная блокировка
Некоторые архитектуры или аудитории не предназначены для перехода в соседние регионы по причинам соответствия требованиям, техническим или операционным причинам. Рассмотрите Server Browser с региональными политиками масштабирования.
🟢 Качество соединения
Некоторые игры (и некоторые игроки) более чувствительны к задержке или лагам, чем другие. Хотя сообщения игроков — отличный индикатор инцидентов или регрессионных ошибок в масштабе, игрокам может не хватать глубокого понимания сетевых концепций и они быстро возлагают вину на студии, netcode или серверы.
Корневая причина некоторых проблем может быть скрыта от игроков, поэтому сотрудничество студии и хостинг-провайдера может быть критически важным. Приоритет Edgegap — всегда предоставлять наилучший возможный сервис.
Если вы получаете многочисленные сообщения от игроков, испытываете массовые сбои или повторяющиеся проблемы, пожалуйста, немедленно свяжитесь с нами через тикет поддержки в нашей платформе.
Низкая задержка
Задержка игрока — это совокупность задержек при передаче данных между:
физическими устройствами — физическим сигналом, проходящим через топологию интернет-сети,
от хоста к хосту — возникающая из-за протоколов, транспорта и мер безопасности,
от процесса к процессу — возникающая из-за распаковки/упаковки и обработки данных в клиенте/сервере.
Edgegap снижает физическую задержку, размещая серверы ближе к вашим игрокам, чтобы обеспечить более короткое время отклика и меньшее число сетевых переходов. Благодаря локациям у 17 облачных и bare metal-провайдеров вы получаете лучший в своем классе пинг для игроков в любой точке мира.
Покрытие серверов и интернета по всему миру (не только у Edgegap) ограничено из-за таких факторов, как:
доступность инфраструктуры — качество интернет-соединения в данном регионе может быть недостаточным,
природные факторы — очень сложные серверные стойки требуют в основном стабильной среды.
Высокая доступность
Доступность серверов в различных локациях по всему миру со временем меняется, меняясь несколько раз в течение дня. Edgegap автоматически масштабирует вверх/вниз локации по требованию, учитывая:
всплеск трафика — развертывания, выполненные в течение 15-минутного периода,
требования к vCPU — большее число vCPU на развертывание увеличивает общий спрос на конкретную локацию,
предложения провайдера — в некоторых удаленных локациях доступно меньше вариантов провайдеров,
доступность машин — в некоторых локациях могут быть доступны только машины с 4 vCPU или 8 vCPU,
запросы студии для тестирования, контроля качества, раннего доступа, закрытых бета-версий или турниров.
Запросы на развертывание всех приложений объединяются для оценки спроса по локациям. По умолчанию все организации имеют равный приоритет распределения, с возможностью добавить частные пулы серверов для корпоративных клиентов, которым требуется определенное оборудование или локации.
Пожалуйста, свяжитесь с нами, чтобы спланировать релизили если у вас есть какие-либо запросы относительно доступности локаций.
Устранение проблем игроков
Проблемы игроков могут быть вызваны ошибками сервера или инцидентами у провайдера, но также могут возникать из-за третьих сторон, таких как местные ISP, игровые сервисы, ошибки в низкоуровневых библиотеках, поставщики инфраструктуры или другие источники.
При разборе сообщений игроков или инцидентов учитывайте факторы:
качество матчмейкинга — игроки должны быть близко друг к другу (в одном регионе) для Развертывания чтобы получить наилучшие результаты:
см. Подбор игроков и Маяки Ping для наших рекомендаций,
см. Подробный обзор чтобы узнать, как найти серверные логи, связанные с сообщениями игроков,
региональные проблемы:
местные интернет-провайдеры (ISP) могут в данный момент устранять инцидент,
некоторые регионы (например, Китай, Россия) могут быть ограничены из-за локальных санкций,
уровень кэширования — Edgegap будет отдавать приоритет быстрым развертываниям в кэшированных локациях:
максимальное время на развертывание — развертывания могут завершиться неудачей из-за медленного и тяжелого процесса инициализации:
см. Приложения и версии чтобы увеличить период таймаута,
откладывайте шаги инициализации до тех пор, пока они не станут абсолютно необходимыми,
проблемы с образом сервера или интеграцией.
Отображайте ID развертываний в интерфейсе истории матчей клиента чтобы отслеживать сообщения игроков при устранении неполадок.
Уведомляйте пользователей о массовых ошибках, временных проблемах и сбоях, чтобы смягчить негативный настрой.
🔄 Жизненный цикл развертывания
Развертывания Edgegap проходят несколько этапов жизненного цикла, обозначаемых статусом развертывания.
1. Начало развертывания
Развертывание для целей тестирования может быть запущено с помощью:
Unreal Engine — Docker Extension или плагина для проектов Unreal Engine,
Unity — плагина для проектов Unity,
Веб-интерфейс панели управления — простой в использовании веб-интерфейс для тестирования интеграции сервера.
Развертывание для живой production-среды следует запускать с помощью:
Подбор игроков — находить других игроков и запускать серверы по требованию (Развертывания).
Server Browser — предварительно прогревать серверы с долгой инициализацией (Развертывания).
API развертывания — настраиваемая интеграция сервер-сервер (пользовательское масштабирование).
Сохранить request_id (ID развертывания) и помечайте развертывания чтобы потом идентифицировать и устранять проблемы.
При тестировании с API развертывания, вы можете переопределить стандартный Dockerfile CMD с помощью пользовательской команды.
2. Развертывание
После запуска развертывания наша система выполнит ряд шагов в быстрой последовательности:
Телеметрия — мы измеряем сетевую отзывчивость от доступных дата-центров до каждого игрока,
Развертывание — мы резервируем ресурсы и готовим запуск контейнера вашего сервера,
Запуск контейнера — мы запускаем контейнер, устанавливаем зависимости и выполняем инициализацию,
Постобработка — мы добавляем хранение логов, мониторинг и завершаем развертывание.
Слишком много запросов 429 — чтобы обеспечить стабильность и предотвратить неожиданные счета, мы ограничиваем частоту запросов для вашей организации до 40 запр./с. Свяжитесь с нами чтобы спланировать релизы, оценить стартовый трафик и подготовиться к успеху.
3. Развертывание готово
Ваш контейнер полностью инициализирован, и ваш сервер сейчас запускается. В течение нескольких секунд или минуты сервер все еще может инициализироваться и не отвечать на запросы игроков, пока игровой движок (или пользовательская среда выполнения) полностью не будет готов принимать подключения игроков.
Когда развертывание будет готово, повторяйте подключение игрока, пока оно не завершится успешноили до заранее заданного таймаута клиента.
4. Ошибка развертывания
Ваше развертывание может в любой момент оказаться в состоянии Unprocessable по неожиданным причинам. Это более вероятно при тестировании вашей интеграции или тестировании новых серверных сборок.
За развертывания в состоянии Error плата не взимается; они автоматически останавливаются через 24 часа.
Шаги по устранению неполадок:
Проверьте статус сервиса Edgegap через нашу страницу мониторинга доступности.
Попробуйте протестировать контейнер вашего сервера локально с помощью Docker Desktop, чтобы исключить проблемы на стороне Edgegap.
При обращении за помощью укажите ID развертывания и любые полезные детали чтобы мы могли оперативно разобраться!
5. Развертывание остановлено
Мы никогда не останавливаем ваши серверы без вашего указаниячтобы не ухудшить опыт ваших игроков. Ваше развертывание может быть остановлено по следующим причинам:
Самоостановка через DELETE_URL — развертывание остановилось само после того, как игроки ушли и матч завершился,
см. Unreal Engine и Unity руководства по правильной остановке развертываний,
Остановка из вашего бэкенда — ваш бэкенд остановил это развертывание с помощью API развертываний,
Максимальная длительность игры — отведенное время в вашем Приложения и версии истекло,
Private Fleets Хост, на котором работало ваше развертывание, был удален в ходе запланированного действия.
Когда развертывание остановлено, мы запускаем корректное завершение путем отправки SIGTERM сигнала вашему основному процессу, предоставляя короткий период на завершение. По его истечении SIGKILL отправляется сигнал для остановки развертывания.
👀 Наблюдаемость
Позвольте игровым серверам взаимодействовать со сторонними сервисами и получать операционные данные.
Обнаруживаемость
После готовности развертыванию назначается URL (fqdn) и внешний порт для каждого внутреннего порта.
Используйте теги развертывания (до 40 символов), чтобы легко помечать ваши развертывания и Развертывания.
Исходящий трафик (к клиентам или бэкенду) с ваших игровых серверов никогда не блокируется или не фильтруется.
WebSocket (WS) и Secure WebSocket (WSS)
Чтобы использовать netcode на основе WebSocket с Edgegap, у вас есть два варианта:
управляемый сертификат, настраивается за 1 минуту без написания кода:
настройте ваш Приложения и версии на используйте WebSocket (WS) и включите 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.Уникальный идентификатор развертывания, также называемый 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 пула, если размещено в Private Fleets.
Характеристики ресурсов
ARBITRIUM_HOST_IN_PRIVATE_FLEET- напримерfalse, указывающий, размещено ли в Private Fleets.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, если развертывание размещается в Private Fleets с Маяки 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 или собственного метода.
Мониторинг панели управления
Наш Панель управления предоставляет инструменты для мониторинга масштабируемости вашего сервера и помощи в эксплуатации.
Аналитика
Найдите аналитические панели в боковом меню в категории Server Hosting & Orchestration.
🌟 Обновитесь до тарифа Pay as You Go чтобы получить доступ к подробным метрикам производительности сервера и аналитике:
Общие сведения: отслеживайте релизы с количеством серверов в реальном времени по версии + обзором использования ресурсов,
Аналитика по CPU: устраняйте неполадки с зависающими серверами из-за ресурсоемких операций процессора,
Аналитика по памяти: предотвращайте перезапуски сервера из-за превышения выделенной памяти,
Аналитика по сети: обнаруживайте неэффективные сетевые шаблоны и оптимизируйте netcode.

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

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

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

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

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

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

Получать список развертываний с помощью API и применять фильтры с помощью backend-интеграций:
в или nin
[ "7e709a0d8efd", "4ba353100b4b" ]
в или nin
[ "tagA", "tagB" ]
в или nin
[ "my-app", "my-other-app" ]
в или nin
[ "1.0.0", "prod" ]
в или nin
[ "fleet-eu", "fleet-us" ]
ilike
"%-eu%"
в или nin
[ "alpha-north-america-95fab093" ]
ilike
"%north-america%"
Каждый атрибут может иметь не более 1 оператора фильтра в одном запросе. См. Справочник API подробнее.
Сортируйте результаты по нескольким полям в порядке их появления в запросе:
asc или desc
available_session_sockets
asc или desc
Примеры запросов фильтрации:
Список Развертывания с ошибкой для устранения неполадок и удаления.
Закодированный URL:
Форматированный JSON-запрос:
Список Развертывания с устаревшей версией приложения чтобы убедиться, что релиз завершен.
Закодированный URL:
Форматированный JSON-запрос:
Не забудьте добавить Authorization заголовок с вашим токеном API Edgegap в запрос.
Вебхуки
Получайте простые HTTP-уведомления в backend вашей игры об изменениях в Развертывания указав URL вебхука в своем запросе API развертывания. Доступно для:
При готовности: контейнер развертывания успешно запущен (после этого сервер начинает инициализацию),
При ошибке: развертывание не удалось запустить, и Развертывания произошла ошибка,
При завершении: Развертывания и игровой сервер больше недоступен.
Вебхуки Ready и Error никогда не будут вызваны для одного и того же развертывания.
Вебхуки не повторяются, так что если ваш backend не обработает запрос из-за ограничения частоты или ошибки, webhook может быть потерян. Используйте webhooks только для некритичных сценариев использования или целей отладки.
Вебхуки отслеживают жизненный цикл развертывания, но не знают о состоянии инициализации вашей сцены/уровня. Чтобы отслеживать прогресс загрузки вашей сцены/уровня, реализуйте пользовательский webhook на своем игровом сервере.
🚨 Устранение неполадок
При устранении неполадок с развертываниями:
убедитесь, что в вашем Развертывания и Развертывания,
запустите сервер локально, чтобы исключить ошибки интеграции,
ознакомьтесь с шагами по устранению неполадок на этой странице,
свяжитесь с нами в Community Discord и укажите ID вашего развертывания.
См. Развертывания наши рекомендации по работе с отзывами сообщества игроков.
Не удается подключить клиентов к серверу - Время ожидания запроса истекло., Время ожидания запроса истекло. , ConnectionFailed , или Проверка порта не удалась.
Сначала убедитесь, что развертывание находится в состоянии Ready и в журнале развертывания нет исключений или ошибок во время выполнения. Если ваше развертывание остановилось, проверьте журналы в нашем Панель управления.
Если вы используете сетевой код Mirror, вам нужно иметь «Auto Start Server» выбранным в вашем
NetworkManager, пересоберите, запушьте и повторно разверните ваш сервер.Если вы используете сетевой код FishNet, вам нужно включить «Start on Headless» в вашем
ServerManager, пересоберите, запушьте и повторно разверните ваш сервер.Если вы используете сетевой код Photon Fusion 2, убедитесь, что ваш сервер передаёт публичный IP развертывания, внешний порт и
roomCodeна сервере, а также тот же код комнаты в клиенте в «NeworkRunner.StartGame» параметреStartGameArgs. Идентификатор развертывания (например,b63e6003b19f) — отличный выбор, так как он глобально уникален и легко доступен клиенту через матчмейкер назначение и к Подробный обзор.Далее, пожалуйста, убедитесь, что настройка порта в параметрах сетевого кода вашей серверной сборки совпадает с внутренним портом в вашем версии приложения. Вы можете изменить сопоставление портов, отредактировав версии приложения без пересборки. Найдите ваш протокол в интеграции сетевого кода.
Пожалуйста, убедитесь, что ваш игровой клиент подключается к внешнему порту указанному на странице сведений о развертывании; это значение всегда будет случайным по соображениям безопасности.
Если вы используете протокол Secure Websocket (WSS) в интеграции сетевого кода, убедитесь, что в версии приложения настройке порта для WSS включено TLS Upgrade.
Вы находитесь в Китае и используете Smart Fleets? Ваше соединение может быть заблокировано Великим китайским файрволом. Рассмотрите возможность добавления сервера, расположенного в Китае, в ваш флот, или используйте VPN для подключения.
Моё развертывание остановилось/перезапустилось, и я больше не могу получить доступ к его логам.
Если процесс сервера аварийно завершится из-за исключения, наша система попытается автоматически перезапустить сервер. Рекомендуем протестировать ваш сервер локально, чтобы выявить первопричину.
Мы храним логи только в течение времени развертывания; если вы хотите просмотреть логи после остановки развертывания, пожалуйста, интегрируйте стороннее хранилище логов.
См. Развертывания чтобы выяснить все причины остановки вашего развертывания.
Моё развертывание автоматически остановилось через X минут.
Развертывания на бесплатном тарифе имеют ограничение по времени 60 минут; пожалуйста, рассмотрите возможность обновления аккаунта.
Все развертывания будут завершены после 24 часов работы в соответствии с нашей политикой санитарной очистки серверов, для обслуживания инфраструктуры и чтобы предотвратить неожиданные расходы, если развертывание не было корректно остановлено. Для долгоживущих серверов рассмотрите использование Private Fleets с Персистентность.
См. Развертывания чтобы выяснить все причины остановки вашего развертывания.
Моё развертывание готово, но я не могу подключиться ещё несколько минут после этого.
Как только развертывание становится Ready, начинается инициализация игрового движка. Этот процесс может занять от нескольких секунд до нескольких минут, и в этот период сервер не принимает подключения игроков.
Рассмотрите возможность оптимизации инициализации сервера, чтобы сократить этот период времени.
Игровые клиенты должны повторять попытку подключения с интервалом в 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).
Что произойдёт, если игрок покинет моё развертывание?
По умолчанию серверы не отклоняют подключения игроков. Аутентификация игроков — на усмотрение ваших разработчиков, поскольку можно использовать множество разных методов и провайдеров аутентификации игроков.
Игровые клиенты могут хранить информацию о подключении локально, чтобы попытаться переподключиться в случае неожиданных сбоев клиента.
Чтобы позволить игрокам присоединяться к уже идущим играм, рассмотрите возможность использования Подробный обзор или Sessions.
На моём сервере после перехода в состояние готовности загрузка CPU составляет 100%.
Это может не быть проблемой, поскольку игровые движки, как правило, выполняют ресурсоёмкие операции во время инициализации сервера. Если загрузка 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).
Вы можете увеличить выделенные ресурсы при создании новой версии приложения. Вы можете дублировать вашу версию приложения в нашей панели управления и при необходимости изменить эти значения, без пересборки вашего сервера или образа.
Последнее обновление
Это было полезно?

