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

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

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

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

Геолокация
В качестве альтернативы, предоставьте широту и долготу игроков или координаты предпочтительной локации сервера вместо использования автоматизированной телеметрии. Такой подход требует дополнительной клиентской реализации геопоиска и полностью полагается на решение разработчика игры.
Стратегия геолокации не рекомендуется для Развёртывания оркестрации, за исключением приложений со строгими нормативными требованиями к межрегиональному переносу данных или когда IP игрока недоступен.
Чтобы использовать эту стратегию с Deploy API, укажите публичные IP игроков или геокоординаты в вашем запросе на развёртывание.
Блокировка по региону
Серверы могут размещаться с использованием грубо обобщённого параметра региона, либо:
автоматически выбранного для игрока на основе его метаданных (база аккаунтов игроков), либо
выбранного игроком во время матчмейкинга, что допускает размещение с высокой задержкой между клиентом и сервером.
Использовать только эту стратегию не рекомендуется, так как это может привести к плохой сетевой производительности.
Использование выбора региона как префильтра в сочетании с другой стратегией — лучшая альтернатива.
🟢 Качество подключения
Некоторые игры (и некоторые игроки) более чувствительны к задержкам или лагам, чем другие. Хотя отчёты игроков — отличный индикатор инцидентов или регрессионных багов в масштабе, игрокам может не хватать глубокого понимания сетевых концепций и они быстро перекладывают вину на студии, неткод или серверы.
Первопричины некоторых проблем могут быть скрыты от игроков, поэтому сотрудничество студии и хостинг-провайдера может быть критически важным. Приоритет Edgegap — всегда предоставлять максимально возможный сервис.
Если вы получаете многочисленные отчёты игроков, сталкиваетесь с масштабными сбоями или повторяющимися проблемами, пожалуйста, свяжитесь с нами немедленно через тикет в поддержку на нашей платформе.
Низкая задержка
Задержка игрока — это сочетание задержек при передаче данных между:
физическими устройствами — физический сигнал, проходящий через топологию сети Интернет,
хостом и хостом — возникающих из-за протоколов, транспорта и мер безопасности,
процессами — из-за упаковки/распаковки и обработки данных на клиенте/сервере.
Edgegap снижает физическую задержку, размещая серверы ближе к вашим игрокам для более коротких откликов и меньшего числа сетевых переходов. С локациями у 17 облачных и bare metal провайдеров вы получаете лучший в классе пинг для игроков в любой точке мира.
Покрытие серверами и интернетом по всему миру (не только у Edgegap) ограничено из-за таких факторов, как:
доступность инфраструктуры — качество интернет-соединения в конкретном регионе может быть недостаточным,
природные факторы — высокосложные серверные стойки требуют в основном стабильной среды.
Высокая доступность
Доступность серверов в разных локациях мира меняется со временем, многократно в течение дня. Edgegap автоматически масштабирует вверх/вниз локации по запросу, учитывая:
всплесковый трафик — развёртывания, сделанные в течение 15-минутного периода,
требования к vCPU — больше vCPU на развёртывание увеличивает общий спрос на конкретную локацию,
предложение провайдеров — в некоторых удалённых локациях доступно меньше вариантов провайдеров,
доступность машин — некоторые локации могут предлагать только машины на 4 vCPU или 8 vCPU,
запросы студий для тестирования, QA, раннего доступа, закрытых бет или турниров.
Все запросы на развёртывание приложений объединяются для оценки спроса по локациям. Все организации по умолчанию имеют равный приоритет распределения, с возможностью добавить приватные пулы серверов для корпоративных клиентов, требующих конкретное оборудование или локации.
Пожалуйста, свяжитесь с нами для планирования релиза, или если у вас есть какие-либо запросы по доступности локаций.
Решение проблем игроков
Проблемы игроков могут быть вызваны багами сервера или инцидентами у провайдеров, но также могут возникать из-за третьих сторон, таких как локальные провайдеры интернета, игровые сервисы, баги в низкоуровневых библиотеках, инфраструктурные провайдеры или другие источники.
При устранении неполадок по отчётам игроков или инцидентам учитывайте факторы:
качество матчмейкинга — игроки должны быть близко друг к другу (один регион), чтобы Развёртывания давал лучшие результаты:
см. Матчмейкинг и Ping-маячки наши рекомендации,
см. Подробный обзор чтобы узнать, как найти логи сервера, связанные с отчётами игроков,
региональные проблемы:
локальные интернет-провайдеры (ISP) могут оперативно устранять инцидент,
некоторые регионы (например, Китай, Россия) могут быть ограничены из-за локальных санкций,
уровень кэширования — Edgegap будет отдавать приоритет быстрым развёртываниям в кэшированных локациях:
максимальное время на развёртывание — развёртывания могут проваливаться из-за медленной и тяжёлой инициализации:
см. Приложения и версии чтобы увеличить период тайм-аута,
отложите шаги инициализации до момента, когда они действительно необходимы,
проблемы с образом сервера или интеграцией.
Отображайте ID развёртываний в UI истории матчей клиента чтобы отслеживать отчёты игроков при устранении неполадок.
🔄 Жизненный цикл развёртывания
Развёртывания Edgegap проходят несколько стадий жизненного цикла, обозначаемых статусом развёртывания.
1. Запуск развёртывания
Развёртывание для целей тестирования может быть запущено через:
Unreal Engine — Docker Extension или плагин для проектов Unreal Engine,
Unity — плагин для проектов Unity,
Веб‑панель Dashboard — простой веб-интерфейс для тестирования интеграции сервера.
Развёртывание для боевой продакшен‑окружение должно запускаться через:
Матчмейкинг — поиск других игроков и запуск серверов по требованию (Развёртывания).
Браузер серверов — предварительный прогрев серверов с долгой инициализацией (Развёртывания).
Deploy API — настраиваемая интеграция сервер‑сервер (кастомное масштабирование).
Сохраните request_id (ID развёртывания) и помечайте развёртывания тегами чтобы позже идентифицировать и устранять проблемы.
2. Развёртывание
После запуска развёртывания наша система выполнит ряд шагов в быстрой последовательности:
Телеметрия — мы измеряем сетевую отзывчивость от доступных дата-центров к каждому игроку,
Развёртывание — резервируем мощность и готовимся запустить контейнер вашего сервера,
Загрузка контейнера — запускаем контейнер, устанавливаем зависимости и инициализируем,
Постобработка — добавляем хранение логов, мониторинг и финализируем развёртывание.
Включить Активное кеширование в вашей версии приложения для развертывания серверов за считанные секунды.
Слишком много запросов 429 — чтобы обеспечить стабильность и предотвратить неожиданные счета, мы ограничиваем частоту запросов вашей организации до 40 req/s. Свяжитесь с нами чтобы планировать релизы, оценивать пиковый трафик и подготовиться к успеху.
3. Развёртывание готово
Ваш контейнер полностью инициализирован, и ваш сервер сейчас запускается. В течение нескольких секунд до минуты ваш сервер может всё ещё инициализироваться и не отвечать на запросы игроков, пока ваш игровой движок (или пользовательское рантайм‑окружение) полностью не будет готов принимать подключения игроков.
Как только развёртывание в статусе Ready, повторяйте попытку подключения игрока до успешной, или до заранее заданного клиентского тайм-аута.
Неожиданное аварийное завершение работы сервера приведёт к автоматической перезагрузке вашего сервера. Состояние сервера может быть утрачено.
4. Ошибка развёртывания
Ваше развёртывание может перейти в состояние Error в любой момент по неожиданным причинам. Это более вероятно при тестировании вашей интеграции или новых серверных сборок.
С вас не взимается плата за развёртывания в состоянии Error — они автоматически останавливаются через 24 часа.
Шаги по устранению неполадок:
Проверьте статус сервисов Edgegap на нашей странице мониторинга аптайма.
Попробуйте протестировать контейнер сервера локально с помощью Docker Desktop, чтобы исключить проблемы Edgegap.
Когда просите о помощи, указывайте ID развёртывания и любые полезные детали чтобы мы могли оперативно расследовать!
5. Развёртывание остановлено
Мы никогда не останавливаем ваши серверы без вашего распоряжения, чтобы не ухудшать опыт ваших игроков. Ваше развёртывание может быть остановлено по следующим причинам:
Само-остановка через DELETE_URL — развёртывание остановило себя после выхода игроков и завершения матча,
Остановка с вашего бэкенда — ваш бэкенд остановил это развёртывание через Deployments API,
Максимальная длительность игры — отведённое время в вашем Приложения и версии истекло,
Частные флоты Хост, на котором выполнялось ваше развёртывание, был удалён по расписанию.
👀 Наблюдаемость
Позвольте игровым серверам взаимодействовать со сторонними сервисами и получайте операционные инсайты.
Обнаруживаемость
После Ready развёртыванию назначается URL (fqdn) и внешний порт для каждого внутреннего порта.
Используйте теги развёртываний, чтобы легко помечать ваши развёртывания и Развёртывания.
WebSocket (WS) и безопасные WebSocket (WSS)
Чтобы использовать вебсокет‑базированный неткод с Edgegap, у вас есть два варианта:
управляемый сертификат, настраивается за 1 минуту без написания кода:
настройте ваш Приложения и версии на используйте WebSocket (WS) и включите TLS Upgrade,
используйте Edgegap URL для подключения клиентов (напр.,
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_HOST_ID— напр.,alpha-north-america-70364ef8.Уникальный идентификатор машины, хостящей ваше развёртывание, общий с другими развёртываниями.
ARBITRIUM_PUBLIC_IP— напр.,162.254.141.66.Публичный IP-адрес этого хоста, можно использовать вместо URL для подключения.
ARBITRIUM_DEPLOYMENT_TAGS— напр.,tag1,tag2.Пользовательские теги развёртывания, разделённые запятыми, полезны для простого поиска и фильтрации.
Спецификации ресурсов
ARBITRIUM_HOST_BASE_CLOCK_FREQUENCY— напр.,2000, частота процессора в МГц.ARBITRIUM_DEPLOYMENT_VCPU_UNITS— напр.,256, выделенные vCPU-юниты (1024 = 1 vCPU).ARBITRIUM_DEPLOYMENT_MEMORY_MB— напр.,512, выделенная RAM в МБ (1024 = 1 ГБ).
Управление жизненным циклом
ARBITRIUM_DELETE_URL— напр.,https://api.edgegap.com/v1/self/stop/9f511e17/660.Можно вызывать из развёртывания, развёртывание будет корректно остановлено.
Требуется уникальный одноразовый
ARBITRIUM_DELETE_TOKENвAuthorizationзаголовке.
ARBITRIUM_DELETE_TOKEN— напр.,7df4cd933df87084b34ae80d8abde293.ARBITRIUM_CONTEXT_URL— напр.,https://api.edgegap.com/v1/context/9170f5211e17/17.Можно вызывать только из развёртывания, возвращает больше деталей о развёртывании.
Требуется уникальный
ARBITRIUM_CONTEXT_TOKENвAuthorizationзаголовке.
ARBITRIUM_CONTEXT_TOKEN— напр.,dfaf50b9333b9ee07b22ed247e4a17e6.
Обнаруживаемость
ARBITRIUM_PORT_GAMEPORT_INTERNAL— напр.,7777, внутренний порт для серверного слушателя.ARBITRIUM_PORT_GAMEPORT_EXTERNAL— напр.,31504, внешний порт для клиентских подключений.Значения внешних портов рандомизируются для каждого развёртывания в целях безопасности.
ARBITRIUM_PORT_GAMEPORT_PROTOCOL— напр.,UDP, протокол транспорта вашего неткода.
В примерах предполагается, что вы назвали ваш порт 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 как строка)
Мониторинг панели управления
Наш Панель управления предоставляет утилиты для отслеживания масштабируемости вашего сервера и помощи в операциях.
Аналитика
Найдите панели аналитики в боковом меню в разделе Хостинг серверов и Оркестрация.
🌟 Перейдите на тариф Оплата по мере использования чтобы открыть доступ к подробным метрикам и инсайтам по производительности сервера:
Общие сведения: отслеживайте релизы с количеством серверов в реальном времени по версиям + обзор использования ресурсов,
Информация о CPU: устраняйте отставания серверов из‑за операций, нагружающих процессор,
Информация о памяти: предотвращайте перезапуски серверов из‑за превышения выделенной памяти,
Сетевые показатели: обнаруживайте неэффективные сетевые паттерны и оптимизируйте сетевой код.

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

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

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

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

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

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

