boltРазвертывания

Узнайте о развертываниях и их жизненном цикле — концепции и лучшие практики для более глубокого понимания.

🗺️ Оркестрация

Запускайте новые серверы за считанные секунды, чтобы удовлетворять потребности в мощности с нашим облачно-нативным подходом к edge-вычислениям. Мы рассматриваем серверы как скот, а не домашних питомцевarrow-up-right - полностью заменяя неисправные экземпляры вместо того, чтобы вручную «лечить» каждый из них.

circle-info

Ваш выбор оркестрации будет влиять на стоимость devops, стоимость серверов и масштабируемость.

circle-check

Чтобы полностью понять все плюсы и минусы, давайте сравним различные методы оркестрации.

Сопряжение по матчу

Золотой стандарт для современных студий, обеспечивающий самую простую интеграцию и лучшую экономическую эффективность.

👍 Преимущества

  • Лучшая экономическая эффективность — масштабирование в реальном времени для удовлетворения спроса игроков поминутно.

  • Минимальная стоимость devops благодаря хостингу без привязки к региону, Edgegap автоматизирует 99% задач.

  • Минимальный пинг благодаря более чем 615 площадкам в публичной облачной инфраструктуре Edgegap.

  • Самое быстрое масштабирование вверх (burst-способность) в случае неожиданного всплеска трафика.

  • Высочайший стандарт безопасности и предотвращения читерства игроков (серверная авторитетность).

  • Минимальное влияние неожиданного сбоя сервера на игроков, затрагивающее только один матч.

👎 Недостатки

  • Освоение новой ментальной модели оркестрации требует первоначальных усилий на адаптацию.

  • Серверы, работающие дольше 24 часов, будут автоматически завершены.

🧩 Лучше всего подходит для

  • Игр, чувствительных к задержке — когда оптимизация netcode не может компенсировать высокий пинг:

    • шутеры от первого лица, файтинги, VR и XR (виртуальная и расширенная реальность), …

  • Игр с верхним пределом длительности матча по замыслу,

    • Battle Royale, PvPvE, кооперативные шутеры, MOBA, спортивные игры, ARPG и dungeon crawler, …

🔎 Обнаруживаемость

circle-info

Edgegap автоматически масштабирует все 615+ серверных локаций вверх/вниз в зависимости от активности игроков в каждом регионе. Готовьтесь к успеху — без проблем масштабируйтесь до 14 миллионов одновременных пользователей за 60 минутarrow-up-right.

Региональный резерв

Традиционная модель для постоянных миров с пользовательским контентом и социальными MMO-играми.

👍 Преимущества

  • Знакомый и легко понятный старомодный подход для ветеранов, закалённых боями.

  • Высочайший стандарт безопасности и предотвращения читерства игроков (серверная авторитетность).

  • Легко предсказуемая стоимость на основе ежемесячного обязательства.

👎 Недостатки

  • Более высокая стоимость хостинга — каждый регион требует одного или нескольких простаивающих резервных серверов (burst-ёмкость).

  • Более высокая стоимость devops — масштабирование, операции и обслуживание дублируются для каждого региона.

  • Регионы с меньшей базой игроков испытывают высокий пинг из-за подключения к удалённым серверам.

🧩 Лучше всего подходит для

  • Постоянные миры с пользовательским контентом, сохраняемым на сервере даже тогда, когда игроки оффлайн.

    • MMO, песочницы с постройкой базы или размещением объектов, extraction shooters, ...

  • игры, терпимые к задержке — когда не требуется серверная авторитетная физика в реальном времени:

    • мобильные игры, кооперативные игры, TCG/CCG, пошаговые стратегии, …

  • Асинхронный мультиплеер, где сбои сервера минимально влияют на игровой опыт:

    • гонки против призраков, грабёж базы противника, игры на строительство/фермерство на основе таймера, …

  • приложения с тяжёлым процессом инициализации — когда подготовка серверов занимает минуты.

🔎 Обнаруживаемость

circle-info

