> For the complete documentation index, see [llms.txt](https://docs.edgegap.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.edgegap.com/ru/learn/orkestraciya/ping-beacons.md).

# Пинг-маяки

Используйте Ping-бэнконы, чтобы предотвращать подбор матчей с игроками в дальних регионах и улучшать игровой опыт.

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

Качество подключения к серверу у каждого игрока отличается и зависит от многих факторов, включая:

* силу сигнала Wi‑Fi (при использовании беспроводного или мобильного подключения),
* состояние интернет-провайдера,
* локальные сетевые условия,
* используемый сетевой протокол,
* использование виртуальных частных сетей (VPN),
* или ограничения, действующие в конкретной стране.

Чтобы минимизировать пинг игроков и **обеспечить наилучшее возможное соответствие игроков** и сделать [Развертывания](/ru/learn/orkestraciya/deployments.md#server-placement) оптимальным, игровые клиенты **используют Ping-бэнконы для измерения задержки** до нескольких крупных сетевых узлов по всему миру в реальном времени. Измерение реального времени прохождения пакета (round-trip time) учитывает все перечисленные выше факторы и предоставляет наиболее точную метрику в любой момент времени.

Имейте в виду, что **высокий пинг до бэнкона не равен высокому пингу до сервера**, поскольку сервера размещены плотнее, чем бэнконы. Количество бэнконov балансируется в реальном времени для обеспечения наилучшего покрытия, минимального объема передаваемых данных и наименьшего времени на завершение измерения.

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

## 🗼 О Ping-бэнконах

Получите список бэнконов, которые игроки могут пинговать напрямую из:

* Матчмейкер [Подробный обзор](/ru/learn/podbor-igrokov/matchmaker-in-depth.md#matchmaking-api) из игрового клиента,
* Edgegap API [эндпоинт /locations/beacons](https://docs.edgegap.com/api/#tag/Locations/operation/location-beacon-list) используя [токен Edgegap API](https://app.edgegap.com/user-settings?tab=tokens) (из вашего бэкенда).

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

* предотвращать матчи с высокой задержкой путем [#measuring-round-trip-time](#measuring-round-trip-time "mention") автоматически.
* обеспечивать [#hub-selection-ui](#hub-selection-ui "mention") возможность для игроков выбирать любимые хабы,
* обеспечивать [#region-selection-ui](#region-selection-ui "mention") возможность для игроков исключать дальние регионы,

{% hint style="info" %}
**Слишком много запросов 429** - чтобы обеспечить стабильность платформы, мы **лимитируем скорость запросов вашей организации на** **40 req/s** для этого API-эндпоинта. Реализуйте [#active-cache](#active-cache "mention") чтобы избежать достижения лимита запросов.
{% endhint %}

{% hint style="success" %}
[#measuring-round-trip-time](#measuring-round-trip-time "mention") используя **ICMP, UDP или TCP-пинг не подвергаются лимитированию скорости**.
{% endhint %}

## 🗺️ Интерфейс выбора региона

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

**Автоматически отключайте регионы с высокой задержкой:**

* перечислите все доступные бэнконы,
* выполните [#measuring-round-trip-time](#measuring-round-trip-time "mention") пинг до всех бэнконов,
* **отключите регион, если измеренная задержка до всех бэнконов превышает заданный порог.**

Ваш порог зависит от особенностей дизайна игры; мы рекомендуем подбирать регионы с задержкой ниже 250 мс (миллисекунд).

{% hint style="info" %}
Чтобы позволить игрокам переопределять [Развертывания](/ru/learn/orkestraciya/deployments.md#server-placement) укажите IP маяка, когда [поиск матчей](/ru/learn/podbor-igrokov/matchmaker-in-depth.md#endpoint-tickets) или [развёртывание](/ru/docs/api/vydelennye-servery.md#deployments). Для наилучшего игрового опыта предупредите игроков, что это может привести к увеличенной задержке из‑за удалённого расположения сервера.
{% endhint %}

Некоторые игроки с высоким пингом ко всем маякам из-за провайдера[^1] проблем или медленного соединения (например, беспроводного/мобильного) могут вызывать лаги и ухудшать игровой опыт других. Чтобы смягчить эту проблему:

* Постепенно расширяйте максимально допустимую задержку и разницу (см. [Пример расширенной конфигурации](/ru/learn/podbor-igrokov.md#advanced-example)),
  * игрокам с высоким пингом, возможно, придется ждать дольше обычного, чтобы найти матч.
* В качестве альтернативы разрешите игрокам переопределять измерение вручную, выбирая регион, и отправляйте поддельные значения пинга только для выбранных игроком регионов (например, 25 мс для быстрого матча),
  * это может отрицательно повлиять на опыт игры товарищей по команде и соперников.

{% hint style="info" %}
**Высокий пинг до маяка не всегда приводит к высокому пингу до сервера**. Развертывания доступны в большем количестве локаций, чем маяки. Маяки оркеструются в реальном времени для приоритизации глобального покрытия и надежности.
{% endhint %}

{% hint style="success" %}
См. [Подбор игроков](/ru/learn/podbor-igrokov.md) для **автоматизированное измерение пинга с помощью наших SDK**.
{% endhint %}

## 📍 Интерфейс выбора хаба

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

**Автоматически отключайте хабы с высокой задержкой:**

* перечислите все доступные бэнконы,
* выполните [#measuring-round-trip-time](#measuring-round-trip-time "mention") пинг до всех бэнконов,
* **отключайте хабы, если измеренная задержка превышает заданный порог,**
* определяйте включенные хабы в интерфейсе игры, используя свойство City бэнкона.

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

Мы также рекомендуем выбрать название «Хаб» в вашем интерфейсе или другое **название, которое не предполагает, что это единственные доступные локации серверов**. Edgegap оркестрирует игровые серверы по всему миру в более чем 615 физических локациях и с 17+ провайдерами дата-центров, чтобы обеспечить развертывание в идеальном месте.

{% hint style="info" %}
Чтобы позволить игрокам переопределять [Развертывания](/ru/learn/orkestraciya/deployments.md#server-placement) укажите IP маяка, когда [поиск матчей](/ru/learn/podbor-igrokov/matchmaker-in-depth.md#endpoint-tickets) или [развёртывание](/ru/docs/api/vydelennye-servery.md#deployments). Для наилучшего игрового опыта предупредите игроков, что это может привести к увеличенной задержке из‑за удалённого расположения сервера.
{% endhint %}

Некоторые игроки с высоким пингом ко всем маякам из-за провайдера[^1] проблем или медленного соединения (например, беспроводного/мобильного) могут вызывать лаги и ухудшать игровой опыт других. Чтобы смягчить эту проблему:

* Постепенно расширяйте максимально допустимую задержку и разницу (см. [Пример расширенной конфигурации](/ru/learn/podbor-igrokov.md#advanced-example)),
  * игрокам с высоким пингом, возможно, придется ждать дольше обычного, чтобы найти матч.
* В качестве альтернативы разрешите игрокам переопределять измерение вручную, выбирая регион, и отправляйте поддельные значения пинга только для выбранных игроком регионов (например, 25 мс для быстрого матча),
  * это может отрицательно повлиять на опыт игры товарищей по команде и соперников.

{% hint style="info" %}
**Высокий пинг до маяка не всегда приводит к высокому пингу до сервера**. Развертывания доступны в большем количестве локаций, чем маяки. Маяки оркеструются в реальном времени для приоритизации глобального покрытия и надежности.
{% endhint %}

{% hint style="success" %}
См. [Подбор игроков](/ru/learn/podbor-igrokov.md) для **автоматизированное измерение пинга с помощью наших SDK**.
{% endhint %}

## 🌡️ Измерение времени прохождения пакета

В разработке игр оба термина «пинг» и «задержка» обычно относятся к [времени прохождения пакета (Round-Trip Time)](https://www.cloudflare.com/learning/cdn/glossary/round-trip-time-rtt/).

См. [/pages/b9b292938312f3f6f9be35f34789ab8942b5920a#id-5.-game-integration](https://docs.edgegap.com/ru/learn/orkestraciya/pages/b9b292938312f3f6f9be35f34789ab8942b5920a#id-5.-game-integration "mention") для автоматического измерения пинга:

* Unity [Инструменты разработчика](/ru/unity/developer-tools.md#software-development-kit):
  * [установите пакет бесплатно с помощью Unity Package Manager](https://github.com/edgegap/edgegap-unity-sdk),
  * [изучите наше руководство для начала работы и полные примеры](/ru/unity/podbor-igrokov.md).
* Unreal Engine [Инструменты разработчика](/ru/unreal-engine/developer-tools.md#integration-kit):
  * [прочитать документацию](https://egik.betide.studio/) от Betide Studios,
  * [установить из Fab Marketplace](https://www.fab.com/listings/ff17ad88-12a1-49cf-9a41-31695ed11e16) (бесплатно для личного использования),
  * [импортировать простой пример blueprint](https://blueprintue.com/blueprint/m33u1okj/) (сопоставление игроков) и настроить под свои нужды.

Подробный обзор процесса измерения задержки в [Матчмейкер](/ru/learn/podbor-igrokov/matchmaker-in-depth.md):

<figure><img src="/files/00d1dc8a9993be2db1f5f4488f44efa2ac3ba2b9" alt=""><figcaption></figcaption></figure>

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

{% hint style="danger" %}
Маяки автоматически масштабируются в реальном времени — добавляются/удаляются/заменяются существующие маяки. Ваши клиенты и бэкенд должны учитывать это и **перезагружать список маяков перед каждым раундом подбора игроков**.
{% endhint %}

## 🧠 Активный кэш

**Если вы не используете** [**Матчмейкер**](/ru/learn/podbor-igrokov.md) (например, пользователи Advanced Matchmaker), мы рекомендуем реализовать дополнительные меры по обеспечению масштабируемости перед крупным релизом. **Создайте собственный сервис бэкенда игры** который хранит централизованный кэш в памяти и отвечает списком локаций бэнконов игровым клиентам без обращения к нашему API списка бэнконов при каждом запросе клиента.

Этот сервис должен активно **выполнять один запрос к API для обновления списка бэнконов каждые 60 секунд.**

[^1]: поставщик интернет-услуг
