> 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-маяки

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

Используйте Ping Beacons, чтобы предотвратить подбор игроков из удалённых регионов и улучшить впечатления игроков.

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

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

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

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

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

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

## 🗼 О Ping Beacons

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

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

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

* предотвращать матчи с высокой задержкой [#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 запросов/с** для этой конечной точки 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") для всех маяков,
* **отключить регион, если измеренная задержка по отношению ко всем маякам превышает заданный порог.**

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

{% 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") для всех маяков,
* **отключать хабы, если измеренная задержка превышает заданный порог,**
* отмечать включённые хабы в интерфейсе игры с помощью свойства beacon City.

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

Мы также рекомендуем использовать название «Hub» в интерфейсе или другое **название, которое не создаёт впечатление, что это единственные доступные серверные локации**. 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 %}

## 🌡️ Измерение времени туда-обратно

В разработке игр оба термина — «пинг» и «задержка» — обычно относятся к [времени туда-обратно для пакетов](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/matchmaking.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="https://3845012722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsR0dHSFv9ymoC0DO5G8J%2Fuploads%2Fn6ke8Ed6jijjdlPQ4CfP%2Fimage.png?alt=media&amp;token=c85c70b2-73af-4980-a962-488393d264e6" alt=""><figcaption></figcaption></figure>

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

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

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

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

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

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