For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

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

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

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

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

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

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

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

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

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

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

  • Минимальные расходы на 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 и перехвату сессий.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Геолокация

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

Региональная блокировка

Некоторые архитектуры или аудитории не предназначены для перехода в соседние регионы по причинам соответствия требованиям, техническим или операционным причинам. Рассмотрите Server Browser с региональными политиками масштабирования.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Устранение проблем игроков

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1. Начало развертывания

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

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

При тестировании с API развертывания, вы можете переопределить стандартный Dockerfile CMD с помощью пользовательской команды.

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

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

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

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

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

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

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

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

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

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

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

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

  • Проверьте статус сервиса Edgegap через нашу страницу мониторинга доступности.

  • Попробуйте протестировать контейнер вашего сервера локально с помощью Docker Desktop, чтобы исключить проблемы на стороне Edgegap.

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

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

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

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

  • Остановка из вашего бэкенда — ваш бэкенд остановил это развертывание с помощью API развертываний,

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

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

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

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

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

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

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

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

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).

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

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

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

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

Определите до 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 - например 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 , протокол вашего сетевого транспорта.

  • 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 или собственного метода.

ARBITRIUM_DEPLOYMENT_LOCATION: - Подробная информация о местоположении развертывания.
ARBITRIUM_PORTS_MAPPING: - Подробная информация о ваших внутренних и внешних портах.

Мониторинг панели управления

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

Аналитика

🌟 Обновитесь до тарифа Pay as You Go чтобы получить доступ к подробным метрикам производительности сервера и аналитике:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

🌟 Обновитесь до тарифа Pay as You Go чтобы получить точные метрики с интервалами в 1 секунду.

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

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

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

  • изнутри развертывания (игрового сервера), используя Deployment Context API,

  • извне развертывания (backend / сторонний сервис), используя Deployment Status API.

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

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

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

Получать список развертываний с помощью API и применять фильтры с помощью backend-интеграций:

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

eq или neq

"ready" или "error"

eq

"7e709a0d8efd"

в или nin

[ "7e709a0d8efd", "4ba353100b4b" ]

eq или neq

"tagA"

в или nin

[ "tagA", "tagB" ]

eq или lte или gte

eq или neq

"my-app"

в или nin

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

eq или neq

"1.0.0"

в или nin

[ "1.0.0", "prod" ]

eq или neq

"my-app-fleet-europe"

в или nin

[ "fleet-eu", "fleet-us" ]

ilike

"%-eu%"

eq или neq

"alpha-north-america-95fab093"

в или nin

[ "alpha-north-america-95fab093" ]

ilike

"%north-america%"

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

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

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

asc или desc

available_session_sockets

asc или desc

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

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

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

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

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

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

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

Вебхуки

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

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

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

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

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

Пример полезной нагрузки вебхука

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

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

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

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

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

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

  4. свяжитесь с нами в 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).

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

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

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

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

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

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