Смотрите Управляемые кластеры о самостоятельном хостинге ваших микросервисов и backend-сервисов на Edgegap.

Peer to Peer

Перенесите усилия разработки с выделенных серверов на relay netcode для некомпетитивных игр.

Связанные темы: listen servers, player-host authority, NAT punch-through.

👍 Преимущества

  • Минимальная стоимость хостинга, требующая только Relay-серверов для решения NAT punch-through.

  • Минимальная стоимость devops — обслуживание требуется только для клиентских сборок и каналов распространения.

  • Минимальное влияние неожиданного сбоя сервера на игроков, затрагивающее только один матч.

  • Легко реализовать и быстро прототипировать, без необходимости какой-либо backend-разработки.

👎 Недостатки

  • Повышенные затраты на разработку peer-to-peer netcode, требующие навыков параллельного программирования.

  • Худшие времена пинга и наибольшая чувствительность к неблагоприятным сетевым условиям (например, мобильный интернет).

  • Слабейшая безопасность, уязвимость к атакам man-in-the-middle и перехвату сессий.

  • Риск потери сессий при выходе хоста, если не реализовать собственную миграцию хоста.

🧩 Лучше всего подходит для

  • Кооперативные и казуальные игры — когда читерство не портит удовольствие и не ломает игру,

    • Детские игры, исследовательские игры, приключения, …

🔎 Обнаруживаемость

circle-check

📍 Размещение серверов

Независимо от того, какой метод оркестрации вы выберете, выбор правильной серверной локации для группы игроков критически важен для обеспечения максимально возможного пинга и оптимального игрового опыта. Узнайте о различных стратегиях размещения серверов и о том, как они влияют на ваших игроков.

circle-info

Ваша стратегия размещения серверов будет влиять на опыт игроков, удержание и отзывы о вашей игре.

circle-check
circle-info

Смотрите Развертывания на анализировать размещение серверов в реальном времени, в масштабе.

Оценка сервера

Стратегия Server Score использует запатентованную методологию Edgegap, которая оптимизирует размещение серверов для каждого матча индивидуально. Выполняет ненавязчивую телеметрию, чтобы приблизительно определить сетевую близость каждого игрока к нашим серверным локациям и выбрать сервер, который обеспечивает лучшее:

  • отзывчивость - в среднем обеспечивает минимальный пинг для всех игроков,

  • справедливость - обеспечивает сбалансированный и справедливый пинг для всех игроков.

circle-check

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

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

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

circle-info

Эта стратегия особенно эффективна для хостинга группы игроков, находящихся далеко друг от друга (Северная Америка против Европы или западное побережье против восточного), что часто бывает с заранее созданными лобби.

Геолокация

В качестве альтернативы, предоставьте широту и долготу игроков или координаты предпочтительной серверной локации вместо использования автоматизированной телеметрии. Этот подход требует дополнительной реализации геопоиска на стороне клиента и полностью полагается на решение разработчика игры.

circle-exclamation
circle-check

Блокировка региона

Серверы могут размещаться с использованием грубо обобщённого параметра региона, либо:

  • автоматически выбранного для игрока на основе его метаданных (база данных аккаунта игрока), либо

  • выбранного игроком во время матчмейкинга, что позволяет размещение с высокой задержкой между клиентом и сервером.

triangle-exclamation
circle-check

🟢 Качество соединения

Некоторые игры (и некоторые игроки) более чувствительны к задержке или лагам, чем другие. Хотя отчёты игроков — отличный индикатор инцидентов или регрессионных багов в масштабе, игрокам может не хватать глубокого понимания сетевых концепций и они быстро возлагают вину на студии, netcode или серверы.

Корневая причина некоторых проблем может быть скрыта от игроков, поэтому сотрудничество студии и хостинг-провайдера может быть крайне важным. Приоритет Edgegap всегда — предоставлять наилучший возможный сервис.

Если вы получаете множество отчётов от игроков, сталкиваетесь с массовыми сбоями или повторяющимися проблемами, пожалуйста, немедленно свяжитесь с нами через тикет в службу поддержки на нашей платформе.