В качестве альтернативы, позвольте игрокам выбрать постоянный (всегда онлайн) сервер из списка с Браузер серверов.
Список развёртываний через API и применять фильтры с помощью бэкенд-интеграций:
в или nin
[ "7e709a0d8efd", "4ba353100b4b" ]
в или nin
[ "tagA", "tagB" ]
в или nin
[ "my-app", "my-other-app" ]
в или nin
[ "1.0.0", "prod" ]
Сортируйте результаты по нескольким полям в порядке их появления в запросе:
asc или desc
asc или desc
Примеры запросов с фильтрами:
Не забудьте добавить Authorization заголовок с вашим Edgegap API токеном в запрос.
Вебхуки и обратные вызовы (Postbacks)
Если вам нужно получать простое HTTP-уведомление, когда развёртывание становится Ready или Error, вы можете указать URL вебхука в вашем запросе к API развёртывания.
Вебхуки не повторяются, поэтому если ваш бэкенд не обработал запрос из‑за ограничения скорости или ошибки, вебхук может быть потерян. Используйте вебхуки только для некритичных случаев использования или для отладки.
🚨 Устранение неполадок
При устранении неполадок развёртываний:
убедитесь, что в вашем Развёртывания и Развёртывания,
нет ошибок,
запустите сервер локально, чтобы исключить ошибки интеграции,
ознакомьтесь с шагами по устранению неполадок на этой странице, свяжитесь с нами в сообществе Discord
Последнее обновление
Это было полезно?

