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

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

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

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

circle-info

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

circle-check

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

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

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

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

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

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

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

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

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

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

👎 Недостатки

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

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

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

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

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

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

    • Королевская битва, PvPvE, кооперативные шутеры, MOBA, спортивные игры, ARPG и «проходилки по подземельям» и т. д.

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

circle-info

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

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

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

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

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

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

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

👎 Недостатки

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

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

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

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

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

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

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

    • мобильные игры, кооперативные игры, карточные игры (TCG/CCG), пошаговые стратегии и т. д.

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

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

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

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

circle-info

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

P2P (Peer to Peer)

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

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

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

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

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

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

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

👎 Недостатки

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

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

  • Наименьшая безопасность, уязвимость к атакам «человек посередине» и перехвату сессий.

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

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

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

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

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

circle-check

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

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

circle-info

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

circle-check
circle-info

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

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

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

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

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

circle-check

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

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

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

circle-info

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

Геолокация

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

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, игровые сервисы, ошибки в низкоуровневых библиотеках, провайдеры инфраструктуры или другие источники.

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

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

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

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

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

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

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

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

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

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

circle-check
circle-info

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

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

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

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

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

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

circle-check
circle-info

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

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

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

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

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

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

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

circle-exclamation

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

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

circle-check

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

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

С деплойментов в состоянии Ошибка оплата не взимается — они автоматически останавливаются через 24 часа.

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

circle-check

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

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

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

  • Остановка с вашего бэкенда — ваш бэкенд остановил этот деплоймент с помощью Deployments APIarrow-up-right,

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

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

circle-info

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

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

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

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

Позволяйте игровым серверам взаимодействовать со сторонними сервисами и получайте операционные инсайты.После состояния Готов деплойменту присваивается 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 ARBITRIUM_HOST_ID .

    • alpha-north-america-70364ef8

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

    • ARBITRIUM_PUBLIC_IP

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

удобны для поиска и фильтрации

  • Спецификации ресурсов 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.

  • Требует уникального одноразового 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, если деплоится на приватный флот, запущенный Пинг-маяки.

  • 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

🌟 Обновитесь до тарифа «Плати по мере использования»arrow-up-right чтобы разблокировать подробные метрики и инсайты производительности сервера:

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

  • Информация о CPU: устраняйте проблемы с зависаниями серверов из‑за операций, нагружающих процессор,

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

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

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

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

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

circle-check

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

circle-exclamation

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

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

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

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

circle-exclamation

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

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

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

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

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

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

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

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

🌟 Обновитесь до тарифа «Плати по мере использования»arrow-up-right чтобы разблокировать точные метрики с интервалом 1 секунда.

circle-info

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

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

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

circle-info

API контекста (из развертывания) требует токен Context API, тогда как 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# false

eq GetEnvironmentVariable в C# neq GetEnvironmentVariable в C#

lt GetEnvironmentVariable в C# lte GetEnvironmentVariable в C#

gt GetEnvironmentVariable в C# gte

5

circle-info

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

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

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

asc GetEnvironmentVariable в C# desc

asc GetEnvironmentVariable в C# desc

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

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

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

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

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

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

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

circle-check

Webhook-и и отклики

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

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

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

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

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

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

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

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

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

  1. проверьте, нет ли ошибок в ваших Развертывания и Развертывания,

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

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

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

circle-info

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

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

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

  • Если вы используете сетевой код FishNet, вам нужно включить "Запуск на безголовом режиме"arrow-up-right в вашем ServerManager, пересоберите, запушьте и задеплойте сервер заново.

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

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

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

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

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

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

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

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

chevron-rightМой деплоймент автоматически остановился через X минут.hashtag
  • Деплойменты Free Tier имеют лимит времени в 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
  • По умолчанию серверы не отвергают подключения игроков. Аутентификация игроков остаётся на усмотрение разработчиков, так как можно использовать различные методы и провайдеров аутентификации.

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

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

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

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

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

  • Если вы используете сетевой код FishNet, вам нужно включить "Запуск на безголовом режиме"arrow-up-right в вашем ServerManager, пересоберите, запушьте и задеплойте сервер заново.

  • В Free Tier вам доступно 1.5 vCPU и 3 ГБ памяти (RAM).

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

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

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

  • В Free Tier вам доступно 1.5 vCPU и 3 ГБ памяти (RAM).

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

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

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

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

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

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