Низкая задержка

Задержка игрока — это сочетание задержки при передаче данных между:

  • физическими устройствами — физическим сигналом, проходящим через топологию интернет-сетиarrow-up-right,

  • хостом к хосту - возникающей из-за протокольных, транспортных и мер безопасности,

  • процессом к процессу - возникающей из-за (рас)паковки и обработки данных в клиенте/сервере.

Edgegap снижает физическую задержку, размещая серверы ближе к вашим игрокам для более коротких ответов и меньшего числа сетевых переходов. С локациями у 17 облачных и bare metal-провайдеров вы получаете пинг лучшего в классе уровня для игроков в любой точке мира.

Покрытие серверов и интернета в мире (не только у Edgegap) ограничено из-за таких факторов, как:

  • доступность инфраструктуры - качество интернет-соединения в данном регионе может быть недостаточным,

  • природные факторы - высокосложные серверные стойки требуют в основном стабильной среды.

Высокая доступность

Доступность серверов в различных локациях по всему миру будет меняться со временем, несколько раз в течение дня. Edgegap автоматически масштабирует вверх/вниз локации по требованию, учитывая:

  • всплесковый трафик - развертывания, выполненные в течение 15-минутного периода,

  • требования vCPU - больше vCPU на развертывание увеличивает общий спрос на конкретную локацию,

  • предложение провайдера - в некоторых удалённых локациях доступно меньше вариантов провайдеров,

  • доступность машин - некоторые локации могут предлагать только машины на 4 vCPU или 8 vCPU,

  • запросы студии для тестирования, контроля качества, раннего доступа, закрытых бета-версий или турниров.

Все запросы на развертывание приложений объединяются для оценки спроса на локацию. По умолчанию все организации имеют равный приоритет распределения, с возможностью добавлять частные пулы серверов для корпоративных клиентов, которым требуется специфическое оборудование или локации.

circle-check

Разрешение проблем игроков

Проблемы игроков могут быть вызваны багами сервера или инцидентами у провайдера, но также могут возникать у третьих сторон, таких как локальные ISP, игровые сервисы, ошибки в низкоуровневых библиотеках, провайдеры инфраструктуры или другие источники.

При разборе отчётов игроков или инцидентов учитывайте факторы:

  • качество матчмейкинга - игроки должны быть близко друг к другу (в одном регионе) для Развертывания чтобы дать наилучшие результаты:

  • региональные проблемы:

    • локальные интернет-провайдеры (ISP) могут временно устранять инцидент,

    • некоторые регионы (например, Китай, Россия) могут быть ограничены из-за локализованных санкций,

  • уровень кэширования - Edgegap будет отдавать приоритет быстрым развертываниям в кэшированных локациях:

  • максимальное время на развертывание - развертывания могут завершиться неудачей из-за медленного и тяжёлого процесса инициализации:

    • смотрите Приложения и версии чтобы увеличить период таймаута,

    • откладывайте шаги инициализации до момента, когда они действительно необходимы,

  • проблемы с образом сервера или интеграцией.

circle-check
circle-info

Уведомляйте пользователей о массовых багах, временных проблемах и сбоях, чтобы снизить негативные настроения.

🔄 Жизненный цикл развертывания

Развертывания Edgegap проходят несколько стадий жизненного цикла, обозначаемых статусом развертывания.

1. Запуск развертывания

Развертывание для целей тестирования может быть запущено с помощью:

  • Unreal Engine - расширения Docker или плагина для проектов Unreal Engine,

  • Unity - плагина для проектов Unity,

  • Dashboard Web UIarrow-up-right - простой в использовании веб-интерфейс для тестирования интеграции сервера.

Развертывание для рабочая production-среда должна запускаться с помощью:

circle-check
circle-info

При тестировании с Deploy APIarrow-up-right, вы можете переопределить стандартный Dockerfile CMD с помощью пользовательской команды.

