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

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

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

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

circle-info

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

circle-check

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

Привязка к матчу

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

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

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

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

  • Низкий пинг благодаря более чем 615 локациям в публичной облачной инфраструктуре Edgegap.

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

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

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

👎 Недостатки

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

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

🧩 Наиболее подходит для

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

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

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

    • Королевская битва (Battle Royale), PvPvE, кооперативные шутеры, MOBA, спортивные игры, ARPG и dungeon crawlers, …

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

circle-info

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

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

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

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

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

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

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

👎 Недостатки

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

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

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

🧩 Наиболее подходит для

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

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

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

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

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

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

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

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

circle-info

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

Peer to Peer

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

Связанные темы: listen servers, авторитет игрока-хоста, NAT punch-through.

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

  • Низкая стоимость хостинга — требуются только релейные серверы для решения NAT punch-through.

  • Низкие затраты на девопс — обслуживание требуется только для сборок клиента и каналов распространения.

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

  • Легко реализуется и быстро подходит для прототипирования, без необходимости разработки бэкенда.

👎 Недостатки

  • Повышенные усилия по разработке P2P-сетевого кода требуют навыков конкурентного программирования.

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

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

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

🧩 Наиболее подходит для

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

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

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

circle-check

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

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

circle-info

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

circle-check
circle-info

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

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

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

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

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

circle-check

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

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

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

circle-info

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

Геолокация

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

circle-exclamation
circle-check

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

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

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

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

triangle-exclamation
circle-check

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

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

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

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

Низкая латентность

Задержка игрока — это комбинация задержек, возникающих при передаче данных между:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

circle-check

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

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

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

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

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

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

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

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

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

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

    • отложите шаги инициализации до абсолютной необходимости,

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

circle-check
circle-info

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

🔄 Жизненный цикл деплоймента

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

1. Запуск деплоймента

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

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

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

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

Деплоймент для Живая продакшен-среда должна быть запущена с помощью:

circle-check
circle-info

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

2. Деплой

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

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

  • Деплой - мы резервируем ёмкость и готовимся к запуску вашего контейнера сервера,

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

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

circle-exclamation

3. Деплой готов

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

circle-check

4. Ошибка деплоймента

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

С деплойментов в состоянии Error с вас не взимается плата, они автоматически останавливаются через 24 часа.

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

circle-check

5. Деплой остановлен

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

circle-info

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

сигнал для остановки деплоймента.

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

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

Позвольте игровым серверам взаимодействовать со сторонними сервисами и получайте оперативную информацию.После Ready деплойменту присваивается URL (arrow-up-rightfqdn

circle-check
circle-info

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

и не фильтруется.

Websockets (WS) и Secure Websockets (WSS)

Состояние сервера может быть утеряно

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

circle-check
circle-info

в дополнение к переменным деплоймента ниже.

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

circle-exclamation

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

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

  • Идентификаторы ARBITRIUM_REQUEST_ID - например, .

    • f68e011bfb01

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

  • {ARBITRIUM_REQUEST_ID}.pr.edgegap.net ARBITRIUM_REQUEST_ID 162.254.141.66 .

    • ARBITRIUM_PUBLIC_IP

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

    • alpha-north-america-70364ef8

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

  • удобны для простого поиска и фильтрации ARBITRIUM_REQUEST_ID ARBITRIUM_PRIVATE_FLEET_ID PUBLIC_CLOUD Приватные кластеры.

, или идентификатор флота, если хостинг производится на

  • Спецификации ресурсов ARBITRIUM_REQUEST_ID ARBITRIUM_HOST_IN_PRIVATE_FLEET false Приватные кластеры.

  • , указывая, размещён ли хост на ARBITRIUM_REQUEST_ID 2000 ARBITRIUM_HOST_BASE_CLOCK_FREQUENCY

  • , частота процессора в МГц. ARBITRIUM_REQUEST_ID 256ARBITRIUM_DEPLOYMENT_VCPU_UNITS

  • , выделенные единицы vCPU (1024 = 1 vCPU). ARBITRIUM_REQUEST_ID 512ARBITRIUM_DEPLOYMENT_MEMORY_MB

, выделенная ОЗУ в МБ (1024 = 1 ГБ).

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

    • https://api.edgegap.com/v1/self/stop/9f511e17/660 Вызывается из деплоймента,.

    • деплоймент будет корректно остановлен Требует уникального одноразового ARBITRIUM_DELETE_TOKEN в заголовке Authorization.

  • Требует уникального одноразового ARBITRIUM_REQUEST_ID 7df4cd933df87084b34ae80d8abde293.

  • ARBITRIUM_CONTEXT_URL ARBITRIUM_REQUEST_ID https://api.edgegap.com/v1/context/9170f5211e17/17.

    • Доступно только из деплоймента, возвращает дополнительные сведения о деплойменте.

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

  • ARBITRIUM_CONTEXT_TOKEN ARBITRIUM_REQUEST_ID dfaf50b9333b9ee07b22ed247e4a17e6.

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

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

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

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

  • ARBITRIUM_PORT_GAMEPORT_PROTOCOL ARBITRIUM_REQUEST_ID UDP , протокол транспортного слоя вашего сетевого кода.

circle-check
  • ARBITRIUM_BEACON_ENABLED ARBITRIUM_REQUEST_ID true, если деплой осуществляется на Приватные кластеры с Ping-маяки.

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

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

  • ARBITRIUM_HOST_BEACON_PORT_TCP_EXTERNAL ARBITRIUM_REQUEST_ID 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: устраняйте неполадки с задержками на серверах из-за операций, нагружающих процессор,

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

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

Карта развертываний

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

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

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 и применять фильтры с бэкенд-интеграциями:

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

eq GetEnvironmentVariable в C# neq

"ready" GetEnvironmentVariable в C# "error"

eq

"7e709a0d8efd"

ARBITRIUM_DELETE_TOKEN GetEnvironmentVariable в C# nin

[ "7e709a0d8efd", "4ba353100b4b" ]

eq GetEnvironmentVariable в C# neq

"tagA"

ARBITRIUM_DELETE_TOKEN GetEnvironmentVariable в C# nin

[ "tagA", "tagB" ]

eq GetEnvironmentVariable в C# lte GetEnvironmentVariable в C# gte

eq GetEnvironmentVariable в C# neq

"my-app"

ARBITRIUM_DELETE_TOKEN GetEnvironmentVariable в C# nin

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

eq GetEnvironmentVariable в C# neq

"1.0.0"

ARBITRIUM_DELETE_TOKEN GetEnvironmentVariable в C# nin

[ "1.0.0", "prod" ]

eq

true GetEnvironmentVariable в C# ARBITRIUM_HOST_IN_PRIVATE_FLEET

eq GetEnvironmentVariable в C# neq GetEnvironmentVariable в C#

lt GetEnvironmentVariable в C# lte GetEnvironmentVariable в C#

gt GetEnvironmentVariable в C# gte

5

circle-info

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

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

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

asc GetEnvironmentVariable в C# desc

asc GetEnvironmentVariable в C# desc

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

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

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

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

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

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

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

circle-check

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

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

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

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

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

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

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

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

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

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

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

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

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

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

circle-info

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
  • По умолчанию серверы не отклоняют подключения игроков. Аутентификация игроков зависит от ваших разработчиков, так как можно использовать много разных методов и провайдеров аутентификации игроков.

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

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

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

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

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

  • Если вы используете сетевой стек FishNet, вам нужно включить “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 нет «шумных соседей».

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

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