2. Развертывание

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

  • Телеметрия — мы измеряем сетевую отзывчивость от доступных дата-центров к каждому игроку,

  • Развертывание — мы резервируем ёмкость и подготавливаем запуск контейнера вашего сервера,

  • Запуск контейнера — мы запускаем контейнер, устанавливаем зависимости и инициализируем его,

  • Постобработка — мы добавляем хранилище логов, мониторинг и завершаем развертывание.

circle-exclamation

3. Развертывание готово

Ваш контейнер полностью инициализирован, и ваш сервер сейчас запускается. В течение нескольких секунд или минуты ваш сервер всё ещё может инициализироваться и не отвечать на запросы игроков, пока ваш игровой движок (или пользовательская среда выполнения) полностью не будет готов принимать подключения игроков.

circle-check

4. Ошибка развертывания

Ваше развертывание может перейти в состояние Error в любой момент по непредвиденным причинам. Это более вероятно при тестировании интеграции или тестировании новых сборок сервера.

За развертывания в состоянии Error с вас не взимается плата; они автоматически останавливаются через 24 часа.

Шаги по устранению неполадок:

circle-check

5. Развертывание остановлено

Мы никогда не останавливаем ваши серверы без вашей директивы, чтобы не негативно влиять на игровой опыт ваших игроков. Ваше развертывание может быть остановлено по следующим причинам:

  • Самостоятельная остановка через DELETE_URL - развертывание само остановилось после того, как игроки ушли и матч завершился,

    • смотрите Unreal Engine и Unity руководства по корректной остановке развертываний,

  • Остановка из вашего backend - ваш backend остановил это развертывание с использованием Deployments APIarrow-up-right,

  • Максимальная длительность игры - выделенное время в вашем Приложения и версии истекло,

  • Частные флоты Хост, на котором работает ваше развертывание, был удалён через запланированное действие.

circle-info

После остановки развертывания, мы инициируем мягкое завершение отправляя SIGTERM сигнал вашему основному процессу, позволяя короткий период завершения. По истечении этого времени SIGKILL сигнал отправляется для остановки развертывания.

👀 Наблюдаемость

Позвольте игровым серверам взаимодействовать со сторонними сервисами и получать операционные инсайты.

Обнаруживаемость

После перехода в Ready развертыванию назначается URL (fqdnarrow-up-right) и внешний порт для каждого внутреннего порта.

circle-check
circle-info

Исходящий трафик (к клиентам или backend) из ваших игровых серверов никогда не блокируется и не фильтруется.

WebSocket (WS) и защищённые WebSocket (WSS)

Чтобы использовать netcode на основе websocket с Edgegap, у вас есть два варианта:

  • управляемый сертификат, настраиваемый за 1 минуту без написания кода:

    • настройте ваш Приложения и версии на используйте Websocket (WS) и Enable TLS Upgrade,

    • используйте URL Edgegap для подключения клиентов (например, https://5fa53fa00a57.pr.edgegap.net/)

  • самостоятельно управляемый сертификат, если вы хотите использовать свой собственный кастомный домен:

triangle-exclamation

Внедряемые переменные

Игровым серверам часто требуется дополнительная информация, такая как IP сервера, значения внутренних портов или другое. Внедрение переменных окружения только для чтения — надёжный облачно-агностичный способ передачи параметров.

circle-check
circle-info

Смотрите Переменные версии приложения и Переменные матчмейкера в дополнение к переменным развертывания ниже.

Пользовательские переменные

Определяйте до 20 пользовательских переменных для каждого развертывания, каждая из которых содержит до 4 КБ строковых данных.

circle-exclamation

Получайте важную информацию, читая переменные, внедрённые Edgegap в ваши серверы:

Идентификаторы

  • ARBITRIUM_REQUEST_ID - например f68e011bfb01 .

    • Уникальный ID развертывания, также называемый request ID. Используется для получения дополнительной информации.

    • URL развертывания всегда имеет формат {ARBITRIUM_REQUEST_ID}.pr.edgegap.net.

  • ARBITRIUM_PUBLIC_IP - например 162.254.141.66 .

    • Публичный IP-адрес этого хоста, может использоваться для подключения вместо URL.

  • ARBITRIUM_HOST_ID - например alpha-north-america-70364ef8 .

    • Уникальный идентификатор машины, на которой размещено ваше развертывание, общий с другими развертываниями.

  • ARBITRIUM_DEPLOYMENT_TAGS - например tag1,tag2 .

  • ARBITRIUM_PRIVATE_FLEET_ID - например PUBLIC_CLOUD , или ID флота, если размещено на Частные флоты.

Спецификации ресурсов

  • ARBITRIUM_HOST_IN_PRIVATE_FLEET - например false , указывающее, размещено ли на Частные флоты.

  • ARBITRIUM_HOST_BASE_CLOCK_FREQUENCY - например 2000 , частота процессора в МГц.

  • ARBITRIUM_DEPLOYMENT_VCPU_UNITS - например 256, выделенные единицы vCPU (1024 = 1 vCPU).

  • ARBITRIUM_DEPLOYMENT_MEMORY_MB - например 512, выделенная RAM в МБ (1024 = 1 ГБ).

Управление жизненным циклом

  • ARBITRIUM_DELETE_URL - например https://api.edgegap.com/v1/self/stop/9f511e17/660.

  • ARBITRIUM_DELETE_TOKEN - например 7df4cd933df87084b34ae80d8abde293.

  • ARBITRIUM_CONTEXT_URL - например https://api.edgegap.com/v1/context/9170f5211e17/17.

    • Можно вызывать только из развертывания, возвращает больше деталей о развертывании.

    • Требует уникальный ARBITRIUM_CONTEXT_TOKEN в Authorization заголовке.

  • ARBITRIUM_CONTEXT_TOKEN - например dfaf50b9333b9ee07b22ed247e4a17e6.

Обнаруживаемость

  • ARBITRIUM_PORT_GAMEPORT_INTERNAL - например 7777 , внутренний порт для серверного слушателя.

  • ARBITRIUM_PORT_GAMEPORT_EXTERNAL - например 31504 , внешний порт для подключений клиентов.

    • Значения внешних портов случайным образом меняются для каждого развертывания в целях безопасности.

  • ARBITRIUM_PORT_GAMEPORT_PROTOCOL - например UDP , протокол вашего netcode-транспорта.

circle-check
  • ARBITRIUM_BEACON_ENABLED - например true, если развёртывание на Частные флоты с Пинг-маяки.

  • ARBITRIUM_HOST_BEACON_PUBLIC_IP - например 139.177.198.69 , публичный IP ближайшего маяка.

  • ARBITRIUM_HOST_BEACON_PORT_UDP_EXTERNAL - например 30199, для измерения пинга по UDP.

  • ARBITRIUM_HOST_BEACON_PORT_TCP_EXTERNAL - например 30456, для измерения пинга по TCP.

Структурированная информация (JSON как строка)

circle-info

Переменные окружения хранятся как JSON-строки, разбирайте их с помощью SDK или пользовательского метода.

chevron-rightARBITRIUM_DEPLOYMENT_LOCATION: - Подробная информация о локации развертывания.hashtag
chevron-rightARBITRIUM_PORTS_MAPPING: - Подробная информация о ваших внутренних и внешних портах.hashtag

Мониторинг панели

Наш Панельarrow-up-right предоставляет инструменты для мониторинга масштабируемости вашего сервера и помогает в эксплуатации.

Аналитика

circle-check

🌟 Перейдите на тариф Pay as You Goarrow-up-right чтобы открыть подробные метрики производительности сервера и аналитические данные:

  • Общие сведения: отслеживайте релизы с количеством живых серверов по каждой версии + обзором использования ресурсов,

  • Сведения о CPU: устраняйте задержки серверов из-за ресурсоемких операций процессора,

  • Сведения о памяти: предотвращайте перезапуски сервера из-за превышения выделенной памяти,

  • Сведения о сети: выявляйте неэффективные сетевые паттерны и оптимизируйте netcode.

Карта размещения

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

Точки баланса развертывания

circle-check

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

circle-exclamation

Журналы развертывания

Журналы развертывания отображают информацию о Развертывания:

Журналы контейнера

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

circle-exclamation

Метрики контейнера

Просматривайте метрики контейнера (процессор, память, сеть), чтобы:

  • выявлять распространенные проблемы соединения, когда Развертывания,

  • обнаруживать неэффективные схемы реализации, вызывающие всплески использования ресурсов,

  • выявлять неэффективное использование ресурсов в конкретных сценариях,

  • проверять изменения в использовании ресурсов вашего сервера во время оптимизации,

  • проводить бенчмаркинг потребления ресурсов и длительности инициализации вашего сервера.

Исторические метрики показывают средние значения за интервал 1 минута и доступны в бесплатном тарифе.

🌟 Перейдите на тариф Pay as You Goarrow-up-right чтобы открыть точные метрики с интервалом в 1 секунду.

circle-info

Свяжитесь с намиenvelope перед вашим релизом, чтобы запросить поддержку хостинга в реальном времени для крупных запусков.

Контекст и статус

Дополнительную информацию о развертывании можно получить в формате JSON:

circle-info

Context API (из развертывания) требует токен Context API, тогда как Status API использует ваш токен Edgegap.

circle-exclamation

Фильтр развертываний

Чтобы быстро искать среди всех развертываний, вы можете использовать нашу панельarrow-up-right:

Список развертываний с помощью APIarrow-up-right и применять фильтры с помощью backend-интеграций:

Атрибут развертывания
Операторы
Пример значения

eq или neq

"ready" или "error"

eq

"7e709a0d8efd"

в или nin

[ "7e709a0d8efd", "4ba353100b4b" ]

eq или neq

"tagA"

в или nin

[ "tagA", "tagB" ]

eq или neq

"my-app"

в или nin

[ "my-app", "my-other-app" ]

eq или neq

"1.0.0"

в или nin

[ "1.0.0", "prod" ]

eq

true или false

eq или neq или

lt или lte или

gt или gte

5

circle-info

Каждый атрибут может иметь не более 1 оператора фильтра в одном запросе. См. Справочник API для подробностей.

Сортируйте результаты по нескольким полям в порядке их появления в запросе:

Атрибут развертывания
Порядок

asc или desc

Примеры запросов с фильтрами:

chevron-rightСписок Развертывания с ошибкой чтобы устранить неполадки и удалить.hashtag

Закодированный URL:

Отформатированный JSON-запрос:

chevron-rightСписок Развертывания с устаревшей версией приложения чтобы подтвердить, что релиз завершен.hashtag

Закодированный URL:

Отформатированный JSON-запрос:

circle-check

Вебхуки и постбеки

Получайте простые HTTP-уведомления в backend вашей игры об изменениях в Развертывания указав URL вебхука в вашем запросе к API развертывания. Доступно для:

  • При готовности: контейнер развертывания успешно запущен (после этого сервер начинает инициализацию),

  • При ошибке: развертывание не удалось запустить и произошла Развертывания ошибка,

  • При завершении: Развертывания и игровой сервер больше недоступен.

Вебхуки Ready и Error никогда не срабатывают для одного и того же развертывания.

chevron-rightПример полезной нагрузки вебхукаhashtag
circle-exclamation
circle-info

Вебхуки отслеживают жизненный цикл развертывания, но не знают о состоянии инициализации сцены/уровня. Чтобы отслеживать прогресс загрузки вашей сцены/уровня, реализуйте собственный вебхук в игровом сервере.

🚨 Устранение неполадок

При устранении неполадок развертываний:

  1. убедитесь, что нет ошибок в вашем Развертывания и Развертывания,

  2. запустите сервер локально, чтобы исключить ошибки интеграции,

  3. ознакомьтесь с шагами по устранению неполадок на этой странице,

  4. свяжитесь с нами в Community Discordarrow-up-right и укажите ID вашего развертывания.

circle-info

Смотрите Развертывания с нашими рекомендациями по работе с отзывами сообщества игроков.

chevron-rightНе удается подключить клиентов к серверу - Время ожидания запроса истекло., 请求超时 , ConnectionFailed , или Проверка порта не удалась.hashtag
  • Сначала убедитесь, что развертывание находится в состоянии Ready и что в журнале развертывания нет исключений или ошибок во время выполнения. Если ваше развертывание остановилось, проверьте журналы в нашем Панельarrow-up-right.

  • Если вы используете Mirror netcode, вам нужно иметь "Auto Start Server”arrow-up-right выбранным в вашем NetworkManager , пересоберите, отправьте и заново разверните сервер.

  • Если вы используете FishNet netcode, вам нужно включить “Start on Headless”arrow-up-right в вашем ServerManager, пересоберите, отправьте и заново разверните сервер.

  • Если вы используете Photon Fusion 2 netcode, убедитесь, что ваш сервер передает публичный IP развертывания, внешний порт и roomCode на сервере, а также тот же код комнаты в клиенте в “NeworkRunner.StartGame”arrow-up-right параметре StartGameArgs. ID развертывания (например, b63e6003b19f) — отличный выбор, поскольку он глобально уникален и легко доступен клиенту через матчмейкер назначение и к Подробный обзор.

  • Далее проверьте, что настройка порта в netcode-настройках вашей серверной сборки соответствует внутреннему порту в вашем Версия приложенияarrow-up-rightВы можете изменить сопоставление портов, отредактировав Версия приложенияarrow-up-right без пересборки. Найдите ваш протокол в интеграции netcode.

  • Пожалуйста, убедитесь, что ваш игровой клиент подключается к внешнему порту указанному на странице сведений о вашем развертывании; это значение всегда будет случайным по соображениям безопасности.

  • Если вы используете протокол Secure Websocket (WSS) в интеграции netcode, убедитесь, что у вашего Версия приложенияarrow-up-right конфигурации порта WSS включено TLS Upgrade.

  • Вы находитесь в Китае и используете Smart Fleetsarrow-up-right? Ваше соединение может быть заблокировано Великим китайским файрволом. Рассмотрите возможность добавления в свой парк сервера, расположенного в Китае, или использования VPN для подключения.

chevron-rightМое развертывание остановилось/перезапустилось, и я больше не могу получить доступ к его журналам.hashtag
  • Если процесс сервера аварийно завершится из-за исключения, наша система попытается автоматически перезапустить сервер. Рекомендуем протестировать сервер локально, чтобы выявить первопричину.

  • Мы храним журналы только в течение времени существования развертывания; если вы хотите просмотреть журналы после остановки развертывания, пожалуйста, интегрируйте стороннее хранилище журналовarrow-up-right.

  • Смотрите Развертывания чтобы выяснить все причины остановки вашего развертывания.

chevron-rightМое развертывание автоматически остановилось через X минут.hashtag
  • Развертывания на бесплатном тарифе имеют лимит в 60 минут, рассмотрите возможность обновления аккаунта.

  • Все развертывания будут завершены через 24 часа работы согласно нашей политике очистки серверов, для обслуживания инфраструктуры и чтобы предотвратить накопление неожиданных расходов, если развертывание не было корректно остановлено. Для долгоживущих серверов рассмотрите использование Частные флоты с Сохранение данных.

  • Смотрите Развертывания чтобы выяснить все причины остановки вашего развертывания.

chevron-rightМое развертывание готово, но после этого я несколько минут не могу подключиться.hashtag
  • После того как развертывание становится Ready, начинается инициализация вашего игрового движка. Этот процесс может занять от нескольких секунд до нескольких минут, и в этот период сервер не принимает подключения игроков.

  • Рассмотрите возможность оптимизации инициализации сервера, чтобы сократить это время.

  • Игровым клиентам следует повторять попытки подключения с интервалом в 1 секунду в течение ограниченного времени (в зависимости от длительности инициализации), после чего они возвращаются к подбору игроков.

  • Рассмотрите возможность добавления загрузочной сцены, чтобы сервер мог выполнять инициализацию (и travel в случае Unreal Engine) одновременно с клиентами, синхронизируя состояние обоих.

chevron-rightМое устройство Meta Quest выдает HTTP 0: Не удается разрешить хост назначения .hashtag
  • При сборке приложений Unity для целевой платформы Android разрешение на доступ к Интернету может автоматически удаляться из выходного APK-артефакта клиента.

  • Снова добавьте разрешения в (потребуется последующая пересборка клиента):

    • Project Settings / OpenXR / ⚙️ Meta Quest Support / Force Remove Internet Permissions (снимите галочку).

    • Player Settings / Internet Access (установите require).

chevron-rightЧто произойдет, если игрок покинет мое развертывание?hashtag
  • По умолчанию серверы не отклоняют подключения игроков. Проверка подлинности игроков — задача ваших разработчиков, поскольку можно использовать множество разных методов и поставщиков аутентификации игроков.

  • Игровые клиенты могут локально сохранять информацию о подключении, чтобы попытаться переподключиться в случае непредвиденного сбоя клиента.

  • Чтобы позволить игрокам присоединяться к уже идущим играм, рассмотрите использование Подробный обзор или Сессийarrow-up-right.

chevron-rightНа моем сервере отображается загрузка CPU 100% после перехода в состояние ready.hashtag
  • Это может не быть проблемой, поскольку игровые движки, как правило, выполняют ресурсоемкие операции процессора во время инициализации сервера. Если загрузка CPU не снижается через 2–3 минуты после запуска развертывания, возможно, вам нужно оптимизировать сервер или увеличить ресурсы версии приложения.

  • Снижение частоты тиков может повлиять на загрузку CPU, поскольку сервер выполняет меньше операций обмена сообщениями.

  • Если вы используете Mirror netcode, вам нужно иметь "Auto Start Server”arrow-up-right выбранным в вашем NetworkManager , пересоберите, отправьте и заново разверните сервер.

  • Если вы используете FishNet netcode, вам нужно включить “Start on Headless”arrow-up-right в вашем ServerManager, пересоберите, отправьте и заново разверните сервер.

  • В бесплатном тарифе вы ограничены 1.5 vCPU и 3 ГБ памяти (RAM).

  • Вы можете увеличить выделенные ресурсы при создании новой версии приложения. Вы можете дублировать версию приложения на нашей панели и изменить эти значения по мере необходимости, без пересборки сервера или образа.

chevron-rightМое развертывание постоянно перезапускается и показывает ошибку `OOM kill` .hashtag
  • Такое поведение вызвано превышением выделенного объема памяти. Рассмотрите оптимизацию использования памяти с помощью пуллинга объектов, сжатия или удаления ненужных объектов в сцене.

  • Убедитесь, что ваш проект загружает сцену по умолчанию, содержащую ваш NetworkManager и что сцена включена в Build Settings Unity.

  • В бесплатном тарифе вы ограничены 1.5 vCPU и 3 ГБ памяти (RAM).

  • Вы можете увеличить выделенные ресурсы при создании новой версии приложения. Вы можете дублировать версию приложения на нашей панели и изменить эти значения по мере необходимости, без пересборки сервера или образа.

chevron-rightИногда использование памяти (RAM) на моем сервере резко возрастает до высокого значения — это проблема?hashtag
  • Пока вы не превышаете выделенный объем памяти для версии приложения, это не проблема.

  • Превышение выделенного объема памяти для версии приложения приведет к `OOM kill` (см. выше).

chevron-rightБудет ли производительность моего сервера ухудшаться из-за других серверов, работающих на той же машине?hashtag
  • Нет, наша платформа гарантирует, что выделенные ресурсы не будут использоваться другими студиями или другими серверами на общей инфраструктуре. С Edgegap нет «шумных соседей».

Последнее обновление

Это было полезно?